From b61286dc2cd8d925e1fae546e84ca83e47fbb4f6 Mon Sep 17 00:00:00 2001 From: david Date: Fri, 20 Aug 2010 04:50:19 +0000 Subject: [PATCH] Add #ifdef guards around two uses of AF_LINK (there was already a guard around the third use). Vlatko submitted this patch to compile on Android. --- libdnet-stripped/NMAP_MODIFICATIONS | 36 +++++++++++++++++++++++++++++ libdnet-stripped/src/addr.c | 6 +++++ 2 files changed, 42 insertions(+) diff --git a/libdnet-stripped/NMAP_MODIFICATIONS b/libdnet-stripped/NMAP_MODIFICATIONS index 0e06c90e5..fb4bf1c2e 100644 --- a/libdnet-stripped/NMAP_MODIFICATIONS +++ b/libdnet-stripped/NMAP_MODIFICATIONS @@ -566,6 +566,42 @@ Index: src/intf-win32.c + return 0; +} +o Added some missing #ifdef AF_LINK guards to enable compiling on + Android. http://seclists.org/nmap-dev/2010/q2/1021. [Vlatko Kosturjak] + +Index: src/addr.c +=================================================================== +--- src/addr.c (revision 19860) ++++ src/addr.c (working copy) +@@ -253,7 +253,11 @@ + # ifdef HAVE_SOCKADDR_SA_LEN + so->sdl.sdl_len = sizeof(so->sdl); + # endif ++# ifdef AF_LINK + so->sdl.sdl_family = AF_LINK; ++# else ++ so->sdl.sdl_family = AF_UNSPEC; ++# endif + so->sdl.sdl_alen = ETH_ADDR_LEN; + memcpy(LLADDR(&so->sdl), &a->addr_eth, ETH_ADDR_LEN); + #else +@@ -300,6 +304,7 @@ + + switch (sa->sa_family) { + #ifdef HAVE_NET_IF_DL_H ++# ifdef AF_LINK + case AF_LINK: + if (so->sdl.sdl_alen != ETH_ADDR_LEN) { + errno = EINVAL; +@@ -309,6 +314,7 @@ + a->addr_bits = ETH_ADDR_BITS; + memcpy(&a->addr_eth, LLADDR(&so->sdl), ETH_ADDR_LEN); + break; ++# endif + #endif + case AF_UNSPEC: + case ARP_HRD_ETH: /* XXX- Linux arp(7) */ + ===CHANGES ALREADY MERGED TO UPSTREAM LIBDNET GO BELOW THIS LINE=== o Made some code changes to intf.c (the patch below). This does the following: diff --git a/libdnet-stripped/src/addr.c b/libdnet-stripped/src/addr.c index 073e8e3fe..7a71345a9 100644 --- a/libdnet-stripped/src/addr.c +++ b/libdnet-stripped/src/addr.c @@ -253,7 +253,11 @@ addr_ntos(const struct addr *a, struct sockaddr *sa) # ifdef HAVE_SOCKADDR_SA_LEN so->sdl.sdl_len = sizeof(so->sdl); # endif +# ifdef AF_LINK so->sdl.sdl_family = AF_LINK; +# else + so->sdl.sdl_family = AF_UNSPEC; +# endif so->sdl.sdl_alen = ETH_ADDR_LEN; memcpy(LLADDR(&so->sdl), &a->addr_eth, ETH_ADDR_LEN); #else @@ -300,6 +304,7 @@ addr_ston(const struct sockaddr *sa, struct addr *a) switch (sa->sa_family) { #ifdef HAVE_NET_IF_DL_H +# ifdef AF_LINK case AF_LINK: if (so->sdl.sdl_alen != ETH_ADDR_LEN) { errno = EINVAL; @@ -309,6 +314,7 @@ addr_ston(const struct sockaddr *sa, struct addr *a) a->addr_bits = ETH_ADDR_BITS; memcpy(&a->addr_eth, LLADDR(&so->sdl), ETH_ADDR_LEN); break; +# endif #endif case AF_UNSPEC: case ARP_HRD_ETH: /* XXX- Linux arp(7) */