diff options
-rw-r--r-- | epan/dissectors/packet-netlink-generic.c | 38 | ||||
-rw-r--r-- | epan/dissectors/packet-netlink-net_dm.c | 26 | ||||
-rw-r--r-- | epan/dissectors/packet-netlink-netfilter.c | 126 | ||||
-rw-r--r-- | epan/dissectors/packet-netlink-nl80211.c | 66 | ||||
-rw-r--r-- | epan/dissectors/packet-netlink-route.c | 69 | ||||
-rw-r--r-- | epan/dissectors/packet-netlink-sock_diag.c | 114 | ||||
-rw-r--r-- | epan/dissectors/packet-netlink.c | 14 | ||||
-rw-r--r-- | epan/dissectors/packet-netlink.h | 21 |
8 files changed, 244 insertions, 230 deletions
diff --git a/epan/dissectors/packet-netlink-generic.c b/epan/dissectors/packet-netlink-generic.c index 4676a80f2a..3bae9e0267 100644 --- a/epan/dissectors/packet-netlink-generic.c +++ b/epan/dissectors/packet-netlink-generic.c @@ -32,8 +32,8 @@ void proto_register_netlink_generic(void); void proto_reg_handoff_netlink_generic(void); typedef struct { - struct packet_netlink_data *data; - int encoding; /* copy of data->encoding */ + struct packet_netlink_data *nl_data; + int encoding; /* copy of nl_data->encoding */ /* Values parsed from the attributes (only valid in this packet). */ guint16 family_id; @@ -182,7 +182,7 @@ static const int *genl_ctrl_op_flags_fields[] = { }; static int -dissect_genl_ctrl_ops_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_genl_ctrl_ops_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int nla_type, int offset, int len) { enum ws_genl_ctrl_op_attr type = (enum ws_genl_ctrl_op_attr) nla_type; genl_ctrl_info_t *info = (genl_ctrl_info_t *) data; @@ -226,7 +226,7 @@ static header_field_info hfi_genl_ctrl_group_id NETLINK_GENERIC_HFI_INIT = NULL, 0x00, NULL, HFILL }; static int -dissect_genl_ctrl_groups_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_genl_ctrl_groups_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int nla_type, int offset, int len) { enum ws_genl_ctrl_group_attr type = (enum ws_genl_ctrl_group_attr) nla_type; genl_ctrl_info_t *info = (genl_ctrl_info_t *) data; @@ -286,7 +286,7 @@ static header_field_info hfi_genl_ctrl_groups_attr NETLINK_GENERIC_HFI_INIT = VALS(genl_ctrl_group_attr_vals), NLA_TYPE_MASK, NULL, HFILL }; static int -dissect_genl_ctrl_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_genl_ctrl_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { enum ws_genl_ctrl_attr type = (enum ws_genl_ctrl_attr) nla_type; genl_ctrl_info_t *info = (genl_ctrl_info_t *) data; @@ -330,10 +330,10 @@ dissect_genl_ctrl_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_typ } break; case WS_CTRL_ATTR_OPS: - offset = dissect_netlink_attributes_array(tvb, &hfi_genl_ctrl_ops_attr, ett_genl_ctrl_ops, ett_genl_ctrl_ops_attr, info, info->data, tree, offset, len, dissect_genl_ctrl_ops_attrs); + offset = dissect_netlink_attributes_array(tvb, &hfi_genl_ctrl_ops_attr, ett_genl_ctrl_ops, ett_genl_ctrl_ops_attr, info, nl_data, tree, offset, len, dissect_genl_ctrl_ops_attrs); break; case WS_CTRL_ATTR_MCAST_GROUPS: - offset = dissect_netlink_attributes_array(tvb, &hfi_genl_ctrl_groups_attr, ett_genl_ctrl_groups, ett_genl_ctrl_groups_attr, info, info->data, tree, offset, len, dissect_genl_ctrl_groups_attrs); + offset = dissect_netlink_attributes_array(tvb, &hfi_genl_ctrl_groups_attr, ett_genl_ctrl_groups, ett_genl_ctrl_groups_attr, info, nl_data, tree, offset, len, dissect_genl_ctrl_groups_attrs); break; } @@ -359,18 +359,18 @@ dissect_genl_ctrl(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, v return 0; } - info.data = genl_info->data; + info.nl_data = genl_info->nl_data; info.encoding = genl_info->encoding; info.family_id = 0; info.family_name = NULL; - offset = dissect_genl_header(tvb, genl_info, &hfi_genl_ctrl_cmd); + offset = dissect_genl_header(tvb, genl_info, genl_info->nl_data, &hfi_genl_ctrl_cmd); /* Return if command has no payload */ if (!tvb_reported_length_remaining(tvb, offset)) return offset; - dissect_netlink_attributes(tvb, &hfi_genl_ctrl_attr, ett_genl_ctrl_attr, &info, info.data, genl_info->genl_tree, offset, -1, dissect_genl_ctrl_attrs); + dissect_netlink_attributes(tvb, &hfi_genl_ctrl_attr, ett_genl_ctrl_attr, &info, genl_info->nl_data, genl_info->genl_tree, offset, -1, dissect_genl_ctrl_attrs); /* * Remember association of dynamic ID with the family name such that @@ -401,7 +401,7 @@ static header_field_info hfi_genl_reserved NETLINK_GENERIC_HFI_INIT = { "Reserved", "genl.reserved", FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }; -int dissect_genl_header(tvbuff_t *tvb, genl_info_t *genl_info, header_field_info *hfi_cmd) +int dissect_genl_header(tvbuff_t *tvb, genl_info_t *genl_info, struct packet_netlink_data *nl_data _U_, header_field_info *hfi_cmd) { int offset = 0; @@ -418,9 +418,9 @@ int dissect_genl_header(tvbuff_t *tvb, genl_info_t *genl_info, header_field_info } static int -dissect_netlink_generic(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *_data) +dissect_netlink_generic(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { - struct packet_netlink_data *data = (struct packet_netlink_data *)_data; + struct packet_netlink_data *nl_data = (struct packet_netlink_data *) data; genl_info_t info; proto_tree *nlmsg_tree; proto_item *pi, *pi_type; @@ -428,7 +428,7 @@ dissect_netlink_generic(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi tvbuff_t *next_tvb; int offset = 0; - DISSECTOR_ASSERT(data && data->magic == PACKET_NETLINK_MAGIC); + DISSECTOR_ASSERT(nl_data && nl_data->magic == PACKET_NETLINK_MAGIC); col_set_str(pinfo->cinfo, COL_PROTOCOL, "Netlink generic"); col_clear(pinfo->cinfo, COL_INFO); @@ -437,13 +437,13 @@ dissect_netlink_generic(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi nlmsg_tree = proto_item_add_subtree(pi, ett_netlink_generic); /* Netlink message header (nlmsghdr) */ - offset = dissect_netlink_header(tvb, nlmsg_tree, offset, data->encoding, &hfi_genl_family_id, &pi_type); - family_name = (const char *)wmem_map_lookup(genl_family_map, GUINT_TO_POINTER(data->type)); + offset = dissect_netlink_header(tvb, nlmsg_tree, offset, nl_data->encoding, &hfi_genl_family_id, &pi_type); + family_name = (const char *)wmem_map_lookup(genl_family_map, GUINT_TO_POINTER(nl_data->type)); proto_item_append_text(pi_type, " (%s)", family_name ? family_name : "Unknown"); /* Populate info from Generic Netlink message header (genlmsghdr) */ - info.data = data; - info.encoding = data->encoding; + info.nl_data = nl_data; + info.encoding = nl_data->encoding; info.genl_tree = nlmsg_tree; info.cmd = tvb_get_guint8(tvb, offset); @@ -459,7 +459,7 @@ dissect_netlink_generic(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi } /* No subdissector added the genl header, do it now. */ - offset = dissect_genl_header(next_tvb, &info, NULL); + offset = dissect_genl_header(next_tvb, &info, nl_data, NULL); if (tvb_reported_length_remaining(tvb, offset)) { next_tvb = tvb_new_subset_remaining(tvb, offset); call_data_dissector(next_tvb, pinfo, tree); diff --git a/epan/dissectors/packet-netlink-net_dm.c b/epan/dissectors/packet-netlink-net_dm.c index c0a4c31c54..3cf062d96e 100644 --- a/epan/dissectors/packet-netlink-net_dm.c +++ b/epan/dissectors/packet-netlink-net_dm.c @@ -92,8 +92,8 @@ enum ws_net_dm_origin { struct netlink_net_dm_info { packet_info *pinfo; - struct packet_netlink_data *data; - int encoding; /* copy of data->encoding */ + struct packet_netlink_data *nl_data; + int encoding; /* copy of nl_data->encoding */ guint16 protocol; /* protocol for packet payload */ }; @@ -266,7 +266,7 @@ static header_field_info hfi_net_dm_stats_dropped NETLINK_NET_DM_HFI_INIT = NULL, 0x00, NULL, HFILL }; static int -dissect_net_dm_attrs_port(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_net_dm_attrs_port(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int nla_type, int offset, int len) { enum ws_net_dm_attrs_port type = (enum ws_net_dm_attrs_port) nla_type & NLA_TYPE_MASK; struct netlink_net_dm_info *info = (struct netlink_net_dm_info *) data; @@ -287,7 +287,7 @@ dissect_net_dm_attrs_port(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_t } static int -dissect_net_dm_attrs_stats(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_net_dm_attrs_stats(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int nla_type, int offset, int len) { enum ws_net_dm_attrs_port type = (enum ws_net_dm_attrs_port) nla_type & NLA_TYPE_MASK; struct netlink_net_dm_info *info = (struct netlink_net_dm_info *) data; @@ -302,7 +302,7 @@ dissect_net_dm_attrs_stats(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_ } static int -dissect_net_dm_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_net_dm_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { enum ws_net_dm_attrs type = (enum ws_net_dm_attrs) nla_type & NLA_TYPE_MASK; struct netlink_net_dm_info *info = (struct netlink_net_dm_info *) data; @@ -325,7 +325,7 @@ dissect_net_dm_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, proto_item_append_text(tree, ": %s", str); return 1; case WS_NET_DM_ATTR_IN_PORT: - return dissect_netlink_attributes(tvb, &hfi_net_dm_attrs_port, ett_net_dm_attrs_in_port, info, info->data, tree, offset, len, + return dissect_netlink_attributes(tvb, &hfi_net_dm_attrs_port, ett_net_dm_attrs_in_port, info, nl_data, tree, offset, len, dissect_net_dm_attrs_port); case WS_NET_DM_ATTR_TIMESTAMP: timestamp = tvb_get_guint64(tvb, offset, info->encoding); @@ -361,10 +361,10 @@ dissect_net_dm_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, proto_tree_add_item(tree, &hfi_net_dm_queue_len, tvb, offset, len, info->encoding); return 1; case WS_NET_DM_ATTR_STATS: - return dissect_netlink_attributes(tvb, &hfi_net_dm_attrs_stats, ett_net_dm_attrs_stats, info, info->data, tree, offset, len, + return dissect_netlink_attributes(tvb, &hfi_net_dm_attrs_stats, ett_net_dm_attrs_stats, info, nl_data, tree, offset, len, dissect_net_dm_attrs_stats); case WS_NET_DM_ATTR_HW_STATS: - return dissect_netlink_attributes(tvb, &hfi_net_dm_attrs_stats, ett_net_dm_attrs_hw_stats, info, info->data, tree, offset, len, + return dissect_netlink_attributes(tvb, &hfi_net_dm_attrs_stats, ett_net_dm_attrs_hw_stats, info, nl_data, tree, offset, len, dissect_net_dm_attrs_stats); case WS_NET_DM_ATTR_ORIGIN: proto_tree_add_item(tree, &hfi_net_dm_origin, tvb, offset, len, info->encoding); @@ -378,10 +378,10 @@ dissect_net_dm_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, proto_item_append_text(tree, ": %s", str); return 1; case WS_NET_DM_ATTR_HW_ENTRIES: - return dissect_netlink_attributes(tvb, &hfi_net_dm_attrs, ett_net_dm_attrs_hw_entries, info, info->data, tree, offset, len, + return dissect_netlink_attributes(tvb, &hfi_net_dm_attrs, ett_net_dm_attrs_hw_entries, info, nl_data, tree, offset, len, dissect_net_dm_attrs); case WS_NET_DM_ATTR_HW_ENTRY: - return dissect_netlink_attributes(tvb, &hfi_net_dm_attrs, ett_net_dm_attrs_hw_entry, info, info->data, tree, offset, len, + return dissect_netlink_attributes(tvb, &hfi_net_dm_attrs, ett_net_dm_attrs_hw_entry, info, nl_data, tree, offset, len, dissect_net_dm_attrs); case WS_NET_DM_ATTR_HW_TRAP_COUNT: proto_item_append_text(tree, ": %u", tvb_get_guint32(tvb, offset, info->encoding)); @@ -413,7 +413,7 @@ dissect_netlink_net_dm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void col_clear(pinfo->cinfo, COL_INFO); /* Generic netlink header */ - offset = dissect_genl_header(tvb, genl_info, &hfi_net_dm_commands); + offset = dissect_genl_header(tvb, genl_info, genl_info->nl_data, &hfi_net_dm_commands); /* Not all commands have a payload */ if (!tvb_reported_length_remaining(tvb, offset)) @@ -424,10 +424,10 @@ dissect_netlink_net_dm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void info.encoding = genl_info->encoding; info.pinfo = pinfo; - info.data = genl_info->data; + info.nl_data = genl_info->nl_data; info.protocol = 0; - offset = dissect_netlink_attributes(tvb, &hfi_net_dm_attrs, ett_net_dm_attrs, &info, genl_info->data, nlmsg_tree, offset, -1, dissect_net_dm_attrs); + offset = dissect_netlink_attributes(tvb, &hfi_net_dm_attrs, ett_net_dm_attrs, &info, genl_info->nl_data, nlmsg_tree, offset, -1, dissect_net_dm_attrs); return offset; } diff --git a/epan/dissectors/packet-netlink-netfilter.c b/epan/dissectors/packet-netlink-netfilter.c index 66edc57127..0658272b24 100644 --- a/epan/dissectors/packet-netlink-netfilter.c +++ b/epan/dissectors/packet-netlink-netfilter.c @@ -21,9 +21,9 @@ void proto_reg_handoff_netlink_netfilter(void); typedef struct { packet_info *pinfo; - struct packet_netlink_data *data; + struct packet_netlink_data *nl_data; - int encoding; /* copy of data->encoding */ + int encoding; /* copy of nl_data->encoding */ guint16 hw_protocol; /* protocol for NFQUEUE packet payloads. */ } netlink_netfilter_info_t; @@ -469,7 +469,7 @@ static header_field_info hfi_nfct_tuple_proto_attr NETLINK_NETFILTER_HFI_INIT = VALS(nfct_tuple_l4proto_attr_vals), NLA_TYPE_MASK, NULL, HFILL }; static int -dissect_nfct_tuple_proto_attrs(tvbuff_t *tvb, void *data _U_, proto_tree *tree, int nla_type, int offset, int len) +dissect_nfct_tuple_proto_attrs(tvbuff_t *tvb, void *data _U_, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int nla_type, int offset, int len) { enum ws_ctattr_ip type = (enum ws_ctattr_ip) nla_type & NLA_TYPE_MASK; @@ -504,7 +504,7 @@ static header_field_info hfi_nfct_tuple_ip_attr NETLINK_NETFILTER_HFI_INIT = VALS(nfct_tuple_ip_attr_vals), NLA_TYPE_MASK, NULL, HFILL }; static int -dissect_nfct_tuple_ip_attrs(tvbuff_t *tvb, void *data _U_, proto_tree *tree, int nla_type, int offset, int len) +dissect_nfct_tuple_ip_attrs(tvbuff_t *tvb, void *data _U_, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int nla_type, int offset, int len) { enum ws_ctattr_ip type = (enum ws_ctattr_ip) nla_type & NLA_TYPE_MASK; @@ -533,7 +533,7 @@ static header_field_info hfi_nfct_tuple_attr NETLINK_NETFILTER_HFI_INIT = VALS(nfct_tuple_attr_vals), NLA_TYPE_MASK, NULL, HFILL }; static int -dissect_nfct_tuple_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_nfct_tuple_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { enum ws_ctattr_tuple type = (enum ws_ctattr_tuple) nla_type & NLA_TYPE_MASK; netlink_netfilter_info_t *info = (netlink_netfilter_info_t *) data; @@ -541,13 +541,13 @@ dissect_nfct_tuple_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_ty switch (type) { case WS_CTA_TUPLE_IP: if (nla_type & NLA_F_NESTED) - return dissect_netlink_attributes(tvb, &hfi_nfct_tuple_ip_attr, ett_nfct_tuple_ip_attr, info, info->data, + return dissect_netlink_attributes(tvb, &hfi_nfct_tuple_ip_attr, ett_nfct_tuple_ip_attr, info, nl_data, tree, offset, len, dissect_nfct_tuple_ip_attrs); return 0; case WS_CTA_TUPLE_PROTO: if (nla_type & NLA_F_NESTED) - return dissect_netlink_attributes(tvb, &hfi_nfct_tuple_proto_attr, ett_nfct_tuple_proto_attr, info, info->data, + return dissect_netlink_attributes(tvb, &hfi_nfct_tuple_proto_attr, ett_nfct_tuple_proto_attr, info, nl_data, tree, offset, len, dissect_nfct_tuple_proto_attrs); return 0; @@ -720,7 +720,7 @@ static header_field_info hfi_nfct_help_attr NETLINK_NETFILTER_HFI_INIT = VALS(nfct_help_attr_vals), NLA_TYPE_MASK, NULL, HFILL }; static int -dissect_nfct_help_attrs(tvbuff_t *tvb, void *data _U_, proto_tree *tree, int nla_type, int offset, int len) +dissect_nfct_help_attrs(tvbuff_t *tvb, void *data _U_, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int nla_type, int offset, int len) { enum ws_ctattr_help type = (enum ws_ctattr_help) nla_type & NLA_TYPE_MASK; @@ -753,7 +753,7 @@ static header_field_info hfi_nfct_seqadj_attr NETLINK_NETFILTER_HFI_INIT = VALS(nfct_seqadj_attr_vals), NLA_TYPE_MASK, NULL, HFILL }; static int -dissect_nfct_seqadj_attrs(tvbuff_t *tvb, void *data _U_, proto_tree *tree, int nla_type, int offset, int len) +dissect_nfct_seqadj_attrs(tvbuff_t *tvb, void *data _U_, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int nla_type, int offset, int len) { enum ws_ctattr_seqadj type = (enum ws_ctattr_seqadj) nla_type & NLA_TYPE_MASK; @@ -778,7 +778,7 @@ dissect_nfct_seqadj_attrs(tvbuff_t *tvb, void *data _U_, proto_tree *tree, int n } static int -dissect_nfct_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_nfct_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { enum ws_ctattr_type type = (enum ws_ctattr_type) nla_type & NLA_TYPE_MASK; netlink_netfilter_info_t *info = (netlink_netfilter_info_t *) data; @@ -799,14 +799,14 @@ dissect_nfct_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, in case WS_CTA_HELP: if (nla_type & NLA_F_NESTED) - return dissect_netlink_attributes(tvb, &hfi_nfct_help_attr, ett_nfct_help_attr, info, info->data, + return dissect_netlink_attributes(tvb, &hfi_nfct_help_attr, ett_nfct_help_attr, info, nl_data, tree, offset, len, dissect_nfct_help_attrs); return 0; case WS_CTA_SEQ_ADJ_ORIG: case WS_CTA_SEQ_ADJ_REPLY: if (nla_type & NLA_F_NESTED) - return dissect_netlink_attributes(tvb, &hfi_nfct_seqadj_attr, ett_nfct_seqadj_attr, info, info->data, + return dissect_netlink_attributes(tvb, &hfi_nfct_seqadj_attr, ett_nfct_seqadj_attr, info, nl_data, tree, offset, len, dissect_nfct_seqadj_attrs); return 0; @@ -814,7 +814,7 @@ dissect_nfct_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, in case WS_CTA_TUPLE_REPLY: case WS_CTA_TUPLE_MASTER: if (nla_type & NLA_F_NESTED) - return dissect_netlink_attributes(tvb, &hfi_nfct_tuple_attr, ett_nfct_tuple_attr, info, info->data, + return dissect_netlink_attributes(tvb, &hfi_nfct_tuple_attr, ett_nfct_tuple_attr, info, nl_data, tree, offset, len, dissect_nfct_tuple_attrs); return 0; @@ -830,10 +830,10 @@ static header_field_info hfi_nfct_attr NETLINK_NETFILTER_HFI_INIT = VALS(nfct_attr_vals), NLA_TYPE_MASK, NULL, HFILL }; static int -dissect_netfilter_ct(tvbuff_t *tvb, netlink_netfilter_info_t *info, proto_tree *tree, int offset) +dissect_netfilter_ct(tvbuff_t *tvb, netlink_netfilter_info_t *info, struct packet_netlink_data *nl_data, proto_tree *tree, int offset) { offset = dissect_netlink_netfilter_header(tvb, tree, offset); - return dissect_netlink_attributes(tvb, &hfi_nfct_attr, ett_nfct_attr, info, info->data, + return dissect_netlink_attributes(tvb, &hfi_nfct_attr, ett_nfct_attr, info, nl_data, tree, offset, -1, dissect_nfct_attrs); } @@ -883,7 +883,7 @@ static header_field_info hfi_nfexp_nat_attr NETLINK_NETFILTER_HFI_INIT = VALS(nfexp_nat_attr_vals), NLA_TYPE_MASK, NULL, HFILL }; static int -dissect_nfexp_nat_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_nfexp_nat_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { enum ws_ctattr_expect type = (enum ws_ctattr_expect) nla_type & NLA_TYPE_MASK; netlink_netfilter_info_t *info = (netlink_netfilter_info_t *) data; @@ -895,7 +895,7 @@ dissect_nfexp_nat_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_typ case WS_CTA_EXPECT_NAT_TUPLE: if (nla_type & NLA_F_NESTED) - return dissect_netlink_attributes(tvb, &hfi_nfct_tuple_attr, ett_nfct_tuple_attr, info, info->data, + return dissect_netlink_attributes(tvb, &hfi_nfct_tuple_attr, ett_nfct_tuple_attr, info, nl_data, tree, offset, len, dissect_nfct_tuple_attrs); return 0; @@ -952,7 +952,7 @@ static header_field_info hfi_nfexp_attr_flags NETLINK_NETFILTER_HFI_INIT = NULL, 0x00, NULL, HFILL }; static int -dissect_nfexp_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_nfexp_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { enum ws_ctattr_expect type = (enum ws_ctattr_expect) nla_type & NLA_TYPE_MASK; netlink_netfilter_info_t *info = (netlink_netfilter_info_t *) data; @@ -962,13 +962,13 @@ dissect_nfexp_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, i case WS_CTA_EXPECT_MASK: case WS_CTA_EXPECT_MASTER: if (nla_type & NLA_F_NESTED) - return dissect_netlink_attributes(tvb, &hfi_nfct_tuple_attr, ett_nfct_tuple_attr, info, info->data, + return dissect_netlink_attributes(tvb, &hfi_nfct_tuple_attr, ett_nfct_tuple_attr, info, nl_data, tree, offset, len, dissect_nfct_tuple_attrs); return 0; case WS_CTA_EXPECT_NAT: if (nla_type & NLA_F_NESTED) - return dissect_netlink_attributes(tvb, &hfi_nfexp_nat_attr, ett_nfexp_nat_attr, info, info->data, + return dissect_netlink_attributes(tvb, &hfi_nfexp_nat_attr, ett_nfexp_nat_attr, info, nl_data, tree, offset, len, dissect_nfexp_nat_attrs); return 0; @@ -1009,12 +1009,12 @@ static header_field_info hfi_nfexp_attr NETLINK_NETFILTER_HFI_INIT = /* EXP - main */ static int -dissect_netfilter_exp(tvbuff_t *tvb, netlink_netfilter_info_t *info, proto_tree *tree, int offset) +dissect_netfilter_exp(tvbuff_t *tvb, netlink_netfilter_info_t *info, struct packet_netlink_data *nl_data, proto_tree *tree, int offset) { //enum ws_ctnl_exp_msg_types type = (enum ws_ctnl_exp_msg_types) (info->data->type & 0xff); offset = dissect_netlink_netfilter_header(tvb, tree, offset); - return dissect_netlink_attributes(tvb, &hfi_nfexp_attr, ett_nfexp_attr, info, info->data, + return dissect_netlink_attributes(tvb, &hfi_nfexp_attr, ett_nfexp_attr, info, nl_data, tree, offset, -1, dissect_nfexp_attrs); } @@ -1085,7 +1085,7 @@ static header_field_info hfi_nfq_config_flags NETLINK_NETFILTER_HFI_INIT = NULL, 0x00, NULL, HFILL }; static int -dissect_nfq_config_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_nfq_config_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int nla_type, int offset, int len) { enum ws_nfqnl_attr_config type = (enum ws_nfqnl_attr_config) nla_type; netlink_netfilter_info_t *info = (netlink_netfilter_info_t *) data; @@ -1282,7 +1282,7 @@ static header_field_info hfi_nfq_gid NETLINK_NETFILTER_HFI_INIT = static int -dissect_nfq_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_nfq_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { enum ws_nfqnl_attr_type type = (enum ws_nfqnl_attr_type) nla_type & NLA_TYPE_MASK; netlink_netfilter_info_t *info = (netlink_netfilter_info_t *) data; @@ -1385,7 +1385,7 @@ dissect_nfq_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int case WS_NFQA_CT: if (nla_type & NLA_F_NESTED) - return dissect_netlink_attributes(tvb, &hfi_nfct_attr, ett_nfct_attr, info, info->data, + return dissect_netlink_attributes(tvb, &hfi_nfct_attr, ett_nfct_attr, info, nl_data, tree, offset, len, dissect_nfct_attrs); break; @@ -1439,19 +1439,19 @@ static header_field_info hfi_nfq_attr NETLINK_NETFILTER_HFI_INIT = /* QUEUE - main */ static int -dissect_netfilter_queue(tvbuff_t *tvb, netlink_netfilter_info_t *info, proto_tree *tree, int offset) +dissect_netfilter_queue(tvbuff_t *tvb, netlink_netfilter_info_t *info, struct packet_netlink_data *nl_data, proto_tree *tree, int offset) { - enum ws_nfqnl_msg_types type = (enum ws_nfqnl_msg_types) (info->data->type & 0xff); + enum ws_nfqnl_msg_types type = (enum ws_nfqnl_msg_types) (nl_data->type & 0xff); offset = dissect_netlink_netfilter_header(tvb, tree, offset); switch (type) { case WS_NFQNL_MSG_CONFIG: - return dissect_netlink_attributes(tvb, &hfi_nfq_config_attr, ett_nfq_config_attr, info, info->data, tree, offset, -1, dissect_nfq_config_attrs); + return dissect_netlink_attributes(tvb, &hfi_nfq_config_attr, ett_nfq_config_attr, info, nl_data, tree, offset, -1, dissect_nfq_config_attrs); case WS_NFQNL_MSG_PACKET: case WS_NFQNL_MSG_VERDICT: - return dissect_netlink_attributes(tvb, &hfi_nfq_attr, ett_nfq_attr, info, info->data, tree, offset, -1, dissect_nfq_attrs); + return dissect_netlink_attributes(tvb, &hfi_nfq_attr, ett_nfq_attr, info, nl_data, tree, offset, -1, dissect_nfq_attrs); case WS_NFQNL_MSG_VERDICT_BATCH: /* TODO */ @@ -1474,9 +1474,9 @@ static header_field_info hfi_netlink_netfilter_ulog_type NETLINK_NETFILTER_HFI_I VALS(netlink_netfilter_ulog_type_vals), 0x00FF, NULL, HFILL }; static int -dissect_netfilter_ulog(tvbuff_t *tvb, netlink_netfilter_info_t *info, proto_tree *tree, int offset) +dissect_netfilter_ulog(tvbuff_t *tvb, netlink_netfilter_info_t *info, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int offset) { - enum ws_nfulnl_msg_types type = (enum ws_nfulnl_msg_types) (info->data->type & 0xff); + enum ws_nfulnl_msg_types type = (enum ws_nfulnl_msg_types) (nl_data->type & 0xff); tvbuff_t *next_tvb; switch (type) { @@ -1651,7 +1651,7 @@ static header_field_info hfi_ipset_ip_attr_ipv6 NETLINK_NETFILTER_HFI_INIT = NULL, 0x00, NULL, HFILL }; static int -dissect_ipset_ip_attrs(tvbuff_t *tvb, void *data _U_, proto_tree *tree, int nla_type, int offset, int len) +dissect_ipset_ip_attrs(tvbuff_t *tvb, void *data _U_, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int nla_type, int offset, int len) { enum ws_ipset_ip_attr type = (enum ws_ipset_ip_attr) nla_type & NLA_TYPE_MASK; @@ -1669,7 +1669,7 @@ dissect_ipset_ip_attrs(tvbuff_t *tvb, void *data _U_, proto_tree *tree, int nla_ } static int -dissect_ipset_cadt_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_ipset_cadt_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { enum ws_ipset_cadt_attr type = (enum ws_ipset_cadt_attr) nla_type & NLA_TYPE_MASK; netlink_netfilter_info_t *info = (netlink_netfilter_info_t *) data; @@ -1678,7 +1678,7 @@ dissect_ipset_cadt_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_ty case WS_IPSET_ATTR_IP_FROM: case WS_IPSET_ATTR_IP_TO: if (nla_type & NLA_F_NESTED) - return dissect_netlink_attributes(tvb, &hfi_ipset_ip_attr, ett_ipset_ip_attr, info, info->data, tree, offset, len, dissect_ipset_ip_attrs); + return dissect_netlink_attributes(tvb, &hfi_ipset_ip_attr, ett_ipset_ip_attr, info, nl_data, tree, offset, len, dissect_ipset_ip_attrs); return 0; case WS_IPSET_ATTR_CIDR: @@ -1733,12 +1733,12 @@ dissect_ipset_cadt_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_ty } static int -dissect_ipset_adt_data_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_ipset_adt_data_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { enum ws_ipset_adt_attr type = (enum ws_ipset_adt_attr) nla_type & NLA_TYPE_MASK; if ((nla_type & NLA_TYPE_MASK) <= WS_IPSET_ATTR_CADT_MAX) - return dissect_ipset_cadt_attrs(tvb, data, tree, nla_type, offset, len); + return dissect_ipset_cadt_attrs(tvb, data, nl_data, tree, nla_type, offset, len); switch (type) { case WS_IPSET_ATTR_COMMENT: @@ -1753,17 +1753,17 @@ dissect_ipset_adt_data_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nl } static int -dissect_ipset_adt_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_ipset_adt_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { netlink_netfilter_info_t *info = (netlink_netfilter_info_t *) data; if (nla_type & NLA_F_NESTED) - return dissect_netlink_attributes(tvb, &hfi_ipset_adt_attr, ett_ipset_adt_attr, info, info->data, tree, offset, len, dissect_ipset_adt_data_attrs); + return dissect_netlink_attributes(tvb, &hfi_ipset_adt_attr, ett_ipset_adt_attr, info, nl_data, tree, offset, len, dissect_ipset_adt_data_attrs); return 0; } static int -dissect_ipset_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_ipset_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { enum ws_ipset_attr type = (enum ws_ipset_attr) nla_type & NLA_TYPE_MASK; netlink_netfilter_info_t *info = (netlink_netfilter_info_t *) data; @@ -1800,21 +1800,21 @@ dissect_ipset_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, i case WS_IPSET_ATTR_DATA: /* See ipset lib/PROTOCOL, CADT attributes only follow for some commands */ if (nla_type & NLA_F_NESTED) { - guint16 command = info->data->type & 0xffff; + guint16 command = nl_data->type & 0xffff; if (command == WS_IPSET_CMD_CREATE || command == WS_IPSET_CMD_LIST || command == WS_IPSET_CMD_SAVE) - return dissect_netlink_attributes(tvb, &hfi_ipset_cadt_attr, ett_ipset_cadt_attr, info, info->data, tree, offset, len, dissect_ipset_cadt_attrs); + return dissect_netlink_attributes(tvb, &hfi_ipset_cadt_attr, ett_ipset_cadt_attr, info, nl_data, tree, offset, len, dissect_ipset_cadt_attrs); else - return dissect_netlink_attributes(tvb, &hfi_ipset_adt_attr, ett_ipset_adt_attr, info, info->data, tree, offset, len, dissect_ipset_adt_data_attrs); + return dissect_netlink_attributes(tvb, &hfi_ipset_adt_attr, ett_ipset_adt_attr, info, nl_data, tree, offset, len, dissect_ipset_adt_data_attrs); } return 0; case WS_IPSET_ATTR_ADT: /* Following this, there will be an IPSET_ATTR_DATA with regular ADT attributes, not CADT */ if (nla_type & NLA_F_NESTED) - return dissect_netlink_attributes(tvb, &hfi_ipset_attr, ett_ipset_attr, info, info->data, tree, offset, len, dissect_ipset_adt_attrs); + return dissect_netlink_attributes(tvb, &hfi_ipset_attr, ett_ipset_attr, info, nl_data, tree, offset, len, dissect_ipset_adt_attrs); return 0; case WS_IPSET_ATTR_LINENO: @@ -1828,10 +1828,10 @@ dissect_ipset_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, i } static int -dissect_netfilter_ipset(tvbuff_t *tvb, netlink_netfilter_info_t *info, proto_tree *tree, int offset) +dissect_netfilter_ipset(tvbuff_t *tvb, netlink_netfilter_info_t *info, struct packet_netlink_data *nl_data, proto_tree *tree, int offset) { offset = dissect_netlink_netfilter_header(tvb, tree, offset); - return dissect_netlink_attributes(tvb, &hfi_ipset_attr, ett_ipset_attr, info, info->data, tree, offset, -1, dissect_ipset_attrs); + return dissect_netlink_attributes(tvb, &hfi_ipset_attr, ett_ipset_attr, info, nl_data, tree, offset, -1, dissect_ipset_attrs); } @@ -1869,15 +1869,15 @@ static header_field_info hfi_netlink_netfilter_subsys NETLINK_NETFILTER_HFI_INIT VALS(netlink_netfilter_subsystem_vals), 0xFF00, NULL, HFILL }; static int -dissect_netlink_netfilter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *_data) +dissect_netlink_netfilter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { - struct packet_netlink_data *data = (struct packet_netlink_data *)_data; + struct packet_netlink_data *nl_data = (struct packet_netlink_data *)data; netlink_netfilter_info_t info; proto_tree *nlmsg_tree; proto_item *pi; int offset = 0; - DISSECTOR_ASSERT(data && data->magic == PACKET_NETLINK_MAGIC); + DISSECTOR_ASSERT(nl_data && nl_data->magic == PACKET_NETLINK_MAGIC); col_set_str(pinfo->cinfo, COL_PROTOCOL, "Netlink netfilter"); col_clear(pinfo->cinfo, COL_INFO); @@ -1886,50 +1886,50 @@ dissect_netlink_netfilter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, v nlmsg_tree = proto_item_add_subtree(pi, ett_netlink_netfilter); /* Netlink message header (nlmsghdr) */ - offset = dissect_netlink_header(tvb, nlmsg_tree, offset, data->encoding, NULL, NULL); - proto_tree_add_item(nlmsg_tree, &hfi_netlink_netfilter_subsys, tvb, 4, 2, data->encoding); - switch (data->type >> 8) { + offset = dissect_netlink_header(tvb, nlmsg_tree, offset, nl_data->encoding, NULL, NULL); + proto_tree_add_item(nlmsg_tree, &hfi_netlink_netfilter_subsys, tvb, 4, 2, nl_data->encoding); + switch (nl_data->type >> 8) { case WS_NFNL_SUBSYS_CTNETLINK_EXP: - proto_tree_add_item(nlmsg_tree, &hfi_nfexp_type, tvb, 4, 2, data->encoding); + proto_tree_add_item(nlmsg_tree, &hfi_nfexp_type, tvb, 4, 2, nl_data->encoding); break; case WS_NFNL_SUBSYS_QUEUE: - proto_tree_add_item(nlmsg_tree, &hfi_nfq_type, tvb, 4, 2, data->encoding); + proto_tree_add_item(nlmsg_tree, &hfi_nfq_type, tvb, 4, 2, nl_data->encoding); break; case WS_NFNL_SUBSYS_ULOG: - proto_tree_add_item(nlmsg_tree, &hfi_netlink_netfilter_ulog_type, tvb, 4, 2, data->encoding); + proto_tree_add_item(nlmsg_tree, &hfi_netlink_netfilter_ulog_type, tvb, 4, 2, nl_data->encoding); break; case WS_NFNL_SUBSYS_IPSET: - proto_tree_add_item(nlmsg_tree, &hfi_ipset_command, tvb, 4, 2, data->encoding); + proto_tree_add_item(nlmsg_tree, &hfi_ipset_command, tvb, 4, 2, nl_data->encoding); break; } - info.encoding = data->encoding; + info.encoding = nl_data->encoding; info.pinfo = pinfo; - info.data = data; + info.nl_data = nl_data; info.hw_protocol = 0; - switch (data->type >> 8) { + switch (nl_data->type >> 8) { case WS_NFNL_SUBSYS_CTNETLINK: - offset = dissect_netfilter_ct(tvb, &info, nlmsg_tree, offset); + offset = dissect_netfilter_ct(tvb, &info, nl_data, nlmsg_tree, offset); break; case WS_NFNL_SUBSYS_CTNETLINK_EXP: - offset = dissect_netfilter_exp(tvb, &info, nlmsg_tree, offset); + offset = dissect_netfilter_exp(tvb, &info, nl_data, nlmsg_tree, offset); break; case WS_NFNL_SUBSYS_QUEUE: - offset = dissect_netfilter_queue(tvb, &info, nlmsg_tree, offset); + offset = dissect_netfilter_queue(tvb, &info, nl_data, nlmsg_tree, offset); break; case WS_NFNL_SUBSYS_ULOG: - offset = dissect_netfilter_ulog(tvb, &info, nlmsg_tree, offset); + offset = dissect_netfilter_ulog(tvb, &info, nl_data, nlmsg_tree, offset); break; case WS_NFNL_SUBSYS_IPSET: - offset = dissect_netfilter_ipset(tvb, &info, nlmsg_tree, offset); + offset = dissect_netfilter_ipset(tvb, &info, nl_data, nlmsg_tree, offset); break; default: diff --git a/epan/dissectors/packet-netlink-nl80211.c b/epan/dissectors/packet-netlink-nl80211.c index 8ca6a93a34..9529f01345 100644 --- a/epan/dissectors/packet-netlink-nl80211.c +++ b/epan/dissectors/packet-netlink-nl80211.c @@ -24,9 +24,9 @@ void proto_reg_handoff_netlink_nl80211(void); typedef struct { packet_info *pinfo; - struct packet_netlink_data *data; + struct packet_netlink_data *nl_data; - int encoding; /* copy of data->encoding */ + int encoding; /* copy of nl_data->encoding */ } netlink_nl80211_info_t; static dissector_handle_t ieee80211_handle; @@ -3737,7 +3737,7 @@ static header_field_info hfi_nl80211_dbm NETLINK_NL80211_HFI_INIT = NULL, 0x00, NULL, HFILL }; static int -dissect_nl80211_generic(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type _U_, int offset, int len) +dissect_nl80211_generic(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int nla_type _U_, int offset, int len) { netlink_nl80211_info_t *info = (netlink_nl80211_info_t *)data; /* @@ -3764,11 +3764,11 @@ struct attr_lookup { unsigned int attr_type; header_field_info* hfi; gint* ett; - int (*func)(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len); + int (*func)(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len); }; static int -dissect_nested_attr(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len, const struct attr_lookup *nested) +dissect_nested_attr(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len, const struct attr_lookup *nested) { netlink_nl80211_info_t *info = (netlink_nl80211_info_t *)data; for (int i = 0; nested[i].hfi; i++) { @@ -3776,7 +3776,7 @@ dissect_nested_attr(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, i continue; } offset = dissect_netlink_attributes(tvb, nested[i].hfi, *nested[i].ett, info, - info->data, tree, offset, len, + nl_data, tree, offset, len, nested[i].func ? nested[i].func : dissect_nl80211_generic); break; } @@ -3784,7 +3784,7 @@ dissect_nested_attr(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, i } static int -dissect_nested_attr_array(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len, const struct attr_lookup *nested_arr) +dissect_nested_attr_array(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len, const struct attr_lookup *nested_arr) { netlink_nl80211_info_t *info = (netlink_nl80211_info_t *)data; for (int i = 0; nested_arr[i].hfi; i++) { @@ -3793,7 +3793,7 @@ dissect_nested_attr_array(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_t } offset = dissect_netlink_attributes_array(tvb, nested_arr[i].hfi, *nested_arr[i].ett, *nested_arr[i].ett, info, - info->data, tree, offset, len, + nl_data, tree, offset, len, nested_arr[i].func ? nested_arr[i].func : dissect_nl80211_generic); break; @@ -3802,7 +3802,7 @@ dissect_nested_attr_array(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_t } static int -dissect_value(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len, const struct attr_lookup *values) +dissect_value(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int nla_type, int offset, int len, const struct attr_lookup *values) { netlink_nl80211_info_t *info = (netlink_nl80211_info_t *)data; for (int i = 0; values[i].hfi; i++) { @@ -3841,7 +3841,7 @@ dissect_information_elements(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree } static int -dissect_nl80211_frequency_attr(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_nl80211_frequency_attr(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { static const struct attr_lookup nested[] = { { WS_NL80211_FREQUENCY_ATTR_DFS_STATE, &hfi_nl80211_dfs_state, &ett_nl80211_dfs_state, NULL}, @@ -3852,12 +3852,12 @@ dissect_nl80211_frequency_attr(tvbuff_t *tvb, void *data, proto_tree *tree, int int offset_end = offset + len; if (offset < offset_end) { - offset = dissect_nested_attr(tvb, data, tree, nla_type, offset, len, nested); + offset = dissect_nested_attr(tvb, data, nl_data, tree, nla_type, offset, len, nested); } if (offset < offset_end) { switch (type) { default: - offset = dissect_nl80211_generic(tvb, data, tree, nla_type, offset, len); + offset = dissect_nl80211_generic(tvb, data, nl_data, tree, nla_type, offset, len); break; } } @@ -3865,7 +3865,7 @@ dissect_nl80211_frequency_attr(tvbuff_t *tvb, void *data, proto_tree *tree, int } static int -dissect_nl80211_band_attr(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_nl80211_band_attr(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { static const struct attr_lookup nested_arr[] = { { WS_NL80211_BAND_ATTR_FREQS, &hfi_nl80211_frequency_attr, &ett_nl80211_frequency_attr, dissect_nl80211_frequency_attr }, @@ -3877,13 +3877,13 @@ dissect_nl80211_band_attr(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_t int offset_end = offset + len; if (offset < offset_end) { - offset = dissect_nested_attr_array(tvb, data, tree, nla_type, offset, len, nested_arr); + offset = dissect_nested_attr_array(tvb, data, nl_data, tree, nla_type, offset, len, nested_arr); } if (offset < offset_end) { switch (type) { /* TODO add more fields here? */ default: - offset = dissect_nl80211_generic(tvb, data, tree, nla_type, offset, len); + offset = dissect_nl80211_generic(tvb, data, nl_data, tree, nla_type, offset, len); break; } } @@ -3891,7 +3891,7 @@ dissect_nl80211_band_attr(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_t } static int -dissect_nl80211_bss(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_nl80211_bss(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { static const struct attr_lookup values[] = { { WS_NL80211_BSS_STATUS, &hfi_nl80211_bss_status, NULL, NULL }, @@ -3902,7 +3902,7 @@ dissect_nl80211_bss(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, i int offset_end = offset + len; if (offset < offset_end) { - offset = dissect_value(tvb, data, tree, nla_type, offset, len, values); + offset = dissect_value(tvb, data, nl_data, tree, nla_type, offset, len, values); } if (offset < offset_end) { netlink_nl80211_info_t *info = (netlink_nl80211_info_t *)data; @@ -3912,7 +3912,7 @@ dissect_nl80211_bss(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, i offset = dissect_information_elements(tvb, info->pinfo, tree, offset, len); break; default: - offset = dissect_nl80211_generic(tvb, data, tree, nla_type, offset, len); + offset = dissect_nl80211_generic(tvb, data, nl_data, tree, nla_type, offset, len); break; } } @@ -3920,7 +3920,7 @@ dissect_nl80211_bss(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, i } static int -dissect_nl80211_tid_stats(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_nl80211_tid_stats(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { static const struct attr_lookup nested[] = { { WS_NL80211_TID_STATS_TXQ_STATS, &hfi_nl80211_txq_stats, &ett_nl80211_txq_stats, NULL}, @@ -3930,12 +3930,12 @@ dissect_nl80211_tid_stats(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_t enum ws_nl80211_tid_stats type = (enum ws_nl80211_tid_stats) nla_type & NLA_TYPE_MASK; int offset_end = offset + len; if (offset < offset_end) { - offset = dissect_nested_attr(tvb, data, tree, nla_type, offset, len, nested); + offset = dissect_nested_attr(tvb, data, nl_data, tree, nla_type, offset, len, nested); } if (offset < offset_end) { switch (type) { default: - offset = dissect_nl80211_generic(tvb, data, tree, nla_type, offset, len); + offset = dissect_nl80211_generic(tvb, data, nl_data, tree, nla_type, offset, len); break; } } @@ -3943,7 +3943,7 @@ dissect_nl80211_tid_stats(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_t } static int -dissect_nl80211_sta_info(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_nl80211_sta_info(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { static const struct attr_lookup nested[] = { { WS_NL80211_STA_INFO_TX_BITRATE, &hfi_nl80211_rate_info, &ett_nl80211_rate_info, NULL}, @@ -3959,10 +3959,10 @@ dissect_nl80211_sta_info(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_ty enum ws_nl80211_sta_info type = (enum ws_nl80211_sta_info) nla_type & NLA_TYPE_MASK; int offset_end = offset + len; if (offset < offset_end) { - offset = dissect_nested_attr(tvb, data, tree, nla_type, offset, len, nested); + offset = dissect_nested_attr(tvb, data, nl_data, tree, nla_type, offset, len, nested); } if (offset < offset_end) { - offset = dissect_nested_attr_array(tvb, data, tree, nla_type, offset, len, nested_arr); + offset = dissect_nested_attr_array(tvb, data, nl_data, tree, nla_type, offset, len, nested_arr); } if (offset < offset_end) { netlink_nl80211_info_t *info = (netlink_nl80211_info_t *)data; @@ -3976,7 +3976,7 @@ dissect_nl80211_sta_info(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_ty offset += len; break; default: - offset = dissect_nl80211_generic(tvb, data, tree, nla_type, offset, len); + offset = dissect_nl80211_generic(tvb, data, nl_data, tree, nla_type, offset, len); break; } } @@ -3985,7 +3985,7 @@ dissect_nl80211_sta_info(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_ty static int -dissect_nl80211_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_nl80211_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { static const struct attr_lookup nested[] = { { WS_NL80211_ATTR_SUPPORTED_IFTYPES, &hfi_nl80211_iftype, &ett_nl80211_iftype, NULL }, @@ -4058,13 +4058,13 @@ dissect_nl80211_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, enum ws_nl80211_attrs type = (enum ws_nl80211_attrs) nla_type & NLA_TYPE_MASK; int offset_end = offset + len; if (offset < offset_end) { - offset = dissect_nested_attr(tvb, data, tree, nla_type, offset, len, nested); + offset = dissect_nested_attr(tvb, data, nl_data, tree, nla_type, offset, len, nested); } if (offset < offset_end) { - offset = dissect_nested_attr_array(tvb, data, tree, nla_type, offset, len, nested_arr); + offset = dissect_nested_attr_array(tvb, data, nl_data, tree, nla_type, offset, len, nested_arr); } if (offset < offset_end) { - offset = dissect_value(tvb, data, tree, nla_type, offset, len, values); + offset = dissect_value(tvb, data, nl_data, tree, nla_type, offset, len, values); } if (offset < offset_end) { netlink_nl80211_info_t *info = (netlink_nl80211_info_t *)data; @@ -4095,7 +4095,7 @@ dissect_nl80211_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, break; /* TODO add more fields here? */ default: - offset = dissect_nl80211_generic(tvb, data, tree, nla_type, offset, len); + offset = dissect_nl80211_generic(tvb, data, nl_data, tree, nla_type, offset, len); break; } } @@ -4116,20 +4116,20 @@ dissect_netlink_nl80211(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi col_set_str(pinfo->cinfo, COL_PROTOCOL, "nl80211"); col_clear(pinfo->cinfo, COL_INFO); - offset = dissect_genl_header(tvb, genl_info, &hfi_nl80211_commands); + offset = dissect_genl_header(tvb, genl_info, genl_info->nl_data, &hfi_nl80211_commands); /* Return if command has no payload */ if (!tvb_reported_length_remaining(tvb, offset)) return offset; - info.data = genl_info->data; + info.nl_data = genl_info->nl_data; info.encoding = genl_info->encoding; info.pinfo = pinfo; pi = proto_tree_add_item(tree, proto_registrar_get_nth(proto_netlink_nl80211), tvb, offset, -1, ENC_NA); nlmsg_tree = proto_item_add_subtree(pi, ett_nl80211); - offset = dissect_netlink_attributes(tvb, &hfi_nl80211_attrs, ett_nl80211_attrs, &info, info.data, nlmsg_tree, offset, -1, dissect_nl80211_attrs); + offset = dissect_netlink_attributes(tvb, &hfi_nl80211_attrs, ett_nl80211_attrs, &info, genl_info->nl_data, nlmsg_tree, offset, -1, dissect_nl80211_attrs); return offset; } diff --git a/epan/dissectors/packet-netlink-route.c b/epan/dissectors/packet-netlink-route.c index c9b904df0e..ac463ac5dd 100644 --- a/epan/dissectors/packet-netlink-route.c +++ b/epan/dissectors/packet-netlink-route.c @@ -25,9 +25,9 @@ void proto_reg_handoff_netlink_route(void); struct netlink_route_info { packet_info *pinfo; - struct packet_netlink_data *data; + struct packet_netlink_data *nl_data; - int encoding; /* copy of data->encoding */ + int encoding; /* copy of nl_data->encoding */ gboolean legacy; }; @@ -332,8 +332,6 @@ static gint ett_netlink_route_attr_linkstats = -1; static gint ett_netlink_route_attr_linkstats_rxerrs = -1; static gint ett_netlink_route_attr_linkstats_txerrs = -1; -typedef int netlink_route_attributes_cb_t(tvbuff_t *, struct netlink_route_info *, proto_tree *, int rta_type, int offset, int len); - static void _fill_label_value_string_bitmask(char *label, guint32 value, const value_string *vals) { @@ -362,7 +360,7 @@ _fill_label_value_string_bitmask(char *label, guint32 value, const value_string } static int -dissect_netlink_route_attributes(tvbuff_t *tvb, header_field_info *hfi_type, struct netlink_route_info *info, proto_tree *tree, int offset, netlink_route_attributes_cb_t cb) +dissect_netlink_route_attributes(tvbuff_t *tvb, header_field_info *hfi_type, struct netlink_route_info *info, struct packet_netlink_data *nl_data, proto_tree *tree, int offset, netlink_attributes_cb_t cb) { /* XXX, it's *almost* the same: * - rtnetlink is using struct rtattr with shorts @@ -370,7 +368,7 @@ dissect_netlink_route_attributes(tvbuff_t *tvb, header_field_info *hfi_type, str */ /* XXX, nice */ - return dissect_netlink_attributes(tvb, hfi_type, ett_netlink_route_attr, info, info->data, tree, offset, -1, (netlink_attributes_cb_t *) cb); + return dissect_netlink_attributes(tvb, hfi_type, ett_netlink_route_attr, info, nl_data, tree, offset, -1, cb); } /* Interface */ @@ -440,7 +438,7 @@ static header_field_info hfi_netlink_route_ifi_change NETLINK_ROUTE_HFI_INIT = static int -dissect_netlink_route_ifinfomsg(tvbuff_t *tvb, struct netlink_route_info *info, proto_tree *tree, int offset) +dissect_netlink_route_ifinfomsg(tvbuff_t *tvb, struct netlink_route_info *info, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int offset) { proto_item *ti; proto_tree *if_flags_tree; @@ -770,7 +768,7 @@ static header_field_info* linkstat_txerr_hfis[] = { }; static int -dissect_netlink_route_ifla_linkstats(tvbuff_t *tvb, struct netlink_route_info *info, proto_tree *tree, int offset, int byte_size) { +dissect_netlink_route_ifla_linkstats(tvbuff_t *tvb, struct netlink_route_info *info, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int offset, int byte_size) { proto_tree* rxerr_subtree; const gint rxerr_hfis_len = (sizeof(linkstat_rxerr_hfis) / sizeof(header_field_info*)); proto_tree* txerr_subtree; @@ -798,8 +796,9 @@ dissect_netlink_route_ifla_linkstats(tvbuff_t *tvb, struct netlink_route_info *i } static int -dissect_netlink_route_ifla_attrs(tvbuff_t *tvb, struct netlink_route_info *info, proto_tree *tree, int rta_type, int offset, int len) +dissect_netlink_route_ifla_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int rta_type, int offset, int len) { + struct netlink_route_info *info = (struct netlink_route_info *)data; enum ws_ifla_attr_type type = (enum ws_ifla_attr_type) rta_type; const guint8* str; proto_tree* subtree; @@ -861,10 +860,10 @@ dissect_netlink_route_ifla_attrs(tvbuff_t *tvb, struct netlink_route_info *info, return 1; case WS_IFLA_STATS: subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_netlink_route_attr_linkstats, NULL, "Statistics"); - return dissect_netlink_route_ifla_linkstats(tvb, info, subtree, offset, 4); + return dissect_netlink_route_ifla_linkstats(tvb, info, nl_data, subtree, offset, 4); case WS_IFLA_STATS64: subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_netlink_route_attr_linkstats, NULL, "Statistics"); - return dissect_netlink_route_ifla_linkstats(tvb, info, subtree, offset, 8); + return dissect_netlink_route_ifla_linkstats(tvb, info, nl_data, subtree, offset, 8); case WS_IFLA_QDISC: proto_tree_add_item_ret_string(tree, &hfi_netlink_route_ifla_qdisc, tvb, offset, len, ENC_ASCII | ENC_NA, wmem_packet_scope(), &str); proto_item_append_text(tree, ": %s", str); @@ -949,7 +948,7 @@ static header_field_info hfi_netlink_route_ifa_index NETLINK_ROUTE_HFI_INIT = NULL, 0x00, NULL, HFILL }; static int -dissect_netlink_route_ifaddrmsg(tvbuff_t *tvb, struct netlink_route_info *info, proto_tree *tree, int offset) +dissect_netlink_route_ifaddrmsg(tvbuff_t *tvb, struct netlink_route_info *info, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int offset) { proto_tree_add_item(tree, &hfi_netlink_route_ifa_family, tvb, offset, 1, ENC_NA); offset += 1; @@ -1010,8 +1009,9 @@ static header_field_info hfi_netlink_route_ifa_addr4 NETLINK_ROUTE_HFI_INIT = NULL, 0x00, NULL, HFILL }; static int -dissect_netlink_route_ifa_attrs(tvbuff_t *tvb, struct netlink_route_info *info _U_, proto_tree *tree, int rta_type, int offset, int len) +dissect_netlink_route_ifa_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int rta_type, int offset, int len) { + struct netlink_route_info *info = (struct netlink_route_info *)data; enum ws_ifa_attr_type type = (enum ws_ifa_attr_type) rta_type; const guint8* str; @@ -1130,7 +1130,7 @@ static header_field_info hfi_netlink_route_rt_flags NETLINK_ROUTE_HFI_INIT = NULL, 0x00, NULL, HFILL }; static int -dissect_netlink_route_rtmsg(tvbuff_t *tvb, struct netlink_route_info *info, proto_tree *tree, int offset) +dissect_netlink_route_rtmsg(tvbuff_t *tvb, struct netlink_route_info *info, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int offset) { proto_tree_add_item(tree, &hfi_netlink_route_rt_family, tvb, offset, 1, ENC_NA); offset += 1; @@ -1215,8 +1215,9 @@ static header_field_info hfi_netlink_route_rta_oif NETLINK_ROUTE_HFI_INIT = NULL, 0x00, NULL, HFILL }; static int -dissect_netlink_route_route_attrs(tvbuff_t *tvb, struct netlink_route_info *info, proto_tree *tree, int rta_type, int offset, int len) +dissect_netlink_route_route_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int rta_type, int offset, int len) { + struct netlink_route_info *info = (struct netlink_route_info *)data; enum ws_rta_attr_type type = (enum ws_rta_attr_type) rta_type; switch (type) { @@ -1286,7 +1287,7 @@ static header_field_info hfi_netlink_route_nd_type NETLINK_ROUTE_HFI_INIT = NULL, 0x00, NULL, HFILL }; static int -dissect_netlink_route_ndmsg(tvbuff_t *tvb, struct netlink_route_info *info, proto_tree *tree, int offset) +dissect_netlink_route_ndmsg(tvbuff_t *tvb, struct netlink_route_info *info, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int offset) { proto_tree_add_item(tree, &hfi_netlink_route_nd_family, tvb, offset, 1, ENC_NA); offset += 1; @@ -1380,15 +1381,15 @@ static header_field_info hfi_netlink_route_nltype NETLINK_ROUTE_HFI_INIT = &netlink_route_type_vals_ext, 0x00, NULL, HFILL }; static int -dissect_netlink_route(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *_data) +dissect_netlink_route(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { struct netlink_route_info info; - struct packet_netlink_data *data = (struct packet_netlink_data *)_data; + struct packet_netlink_data *nl_data = (struct packet_netlink_data *)data; proto_tree *nlmsg_tree; proto_item *pi; int offset = 0; - DISSECTOR_ASSERT(data && data->magic == PACKET_NETLINK_MAGIC); + DISSECTOR_ASSERT(nl_data && nl_data->magic == PACKET_NETLINK_MAGIC); col_set_str(pinfo->cinfo, COL_PROTOCOL, "Netlink route"); col_clear(pinfo->cinfo, COL_INFO); @@ -1397,49 +1398,49 @@ dissect_netlink_route(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void nlmsg_tree = proto_item_add_subtree(pi, ett_netlink_route); /* Netlink message header (nlmsghdr) */ - offset = dissect_netlink_header(tvb, nlmsg_tree, offset, data->encoding, &hfi_netlink_route_nltype, NULL); + offset = dissect_netlink_header(tvb, nlmsg_tree, offset, nl_data->encoding, &hfi_netlink_route_nltype, NULL); - info.encoding = data->encoding; + info.encoding = nl_data->encoding; info.pinfo = pinfo; - info.data = data; + info.nl_data = nl_data; - switch (data->type) { + switch (nl_data->type) { case WS_RTM_NEWLINK: case WS_RTM_DELLINK: case WS_RTM_GETLINK: /* backward compatibility with legacy tools; 16 is sizeof(struct ifinfomsg) */ - info.legacy = (data->type == WS_RTM_GETLINK) && (tvb_reported_length_remaining(tvb, offset) < 16); - offset = dissect_netlink_route_ifinfomsg(tvb, &info, nlmsg_tree, offset); + info.legacy = (nl_data->type == WS_RTM_GETLINK) && (tvb_reported_length_remaining(tvb, offset) < 16); + offset = dissect_netlink_route_ifinfomsg(tvb, &info, nl_data, nlmsg_tree, offset); /* Optional attributes */ - offset = dissect_netlink_route_attributes(tvb, &hfi_netlink_route_ifla_attr_type, &info, nlmsg_tree, offset, dissect_netlink_route_ifla_attrs); + offset = dissect_netlink_route_attributes(tvb, &hfi_netlink_route_ifla_attr_type, &info, nl_data, nlmsg_tree, offset, dissect_netlink_route_ifla_attrs); break; case WS_RTM_NEWADDR: case WS_RTM_DELADDR: case WS_RTM_GETADDR: /* backward compatibility with legacy tools; 8 is sizeof(struct ifaddrmsg) */ - info.legacy = (data->type == WS_RTM_GETADDR) && (tvb_reported_length_remaining(tvb, offset) < 8); - offset = dissect_netlink_route_ifaddrmsg(tvb, &info, nlmsg_tree, offset); + info.legacy = (nl_data->type == WS_RTM_GETADDR) && (tvb_reported_length_remaining(tvb, offset) < 8); + offset = dissect_netlink_route_ifaddrmsg(tvb, &info, nl_data, nlmsg_tree, offset); /* Optional attributes */ - offset = dissect_netlink_route_attributes(tvb, &hfi_netlink_route_ifa_attr_type, &info, nlmsg_tree, offset, dissect_netlink_route_ifa_attrs); + offset = dissect_netlink_route_attributes(tvb, &hfi_netlink_route_ifa_attr_type, &info, nl_data, nlmsg_tree, offset, dissect_netlink_route_ifa_attrs); break; case WS_RTM_NEWROUTE: case WS_RTM_DELROUTE: case WS_RTM_GETROUTE: /* backward compatibility with legacy tools; 12 is sizeof(struct rtmsg) */ - info.legacy = (data->type == WS_RTM_GETROUTE) && (tvb_reported_length_remaining(tvb, offset) < 12); - offset = dissect_netlink_route_rtmsg(tvb, &info, nlmsg_tree, offset); + info.legacy = (nl_data->type == WS_RTM_GETROUTE) && (tvb_reported_length_remaining(tvb, offset) < 12); + offset = dissect_netlink_route_rtmsg(tvb, &info, nl_data, nlmsg_tree, offset); /* Optional attributes */ - offset = dissect_netlink_route_attributes(tvb, &hfi_netlink_route_rta_attr_type, &info, nlmsg_tree, offset, dissect_netlink_route_route_attrs); + offset = dissect_netlink_route_attributes(tvb, &hfi_netlink_route_rta_attr_type, &info, nl_data, nlmsg_tree, offset, dissect_netlink_route_route_attrs); break; case WS_RTM_NEWNEIGH: case WS_RTM_DELNEIGH: case WS_RTM_GETNEIGH: /* backward compatibility with legacy tools; 12 is sizeof(struct ndmsg) */ - info.legacy = (data->type == WS_RTM_GETNEIGH) && (tvb_reported_length_remaining(tvb, offset) < 12); - offset = dissect_netlink_route_ndmsg(tvb, &info, nlmsg_tree, offset); + info.legacy = (nl_data->type == WS_RTM_GETNEIGH) && (tvb_reported_length_remaining(tvb, offset) < 12); + offset = dissect_netlink_route_ndmsg(tvb, &info, nl_data, nlmsg_tree, offset); break; } diff --git a/epan/dissectors/packet-netlink-sock_diag.c b/epan/dissectors/packet-netlink-sock_diag.c index 6a079c841e..5ac6dfa930 100644 --- a/epan/dissectors/packet-netlink-sock_diag.c +++ b/epan/dissectors/packet-netlink-sock_diag.c @@ -22,9 +22,9 @@ void proto_reg_handoff_netlink_sock_diag(void); typedef struct { packet_info *pinfo; - struct packet_netlink_data *data; + struct packet_netlink_data *nl_data; - int encoding; /* copy of data->encoding */ + int encoding; /* copy of nl_data->encoding */ } netlink_sock_diag_info_t; static int proto_netlink_sock_diag; @@ -271,7 +271,7 @@ static header_field_info hfi_netlink_sock_diag_wmem_queued NETLINK_SOCK_DIAG_HFI NULL, 0x00, NULL, HFILL }; static int -dissect_sock_diag_meminfo(proto_tree *tree, netlink_sock_diag_info_t *info, tvbuff_t *tvb, int offset, int len) +dissect_sock_diag_meminfo(proto_tree *tree, netlink_sock_diag_info_t *info, struct packet_netlink_data *nl_data _U_, tvbuff_t *tvb, int offset, int len) { static header_field_info *hfis[] = { &hfi_netlink_sock_diag_rmem_alloc, @@ -308,7 +308,7 @@ static header_field_info hfi_netlink_sock_diag_cookie NETLINK_SOCK_DIAG_HFI_INIT NULL, 0x00, NULL, HFILL }; static void -sock_diag_proto_tree_add_cookie(proto_tree *tree, netlink_sock_diag_info_t *info _U_, tvbuff_t *tvb, int offset) +sock_diag_proto_tree_add_cookie(proto_tree *tree, netlink_sock_diag_info_t *info _U_, struct packet_netlink_data *nl_data _U_, tvbuff_t *tvb, int offset) { guint64 cookie; @@ -369,7 +369,7 @@ static header_field_info hfi_netlink_sock_diag_unix_peer_inode NETLINK_SOCK_DIAG NULL, 0x00, NULL, HFILL }; static int -dissect_netlink_unix_sock_diag_reply_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_netlink_unix_sock_diag_reply_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { enum ws_unix_diag_attr_type type = (enum ws_unix_diag_attr_type) nla_type; netlink_sock_diag_info_t *info = (netlink_sock_diag_info_t *) data; @@ -411,7 +411,7 @@ dissect_netlink_unix_sock_diag_reply_attrs(tvbuff_t *tvb, void *data, proto_tree return 0; case WS_UNIX_DIAG_MEMINFO: - return dissect_sock_diag_meminfo(tree, info, tvb, offset, len); + return dissect_sock_diag_meminfo(tree, info, nl_data, tvb, offset, len); case WS_UNIX_DIAG_SHUTDOWN: if (len == 1) @@ -428,7 +428,7 @@ dissect_netlink_unix_sock_diag_reply_attrs(tvbuff_t *tvb, void *data, proto_tree /* AF_UNIX */ static int -dissect_sock_diag_unix_reply(tvbuff_t *tvb, netlink_sock_diag_info_t *info, proto_tree *tree, int offset) +dissect_sock_diag_unix_reply(tvbuff_t *tvb, netlink_sock_diag_info_t *info, struct packet_netlink_data *nl_data, proto_tree *tree, int offset) { proto_tree_add_item(tree, &hfi_netlink_sock_diag_family, tvb, offset, 1, ENC_NA); offset += 1; @@ -447,10 +447,10 @@ dissect_sock_diag_unix_reply(tvbuff_t *tvb, netlink_sock_diag_info_t *info, prot proto_tree_add_item(tree, &hfi_netlink_sock_diag_inode, tvb, offset, 4, info->encoding); offset += 4; - sock_diag_proto_tree_add_cookie(tree, info, tvb, offset); + sock_diag_proto_tree_add_cookie(tree, info, nl_data, tvb, offset); offset += 8; - return dissect_netlink_attributes(tvb, &hfi_netlink_sock_diag_unix_attr, ett_netlink_sock_diag_attr, info, info->data, tree, offset, -1, dissect_netlink_unix_sock_diag_reply_attrs); + return dissect_netlink_attributes(tvb, &hfi_netlink_sock_diag_unix_attr, ett_netlink_sock_diag_attr, info, nl_data, tree, offset, -1, dissect_netlink_unix_sock_diag_reply_attrs); } /* AF_UNIX request */ @@ -484,7 +484,7 @@ static header_field_info hfi_netlink_sock_diag_unix_show_meminfo NETLINK_SOCK_DI TFS(&_tfs_show_do_not_show), WS_UDIAG_SHOW_MEMINFO, NULL, HFILL }; static int -dissect_sock_diag_unix_request_show(tvbuff_t *tvb, netlink_sock_diag_info_t *info, proto_tree *tree, int offset) +dissect_sock_diag_unix_request_show(tvbuff_t *tvb, netlink_sock_diag_info_t *info, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int offset) { proto_item *ti; proto_tree *flags_tree; @@ -506,7 +506,7 @@ dissect_sock_diag_unix_request_show(tvbuff_t *tvb, netlink_sock_diag_info_t *inf } static int -dissect_sock_diag_unix_request(tvbuff_t *tvb, netlink_sock_diag_info_t *info, proto_tree *tree, int offset) +dissect_sock_diag_unix_request(tvbuff_t *tvb, netlink_sock_diag_info_t *info, struct packet_netlink_data *nl_data, proto_tree *tree, int offset) { proto_tree_add_item(tree, &hfi_netlink_sock_diag_family, tvb, offset, 1, ENC_NA); offset += 1; @@ -523,9 +523,9 @@ dissect_sock_diag_unix_request(tvbuff_t *tvb, netlink_sock_diag_info_t *info, pr proto_tree_add_item(tree, &hfi_netlink_sock_diag_inode, tvb, offset, 4, info->encoding); offset += 4; - offset = dissect_sock_diag_unix_request_show(tvb, info, tree, offset); + offset = dissect_sock_diag_unix_request_show(tvb, info, nl_data, tree, offset); - sock_diag_proto_tree_add_cookie(tree, info, tvb, offset); + sock_diag_proto_tree_add_cookie(tree, info, nl_data, tvb, offset); offset += 8; return offset; @@ -558,7 +558,7 @@ static header_field_info hfi_netlink_sock_diag_inet_attr NETLINK_SOCK_DIAG_HFI_I VALS(netlink_sock_diag_inet_attr_vals), NLA_TYPE_MASK, NULL, HFILL }; static int -dissect_sock_diag_inet_attributes(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_sock_diag_inet_attributes(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { enum ws_inet_diag_attr_type type = (enum ws_inet_diag_attr_type) nla_type; netlink_sock_diag_info_t *info = (netlink_sock_diag_info_t *) data; @@ -583,7 +583,7 @@ dissect_sock_diag_inet_attributes(tvbuff_t *tvb, void *data, proto_tree *tree, i return 0; case WS_INET_DIAG_SKMEMINFO: - return dissect_sock_diag_meminfo(tree, info, tvb, offset, len); + return dissect_sock_diag_meminfo(tree, info, nl_data, tvb, offset, len); case WS_INET_DIAG_SHUTDOWN: if (len == 1) @@ -639,7 +639,7 @@ static header_field_info hfi_netlink_sock_diag_inet_interface NETLINK_SOCK_DIAG_ NULL, 0x00, NULL, HFILL }; static int -dissect_sock_diag_inet_sockid(tvbuff_t *tvb, netlink_sock_diag_info_t *info, proto_tree *tree, int offset, int family) +dissect_sock_diag_inet_sockid(tvbuff_t *tvb, netlink_sock_diag_info_t *info, struct packet_netlink_data *nl_data, proto_tree *tree, int offset, int family) { proto_tree_add_item(tree, &hfi_netlink_sock_diag_inet_sport, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; @@ -678,7 +678,7 @@ dissect_sock_diag_inet_sockid(tvbuff_t *tvb, netlink_sock_diag_info_t *info, pro proto_tree_add_item(tree, &hfi_netlink_sock_diag_inet_interface, tvb, offset, 4, info->encoding); offset += 4; - sock_diag_proto_tree_add_cookie(tree, info, tvb, offset); + sock_diag_proto_tree_add_cookie(tree, info, nl_data, tvb, offset); offset += 8; return offset; @@ -703,7 +703,7 @@ static header_field_info hfi_netlink_sock_diag_inet_states NETLINK_SOCK_DIAG_HFI NULL, 0x00, NULL, HFILL }; static int -dissect_sock_diag_inet_reply(tvbuff_t *tvb, netlink_sock_diag_info_t *info, proto_tree *tree, int offset) +dissect_sock_diag_inet_reply(tvbuff_t *tvb, netlink_sock_diag_info_t *info, struct packet_netlink_data *nl_data, proto_tree *tree, int offset) { guint8 af_family; @@ -717,7 +717,7 @@ dissect_sock_diag_inet_reply(tvbuff_t *tvb, netlink_sock_diag_info_t *info, prot /* XXX timer retrans */ offset += 2; - offset = dissect_sock_diag_inet_sockid(tvb, info, tree, offset, af_family); + offset = dissect_sock_diag_inet_sockid(tvb, info, nl_data, tree, offset, af_family); /* XXX expires */ offset += 4; @@ -734,13 +734,13 @@ dissect_sock_diag_inet_reply(tvbuff_t *tvb, netlink_sock_diag_info_t *info, prot proto_tree_add_item(tree, &hfi_netlink_sock_diag_inode, tvb, offset, 4, info->encoding); offset += 4; - return dissect_netlink_attributes(tvb, &hfi_netlink_sock_diag_inet_attr, ett_netlink_sock_diag_attr, info, info->data, tree, offset, -1, dissect_sock_diag_inet_attributes); + return dissect_netlink_attributes(tvb, &hfi_netlink_sock_diag_inet_attr, ett_netlink_sock_diag_attr, info, nl_data, tree, offset, -1, dissect_sock_diag_inet_attributes); } /* AF_INET request */ static int -dissect_sock_diag_inet_request(tvbuff_t *tvb, netlink_sock_diag_info_t *info, proto_tree *tree, int offset) +dissect_sock_diag_inet_request(tvbuff_t *tvb, netlink_sock_diag_info_t *info, struct packet_netlink_data *nl_data, proto_tree *tree, int offset) { guint8 af_family; @@ -765,7 +765,7 @@ dissect_sock_diag_inet_request(tvbuff_t *tvb, netlink_sock_diag_info_t *info, pr proto_tree_add_item(tree, &hfi_netlink_sock_diag_inet_states, tvb, offset, 4, ENC_NA); offset += 4; - offset = dissect_sock_diag_inet_sockid(tvb, info, tree, offset, af_family); + offset = dissect_sock_diag_inet_sockid(tvb, info, nl_data, tree, offset, af_family); return offset; } @@ -785,14 +785,14 @@ static header_field_info hfi_netlink_sock_diag_netlink_attr NETLINK_SOCK_DIAG_HF VALS(netlink_sock_diag_netlink_vals), NLA_TYPE_MASK, NULL, HFILL }; static int -dissect_sock_diag_netlink_attributes(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_sock_diag_netlink_attributes(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { enum ws_netlink_diag_attr_type type = (enum ws_netlink_diag_attr_type) nla_type; netlink_sock_diag_info_t *info = (netlink_sock_diag_info_t *) data; switch (type) { case WS_NETLINK_DIAG_MEMINFO: - return dissect_sock_diag_meminfo(tree, info, tvb, offset, len); + return dissect_sock_diag_meminfo(tree, info, nl_data, tvb, offset, len); case WS_NETLINK_DIAG_GROUPS: case WS_NETLINK_DIAG_RX_RING: @@ -817,7 +817,7 @@ static header_field_info hfi_netlink_sock_diag_netlink_dst_port_id NETLINK_SOCK_ NULL, 0x00, NULL, HFILL }; static int -dissect_sock_diag_netlink_reply(tvbuff_t *tvb, netlink_sock_diag_info_t *info, proto_tree *tree, int offset) +dissect_sock_diag_netlink_reply(tvbuff_t *tvb, netlink_sock_diag_info_t *info, struct packet_netlink_data *nl_data, proto_tree *tree, int offset) { proto_tree_add_item(tree, &hfi_netlink_sock_diag_family, tvb, offset, 1, ENC_NA); offset += 1; @@ -852,10 +852,10 @@ dissect_sock_diag_netlink_reply(tvbuff_t *tvb, netlink_sock_diag_info_t *info, p proto_tree_add_item(tree, &hfi_netlink_sock_diag_inode, tvb, offset, 4, info->encoding); offset += 4; - sock_diag_proto_tree_add_cookie(tree, info, tvb, offset); + sock_diag_proto_tree_add_cookie(tree, info, nl_data, tvb, offset); offset += 8; - return dissect_netlink_attributes(tvb, &hfi_netlink_sock_diag_netlink_attr, ett_netlink_sock_diag_attr, info, info->data, tree, offset, -1, dissect_sock_diag_netlink_attributes); + return dissect_netlink_attributes(tvb, &hfi_netlink_sock_diag_netlink_attr, ett_netlink_sock_diag_attr, info, nl_data, tree, offset, -1, dissect_sock_diag_netlink_attributes); } /* AF_NETLINK request */ @@ -877,7 +877,7 @@ static header_field_info hfi_netlink_sock_diag_netlink_show_ring_cfg NETLINK_SOC TFS(&_tfs_show_do_not_show), WS_NDIAG_SHOW_RING_CFG, NULL, HFILL }; static int -dissect_sock_diag_netlink_request_show(tvbuff_t *tvb, netlink_sock_diag_info_t *info, proto_tree *tree, int offset) +dissect_sock_diag_netlink_request_show(tvbuff_t *tvb, netlink_sock_diag_info_t *info, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int offset) { proto_item *ti; proto_tree *flags_tree; @@ -896,7 +896,7 @@ dissect_sock_diag_netlink_request_show(tvbuff_t *tvb, netlink_sock_diag_info_t * } static int -dissect_sock_diag_netlink_request(tvbuff_t *tvb, netlink_sock_diag_info_t *info, proto_tree *tree, int offset) +dissect_sock_diag_netlink_request(tvbuff_t *tvb, netlink_sock_diag_info_t *info, struct packet_netlink_data *nl_data, proto_tree *tree, int offset) { /* XXX, 255 for all */ proto_tree_add_item(tree, &hfi_netlink_sock_diag_family, tvb, offset, 1, ENC_NA); @@ -911,9 +911,9 @@ dissect_sock_diag_netlink_request(tvbuff_t *tvb, netlink_sock_diag_info_t *info, proto_tree_add_item(tree, &hfi_netlink_sock_diag_inode, tvb, offset, 4, info->encoding); offset += 4; - offset = dissect_sock_diag_netlink_request_show(tvb, info, tree, offset); + offset = dissect_sock_diag_netlink_request_show(tvb, info, nl_data, tree, offset); - sock_diag_proto_tree_add_cookie(tree, info, tvb, offset); + sock_diag_proto_tree_add_cookie(tree, info, nl_data, tvb, offset); offset += 8; return offset; @@ -922,14 +922,14 @@ dissect_sock_diag_netlink_request(tvbuff_t *tvb, netlink_sock_diag_info_t *info, /* AF_PACKET attributes */ static int -dissect_netlink_packet_sock_diag_reply_attrs(tvbuff_t *tvb, void *data, proto_tree *tree, int nla_type, int offset, int len) +dissect_netlink_packet_sock_diag_reply_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { enum ws_packet_diag_attr_type type = (enum ws_packet_diag_attr_type) nla_type; netlink_sock_diag_info_t *info = (netlink_sock_diag_info_t *) data; switch (type) { case WS_PACKET_DIAG_MEMINFO: - return dissect_sock_diag_meminfo(tree, info, tvb, offset, len); + return dissect_sock_diag_meminfo(tree, info, nl_data, tvb, offset, len); case WS_PACKET_DIAG_INFO: case WS_PACKET_DIAG_MCLIST: @@ -966,7 +966,7 @@ static header_field_info hfi_netlink_sock_diag_packet_proto NETLINK_SOCK_DIAG_HF VALS(etype_vals) /* XXX + Linux specific */, 0x00, NULL, HFILL }; static int -dissect_sock_diag_packet_reply(tvbuff_t *tvb, netlink_sock_diag_info_t *info, proto_tree *tree, int offset) +dissect_sock_diag_packet_reply(tvbuff_t *tvb, netlink_sock_diag_info_t *info, struct packet_netlink_data *nl_data, proto_tree *tree, int offset) { proto_tree_add_item(tree, &hfi_netlink_sock_diag_family, tvb, offset, 1, ENC_NA); offset += 1; @@ -980,10 +980,10 @@ dissect_sock_diag_packet_reply(tvbuff_t *tvb, netlink_sock_diag_info_t *info, pr proto_tree_add_item(tree, &hfi_netlink_sock_diag_inode, tvb, offset, 4, info->encoding); offset += 4; - sock_diag_proto_tree_add_cookie(tree, info, tvb, offset); + sock_diag_proto_tree_add_cookie(tree, info, nl_data, tvb, offset); offset += 8; - return dissect_netlink_attributes(tvb, &hfi_netlink_sock_diag_packet_attr, ett_netlink_sock_diag_attr, info, info->data, tree, offset, -1, dissect_netlink_packet_sock_diag_reply_attrs); + return dissect_netlink_attributes(tvb, &hfi_netlink_sock_diag_packet_attr, ett_netlink_sock_diag_attr, info, nl_data, tree, offset, -1, dissect_netlink_packet_sock_diag_reply_attrs); } /* AF_PACKET request */ @@ -1017,7 +1017,7 @@ static header_field_info hfi_netlink_sock_diag_packet_show_filter NETLINK_SOCK_D TFS(&_tfs_show_do_not_show), WS_PACKET_SHOW_FILTER, NULL, HFILL }; static int -dissect_sock_diag_packet_request_show(tvbuff_t *tvb, netlink_sock_diag_info_t *info, proto_tree *tree, int offset) +dissect_sock_diag_packet_request_show(tvbuff_t *tvb, netlink_sock_diag_info_t *info, struct packet_netlink_data *nl_data _U_, proto_tree *tree, int offset) { proto_item *ti; proto_tree *flags_tree; @@ -1039,7 +1039,7 @@ dissect_sock_diag_packet_request_show(tvbuff_t *tvb, netlink_sock_diag_info_t *i } static int -dissect_sock_diag_packet_request(tvbuff_t *tvb, netlink_sock_diag_info_t *info, proto_tree *tree, int offset) +dissect_sock_diag_packet_request(tvbuff_t *tvb, netlink_sock_diag_info_t *info, struct packet_netlink_data *nl_data, proto_tree *tree, int offset) { proto_tree_add_item(tree, &hfi_netlink_sock_diag_family, tvb, offset, 1, ENC_NA); offset += 1; @@ -1053,9 +1053,9 @@ dissect_sock_diag_packet_request(tvbuff_t *tvb, netlink_sock_diag_info_t *info, proto_tree_add_item(tree, &hfi_netlink_sock_diag_inode, tvb, offset, 4, info->encoding); offset += 4; - offset = dissect_sock_diag_packet_request_show(tvb, info, tree, offset); + offset = dissect_sock_diag_packet_request_show(tvb, info, nl_data, tree, offset); - sock_diag_proto_tree_add_cookie(tree, info, tvb, offset); + sock_diag_proto_tree_add_cookie(tree, info, nl_data, tvb, offset); offset += 8; return offset; @@ -1064,7 +1064,7 @@ dissect_sock_diag_packet_request(tvbuff_t *tvb, netlink_sock_diag_info_t *info, /* WS_SOCK_DIAG_BY_FAMILY dissection */ static int -dissect_sock_diag_by_family(tvbuff_t *tvb, netlink_sock_diag_info_t *info, proto_tree *tree, int offset) +dissect_sock_diag_by_family(tvbuff_t *tvb, netlink_sock_diag_info_t *info, struct packet_netlink_data *nl_data, proto_tree *tree, int offset) { const gboolean is_req = (info->pinfo->p2p_dir == P2P_DIR_SENT); guint8 af_family; @@ -1074,27 +1074,27 @@ dissect_sock_diag_by_family(tvbuff_t *tvb, netlink_sock_diag_info_t *info, proto switch (af_family) { case LINUX_AF_LOCAL: offset = (is_req) ? - dissect_sock_diag_unix_request(tvb, info, tree, offset) : - dissect_sock_diag_unix_reply(tvb, info, tree, offset); + dissect_sock_diag_unix_request(tvb, info, nl_data, tree, offset) : + dissect_sock_diag_unix_reply(tvb, info, nl_data, tree, offset); break; case LINUX_AF_INET: case LINUX_AF_INET6: offset = (is_req) ? - dissect_sock_diag_inet_request(tvb, info, tree, offset) : - dissect_sock_diag_inet_reply(tvb, info, tree, offset); + dissect_sock_diag_inet_request(tvb, info, nl_data, tree, offset) : + dissect_sock_diag_inet_reply(tvb, info, nl_data, tree, offset); break; case LINUX_AF_NETLINK: offset = (is_req) ? - dissect_sock_diag_netlink_request(tvb, info, tree, offset) : - dissect_sock_diag_netlink_reply(tvb, info, tree, offset); + dissect_sock_diag_netlink_request(tvb, info, nl_data, tree, offset) : + dissect_sock_diag_netlink_reply(tvb, info, nl_data, tree, offset); break; case LINUX_AF_PACKET: offset = (is_req) ? - dissect_sock_diag_packet_request(tvb, info, tree, offset) : - dissect_sock_diag_packet_reply(tvb, info, tree, offset); + dissect_sock_diag_packet_request(tvb, info, nl_data, tree, offset) : + dissect_sock_diag_packet_reply(tvb, info, nl_data, tree, offset); break; } @@ -1114,15 +1114,15 @@ static header_field_info hfi_netlink_sock_diag_nltype NETLINK_SOCK_DIAG_HFI_INIT VALS(netlink_sock_diag_type_vals), 0x00, NULL, HFILL }; static int -dissect_netlink_sock_diag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *_data) +dissect_netlink_sock_diag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { - struct packet_netlink_data *data = (struct packet_netlink_data *)_data; + struct packet_netlink_data *nl_data = (struct packet_netlink_data *)data; netlink_sock_diag_info_t info; proto_tree *nlmsg_tree; proto_item *pi; int offset = 0; - DISSECTOR_ASSERT(data && data->magic == PACKET_NETLINK_MAGIC); + DISSECTOR_ASSERT(nl_data && nl_data->magic == PACKET_NETLINK_MAGIC); col_set_str(pinfo->cinfo, COL_PROTOCOL, "Netlink sock diag"); col_clear(pinfo->cinfo, COL_INFO); @@ -1131,20 +1131,20 @@ dissect_netlink_sock_diag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, v nlmsg_tree = proto_item_add_subtree(pi, ett_netlink_sock_diag); /* Netlink message header (nlmsghdr) */ - offset = dissect_netlink_header(tvb, nlmsg_tree, offset, data->encoding, &hfi_netlink_sock_diag_nltype, NULL); + offset = dissect_netlink_header(tvb, nlmsg_tree, offset, nl_data->encoding, &hfi_netlink_sock_diag_nltype, NULL); - info.encoding = data->encoding; + info.encoding = nl_data->encoding; info.pinfo = pinfo; - info.data = data; + info.nl_data = nl_data; - switch (data->type) { + switch (nl_data->type) { case WS_TCPDIAG_GETSOCK: case WS_DCCPDIAG_GETSOCK: /* XXX, inet_diag_rcv_msg_compat */ break; case WS_SOCK_DIAG_BY_FAMILY: - offset = dissect_sock_diag_by_family(tvb, &info, nlmsg_tree, offset); + offset = dissect_sock_diag_by_family(tvb, &info, nl_data, nlmsg_tree, offset); break; } diff --git a/epan/dissectors/packet-netlink.c b/epan/dissectors/packet-netlink.c index 6c222bdb05..88cdab64dd 100644 --- a/epan/dissectors/packet-netlink.c +++ b/epan/dissectors/packet-netlink.c @@ -303,7 +303,7 @@ dissect_netlink_attributes_common(tvbuff_t *tvb, header_field_info *hfi_type, in } } - if (!cb(tvb, data, attr_tree, rta_type, offset, rta_len - 4)) { + if (!cb(tvb, data, nl_data, attr_tree, rta_type, offset, rta_len - 4)) { proto_tree_add_item(attr_tree, &hfi_netlink_attr_data, tvb, offset, rta_len - 4, encoding); } } else { @@ -424,7 +424,7 @@ dissect_netlink_error(tvbuff_t *tvb, proto_tree *tree, int offset, int encoding) } static int -dissect_netlink(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *_data _U_) +dissect_netlink(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { guint16 protocol, hatype; proto_item *ti; @@ -519,15 +519,15 @@ dissect_netlink(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *_data * Try to invoke subdissectors for non-control messages. */ if (msg_type >= WS_NLMSG_MIN_TYPE && pkt_len > 16) { - struct packet_netlink_data data; + struct packet_netlink_data nl_data; - data.magic = PACKET_NETLINK_MAGIC; - data.encoding = encoding; - data.type = msg_type; + nl_data.magic = PACKET_NETLINK_MAGIC; + nl_data.encoding = encoding; + nl_data.type = msg_type; next_tvb = tvb_new_subset_length(tvb, offset, pkt_len); - if (dissector_try_uint_new(netlink_dissector_table, protocol, next_tvb, pinfo, tree, TRUE, &data)) { + if (dissector_try_uint_new(netlink_dissector_table, protocol, next_tvb, pinfo, tree, TRUE, &nl_data)) { dissected = TRUE; } } diff --git a/epan/dissectors/packet-netlink.h b/epan/dissectors/packet-netlink.h index 06b9172263..abfcf8e5c5 100644 --- a/epan/dissectors/packet-netlink.h +++ b/epan/dissectors/packet-netlink.h @@ -107,7 +107,7 @@ struct packet_netlink_data { */ int dissect_netlink_header(tvbuff_t *tvb, proto_tree *tree, int offset, int encoding, header_field_info *hfi_type, proto_item **pi_type); -typedef int netlink_attributes_cb_t(tvbuff_t *, void *data, proto_tree *, int nla_type, int offset, int len); +typedef int netlink_attributes_cb_t(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len); int dissect_netlink_attributes(tvbuff_t *tvb, header_field_info *hfi_type, int ett, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int offset, int length, netlink_attributes_cb_t cb); @@ -128,8 +128,8 @@ int dissect_netlink_attributes_array(tvbuff_t *tvb, header_field_info *hfi_type, * Format of the data that is passed to "genl.family" dissectors. */ typedef struct { - struct packet_netlink_data *data; - int encoding; /* copy of data->encoding */ + struct packet_netlink_data *nl_data; + int encoding; /* copy of nl_data->encoding */ /* For internal use by genl. */ proto_tree *genl_tree; @@ -138,6 +138,19 @@ typedef struct { guint8 cmd; /* Command number */ } genl_info_t; -int dissect_genl_header(tvbuff_t *tvb, genl_info_t *genl_info, header_field_info *hfi_cmd); +int dissect_genl_header(tvbuff_t *tvb, genl_info_t *genl_info, struct packet_netlink_data *nl_data, header_field_info *hfi_cmd); #endif /* __PACKET_NETLINK_H__ */ + +/* + * Editor modelines - https://www.wireshark.org/tools/modelines.html + * + * Local variables: + * c-basic-offset: 8 + * tab-width: 8 + * indent-tabs-mode: t + * End: + * + * vi: set shiftwidth=8 tabstop=8 noexpandtab: + * :indentSize=8:tabSize=8:noTabs=false: + */ |