aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/umdns
diff options
context:
space:
mode:
authorRafał Miłecki <rafal@milecki.pl>2017-02-15 11:46:57 +0100
committerRafał Miłecki <rafal@milecki.pl>2017-02-15 11:52:57 +0100
commit2a6fbce1218e7ed8ffaf997b1da03be244d744c9 (patch)
treec427a0b6346467c2699941e192230f8e4fcac861 /package/network/services/umdns
parent748e701b74f22d50dfb4d46ad5a8d0003c2c8b0f (diff)
downloadupstream-2a6fbce1218e7ed8ffaf997b1da03be244d744c9.tar.gz
upstream-2a6fbce1218e7ed8ffaf997b1da03be244d744c9.tar.bz2
upstream-2a6fbce1218e7ed8ffaf997b1da03be244d744c9.zip
mdns: update and rename package to the umdns
This update includes numerous small fixes for: 1) Interfaces setup 2) Packets parsing 3) Sending replies Without this there were multiple problems with exchanging information between (u)mdns and other implementations (including (u)mdns as well). This also follows project rename to umdns which was required to avoid confusion with Apple's mdnsd from mDNSResponder project. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Diffstat (limited to 'package/network/services/umdns')
-rw-r--r--package/network/services/umdns/Makefile47
-rw-r--r--package/network/services/umdns/files/umdns.config3
-rw-r--r--package/network/services/umdns/files/umdns.init54
-rw-r--r--package/network/services/umdns/files/umdns.json32
4 files changed, 136 insertions, 0 deletions
diff --git a/package/network/services/umdns/Makefile b/package/network/services/umdns/Makefile
new file mode 100644
index 0000000000..832cf6e19d
--- /dev/null
+++ b/package/network/services/umdns/Makefile
@@ -0,0 +1,47 @@
+#
+# Copyright (C) 2014 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=umdns
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL=$(LEDE_GIT)/project/mdnsd.git
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_DATE:=2017-02-15
+PKG_SOURCE_VERSION:=0d545ed7287026584722a3f9aa855c29bd24d59f
+PKG_MIRROR_HASH:=9670680a31f8eca5724da4cd12efedcbc27563b09ed4d94218f5debee1673abc
+
+PKG_MAINTAINER:=John Crispin <john@phrozen.org>
+PKG_LICENSE:=LGPL-2.1
+
+include $(INCLUDE_DIR)/package-seccomp.mk
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/umdns
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=OpenWrt Multicast DNS Daemon
+ DEPENDS:=+libubox +libubus +libblobmsg-json
+endef
+
+TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include
+
+define Package/umdns/conffiles
+/etc/config/umdns
+endef
+
+define Package/umdns/install
+ $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d $(1)/etc/config
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/umdns $(1)/usr/sbin/
+ $(INSTALL_BIN) ./files/umdns.init $(1)/etc/init.d/umdns
+ $(INSTALL_CONF) ./files/umdns.config $(1)/etc/config/umdns
+ $(call InstallSeccomp,$(1),./files/umdns.json)
+endef
+
+$(eval $(call BuildPackage,umdns))
diff --git a/package/network/services/umdns/files/umdns.config b/package/network/services/umdns/files/umdns.config
new file mode 100644
index 0000000000..d4936bb092
--- /dev/null
+++ b/package/network/services/umdns/files/umdns.config
@@ -0,0 +1,3 @@
+config umdns
+ option jail 1
+ list network lan
diff --git a/package/network/services/umdns/files/umdns.init b/package/network/services/umdns/files/umdns.init
new file mode 100644
index 0000000000..627930b88d
--- /dev/null
+++ b/package/network/services/umdns/files/umdns.init
@@ -0,0 +1,54 @@
+#!/bin/sh /etc/rc.common
+# Copyright (c) 2014 OpenWrt.org
+
+. /lib/functions/network.sh
+
+START=80
+
+USE_PROCD=1
+PROG=/usr/sbin/umdns
+IFACES=""
+
+load_ifaces() {
+ local network="$(uci get umdns.@umdns[-1].network)"
+ for n in $network; do
+ local device
+ json_load "$(ifstatus $n)"
+ json_get_var device l3_device
+ echo -n "$device "
+ done
+}
+
+reload_service() {
+ json_init
+ json_add_array interfaces
+ for i in $(load_ifaces); do
+ json_add_string "" "$i"
+ done
+ json_close_array
+
+ ubus call umdns set_config "$(json_dump)"
+}
+
+start_service() {
+ local network="$(uci get umdns.@umdns[-1].network)"
+
+ procd_open_instance
+ procd_set_param command "$PROG"
+ procd_set_param seccomp /etc/seccomp/umdns.json
+ procd_set_param respawn
+ procd_open_trigger
+ procd_add_config_trigger "config.change" "umdns" /etc/init.d/umdns reload
+ for n in $network; do
+ procd_add_interface_trigger "interface.*" $n /etc/init.d/umdns reload
+ done
+ procd_add_raw_trigger "instance.update" 5000 "/bin/ubus" "call" "umdns" "reload"
+ procd_close_trigger
+ [ "$(uci get umdns.@umdns[-1].jail)" = 1 ] && procd_add_jail umdns ubus log
+ procd_close_instance
+}
+
+service_started() {
+ ubus -t 10 wait_for umdns
+ [ $? = 0 ] && reload_service
+}
diff --git a/package/network/services/umdns/files/umdns.json b/package/network/services/umdns/files/umdns.json
new file mode 100644
index 0000000000..c22ba6f5fb
--- /dev/null
+++ b/package/network/services/umdns/files/umdns.json
@@ -0,0 +1,32 @@
+{
+ "whitelist": [
+ "read",
+ "write",
+ "open",
+ "close",
+ "time",
+ "brk",
+ "ioctl",
+ "uname",
+ "bind",
+ "connect",
+ "getsockname",
+ "recvmsg",
+ "sendmsg",
+ "sendto",
+ "setsockopt",
+ "socket",
+ "poll",
+ "fcntl64",
+ "epoll_create",
+ "epoll_ctl",
+ "epoll_wait",
+ "rt_sigaction",
+ "sigreturn",
+ "rt_sigreturn",
+ "exit_group",
+ "exit",
+ "clock_gettime"
+ ],
+ "policy": 1
+}