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.
BGP: Add Origin Validation State extended community
BGP: Add support for BGP Role capability and OTC attribute
Arista: Use the test .pcap file from pull request #955 (HwInfo).
BGP: Add Origin Validation State extended community
BGP: Add support for BGP Role capability and OTC attribute
Arista: Use the test .pcap file from pull request #955 (HwInfo).
+ NFLOG: Use correct AF code points on all OSes.
User interface:
Add optional unit suffix on -C file size.
Add --print-sampling to print every Nth packet instead of all.
User interface:
Add optional unit suffix on -C file size.
Add --print-sampling to print every Nth packet instead of all.
#define NFULA_HWHEADER 16 /* skbuff's MAC-layer header */
#define NFULA_HWLEN 17 /* length of skbuff's MAC-layer header */
#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[] = {
static const struct tok nflog_values[] = {
- { AF_INET, "IPv4" },
- { AF_INET6, "IPv6" },
+ { NFLOG_AF_INET, "IPv4" },
+ { NFLOG_AF_INET6, "IPv6" },
switch (GET_U_1(hdr->nflog_family)) {
switch (GET_U_1(hdr->nflog_family)) {
ip_print(ndo, p, length);
break;
ip_print(ndo, p, length);
break;
ip6_print(ndo, p, length);
break;
ip6_print(ndo, p, length);
break;