From af495cdc4956cf5d226b696b8cfc79d8bad322d4 Mon Sep 17 00:00:00 2001 From: djalal Date: Wed, 26 Sep 2012 09:24:00 +0000 Subject: [PATCH] Fixed a bug that prevented Nmap from finding any interfaces when one of them had the type ARPHDR_INFINIBAND; this was the case for IP-over-InfiniBand interfaces. However, This support is not complete since IPoIB interfaces use 20 bytes for the hardware address, and currently we only report and handle 6 bytes. Nmap IP level scans should work without any problem, please refer to the '--send-ip' switch and to the following thread: http://seclists.org/nmap-dev/2012/q3/642 This bug was reported by starlight.2012q3. --- CHANGELOG | 10 +++++++++ libdnet-stripped/NMAP_MODIFICATIONS | 34 +++++++++++++++++++++++++++++ libdnet-stripped/include/dnet/arp.h | 1 + libdnet-stripped/src/addr.c | 1 + 4 files changed, 46 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 7ffc72734..6d943a4b7 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,15 @@ # Nmap Changelog ($Id$); -*-text-*- +o Fixed a bug that prevented Nmap from finding any interfaces when one + of them had the type ARPHDR_INFINIBAND; this was the case for + IP-over-InfiniBand interfaces. However, This support is not complete + since IPoIB interfaces use 20 bytes for the hardware address, and + currently we only report and handle 6 bytes. + Nmap IP level scans should work without any problem, please refer to + the '--send-ip' switch and to the following thread: + http://seclists.org/nmap-dev/2012/q3/642 + This bug was reported by starlight.2012q3. [Djalal Harouni] + o Fixed a bug that prevented Nmap from finding any interfaces when one of them had the type ARPHDR_IEEE80211; this was the case for wireless interfaces operating in access point mode. This bug was reported by diff --git a/libdnet-stripped/NMAP_MODIFICATIONS b/libdnet-stripped/NMAP_MODIFICATIONS index 7c76d2872..9670a4fac 100644 --- a/libdnet-stripped/NMAP_MODIFICATIONS +++ b/libdnet-stripped/NMAP_MODIFICATIONS @@ -1226,3 +1226,37 @@ Index: libdnet-stripped/src/addr.c case ARP_HRD_IEEE80211_RADIOTAP: /* IEEE 802.11 + radiotap header */ a->addr_type = ADDR_TYPE_ETH; a->addr_bits = ETH_ADDR_BITS; + +o Support IP-over-InfiniBand devices and make addr_ston able to handle + them. However, this support is not complete since IPoIB interfaces + use 20 bytes for the hardware address, and currently we only report + and handle 6 bytes. Nmap IP level scans should work without any + problem, please see Nmap's '--send-ip' switch. + + For more information, please see this thread: + http://seclists.org/nmap-dev/2012/q3/642 + +Index: libdnet-stripped/include/dnet/arp.h +=================================================================== +--- libdnet-stripped/include/dnet/arp.h (revision 29876) ++++ libdnet-stripped/include/dnet/arp.h (working copy) +@@ -39,6 +39,7 @@ + #define ARP_HRD_ETH 0x0001 /* ethernet hardware */ + #define ARP_HRD_IEEE802 0x0006 /* IEEE 802 hardware */ + ++#define ARP_HRD_INFINIBAND 0x0020 /* InfiniBand */ + #define ARP_HDR_IEEE80211 0x0321 /* IEEE 802.11 */ + #define ARP_HRD_IEEE80211_RADIOTAP 0x0323 /* IEEE 802.11 + radiotap header */ + #define ARP_HRD_VOID 0xFFFF /* Void type, nothing is known */ +Index: libdnet-stripped/src/addr.c +=================================================================== +--- libdnet-stripped/src/addr.c (revision 29876) ++++ libdnet-stripped/src/addr.c (working copy) +@@ -318,6 +318,7 @@ + #endif + case AF_UNSPEC: + case ARP_HRD_ETH: /* XXX- Linux arp(7) */ ++ case ARP_HRD_INFINIBAND: /* InfiniBand */ + case ARP_HDR_IEEE80211: /* IEEE 802.11 */ + case ARP_HRD_IEEE80211_RADIOTAP: /* IEEE 802.11 + radiotap header */ + a->addr_type = ADDR_TYPE_ETH; diff --git a/libdnet-stripped/include/dnet/arp.h b/libdnet-stripped/include/dnet/arp.h index 6ec3ea589..907d36a86 100644 --- a/libdnet-stripped/include/dnet/arp.h +++ b/libdnet-stripped/include/dnet/arp.h @@ -39,6 +39,7 @@ struct arp_hdr { #define ARP_HRD_ETH 0x0001 /* ethernet hardware */ #define ARP_HRD_IEEE802 0x0006 /* IEEE 802 hardware */ +#define ARP_HRD_INFINIBAND 0x0020 /* InfiniBand */ #define ARP_HDR_IEEE80211 0x0321 /* IEEE 802.11 */ #define ARP_HRD_IEEE80211_RADIOTAP 0x0323 /* IEEE 802.11 + radiotap header */ #define ARP_HRD_VOID 0xFFFF /* Void type, nothing is known */ diff --git a/libdnet-stripped/src/addr.c b/libdnet-stripped/src/addr.c index dd3237cff..8e9a9ce70 100644 --- a/libdnet-stripped/src/addr.c +++ b/libdnet-stripped/src/addr.c @@ -318,6 +318,7 @@ addr_ston(const struct sockaddr *sa, struct addr *a) #endif case AF_UNSPEC: case ARP_HRD_ETH: /* XXX- Linux arp(7) */ + case ARP_HRD_INFINIBAND: /* InfiniBand */ case ARP_HDR_IEEE80211: /* IEEE 802.11 */ case ARP_HRD_IEEE80211_RADIOTAP: /* IEEE 802.11 + radiotap header */ a->addr_type = ADDR_TYPE_ETH;