]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Fix compile on NetBSD
authorRoy Marples <roy@marples.name>
Fri, 17 Apr 2009 13:31:41 +0000 (13:31 +0000)
committerRoy Marples <roy@marples.name>
Fri, 17 Apr 2009 13:31:41 +0000 (13:31 +0000)
if-bsd.c
net.c

index 43170bd75367528128913b6e3eaf83eeb04f54d9..7517e714caff01cdc2f55faf19be34ec8147346f 100644 (file)
--- a/if-bsd.c
+++ b/if-bsd.c
@@ -35,7 +35,6 @@
 #include <arpa/inet.h>
 #include <net/if.h>
 #include <net/if_dl.h>
-#include <net/if_types.h>
 #include <net/route.h>
 #include <netinet/in.h>
 #ifdef __DragonFly__
diff --git a/net.c b/net.c
index 062002e1facef9720ee02a1b90eb9d68f30bcee6..c3d154a0f42036e0908fc0209cc0fe34fd456f72 100644 (file)
--- a/net.c
+++ b/net.c
 #include <arpa/inet.h>
 #include <net/if.h>
 #include <net/if_arp.h>
+#ifdef AF_LINK
+#  include <net/if_dl.h>
+#  include <net/if_types.h>
+#endif
 #include <netinet/in_systm.h>
 #include <netinet/in.h>
 #include <netinet/ip.h>
@@ -271,6 +275,12 @@ discover_interfaces(int argc, char * const *argv)
 #ifdef AF_LINK
                if (ifa->ifa_addr->sa_family != AF_LINK)
                        continue;
+               /* FIXME: Why do I get 2 AF_LINK addresses per interface? */
+               for (ifp = ifs; ifp; ifp = ifp->next)
+                       if (strcmp(ifp->name, ifa->ifa_name) == 0)
+                               break;
+               if (ifp)
+                       continue;
 #elif AF_PACKET
                if (ifa->ifa_addr->sa_family != AF_PACKET)
                        continue;
@@ -326,7 +336,7 @@ discover_interfaces(int argc, char * const *argv)
                                break;
                        }
                        ifp->hwlen = sdl->sdl_alen;
-                       memcpy(ifp->hwaddr, LLADDR(sdl), ifp->hwlen);
+                       memcpy(ifp->hwaddr, CLLADDR(sdl), ifp->hwlen);
 #elif AF_PACKET
                        sll = (const struct sockaddr_ll *)(void *)ifa->ifa_addr;
                        ifp->family = sll->sll_hatype;
@@ -364,8 +374,12 @@ do_address(const char *ifname,
                a = (const struct sockaddr_in *)(void *)&ifa->ifa_addr;
                n = (const struct sockaddr_in *)(void *)&ifa->ifa_netmask;
                if (ifa->ifa_flags & IFF_POINTOPOINT)
-                       d = (const struct sockaddr_in *)
-                               (void *)&ifa->ifa_ifu.ifu_dstaddr;
+                       d = (const struct sockaddr_in *)(void *)
+#ifdef __linux__
+                               &ifa->ifa_ifu.ifu_dstaddr;
+#else
+                               &ifa->ifa_dstaddr;
+#endif
                else
                        d = NULL;
                if (act == 1) {