1
0
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:
david
2009-10-27 19:33:50 +00:00
parent a56ff60c50
commit 9a1ec98da3
145 changed files with 22384 additions and 17731 deletions

View File

@@ -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;