mirror of
https://github.com/nmap/nmap.git
synced 2025-12-25 00:49:01 +00:00
Upgrade libpcap to version 1.0.0.
This commit is contained in:
@@ -34,7 +34,7 @@
|
||||
|
||||
#ifndef lint
|
||||
static const char rcsid[] _U_ =
|
||||
"@(#) $Header: /tcpdump/master/libpcap/inet.c,v 1.66.2.6 2007/06/11 09:52:04 guy Exp $ (LBL)";
|
||||
"@(#) $Header: /tcpdump/master/libpcap/inet.c,v 1.75.2.4 2008-04-20 18:19:24 guy Exp $ (LBL)";
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
@@ -356,6 +356,40 @@ add_or_find_if(pcap_if_t **curdev_ret, pcap_if_t **alldevs, const char *name,
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* XXX - on FreeBSDs that support it, should it get the sysctl named
|
||||
* "dev.{adapter family name}.{adapter unit}.%desc" to get a description
|
||||
* of the adapter? Note that "dev.an.0.%desc" is "Aironet PC4500/PC4800"
|
||||
* with my Cisco 350 card, so the name isn't entirely descriptive. The
|
||||
* "dev.an.0.%pnpinfo" has a better description, although one might argue
|
||||
* that the problem is really a driver bug - if it can find out that it's
|
||||
* a Cisco 340 or 350, rather than an old Aironet card, it should use
|
||||
* that in the description.
|
||||
*
|
||||
* Do NetBSD, DragonflyBSD, or OpenBSD support this as well? OpenBSD
|
||||
* lets you get a description, but it's not generated by the OS, it's
|
||||
* set with another ioctl that ifconfig supports; we use that to get
|
||||
* the description in OpenBSD.
|
||||
*
|
||||
* In OS X, the System Configuration framework can apparently return
|
||||
* names in 10.4 and later; it also appears that freedesktop.org's HAL
|
||||
* offers an "info.product" string, but the HAL specification says
|
||||
* it "should not be used in any UI" and "subsystem/capability
|
||||
* specific properties" should be used instead. Using that would
|
||||
* require that libpcap applications be linked with the frameworks/
|
||||
* libraries in question, which would be a bit of a pain unless we
|
||||
* offer, for example, a pkg-config:
|
||||
*
|
||||
* http://pkg-config.freedesktop.org/wiki/
|
||||
*
|
||||
* script, so applications can just use that script to find out what
|
||||
* libraries you need to link with when linking with libpcap.
|
||||
* pkg-config is GPLed; I don't know whether that would prevent its
|
||||
* use with a BSD-licensed library such as libpcap.
|
||||
*
|
||||
* Do any other UN*Xes, or desktop environments support getting a
|
||||
* description?
|
||||
*/
|
||||
int
|
||||
add_addr_to_iflist(pcap_if_t **alldevs, const char *name, u_int flags,
|
||||
struct sockaddr *addr, size_t addr_size,
|
||||
@@ -365,9 +399,32 @@ add_addr_to_iflist(pcap_if_t **alldevs, const char *name, u_int flags,
|
||||
char *errbuf)
|
||||
{
|
||||
pcap_if_t *curdev;
|
||||
char *description = NULL;
|
||||
pcap_addr_t *curaddr, *prevaddr, *nextaddr;
|
||||
#ifdef SIOCGIFDESCR
|
||||
struct ifreq ifrdesc;
|
||||
char ifdescr[IFDESCRSIZE];
|
||||
int s;
|
||||
#endif
|
||||
|
||||
if (add_or_find_if(&curdev, alldevs, name, flags, NULL, errbuf) == -1) {
|
||||
#ifdef SIOCGIFDESCR
|
||||
/*
|
||||
* Get the description for the interface.
|
||||
*/
|
||||
memset(&ifrdesc, 0, sizeof ifrdesc);
|
||||
strlcpy(ifrdesc.ifr_name, name, sizeof ifrdesc.ifr_name);
|
||||
ifrdesc.ifr_data = (caddr_t)&ifdescr;
|
||||
s = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (s >= 0) {
|
||||
if (ioctl(s, SIOCGIFDESCR, &ifrdesc) == 0 &&
|
||||
strlen(ifrdesc.ifr_data) != 0)
|
||||
description = ifrdesc.ifr_data;
|
||||
close(s);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (add_or_find_if(&curdev, alldevs, name, flags, description,
|
||||
errbuf) == -1) {
|
||||
/*
|
||||
* Error - give up.
|
||||
*/
|
||||
@@ -607,6 +664,12 @@ pcap_lookupnet(device, netp, maskp, errbuf)
|
||||
#endif
|
||||
#ifdef HAVE_SEPTEL_API
|
||||
|| strstr(device, "septel") != NULL
|
||||
#endif
|
||||
#ifdef PCAP_SUPPORT_BT
|
||||
|| strstr(device, "bluetooth") != NULL
|
||||
#endif
|
||||
#ifdef PCAP_SUPPORT_USB
|
||||
|| strstr(device, "usb") != NULL
|
||||
#endif
|
||||
) {
|
||||
*netp = *maskp = 0;
|
||||
|
||||
Reference in New Issue
Block a user