diff options
Diffstat (limited to 'epan/dissectors/packet-ncsi.c')
-rw-r--r-- | epan/dissectors/packet-ncsi.c | 364 |
1 files changed, 179 insertions, 185 deletions
diff --git a/epan/dissectors/packet-ncsi.c b/epan/dissectors/packet-ncsi.c index 1aba51238a..2dc24095bc 100644 --- a/epan/dissectors/packet-ncsi.c +++ b/epan/dissectors/packet-ncsi.c @@ -26,201 +26,203 @@ #include <epan/expert.h> #include <epan/addr_resolv.h> #include <epan/pci-ids.h> -#include <stdio.h> +#include <epan/charsets.h> +#include "packet-mctp.h" void proto_reg_handoff_ncsi(void); void proto_register_ncsi(void); -static int proto_ncsi = -1; +static int proto_ncsi; +static dissector_handle_t ncsi_handle; /* Common header fields */ -static int hf_ncsi_mc_id = -1; -static int hf_ncsi_revision = -1; -static int hf_ncsi_iid = -1; -static int hf_ncsi_type = -1; -static int hf_ncsi_type_code = -1; -static int hf_ncsi_type_code_masked = -1; -static int hf_ncsi_type_resp = -1; -static int hf_ncsi_chan = -1; -static int hf_ncsi_plen = -1; +static int hf_ncsi_mc_id; +static int hf_ncsi_revision; +static int hf_ncsi_iid; +static int hf_ncsi_type; +static int hf_ncsi_type_code; +static int hf_ncsi_type_code_masked; +static int hf_ncsi_type_resp; +static int hf_ncsi_chan; +static int hf_ncsi_plen; /* Decode the Package# and internal channel# */ -static int hf_ncsi_pkg = -1; -static int hf_ncsi_ichan = -1; +static int hf_ncsi_pkg; +static int hf_ncsi_ichan; /* Response generics */ -static int hf_ncsi_resp = -1; -static int hf_ncsi_reason = -1; +static int hf_ncsi_resp; +static int hf_ncsi_reason; /* Select package */ -static int hf_ncsi_sp_hwarb = -1; +static int hf_ncsi_sp_hwarb; /* Disable channel */ -static int hf_ncsi_dc_ald = -1; +static int hf_ncsi_dc_ald; /* AEN enable */ -static int hf_ncsi_aene_mc = -1; +static int hf_ncsi_aene_mc; /* Set MAC Address */ -static int hf_ncsi_sm_mac = -1; -static int hf_ncsi_sm_macno = -1; -static int hf_ncsi_sm_at = -1; -static int hf_ncsi_sm_e = -1; +static int hf_ncsi_sm_mac; +static int hf_ncsi_sm_macno; +static int hf_ncsi_sm_at; +static int hf_ncsi_sm_e; /* Broadcast filter */ -static int hf_ncsi_bf = -1; -static int hf_ncsi_bf_arp = -1; -static int hf_ncsi_bf_dhcpc = -1; -static int hf_ncsi_bf_dhcps = -1; -static int hf_ncsi_bf_netbios = -1; +static int hf_ncsi_bf; +static int hf_ncsi_bf_arp; +static int hf_ncsi_bf_dhcpc; +static int hf_ncsi_bf_dhcps; +static int hf_ncsi_bf_netbios; /* AEN payload fields */ -static int hf_ncsi_aen_type = -1; -static int hf_ncsi_aen_lsc_oemstat = -1; -static int hf_ncsi_aen_hcds = -1; -static int hf_ncsi_aen_drr_orig_type = -1; -static int hf_ncsi_aen_drr_orig_iid = -1; +static int hf_ncsi_aen_type; +static int hf_ncsi_aen_lsc_oemstat; +static int hf_ncsi_aen_hcds; +static int hf_ncsi_aen_drr_orig_type; +static int hf_ncsi_aen_drr_orig_iid; /* generic link status */ -static int hf_ncsi_lstat = -1; -static int hf_ncsi_lstat_flag = -1; -static int hf_ncsi_lstat_speed_duplex = -1; -static int hf_ncsi_lstat_autoneg = -1; -static int hf_ncsi_lstat_autoneg_complete = -1; -static int hf_ncsi_lstat_parallel_detection = -1; -static int hf_ncsi_lstat_1000TFD = -1; -static int hf_ncsi_lstat_1000THD = -1; -static int hf_ncsi_lstat_100T4 = -1; -static int hf_ncsi_lstat_100TXFD = -1; -static int hf_ncsi_lstat_100TXHD = -1; -static int hf_ncsi_lstat_10TFD = -1; -static int hf_ncsi_lstat_10THD = -1; -static int hf_ncsi_lstat_tx_flow = -1; -static int hf_ncsi_lstat_rx_flow = -1; -static int hf_ncsi_lstat_partner_flow = -1; -static int hf_ncsi_lstat_serdes = -1; -static int hf_ncsi_lstat_oem_speed_valid = -1; +static int hf_ncsi_lstat; +static int hf_ncsi_lstat_flag; +static int hf_ncsi_lstat_speed_duplex; +static int hf_ncsi_lstat_autoneg; +static int hf_ncsi_lstat_autoneg_complete; +static int hf_ncsi_lstat_parallel_detection; +static int hf_ncsi_lstat_1000TFD; +static int hf_ncsi_lstat_1000THD; +static int hf_ncsi_lstat_100T4; +static int hf_ncsi_lstat_100TXFD; +static int hf_ncsi_lstat_100TXHD; +static int hf_ncsi_lstat_10TFD; +static int hf_ncsi_lstat_10THD; +static int hf_ncsi_lstat_tx_flow; +static int hf_ncsi_lstat_rx_flow; +static int hf_ncsi_lstat_partner_flow; +static int hf_ncsi_lstat_serdes; +static int hf_ncsi_lstat_oem_speed_valid; /* Set Link command (0x09) */ -static int hf_ncsi_ls = -1; -static int hf_ncsi_ls_an = -1; -static int hf_ncsi_ls_10m = -1; -static int hf_ncsi_ls_100m = -1; -static int hf_ncsi_ls_1g = -1; -static int hf_ncsi_ls_10g = -1; -static int hf_ncsi_ls_20g = -1; -static int hf_ncsi_ls_25g = -1; -static int hf_ncsi_ls_40g = -1; -static int hf_ncsi_ls_hd = -1; -static int hf_ncsi_ls_fd = -1; -static int hf_ncsi_ls_pc = -1; -static int hf_ncsi_ls_apc = -1; -static int hf_ncsi_ls_50g = -1; -static int hf_ncsi_ls_100g = -1; -static int hf_ncsi_ls_2_5g = -1; -static int hf_ncsi_ls_5g = -1; -static int hf_ncsi_ls_rsv = -1; -static int hf_ncsi_ls_oemls = -1; +static int hf_ncsi_ls; +static int hf_ncsi_ls_an; +static int hf_ncsi_ls_10m; +static int hf_ncsi_ls_100m; +static int hf_ncsi_ls_1g; +static int hf_ncsi_ls_10g; +static int hf_ncsi_ls_20g; +static int hf_ncsi_ls_25g; +static int hf_ncsi_ls_40g; +static int hf_ncsi_ls_hd; +static int hf_ncsi_ls_fd; +static int hf_ncsi_ls_pc; +static int hf_ncsi_ls_apc; +static int hf_ncsi_ls_50g; +static int hf_ncsi_ls_100g; +static int hf_ncsi_ls_2_5g; +static int hf_ncsi_ls_5g; +static int hf_ncsi_ls_rsv; +static int hf_ncsi_ls_oemls; /*Get Capabilities*/ -static int hf_ncsi_cap_flag = -1; /* Offset 20..23 Capabilities Flags */ -static int hf_ncsi_cap_flag_ha = -1; /* bit 0 Hardware Arbitration */ -static int hf_ncsi_cap_flag_op = -1; /* bit 1 OS Presence */ -static int hf_ncsi_cap_flag_n2mfc = -1; /* bit 2 Network Controller to Management Controller Flow Control Support */ -static int hf_ncsi_cap_flag_m2nfc = -1; /* bit 3 Management Controller to Network Controller Flow Control Support */ -static int hf_ncsi_cap_flag_ama = -1; /* bit 4 All multicast addresses support */ - -static int hf_ncsi_cap_bf = -1; /* Offset 24..27 Broadcast Packet Filter Capabilities, the variable names are align with Broadcast filter above */ -static int hf_ncsi_cap_bf_arp = -1; -static int hf_ncsi_cap_bf_dhcpc = -1; -static int hf_ncsi_cap_bf_dhcps = -1; -static int hf_ncsi_cap_bf_netbios = -1; - -static int hf_ncsi_cap_mf = -1; /* Offset 28..31 Multicast Packet Filter Capabilities */ -static int hf_ncsi_cap_mf_v6na = -1; -static int hf_ncsi_cap_mf_v6ra = -1; -static int hf_ncsi_cap_mf_dhcpv6 = -1; - -static int hf_ncsi_cap_buf = -1; /* Offset 32..35 Buffering Capability */ - -static int hf_ncsi_cap_aen = -1; /* Offset 36..39 AEN Control Support */ -static int hf_ncsi_cap_aen_lstat = -1; /* bit 0 Link Status Change AEN control */ -static int hf_ncsi_cap_aen_cfg = -1; /* bit 1 Configuration Required AEN control */ -static int hf_ncsi_cap_aen_drv = -1; /* bit 2 Host NC Driver Status Change AEN control */ -static int hf_ncsi_cap_aen_resv = -1; /* bit 3..15 Reserved Reserved */ -static int hf_ncsi_cap_aen_oem = -1; /* bit 16..31 OEM-specific AEN control OEM */ - -static int hf_ncsi_cap_vcnt = -1; /* VLAN Filter Count */ -static int hf_ncsi_cap_mixcnt = -1; /* Mixed Filter Count */ -static int hf_ncsi_cap_mccnt = -1; /* Multicast Filter Count */ -static int hf_ncsi_cap_uccnt = -1; /* Unicast Filter Count */ - -static int hf_ncsi_cap_vmode = -1; /* VLAN Mode Support */ -static int hf_ncsi_cap_vmode_vo = -1; /* bit 0 VLAN only */ -static int hf_ncsi_cap_vmode_both = -1; /* bit 1 VLAN + non-VLAN */ -static int hf_ncsi_cap_vmode_any = -1; /* bit 2 Any VLAN + non-VLAN */ -static int hf_ncsi_cap_chcnt = -1; /* Channel Count */ +static int hf_ncsi_cap_flag; /* Offset 20..23 Capabilities Flags */ +static int hf_ncsi_cap_flag_ha; /* bit 0 Hardware Arbitration */ +static int hf_ncsi_cap_flag_op; /* bit 1 OS Presence */ +static int hf_ncsi_cap_flag_n2mfc; /* bit 2 Network Controller to Management Controller Flow Control Support */ +static int hf_ncsi_cap_flag_m2nfc; /* bit 3 Management Controller to Network Controller Flow Control Support */ +static int hf_ncsi_cap_flag_ama; /* bit 4 All multicast addresses support */ + +static int hf_ncsi_cap_bf; /* Offset 24..27 Broadcast Packet Filter Capabilities, the variable names are align with Broadcast filter above */ +static int hf_ncsi_cap_bf_arp; +static int hf_ncsi_cap_bf_dhcpc; +static int hf_ncsi_cap_bf_dhcps; +static int hf_ncsi_cap_bf_netbios; + +static int hf_ncsi_cap_mf; /* Offset 28..31 Multicast Packet Filter Capabilities */ +static int hf_ncsi_cap_mf_v6na; +static int hf_ncsi_cap_mf_v6ra; +static int hf_ncsi_cap_mf_dhcpv6; + +static int hf_ncsi_cap_buf; /* Offset 32..35 Buffering Capability */ + +static int hf_ncsi_cap_aen; /* Offset 36..39 AEN Control Support */ +static int hf_ncsi_cap_aen_lstat; /* bit 0 Link Status Change AEN control */ +static int hf_ncsi_cap_aen_cfg; /* bit 1 Configuration Required AEN control */ +static int hf_ncsi_cap_aen_drv; /* bit 2 Host NC Driver Status Change AEN control */ +static int hf_ncsi_cap_aen_resv; /* bit 3..15 Reserved Reserved */ +static int hf_ncsi_cap_aen_oem; /* bit 16..31 OEM-specific AEN control OEM */ + +static int hf_ncsi_cap_vcnt; /* VLAN Filter Count */ +static int hf_ncsi_cap_mixcnt; /* Mixed Filter Count */ +static int hf_ncsi_cap_mccnt; /* Multicast Filter Count */ +static int hf_ncsi_cap_uccnt; /* Unicast Filter Count */ + +static int hf_ncsi_cap_vmode; /* VLAN Mode Support */ +static int hf_ncsi_cap_vmode_vo; /* bit 0 VLAN only */ +static int hf_ncsi_cap_vmode_both; /* bit 1 VLAN + non-VLAN */ +static int hf_ncsi_cap_vmode_any; /* bit 2 Any VLAN + non-VLAN */ +static int hf_ncsi_cap_chcnt; /* Channel Count */ /*Get Version ID*/ -static int hf_ncsi_ver = -1; -static int hf_ncsi_fw_name = -1; -static int hf_ncsi_fw_ver = -1; -static int hf_ncsi_pci_did = -1; -static int hf_ncsi_pci_vid = -1; -static int hf_ncsi_pci_ssid = -1; -static int hf_ncsi_iana = -1; +static int hf_ncsi_ver; +static int hf_ncsi_fw_name; +static int hf_ncsi_fw_ver; +static int hf_ncsi_pci_did; +static int hf_ncsi_pci_vid; +static int hf_ncsi_pci_ssid; +static int hf_ncsi_iana; /* OEM ID */ -static int hf_ncsi_oem_id = -1; +static int hf_ncsi_oem_id; /* OEM Mellanox Command, Parameter, Host number */ -static int hf_ncsi_mlnx_cmd = -1; -static int hf_ncsi_mlnx_parm = -1; -static int hf_ncsi_mlnx_host = -1; +static int hf_ncsi_mlnx_cmd; +static int hf_ncsi_mlnx_parm; +static int hf_ncsi_mlnx_host; /* OEM Mellanox Set MC Affinity (Command = 0x1, parameter 0x7) */ -static int hf_ncsi_mlnx_rbt = -1; /* MC RBT address */ -static int hf_ncsi_mlnx_sms = -1; /* Supported Medias Status */ -static int hf_ncsi_mlnx_sms_rbt = -1; -static int hf_ncsi_mlnx_sms_smbus = -1; -static int hf_ncsi_mlnx_sms_pcie = -1; -static int hf_ncsi_mlnx_sms_rbts = -1; -static int hf_ncsi_mlnx_sms_smbuss = -1; -static int hf_ncsi_mlnx_sms_pcies = -1; - -static int hf_ncsi_mlnx_beid = -1; /* MC SMBus EID */ -static int hf_ncsi_mlnx_bidx = -1; /* SMBus INDX */ -static int hf_ncsi_mlnx_baddr = -1; /* MC SMBus Address */ -static int hf_ncsi_mlnx_peid = -1; /* MC PCIe EID */ -static int hf_ncsi_mlnx_pidx = -1; /* PCIe INDX */ -static int hf_ncsi_mlnx_paddr = -1; /* MC PCIe Address */ -static int hf_ncsi_mlnx_ifm = -1; /* IP Filter Mode */ -static int hf_ncsi_mlnx_ifm_byip = -1; /* Bits 1-0 - Filter by IP Address */ -static int hf_ncsi_mlnx_ifm_v4en = -1; /* Bit 2 - IPv4 Enable */ -static int hf_ncsi_mlnx_ifm_v6len = -1; /* Bit 3 - IPv6 Link Local Address Enable */ -static int hf_ncsi_mlnx_ifm_v6gen = -1; /* Bit 4 - IPv6 Global Address Enable */ -static int hf_ncsi_mlnx_v4addr = -1; /* MC IPv4 Address */ -static int hf_ncsi_mlnx_v6local = -1; /* MC IPv6 Link Local Address */ -static int hf_ncsi_mlnx_v6gbl = -1; /* MC IPv6 Global Address */ +static int hf_ncsi_mlnx_rbt; /* MC RBT address */ +static int hf_ncsi_mlnx_sms; /* Supported Medias Status */ +static int hf_ncsi_mlnx_sms_rbt; +static int hf_ncsi_mlnx_sms_smbus; +static int hf_ncsi_mlnx_sms_pcie; +static int hf_ncsi_mlnx_sms_rbts; +static int hf_ncsi_mlnx_sms_smbuss; +static int hf_ncsi_mlnx_sms_pcies; + +static int hf_ncsi_mlnx_beid; /* MC SMBus EID */ +static int hf_ncsi_mlnx_bidx; /* SMBus INDX */ +static int hf_ncsi_mlnx_baddr; /* MC SMBus Address */ +static int hf_ncsi_mlnx_peid; /* MC PCIe EID */ +static int hf_ncsi_mlnx_pidx; /* PCIe INDX */ +static int hf_ncsi_mlnx_paddr; /* MC PCIe Address */ +static int hf_ncsi_mlnx_ifm; /* IP Filter Mode */ +static int hf_ncsi_mlnx_ifm_byip; /* Bits 1-0 - Filter by IP Address */ +static int hf_ncsi_mlnx_ifm_v4en; /* Bit 2 - IPv4 Enable */ +static int hf_ncsi_mlnx_ifm_v6len; /* Bit 3 - IPv6 Link Local Address Enable */ +static int hf_ncsi_mlnx_ifm_v6gen; /* Bit 4 - IPv6 Global Address Enable */ +static int hf_ncsi_mlnx_v4addr; /* MC IPv4 Address */ +static int hf_ncsi_mlnx_v6local; /* MC IPv6 Link Local Address */ +static int hf_ncsi_mlnx_v6gbl; /* MC IPv6 Global Address */ /* Get Allocated Management Address (Command = 0x0, Parameter 0x1B) */ -static int hf_ncsi_mlnx_gama_st = -1; /*Get Allocated Management Address Status */ -static int hf_ncsi_mlnx_gama_mac = -1; /*Allocated MC MAC address */ - - - -static gint ett_ncsi = -1; -static gint ett_ncsi_type = -1; -static gint ett_ncsi_chan = -1; -static gint ett_ncsi_payload = -1; -static gint ett_ncsi_lstat = -1; -static gint ett_ncsi_cap_flag = -1; -static gint ett_ncsi_cap_bf = -1; -static gint ett_ncsi_cap_mf = -1; -static gint ett_ncsi_cap_aen = -1; -static gint ett_ncsi_cap_vmode = -1; -static gint ett_ncsi_ls = -1; -static gint ett_ncsi_mlnx = -1; -static gint ett_ncsi_mlnx_sms = -1; -static gint ett_ncsi_mlnx_ifm = -1; +static int hf_ncsi_mlnx_gama_st; /*Get Allocated Management Address Status */ +static int hf_ncsi_mlnx_gama_mac; /*Allocated MC MAC address */ + + + +static gint ett_ncsi; +static gint ett_ncsi_type; +static gint ett_ncsi_chan; +static gint ett_ncsi_payload; +static gint ett_ncsi_lstat; +static gint ett_ncsi_cap_flag; +static gint ett_ncsi_cap_bf; +static gint ett_ncsi_cap_mf; +static gint ett_ncsi_cap_aen; +static gint ett_ncsi_cap_vmode; +static gint ett_ncsi_ls; +static gint ett_ncsi_mlnx; +static gint ett_ncsi_mlnx_sms; +static gint ett_ncsi_mlnx_ifm; #define NCSI_MIN_LENGTH 8 @@ -402,8 +404,8 @@ static const true_false_string tfs_complete_disable_inprog = { "Complete", "Disa static const value_string ncsi_partner_flow_vals[] = { { 0x00, "Not pause capable" }, { 0x01, "Symmetric pause" }, - { 0x02, "Assymmetric pause" }, - { 0x03, "Symmetric & Assymetric pause" }, + { 0x02, "Asymmetric pause" }, + { 0x03, "Symmetric & Asymmetric pause" }, { 0, NULL }, }; @@ -510,17 +512,13 @@ dissect_ncsi_aen(tvbuff_t *tvb, proto_tree *tree) #define HEXSTR(x) (((x) < 10)? '0' + (x): 'A' + ((x) - 10)) static const gchar * -ncsi_bcd_dig_to_str(tvbuff_t *tvb, const gint offset) +ncsi_bcd_dig_to_str(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset) { - int length = 16; /* MM.mm.uu.aa.bb */ guint8 octet; int i; - char *digit_str; + char digit_str[16]; /* MM.mm.uu.aa.bb */ int str_offset = 0; - - digit_str = (char *)wmem_alloc(wmem_packet_scope(), length); - for (i = 0 ; i < 3; i++) { octet = tvb_get_guint8(tvb, offset + i); @@ -532,10 +530,7 @@ ncsi_bcd_dig_to_str(tvbuff_t *tvb, const gint offset) digit_str[str_offset++] = '.'; } - if ((octet >> 4) != 0xf) { - digit_str[str_offset++] = HEXSTR((octet >> 4) & 0x0f); - } - + digit_str[str_offset++] = HEXSTR((octet >> 4) & 0x0f); digit_str[str_offset++] = HEXSTR(octet & 0x0f); } @@ -554,13 +549,13 @@ ncsi_bcd_dig_to_str(tvbuff_t *tvb, const gint offset) } digit_str[str_offset] = '\0'; - return digit_str; + return get_utf_8_string(scope, digit_str, (int)strlen(digit_str)); } static const gchar * -ncsi_fw_version(tvbuff_t *tvb, const gint offset) +ncsi_fw_version(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset) { int length = 16; /* hh.hh.hh.hh */ guint8 octet; @@ -569,7 +564,7 @@ ncsi_fw_version(tvbuff_t *tvb, const gint offset) int str_offset = 0; - ver_str = (char *)wmem_alloc(wmem_packet_scope(), length); + ver_str = (char *)wmem_alloc(scope, length); for (i = 0 ; i < 4; i++) { octet = tvb_get_guint8(tvb, offset + i); @@ -909,18 +904,17 @@ dissect_ncsi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, if (plen >= 40) { /* We got complete payload*/ const gchar *ver_str; proto_tree *ncsi_ver_tree; - gchar fw_name[13]; + gchar *fw_name; guint16 vid, did, svid, ssid; ncsi_ver_tree = proto_tree_add_subtree(ncsi_payload_tree, tvb, 20, plen - 4, ett_ncsi_payload, NULL, "Version ID"); - ver_str = ncsi_bcd_dig_to_str(tvb, 20); + ver_str = ncsi_bcd_dig_to_str(pinfo->pool, tvb, 20); proto_tree_add_string(ncsi_ver_tree, hf_ncsi_ver, tvb, 20, 8, ver_str); - tvb_memcpy(tvb, fw_name, 28, 12); - fw_name[12] = 0; + fw_name = tvb_get_string_enc(pinfo->pool, tvb, 28, 12, ENC_ASCII); proto_tree_add_string(ncsi_ver_tree, hf_ncsi_fw_name, tvb, 28, 12, fw_name); - proto_tree_add_string(ncsi_ver_tree, hf_ncsi_fw_ver, tvb, 40, 4, ncsi_fw_version(tvb, 40)); + proto_tree_add_string(ncsi_ver_tree, hf_ncsi_fw_ver, tvb, 40, 4, ncsi_fw_version(pinfo->pool, tvb, 40)); vid = tvb_get_guint16(tvb, 46, ENC_BIG_ENDIAN); did = tvb_get_guint16(tvb, 44, ENC_BIG_ENDIAN); @@ -1007,12 +1001,12 @@ proto_register_ncsi(void) }, { &hf_ncsi_resp, { "Response", "ncsi.resp", - FT_UINT8, BASE_HEX, VALS(ncsi_resp_code_vals), 0x0, + FT_UINT16, BASE_HEX, VALS(ncsi_resp_code_vals), 0x0, "Response code", HFILL }, }, { &hf_ncsi_reason, { "Reason", "ncsi.reason", - FT_UINT8, BASE_HEX, VALS(ncsi_resp_reason_vals), 0x0, + FT_UINT16, BASE_HEX, VALS(ncsi_resp_reason_vals), 0x0, "Reason code", HFILL }, }, { &hf_ncsi_sp_hwarb, @@ -1290,7 +1284,7 @@ proto_register_ncsi(void) NULL, HFILL }, }, - /* Get Verison ID */ + /* Get Version ID */ { &hf_ncsi_ver, { "NC-SI version", "ncsi.ver", FT_STRING, BASE_NONE, NULL, 0, @@ -1402,7 +1396,7 @@ proto_register_ncsi(void) NULL, HFILL }, }, { &hf_ncsi_cap_mf_dhcpv6, - { "DHCPv6 relay and server multicast", "ncsi.cap.mf.v6na", + { "DHCPv6 relay and server multicast", "ncsi.cap.mf.v6dhcp", FT_BOOLEAN, 32, TFS(&tfs_capable_not_capable), 1 << 2, NULL, HFILL }, }, @@ -1662,6 +1656,7 @@ proto_register_ncsi(void) /* Register the protocol name and description */ proto_ncsi = proto_register_protocol("NCSI", "NCSI", "ncsi"); + ncsi_handle = register_dissector("ncsi", dissect_ncsi, proto_ncsi); /* Required function calls to register the header fields and subtrees */ proto_register_field_array(proto_ncsi, hf, array_length(hf)); @@ -1671,9 +1666,8 @@ proto_register_ncsi(void) void proto_reg_handoff_ncsi(void) { - dissector_handle_t ncsi_handle; - ncsi_handle = create_dissector_handle(dissect_ncsi, proto_ncsi); dissector_add_uint("ethertype", ETHERTYPE_NCSI, ncsi_handle); + dissector_add_uint("mctp.encap-type", MCTP_TYPE_NCSI, ncsi_handle); } /* |