aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/packet-netlink-netfilter.c20
-rw-r--r--epan/dissectors/packet-netlink.h13
-rw-r--r--epan/dissectors/packet-nflog.c17
3 files changed, 39 insertions, 11 deletions
diff --git a/epan/dissectors/packet-netlink-netfilter.c b/epan/dissectors/packet-netlink-netfilter.c
index b9e7ebc2f0..de3f5cf527 100644
--- a/epan/dissectors/packet-netlink-netfilter.c
+++ b/epan/dissectors/packet-netlink-netfilter.c
@@ -318,8 +318,8 @@ static header_field_info hfi_nfq_config_command_command NETLINK_NETFILTER_HFI_IN
VALS(nfq_config_command_vals), 0x00, NULL, HFILL };
static header_field_info hfi_nfq_config_command_pf NETLINK_NETFILTER_HFI_INIT =
- { "Protocol family", "netlink-netfilter.queue.config.command.pf", FT_UINT16, BASE_DEC | BASE_EXT_STRING,
- &linux_af_vals_ext, 0x00, NULL, HFILL };
+ { "Protocol family", "netlink-netfilter.queue.config.command.pf", FT_UINT16, BASE_DEC,
+ VALS(nfproto_family_vals), 0x00, NULL, HFILL };
static header_field_info hfi_nfq_config_params_copyrange NETLINK_NETFILTER_HFI_INIT =
{ "Copy range", "netlink-netfilter.queue.config.params.copy_range", FT_UINT32, BASE_HEX,
@@ -446,6 +446,18 @@ static const value_string nfq_hooks_vals[] = {
{ 0, NULL }
};
+const value_string nfproto_family_vals[] = {
+ { WS_NFPROTO_UNSPEC, "Unspecified" },
+ { WS_NFPROTO_INET, "IPv4/IPv6" },
+ { WS_NFPROTO_IPV4, "IPv4" },
+ { WS_NFPROTO_ARP, "ARP" },
+ { WS_NFPROTO_NETDEV, "Netdev" },
+ { WS_NFPROTO_BRIDGE, "Bridge" },
+ { WS_NFPROTO_IPV6, "IPv6" },
+ { WS_NFPROTO_DECNET, "DECNET" },
+ { 0, NULL }
+};
+
static const value_string nfq_ctinfo_vals[] = {
{ WS_IP_CT_ESTABLISHED, "ESTABLISHED" },
{ WS_IP_CT_RELATED, "RELATED" },
@@ -863,8 +875,8 @@ static header_field_info hfi_ipset_attr_typename NETLINK_NETFILTER_HFI_INIT =
NULL, 0x0, NULL, HFILL };
static header_field_info hfi_ipset_attr_family NETLINK_NETFILTER_HFI_INIT =
- { "Address family", "netlink-netfilter.ipset.family", FT_UINT8, BASE_DEC | BASE_EXT_STRING,
- &linux_af_vals_ext, 0x00, NULL, HFILL };
+ { "Settype family", "netlink-netfilter.ipset.family", FT_UINT8, BASE_DEC,
+ VALS(nfproto_family_vals), 0x00, NULL, HFILL };
static header_field_info hfi_ipset_attr_flags NETLINK_NETFILTER_HFI_INIT =
{ "Flags", "netlink-netfilter.ipset.flags", FT_UINT32, BASE_HEX,
diff --git a/epan/dissectors/packet-netlink.h b/epan/dissectors/packet-netlink.h
index 673fd019ad..361aaaf429 100644
--- a/epan/dissectors/packet-netlink.h
+++ b/epan/dissectors/packet-netlink.h
@@ -82,6 +82,19 @@ enum {
WS_NLMSG_MIN_TYPE = 0x10 /** type < WS_NLMSG_MIN_TYPE are reserved */
};
+/* from <linux/netfilter.h>. Looks like AF_xxx, except for NFPROTO_ARP */
+enum ws_nfproto {
+ WS_NFPROTO_UNSPEC = 0,
+ WS_NFPROTO_INET = 1,
+ WS_NFPROTO_IPV4 = 2,
+ WS_NFPROTO_ARP = 3,
+ WS_NFPROTO_NETDEV = 5,
+ WS_NFPROTO_BRIDGE = 7,
+ WS_NFPROTO_IPV6 = 10,
+ WS_NFPROTO_DECNET = 12,
+};
+extern const value_string nfproto_family_vals[];
+
#define PACKET_NETLINK_MAGIC 0x4A5ACCCE
struct packet_netlink_data {
diff --git a/epan/dissectors/packet-nflog.c b/epan/dissectors/packet-nflog.c
index 046667e537..381ddada16 100644
--- a/epan/dissectors/packet-nflog.c
+++ b/epan/dissectors/packet-nflog.c
@@ -25,9 +25,10 @@
#include "config.h"
#include <epan/packet.h>
-#include <epan/aftypes.h>
#include <wiretap/wtap.h>
+#include "packet-netlink.h"
+
void proto_register_nflog(void);
void proto_reg_handoff_nflog(void);
@@ -84,7 +85,7 @@ static header_field_info *hfi_nflog = NULL;
/* Header */
static header_field_info hfi_nflog_family NFLOG_HFI_INIT =
- { "Family", "nflog.family", FT_UINT8, BASE_DEC | BASE_EXT_STRING, &linux_af_vals_ext, 0x00, NULL, HFILL };
+ { "Family", "nflog.family", FT_UINT8, BASE_DEC, VALS(nfproto_family_vals), 0x00, NULL, HFILL };
static header_field_info hfi_nflog_version NFLOG_HFI_INIT =
{ "Version", "nflog.version", FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL };
@@ -132,12 +133,12 @@ dissect_nflog(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U
int offset = 0;
tvbuff_t *next_tvb = NULL;
- int aftype;
+ int pf;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "NFLOG");
col_clear(pinfo->cinfo, COL_INFO);
- aftype = tvb_get_guint8(tvb, 0);
+ pf = tvb_get_guint8(tvb, 0);
/* Header */
if (proto_field_is_referenced(tree, hfi_nflog->id)) {
@@ -237,11 +238,13 @@ dissect_nflog(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U
}
if (next_tvb) {
- switch (aftype) {
- case LINUX_AF_INET:
+ switch (pf) {
+ /* Note: NFPROTO_INET is not supposed to appear here, it is mapped
+ * to NFPROTO_IPV4 or NFPROTO_IPV6 */
+ case WS_NFPROTO_IPV4:
call_dissector(ip_handle, next_tvb, pinfo, tree);
break;
- case LINUX_AF_INET6:
+ case WS_NFPROTO_IPV6:
call_dissector(ip6_handle, next_tvb, pinfo, tree);
break;
default: