]> git.ipfire.org Git - thirdparty/lldpd.git/commitdiff
os: add support for DragonFly BSD
authorVincent Bernat <bernat@luffy.cx>
Sun, 5 May 2013 17:38:27 +0000 (19:38 +0200)
committerVincent Bernat <bernat@luffy.cx>
Sun, 5 May 2013 17:38:27 +0000 (19:38 +0200)
This is similar to FreeBSD except that DragonFly BSD does not support
the following:

 - link aggregation
 - interface description
 - DMI

NEWS
m4/os.m4
src/daemon/Makefile.am
src/daemon/interfaces-bsd.c
src/daemon/lldpd.c
src/daemon/priv.c

diff --git a/NEWS b/NEWS
index e542518ff3dbdccdad4392ea3988146a64388248..2188bd07909a64f188a181c43cc2215fe1ea1bd0 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,6 @@
 lldpd (0.7.3)
+  * Features:
+    + DragonFly BSD support.
   * Fixes:
     + Fix IPv4/IPv6 address discovery in Linux.
 
index 7947dc918cf3af1d09dc538885ad420e8a3e8624..28ab16863f63f3b8c4256bfd4ec6177614125611 100644 (file)
--- 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)
index 21567af8b8f5e1b61185646623c2b9057d347bee..bcf79b585f5acfc4c9e75f20fd7b640a467c9185 100644 (file)
@@ -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 \
index 961dd7671dd5faefeed6cd8fbdf179a5dc6e33ca..9d1cb1a4544c3e6091b0a7272c9136c3f62c0d46 100644 (file)
@@ -31,6 +31,9 @@
 # include <net/if_vlan_var.h>
 # include <net/if_bridgevar.h>
 # include <net/if_lagg.h>
+#elif defined HOST_OS_DRAGONFLY
+# include <net/vlan/if_vlan_var.h>
+# include <net/bridge/if_bridgevar.h>
 #elif defined HOST_OS_OPENBSD
 # include <net/if_vlan_var.h>
 # include <net/if_bridge.h>
@@ -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
index 952587ac2f3939b96fc0bfbb5a994392aeab2341..afd18d29b00f899f1b74101451954eb11e0466c1 100644 (file)
 #include <netinet/if_ether.h>
 #include <pwd.h>
 #include <grp.h>
-#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 <sys/param.h>
 # include <sys/sysctl.h>
@@ -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,
index 422dded3a59126735cd47043f19a734b7a249258..fc3e5a56433a706e0c956938249d2ad9eed6ca22 100644 (file)
 # include <linux/filter.h>     /* For BPF filtering */
 #endif
 #if defined HOST_OS_FREEBSD || \
+           HOST_OS_DRAGONFLY || \
            HOST_OS_NETBSD || \
            HOST_OS_OPENBSD || \
            HOST_OS_OSX
 # include <net/bpf.h>
 #endif
-#if defined HOST_OS_FREEBSD || HOST_OS_OSX
+#if defined HOST_OS_FREEBSD || HOST_OS_OSX || HOST_OS_DRAGONFLY
 # include <net/if_dl.h>
 #endif
 #include <netinet/if_ether.h>
@@ -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);