Files
passivedns/0002-Add-support-for-loopback-devices.patch

65 lines
1.8 KiB
Diff
Raw Permalink Normal View History

From 55ed09ab48c617f392bf3cc08bc02ea8249578c7 Mon Sep 17 00:00:00 2001
From: Shawn Michael <blkmajik@monkeyspunk.net>
Date: Wed, 8 Dec 2021 16:27:58 -0700
Subject: [PATCH 2/3] Add support for loopback devices
---
src/passivedns.c | 14 ++++++++++++++
src/passivedns.h | 1 +
2 files changed, 15 insertions(+)
diff --git a/src/passivedns.c b/src/passivedns.c
index b2c2a03..b05d3ba 100644
--- a/src/passivedns.c
+++ b/src/passivedns.c
@@ -66,6 +66,7 @@ uint8_t signal_reopen_log_files = 0;
static void usage();
static void show_version();
void check_vlan (packetinfo *pi);
+void prepare_null (packetinfo *pi);
void prepare_raw (packetinfo *pi);
void prepare_sll (packetinfo *pi);
void prepare_eth (packetinfo *pi);
@@ -141,6 +142,9 @@ void got_packet(u_char *useless, const struct pcap_pkthdr *pheader,
config.inpacket = 1;
switch (config.linktype) {
+ case DLT_NULL:
+ prepare_null(pi);
+ break;
case DLT_RAW:
prepare_raw(pi);
break;
@@ -173,6 +177,16 @@ void got_packet(u_char *useless, const struct pcap_pkthdr *pheader,
config.inpacket = 0;
}
+void prepare_null(packetinfo *pi)
+{
+ pi->eth_hlen = LOOPBACK_HDR_LEN;
+ if ((u_int32_t)*pi->packet == AF_INET) {
+ pi->eth_type = ETHERNET_TYPE_IP;
+ } else {
+ pi->eth_type = ETHERNET_TYPE_IPV6;
+ }
+}
+
void prepare_raw(packetinfo *pi)
{
pi->eth_hlen = 0;
diff --git a/src/passivedns.h b/src/passivedns.h
index 1031104..594852d 100644
--- a/src/passivedns.h
+++ b/src/passivedns.h
@@ -54,6 +54,7 @@
#define IP6_PROTO_ICMP 58
#define SLL_HDR_LEN 16
+#define LOOPBACK_HDR_LEN 4
#define IP4_HEADER_LEN 20
#define IP6_HEADER_LEN 40
#define TCP_HEADER_LEN 20
--
2.37.3