From 1b3eea3d90253a17a8a773ec34d843aa3b0ede83 Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Sun, 5 May 2013 19:38:27 +0200 Subject: [PATCH] os: add support for DragonFly BSD This is similar to FreeBSD except that DragonFly BSD does not support the following: - link aggregation - interface description - DMI --- NEWS | 2 ++ m4/os.m4 | 1 + src/daemon/Makefile.am | 5 +++++ src/daemon/interfaces-bsd.c | 7 ++++++- src/daemon/lldpd.c | 9 +++++---- src/daemon/priv.c | 12 +++++++----- 6 files changed, 26 insertions(+), 10 deletions(-) diff --git a/NEWS b/NEWS index e542518f..2188bd07 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,6 @@ lldpd (0.7.3) + * Features: + + DragonFly BSD support. * Fixes: + Fix IPv4/IPv6 address discovery in Linux. diff --git a/m4/os.m4 b/m4/os.m4 index 7947dc91..28ab1686 100644 --- a/m4/os.m4 +++ b/m4/os.m4 @@ -19,6 +19,7 @@ AC_DEFUN([lldp_CHECK_OS], [ lldp_DEFINE_OS(linux*, Linux, LINUX) lldp_DEFINE_OS(freebsd*|kfreebsd*, FreeBSD, FREEBSD) + lldp_DEFINE_OS(dragonfly*, [DragonFly BSD], DRAGONFLY) lldp_DEFINE_OS(openbsd*, OpenBSD, OPENBSD) lldp_DEFINE_OS(netbsd*, NetBSD, NETBSD) lldp_DEFINE_OS(darwin*, [Mac OS X], OSX) diff --git a/src/daemon/Makefile.am b/src/daemon/Makefile.am index 21567af8..bcf79b58 100644 --- a/src/daemon/Makefile.am +++ b/src/daemon/Makefile.am @@ -28,6 +28,11 @@ liblldpd_la_SOURCES += \ netlink.c \ dmi-linux.c endif +if HOST_OS_DRAGONFLY +liblldpd_la_SOURCES += \ + interfaces-bsd.c \ + dmi-dummy.c +endif if HOST_OS_FREEBSD liblldpd_la_SOURCES += \ interfaces-bsd.c \ diff --git a/src/daemon/interfaces-bsd.c b/src/daemon/interfaces-bsd.c index 961dd767..9d1cb1a4 100644 --- a/src/daemon/interfaces-bsd.c +++ b/src/daemon/interfaces-bsd.c @@ -31,6 +31,9 @@ # include # include # include +#elif defined HOST_OS_DRAGONFLY +# include +# include #elif defined HOST_OS_OPENBSD # include # include @@ -74,7 +77,7 @@ ifbsd_check_bridge(struct lldpd *cfg, .ifbic_req = req }; -#if defined HOST_OS_FREEBSD || defined HOST_OS_NETBSD || defined HOST_OS_OSX +#if defined HOST_OS_FREEBSD || defined HOST_OS_NETBSD || defined HOST_OS_OSX || HOST_OS_DRAGONFLY struct ifdrv ifd = { .ifd_cmd = BRDGGIFS, .ifd_len = sizeof(bifc), @@ -260,6 +263,8 @@ ifbsd_check_bond(struct lldpd *cfg, } end: free(ibsr_p->ibsr_buffer); +#elif defined HOST_OS_DRAGONFLY + log_debug("interfaces", "DragonFly BSD does not support link aggregation"); #else # error Unsupported OS #endif diff --git a/src/daemon/lldpd.c b/src/daemon/lldpd.c index 952587ac..afd18d29 100644 --- a/src/daemon/lldpd.c +++ b/src/daemon/lldpd.c @@ -37,9 +37,10 @@ #include #include #include -#if defined HOST_OS_FREEBSD || \ - defined HOST_OS_OPENBSD || \ - defined HOST_OS_NETBSD || \ +#if defined HOST_OS_FREEBSD || \ + defined HOST_OS_DRAGONFLY || \ + defined HOST_OS_OPENBSD || \ + defined HOST_OS_NETBSD || \ defined HOST_OS_OSX # include # include @@ -873,7 +874,7 @@ lldpd_forwarding_enabled(void) rc = 1; close(f); } -#elif defined HOST_OS_FREEBSD || defined HOST_OS_OPENBSD || defined HOST_OS_NETBSD || defined HOST_OS_OSX +#elif defined HOST_OS_FREEBSD || defined HOST_OS_OPENBSD || defined HOST_OS_NETBSD || defined HOST_OS_OSX || defined HOST_OS_DRAGONFLY int n, mib[4] = { CTL_NET, PF_INET, diff --git a/src/daemon/priv.c b/src/daemon/priv.c index 422dded3..fc3e5a56 100644 --- a/src/daemon/priv.c +++ b/src/daemon/priv.c @@ -41,12 +41,13 @@ # include /* For BPF filtering */ #endif #if defined HOST_OS_FREEBSD || \ + HOST_OS_DRAGONFLY || \ HOST_OS_NETBSD || \ HOST_OS_OPENBSD || \ HOST_OS_OSX # include #endif -#if defined HOST_OS_FREEBSD || HOST_OS_OSX +#if defined HOST_OS_FREEBSD || HOST_OS_OSX || HOST_OS_DRAGONFLY # include #endif #include @@ -403,9 +404,10 @@ asroot_iface_init() rc = 0; -#elif defined HOST_OS_FREEBSD || \ - defined HOST_OS_OPENBSD || \ - defined HOST_OS_NETBSD || \ +#elif defined HOST_OS_FREEBSD || \ + defined HOST_OS_DRAGONFLY || \ + defined HOST_OS_OPENBSD || \ + defined HOST_OS_NETBSD || \ defined HOST_OS_OSX int n = 0; int enable, required; @@ -528,7 +530,7 @@ asroot_iface_multicast() must_read(remote, ifr.ifr_name, IFNAMSIZ); #if defined HOST_OS_LINUX must_read(remote, ifr.ifr_hwaddr.sa_data, ETHER_ADDR_LEN); -#elif defined HOST_OS_FREEBSD || defined HOST_OS_OSX +#elif defined HOST_OS_FREEBSD || defined HOST_OS_OSX || defined HOST_OS_DRAGONFLY /* Black magic from mtest.c */ struct sockaddr_dl *dlp = (struct sockaddr_dl *)&ifr.ifr_addr; dlp->sdl_len = sizeof(struct sockaddr_dl); -- 2.47.2