aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--GIDs2
-rw-r--r--UIDs2
-rw-r--r--dns/Makefile1
-rw-r--r--dns/openmdns/Makefile51
-rw-r--r--dns/openmdns/distinfo5
-rw-r--r--dns/openmdns/files/mdnsd.in19
-rw-r--r--dns/openmdns/files/patch-compat62
-rw-r--r--dns/openmdns/files/patch-mdnsd_kiface.c18
-rw-r--r--dns/openmdns/files/patch-mdnsd_mdnsd.h25
-rw-r--r--dns/openmdns/files/patch-mdnsd_packet.c44
-rw-r--r--dns/openmdns/pkg-descr5
11 files changed, 232 insertions, 2 deletions
diff --git a/GIDs b/GIDs
index f93d452e50da..a9db126155ee 100644
--- a/GIDs
+++ b/GIDs
@@ -118,7 +118,7 @@ polipo:*:173:
flowtools:*:174:
twms:*:175:
mlvpn:*:176:
-# free: 177
+_mdnsd:*:177:
otpw:*:178:
gdnsd:*:179:
rt:*:180:
diff --git a/UIDs b/UIDs
index 3266fdad2fe4..2df47eadb82e 100644
--- a/UIDs
+++ b/UIDs
@@ -123,7 +123,7 @@ polipo:*:173:173::0:0:polipo web cache:/nonexistent:/usr/sbin/nologin
flowtools:*:174:174::0:0:Flow-tools collector pseudo-user:/nonexistent:/usr/sbin/nologin
twms:*:175:175::0:0:tWMS pseudo-user:/nonexistent:/usr/sbin/nologin
mlvpn:*:176:176::0:0:mlVPN pseudo-user:/var/run/mlvpn:/usr/sbin/nologin
-# free: 177
+_mdnsd:*:177:177::0:0:Multicast DNS Daemon:/var/empty:/usr/sbin/nologin
otpw:*:178:178::0:0:OTPW pseudo-user:/var/lib/otpw:/usr/sbin/nologin
gdnsd:*:179:179::0:0:gDNSd pseudo-user:/nonexistent:/usr/sbin/nologin
# free: 180
diff --git a/dns/Makefile b/dns/Makefile
index 136f4b899f8e..85cb0e4f5426 100644
--- a/dns/Makefile
+++ b/dns/Makefile
@@ -108,6 +108,7 @@
SUBDIR += opendnssec
SUBDIR += opendnssec13
SUBDIR += opendnssec2
+ SUBDIR += openmdns
SUBDIR += openresolv
SUBDIR += p5-AnyEvent-CacheDNS
SUBDIR += p5-AnyEvent-DNS-EtcHosts
diff --git a/dns/openmdns/Makefile b/dns/openmdns/Makefile
new file mode 100644
index 000000000000..7d89449ed0d6
--- /dev/null
+++ b/dns/openmdns/Makefile
@@ -0,0 +1,51 @@
+# $FreeBSD$
+
+PORTNAME= openmdns
+DISTVERSION= 0.6-8
+DISTVERSIONSUFFIX= -g07cf5c1
+CATEGORIES= dns
+
+MAINTAINER= jbeich@FreeBSD.org
+COMMENT= Multicast DNS and Service Discovery daemon
+
+LICENSE= ISCL
+
+USE_GITHUB= yes
+GH_ACCOUNT= haesbaert
+GH_PROJECT= mdnsd
+
+USES= localbase uidfix
+USE_RC_SUBR= mdnsd
+MAKE_ENV= LDADD="${LIBS}"
+MAKE_ARGS= BINDIR="${PREFIX}/sbin" \
+ MANDIR="${PREFIX}/man/man"
+CFLAGS+= -D__dead=__dead2
+LDFLAGS+= -Wl,--as-needed # -lutil
+LIBS+= -lopenbsd
+SUB_LIST= COMMENT="${COMMENT}"
+PLIST_FILES= sbin/mdnsctl \
+ sbin/mdnsd \
+ man/man8/mdnsctl.8.gz \
+ man/man8/mdnsd.8.gz
+PORTDOCS= *
+
+USERS= _mdnsd
+GROUPS= _mdnsd
+
+OPTIONS_DEFINE= DOCS STATIC
+
+STATIC_BUILD_DEPENDS= ${LOCALBASE}/lib/libevent.a:devel/libevent2 \
+ ${LOCALBASE}/lib/libopenbsd.a:devel/libopenbsd
+STATIC_MAKE_ENV= NO_SHARED=1
+STATIC_LIB_DEPENDS_OFF= libevent.so:devel/libevent2 \
+ libopenbsd.so:devel/libopenbsd
+
+post-patch:
+# warning: duplicate script for target "maninstall" ignored
+ @${REINPLACE_CMD} '/bsd\.man\.mk/d' ${WRKSRC}/*/Makefile
+
+post-install-DOCS-on:
+ (cd ${WRKSRC}/docs && ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR})
+ ${INSTALL_MAN} ${WRKSRC}/README ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.mk>
diff --git a/dns/openmdns/distinfo b/dns/openmdns/distinfo
new file mode 100644
index 000000000000..b33dcb317422
--- /dev/null
+++ b/dns/openmdns/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1477213204
+SHA256 (libopenbsd-r298107.tar.xz) = f2acd6156d948a4f9a73d9dce65a6f23b3969f87026100edb35c31fc10abc307
+SIZE (libopenbsd-r298107.tar.xz) = 13536
+SHA256 (haesbaert-mdnsd-0.6-8-g07cf5c1_GH0.tar.gz) = f04c0d77d900490cb7429a076ddba0b279b999db2faf299d5880522fa37f865c
+SIZE (haesbaert-mdnsd-0.6-8-g07cf5c1_GH0.tar.gz) = 2935405
diff --git a/dns/openmdns/files/mdnsd.in b/dns/openmdns/files/mdnsd.in
new file mode 100644
index 000000000000..ba621af11830
--- /dev/null
+++ b/dns/openmdns/files/mdnsd.in
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+# PROVIDE: mdnsd
+# REQUIRE: LOGIN FILESYSTEMS
+# KEYWORD: shutdown
+
+. /etc/rc.subr
+
+name="mdnsd"
+desc="%%COMMENT%%"
+rcvar="${name}_enable"
+command="%%PREFIX%%/sbin/${name}"
+command_args="em0"
+extra_commands="reload"
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/dns/openmdns/files/patch-compat b/dns/openmdns/files/patch-compat
new file mode 100644
index 000000000000..8a34a2eee106
--- /dev/null
+++ b/dns/openmdns/files/patch-compat
@@ -0,0 +1,62 @@
+--- mdnsd/mdns.h.orig 2015-05-29 14:18:11 UTC
++++ mdnsd/mdns.h
+@@ -31,6 +31,37 @@
+ #include <event.h>
+ #include <string.h>
+
++#ifndef T_NSEC
++#define T_NSEC 47 /* from OpenBSD */
++#endif
++
++#ifndef IFT_CARP
++#define IFT_CARP 0xf8 /* from DragonFly and NetBSD */
++#endif
++
++#ifndef LINK_STATE_IS_UP /* from DragonFly and OpenBSD */
++#define LINK_STATE_IS_UP(_s) ((_s) >= LINK_STATE_UP)
++#endif
++
++/* Copied from <sys/time.h> on OpenBSD */
++#ifndef timespeccmp
++#define timespeccmp(tsp, usp, cmp) \
++ (((tsp)->tv_sec == (usp)->tv_sec) ? \
++ ((tsp)->tv_nsec cmp (usp)->tv_nsec) : \
++ ((tsp)->tv_sec cmp (usp)->tv_sec))
++#endif
++#ifndef timespecsub
++#define timespecsub(tsp, usp, vsp) \
++ do { \
++ (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \
++ (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \
++ if ((vsp)->tv_nsec < 0) { \
++ (vsp)->tv_sec--; \
++ (vsp)->tv_nsec += 1000000000L; \
++ } \
++ } while (0)
++#endif
++
+ #define MAXCHARSTR MAXHOSTNAMELEN
+ #define MAXLABELLEN 64
+ #define MAXPROTOLEN 4
+--- mdnsd/mdnsd.c.orig 2015-05-29 14:18:11 UTC
++++ mdnsd/mdnsd.c
+@@ -46,7 +46,9 @@ void fetchmyname(char [MAXHOSTNAMELEN])
+ void fetchhinfo(struct hinfo *);
+
+ struct mdnsd_conf *conf = NULL;
++#ifdef __OpenBSD__
+ extern char *malloc_options;
++#endif
+
+ __dead void
+ usage(void)
+@@ -230,7 +232,9 @@ main(int argc, char *argv[])
+ switch (ch) {
+ case 'd':
+ debug = 1;
++#ifdef __OpenBSD__
+ malloc_options = "AFGJPX";
++#endif
+ break;
+ case 'v':
+ display_version();
diff --git a/dns/openmdns/files/patch-mdnsd_kiface.c b/dns/openmdns/files/patch-mdnsd_kiface.c
new file mode 100644
index 000000000000..9545f8423361
--- /dev/null
+++ b/dns/openmdns/files/patch-mdnsd_kiface.c
@@ -0,0 +1,18 @@
+In file included from kiface.c:25:0:
+kiface.c:67:1: error: expected ';', identifier or '(' before 'void'
+ RB_GENERATE(kif_tree, kif_node, entry, kif_compare)
+ ^
+
+--- mdnsd/kiface.c.orig 2015-05-29 14:18:11 UTC
++++ mdnsd/kiface.c
+@@ -63,8 +63,8 @@ struct {
+
+
+ RB_HEAD(kif_tree, kif_node) kit;
+-RB_PROTOTYPE(kif_tree, kif_node, entry, kif_compare)
+-RB_GENERATE(kif_tree, kif_node, entry, kif_compare)
++RB_PROTOTYPE(kif_tree, kif_node, entry, kif_compare);
++RB_GENERATE(kif_tree, kif_node, entry, kif_compare);
+
+ int
+ kif_init(void)
diff --git a/dns/openmdns/files/patch-mdnsd_mdnsd.h b/dns/openmdns/files/patch-mdnsd_mdnsd.h
new file mode 100644
index 000000000000..ce4e88c0b8b7
--- /dev/null
+++ b/dns/openmdns/files/patch-mdnsd_mdnsd.h
@@ -0,0 +1,25 @@
+In file included from log.c:33:
+In file included from mdnsd/log.h:24:
+In file included from mdnsd/mdnsd.h:30:
+/usr/local/include/imsg.h:31:2: error: type name requires a specifier or qualifier
+ TAILQ_ENTRY(ibuf) entry;
+ ^
+/usr/local/include/imsg.h:31:14: error: a parameter list without types is only allowed in a function
+ definition
+ TAILQ_ENTRY(ibuf) entry;
+ ^
+/usr/local/include/imsg.h:31:19: error: expected ';' at end of declaration list
+ TAILQ_ENTRY(ibuf) entry;
+ ^
+[...]
+
+--- mdnsd/mdnsd.h.orig 2015-05-29 14:18:11 UTC
++++ mdnsd/mdnsd.h
+@@ -18,6 +18,7 @@
+ #define _MDNSD_H_
+
+ #include <sys/param.h>
++#include <sys/queue.h>
+ #include <sys/socket.h>
+ #include <sys/tree.h>
+ #include <sys/types.h>
diff --git a/dns/openmdns/files/patch-mdnsd_packet.c b/dns/openmdns/files/patch-mdnsd_packet.c
new file mode 100644
index 000000000000..f39f05b05603
--- /dev/null
+++ b/dns/openmdns/files/patch-mdnsd_packet.c
@@ -0,0 +1,44 @@
+packet.c:919:22: error: passing 'u_char [64]' to parameter of type 'const char *' converts between
+ pointers to integer types with different sign [-Werror=pointer-sign]
+ if (strlcat(dname, label, MAXHOSTNAMELEN) >= MAXHOSTNAMELEN) {
+ ^~~~~
+/usr/include/string.h:92:59: note: passing argument to parameter here
+size_t strlcat(char * __restrict, const char * __restrict, size_t);
+ ^
+packet.c:986:7: error: assigning to 'char *' from 'u_int8_t *' (aka 'unsigned char *') converts
+ between pointers to integer types with different sign [-Werror=pointer-sign]
+ buf = *pbuf;
+ ^ ~~~~~
+packet.c:1025:7: error: assigning to 'char *' from 'u_int8_t *' (aka 'unsigned char *') converts
+ between pointers to integer types with different sign [-Werror=pointer-sign]
+ buf = *pbuf;
+ ^ ~~~~~
+packet.c:1033:22: error: passing 'char *' to parameter of type 'u_int8_t *' (aka 'unsigned char *')
+ converts between pointers to integer types with different sign [-Werror=pointer-sign]
+ if (rr_parse_dname(buf, tmplen, rr->rdata.SRV.target) == -1)
+ ^~~
+packet.c:71:32: note: passing argument to parameter here
+int rr_parse_dname(u_int8_t *, u_int16_t, char [MAXHOSTNAMELEN]);
+ ^
+4 errors generated.
+
+--- mdnsd/packet.c.orig 2015-05-29 14:18:11 UTC
++++ mdnsd/packet.c
+@@ -853,7 +853,7 @@ pkt_parse_dname(u_int8_t *buf, u_int16_t
+ int jumped = 0;
+ u_int16_t oldlen = len;
+ size_t slen;
+- u_char label[MAXLABELLEN];
++ char label[MAXLABELLEN];
+
+ /* be extra safe */
+ bzero(dname, MAXHOSTNAMELEN);
+@@ -948,7 +948,7 @@ pkt_parse_rr(u_int8_t **pbuf, u_int16_t
+ u_int16_t us, rdlen, tmplen;
+ u_int32_t ul;
+ ssize_t n;
+- char *buf;
++ u_char *buf;
+
+ n = pkt_parse_dname(*pbuf, *len, rr->rrs.dname);
+ if (n == -1)
diff --git a/dns/openmdns/pkg-descr b/dns/openmdns/pkg-descr
new file mode 100644
index 000000000000..dfd70eab4948
--- /dev/null
+++ b/dns/openmdns/pkg-descr
@@ -0,0 +1,5 @@
+OpenMDNS is a full implementation of MDNS/DNS-SD, it aims to be a light
+replacement for Avahi/Bonjour. Currently, OpenMDNS is about 10% of the size
+of Avahi.
+
+WWW: http://www.haesbaert.org/openmdns/