1
0
mirror of https://github.com/nmap/nmap.git synced 2026-01-01 12:29:03 +00:00

Update libpcap to 1.10.5

This commit is contained in:
dmiller
2025-04-14 19:06:54 +00:00
parent 2bc341de52
commit aed27d094e
141 changed files with 12626 additions and 9811 deletions

View File

@@ -1,6 +1,4 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#ifndef _WIN32
#include <sys/param.h>
@@ -55,7 +53,7 @@ snf_pcap_stats(pcap_t *p, struct pcap_stat *ps)
int rc;
if ((rc = snf_ring_getstats(snfps->snf_ring, &stats))) {
pcap_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE,
pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE,
rc, "snf_get_stats");
return -1;
}
@@ -76,7 +74,7 @@ snf_platform_cleanup(pcap_t *p)
#endif
snf_ring_close(ps->snf_ring);
snf_close(ps->snf_handle);
pcap_cleanup_live_common(p);
pcapint_cleanup_live_common(p);
}
static int
@@ -181,7 +179,7 @@ snf_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user)
continue;
}
else {
pcap_fmt_errmsg_for_errno(p->errbuf,
pcapint_fmt_errmsg_for_errno(p->errbuf,
PCAP_ERRBUF_SIZE, err, "snf_read");
return -1;
}
@@ -192,7 +190,7 @@ snf_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user)
caplen = p->snapshot;
if ((p->fcode.bf_insns == NULL) ||
pcap_filter(p->fcode.bf_insns, req.pkt_addr, req.length, caplen)) {
pcapint_filter(p->fcode.bf_insns, req.pkt_addr, req.length, caplen)) {
hdr.ts = snf_timestamp_to_timeval(req.timestamp, p->opt.tstamp_precision);
hdr.caplen = caplen;
hdr.len = req.length;
@@ -217,7 +215,7 @@ snf_inject(pcap_t *p, const void *buf _U_, int size _U_)
if (ps->snf_inj == NULL) {
rc = snf_inject_open(ps->snf_boardnum, 0, &ps->snf_inj);
if (rc) {
pcap_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE,
pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE,
rc, "snf_inject_open");
return (-1);
}
@@ -228,12 +226,12 @@ snf_inject(pcap_t *p, const void *buf _U_, int size _U_)
return (size);
}
else {
pcap_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE,
pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE,
rc, "snf_inject_send");
return (-1);
}
#else
pcap_strlcpy(p->errbuf, "Sending packets isn't supported with this snf version",
pcapint_strlcpy(p->errbuf, "Sending packets isn't supported with this snf version",
PCAP_ERRBUF_SIZE);
return (-1);
#endif
@@ -276,7 +274,7 @@ snf_activate(pcap_t* p)
flags, /* may want pshared */
&ps->snf_handle);
if (err != 0) {
pcap_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE,
pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE,
err, "snf_open failed");
return -1;
}
@@ -286,7 +284,7 @@ snf_activate(pcap_t* p)
}
err = snf_ring_open_id(ps->snf_handle, ring_id, &ps->snf_ring);
if (err != 0) {
pcap_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE,
pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE,
err, "snf_ring_open_id(ring=%d) failed", ring_id);
return -1;
}
@@ -309,7 +307,7 @@ snf_activate(pcap_t* p)
err = snf_start(ps->snf_handle);
if (err != 0) {
pcap_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE,
pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE,
err, "snf_start failed");
return -1;
}
@@ -323,7 +321,7 @@ snf_activate(pcap_t* p)
p->linktype = DLT_EN10MB;
p->read_op = snf_read;
p->inject_op = snf_inject;
p->setfilter_op = install_bpf_program;
p->setfilter_op = pcapint_install_bpf_program;
p->setdirection_op = NULL; /* Not implemented.*/
p->set_datalink_op = snf_set_datalink;
p->getnonblock_op = snf_getnonblock;
@@ -358,7 +356,7 @@ snf_findalldevs(pcap_if_list_t *devlistp, char *errbuf)
if (snf_getifaddrs(&ifaddrs) || ifaddrs == NULL)
{
pcap_fmt_errmsg_for_errno(errbuf, PCAP_ERRBUF_SIZE,
pcapint_fmt_errmsg_for_errno(errbuf, PCAP_ERRBUF_SIZE,
errno, "snf_getifaddrs");
return (-1);
}
@@ -377,7 +375,7 @@ snf_findalldevs(pcap_if_list_t *devlistp, char *errbuf)
/*
* Myricom SNF adapter ports may appear as regular
* network interfaces, which would already have been
* added to the list of adapters by pcap_platform_finddevs()
* added to the list of adapters by pcapint_platform_finddevs()
* if this isn't an SNF-only version of libpcap.
*
* Our create routine intercepts pcap_create() calls for
@@ -416,7 +414,7 @@ snf_findalldevs(pcap_if_list_t *devlistp, char *errbuf)
* See if there's already an entry for the device
* with the name ifa->snf_ifa_name.
*/
dev = find_dev(devlistp, ifa->snf_ifa_name);
dev = pcapint_find_dev(devlistp, ifa->snf_ifa_name);
if (dev != NULL) {
/*
* Yes. Update its description.
@@ -425,7 +423,7 @@ snf_findalldevs(pcap_if_list_t *devlistp, char *errbuf)
desc_str = strdup(desc);
if (desc_str == NULL) {
pcap_fmt_errmsg_for_errno(errbuf,
pcapint_fmt_errmsg_for_errno(errbuf,
PCAP_ERRBUF_SIZE, errno,
"snf_findalldevs strdup");
return -1;
@@ -442,7 +440,7 @@ snf_findalldevs(pcap_if_list_t *devlistp, char *errbuf)
* PCAP_IF_CONNECTION_STATUS_CONNECTED or
* PCAP_IF_CONNECTION_STATUS_DISCONNECTED?
*/
dev = add_dev(devlistp, ifa->snf_ifa_name, 0, desc,
dev = pcapint_add_dev(devlistp, ifa->snf_ifa_name, 0, desc,
errbuf);
if (dev == NULL)
return -1;
@@ -457,14 +455,14 @@ snf_findalldevs(pcap_if_list_t *devlistp, char *errbuf)
* to IPv4 address.
*/
addr.sin_family = AF_INET;
if (add_addr_to_dev(dev, &addr, sizeof(addr),
if (pcapint_add_addr_to_dev(dev, &addr, sizeof(addr),
NULL, 0, NULL, 0, NULL, 0, errbuf) == -1)
return -1;
} else if (ret == -1) {
/*
* Error.
*/
pcap_fmt_errmsg_for_errno(errbuf,
pcapint_fmt_errmsg_for_errno(errbuf,
PCAP_ERRBUF_SIZE, errno,
"sinf_findalldevs inet_pton");
return -1;
@@ -492,7 +490,7 @@ snf_findalldevs(pcap_if_list_t *devlistp, char *errbuf)
* "disconnected", as "is this plugged into a network?"
* would be a per-port property.
*/
if (add_dev(devlistp, name,
if (pcapint_add_dev(devlistp, name,
PCAP_IF_CONNECTION_STATUS_NOT_APPLICABLE, desc,
errbuf) == NULL)
return (-1);
@@ -566,7 +564,7 @@ snf_create(const char *device, char *ebuf, int *is_ours)
*/
p->tstamp_precision_list = malloc(2 * sizeof(u_int));
if (p->tstamp_precision_list == NULL) {
pcap_fmt_errmsg_for_errno(ebuf, PCAP_ERRBUF_SIZE, errno,
pcapint_fmt_errmsg_for_errno(ebuf, PCAP_ERRBUF_SIZE, errno,
"malloc");
pcap_close(p);
return NULL;
@@ -590,7 +588,7 @@ snf_create(const char *device, char *ebuf, int *is_ours)
* There are no regular interfaces, just SNF interfaces.
*/
int
pcap_platform_finddevs(pcap_if_list_t *devlistp, char *errbuf)
pcapint_platform_finddevs(pcap_if_list_t *devlistp, char *errbuf)
{
return (0);
}
@@ -599,7 +597,7 @@ pcap_platform_finddevs(pcap_if_list_t *devlistp, char *errbuf)
* Attempts to open a regular interface fail.
*/
pcap_t *
pcap_create_interface(const char *device, char *errbuf)
pcapint_create_interface(const char *device, char *errbuf)
{
snprintf(errbuf, PCAP_ERRBUF_SIZE,
"This version of libpcap only supports SNF cards");