]> The Tcpdump Group git mirrors - libpcap/commitdiff
NPF: report the system error for PacketSetHwFilter() failures.
authorGuy Harris <[email protected]>
Sun, 27 Dec 2020 21:10:16 +0000 (13:10 -0800)
committerGuy Harris <[email protected]>
Sun, 27 Dec 2020 21:10:16 +0000 (13:10 -0800)
It *does* fail to set promiscuous mode on some devices, such as bridge
devices; knowing what error it is might help us distinguish "we don't
support promiscuous mode" from some other, unexpected error.

pcap-npf.c

index 201597d83a1a1cf8938baa5aec83cad8d3d03c2b..1b18608d1f59ba4648e48abb4d9ac117cc9509d4 100644 (file)
@@ -1175,7 +1175,9 @@ pcap_activate_npf(pcap_t *p)
 
                if (PacketSetHwFilter(pw->adapter,NDIS_PACKET_TYPE_PROMISCUOUS) == FALSE)
                {
-                       snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "failed to set hardware filter to promiscuous mode");
+                       pcap_fmt_errmsg_for_win32_err(p->errbuf,
+                           PCAP_ERRBUF_SIZE, GetLastError(),
+                           "failed to set hardware filter to promiscuous mode);
                        goto bad;
                }
        }
@@ -1193,7 +1195,9 @@ pcap_activate_npf(pcap_t *p)
                        NDIS_PACKET_TYPE_BROADCAST |
                        NDIS_PACKET_TYPE_MULTICAST) == FALSE)
                {
-                       snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "failed to set hardware filter to non-promiscuous mode");
+                       pcap_fmt_errmsg_for_win32_err(p->errbuf,
+                           PCAP_ERRBUF_SIZE, GetLastError(),
+                           "failed to set hardware filter to non-promiscuous mode");
                        goto bad;
                }
        }