diff options
author | Denis Ovsienko <denis@ovsienko.info> | 2023-02-11 19:01:01 +0000 |
---|---|---|
committer | Denis Ovsienko <denis@ovsienko.info> | 2023-02-11 19:07:11 +0000 |
commit | 7ae7fa15f805bae9b15d7dc9c011fc02a4d3ddbb (patch) | |
tree | 84e63408003e4953781b1558cbaa3aaebf939a42 /print-nflog.c | |
parent | 472926044516097afda36e4e6f07423587a05b92 (diff) | |
download | tcpdump-7ae7fa15f805bae9b15d7dc9c011fc02a4d3ddbb.tar.gz |
NFLOG: Use correct AF code points on all OSes.
On Haiku R1/beta4 "make check" failed the "nglog-e" test case because
the printer did not recognize address family 2 as IPv4:
- 1 18:31:59.615994 version 0, resource ID 20, family IPv4 (2),
+ 1 18:31:59.615994 version 0, resource ID 20, family Unknown (2),
Fix print-nflog.c to use the wire encoding AF code points rather than
the OS libc AF constants. This fixes "make check" on Haiku and likely
fixes IPv6 NFLOG decoding on a few non-Linux OSes.
Diffstat (limited to 'print-nflog.c')
-rw-r--r-- | print-nflog.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/print-nflog.c b/print-nflog.c index 1e75561b..bbe4ccfc 100644 --- a/print-nflog.c +++ b/print-nflog.c @@ -103,9 +103,19 @@ typedef struct nflog_timestamp { #define NFULA_HWHEADER 16 /* skbuff's MAC-layer header */ #define NFULA_HWLEN 17 /* length of skbuff's MAC-layer header */ +/* + * Define two constants specifically for the two AF code points from the + * LINKTYPE_NFLOG specification above and use these constants instead of + * AF_INET and AF_INET6. This is the only way to dissect the "wire" encoding + * correctly because some BSD systems define AF_INET6 differently from Linux + * (see af.h) and Haiku defines both AF_INET and AF_INET6 differently from + * Linux. + */ +#define NFLOG_AF_INET 2 +#define NFLOG_AF_INET6 10 static const struct tok nflog_values[] = { - { AF_INET, "IPv4" }, - { AF_INET6, "IPv6" }, + { NFLOG_AF_INET, "IPv4" }, + { NFLOG_AF_INET6, "IPv6" }, { 0, NULL } }; @@ -203,11 +213,11 @@ nflog_if_print(netdissect_options *ndo, switch (GET_U_1(hdr->nflog_family)) { - case AF_INET: + case NFLOG_AF_INET: ip_print(ndo, p, length); break; - case AF_INET6: + case NFLOG_AF_INET6: ip6_print(ndo, p, length); break; |