For old times' sake: Fix bad dissection of Ethernet Router Hello Messages: Coverity 876 & 877 [UNUSED]

svn path=/trunk/; revision=37275
This commit is contained in:
Bill Meier 2011-05-19 01:42:49 +00:00
parent af896ce356
commit d07dcf9256
1 changed files with 277 additions and 283 deletions

View File

@ -9,7 +9,6 @@
* $Id$
*
* Use was made of the following documentation:
* (See URL http://linux-decnet.sourceforge.net/docs).
*
* DECnet DIGITAL Network Architecture
* Routing Layer Functional Specification
@ -46,13 +45,9 @@
# include "config.h"
#endif
#include <stdlib.h>
#include <glib.h>
#include <gmodule.h>
#include <epan/packet.h>
#include <epan/proto.h>
#include <epan/emem.h>
#include "packet-tcp.h"
#include <epan/etypes.h>
#include <epan/ppptypes.h>
@ -811,15 +806,14 @@ do_hello_msg(
guint8 image_len;
guint8 item_len;
ti_locala = proto_tree_add_item(tree, hf_dec_rt_elist, tvb,
my_offset, 7, TRUE);
my_offset += 7;
/* image field is preceded by count of remainder of field */
image_len = tvb_get_guint8(tvb, my_offset);
my_offset++;
ti_locala = proto_tree_add_none_format(tree, hf_dec_rt_elist,
tvb, my_offset, 1, "Router States");
ti_locala = proto_tree_add_item(tree, hf_dec_rt_elist, tvb,
my_offset, image_len, TRUE);
list_tree = proto_item_add_subtree(ti_locala, ett_dec_rt_list);
while (image_len > 0) {
ti_ether = proto_tree_add_item(list_tree, hf_dec_rt_ename, tvb,
my_offset, 7, ENC_NA);
@ -846,10 +840,10 @@ do_hello_msg(
my_offset += 6;
pstate_tree = proto_item_add_subtree(ti_localb, ett_dec_rt_state);
pristate = tvb_get_guint8(tvb, my_offset);
proto_tree_add_string(list_ether, hf_dec_rt_router_state,
proto_tree_add_string(pstate_tree, hf_dec_rt_router_state,
tvb, my_offset, 1,
((pristate & 0x80) ? "known 2-way": "unknown"));
proto_tree_add_uint(list_ether, hf_dec_rt_router_prio,
proto_tree_add_uint(pstate_tree, hf_dec_rt_router_prio,
tvb, my_offset, 1, pristate);
my_offset++;
item_len -= 7;
@ -1265,285 +1259,285 @@ void
proto_register_dec_rt(void)
{
static hf_register_info hf[] = {
/* Mesage header items */
{ &hf_dec_routing_flags,
{ "Routing flags", "dec_dna.flags",
FT_UINT8, BASE_HEX, NULL, 0x0,
"DNA routing flag", HFILL }},
{ &hf_dec_rt_ctrl_msg,
{ "Control packet", "dec_dna.flags.control",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), RT_FLAGS_CTRL_MSG,
NULL, HFILL }},
{ &hf_dec_rt_long_msg,
{ "Long data packet format", "dec_dna.flags.msglen",
FT_UINT8, BASE_HEX, NULL, 0x06,
"Long message indicator", HFILL }},
{ &hf_dec_rt_short_msg,
{ "Short data packet format", "dec_dna.flags.msglen",
FT_UINT8, BASE_HEX, NULL, 0x06,
"Short message indicator", HFILL }},
{ &hf_dec_rt_rqr,
{ "Return to Sender Request", "dec_dna.flags.RQR",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), RT_FLAGS_RQR,
"Return to Sender", HFILL }},
{ &hf_dec_rt_rts,
{ "Packet on return trip", "dec_dna.flags.RTS",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), RT_FLAGS_RTS,
NULL, HFILL }},
{ &hf_dec_rt_inter_eth,
{ "Intra-ethernet packet", "dec_dna.flags.intra_eth",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), RT_FLAGS_INTRA_ETHER,
NULL, HFILL }},
{ &hf_dec_rt_discard,
{ "Discarded packet", "dec_dna.flags.discard",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), RT_FLAGS_DISCARD,
NULL, HFILL }},
{ &hf_dec_rt_dst_addr,
{ "Destination Address", "dec_dna.dst.address",
FT_ETHER, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_src_addr,
{ "Source Address", "dec_dna.src.addr",
FT_ETHER, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_nl2,
{ "Next level 2 router", "dec_dna.nl2",
FT_UINT8, BASE_HEX, NULL, 0x0,
"reserved", HFILL }},
{ &hf_dec_rt_service_class,
{ "Service class", "dec_dna.svc_cls",
FT_UINT8, BASE_HEX, NULL, 0x0,
"reserved", HFILL }},
{ &hf_dec_rt_protocol_type,
{ "Protocol type", "dec_dna.proto_type",
FT_UINT8, BASE_HEX, NULL, 0x0,
"reserved", HFILL }},
{ &hf_dec_rt_visit_count,
{ "Visit count", "dec_dna.visit_cnt",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_flow_control,
{ "Flow control", "dec_dna.nsp.flow_control",
FT_UINT8, BASE_HEX, VALS(rt_flow_control_vals), 0x3,
"Flow control(stop, go)", HFILL }},
{ &hf_dec_rt_services,
{ "Requested services", "dec_dna.nsp.services",
FT_UINT8, BASE_HEX, VALS(rt_services_vals), 0x0c,
"Services requested", HFILL }},
{ &hf_dec_rt_info,
{ "Version info", "dec_dna.nsp.info",
FT_UINT8, BASE_HEX, VALS(rt_info_version_vals), 0x03,
NULL, HFILL }},
{ &hf_dec_rt_dst_node,
{ "Destination node", "dec_dna.dst_node",
FT_UINT16, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_seg_size,
{ "Maximum data segment size", "dec_dna.nsp.segsize",
FT_UINT16, BASE_DEC, NULL, 0x0,
"Max. segment size", HFILL }},
{ &hf_dec_rt_src_node,
{ "Source node", "dec_dna.src_node",
FT_UINT16, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_segnum,
{ "Message number", "dec_dna.nsp.segnum",
FT_UINT16, BASE_DEC, NULL, 0xfff,
"Segment number", HFILL }},
{ &hf_dec_rt_delay,
{ "Delayed ACK allowed", "dec_dna.nsp.delay",
FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x1000,
"Delayed ACK allowed?", HFILL }},
{ &hf_dec_rt_visited_nodes,
{ "Nodes visited ty this package", "dec_dna.vst_node",
FT_UINT8, BASE_DEC, NULL, 0x0,
"Nodes visited", HFILL }},
/* Control messsage items */
{ &hf_dec_ctl_msgs,
{ "Routing control message", "dec_dna.rt.msg_type",
FT_UINT8, BASE_HEX, VALS(rt_msg_type_vals), 0xe,
"Routing control", HFILL }},
{ &hf_dec_ctl_msg_hdr,
{ "Routing control message", "dec_dna.rt.msg_type",
FT_UINT8, BASE_HEX, VALS(rt_msg_type_vals), 0xe,
"Routing control", HFILL }},
{ &hf_dec_nsp_msgs,
{ "DNA NSP message", "dec_dna.nsp.msg_type",
FT_UINT8, BASE_HEX, VALS(nsp_msg_type_vals), 0x0,
"NSP message", HFILL }},
{ &hf_dec_rt_acknum,
{ "Ack/Nak", "dec_dna.ctl.acknum",
FT_NONE, BASE_NONE, NULL, 0x0,
"ack/nak number", HFILL }},
{ &hf_dec_rt_fc_val,
{ "Flow control", "dec_dna.nsp.fc_val",
FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_tiinfo,
{ "Routing information", "dec_dna.ctl.tiinfo",
FT_UINT8, BASE_HEX, VALS(rt_tiinfo_vals), 0x0,
NULL, HFILL }},
{ &hf_dec_rt_blk_size,
{ "Block size", "dec_dna.ctl.blk_size",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_disc_reason,
{ "Reason for disconnect","dec_dna.nsp.disc_reason",
FT_UINT16, BASE_HEX, VALS(rt_disc_reason_vals), 0x0,
"Disconnect reason", HFILL }},
{ &hf_dec_rt_version,
{ "Version", "dec_dna.ctl.version",
FT_NONE, BASE_NONE, NULL, 0x0,
"Control protocol version", HFILL }},
{ &hf_dec_rt_timer,
{ "Hello timer(seconds)", "dec_dna.ctl.timer",
FT_UINT16, BASE_DEC, NULL, 0x0,
"Hello timer in seconds", HFILL }},
{ &hf_dec_rt_reserved,
{ "Reserved", "dec_dna.ctl.reserved",
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_fcnval,
{ "Verification message function value", "dec_dna.ctl.fcnval",
FT_BYTES, BASE_NONE, NULL, 0x0,
"Routing Verification function", HFILL }},
{ &hf_dec_rt_test_data,
{ "Test message data", "dec_dna.ctl.test_data",
FT_BYTES, BASE_NONE, NULL, 0x0,
"Routing Test message data", HFILL }},
{ &hf_dec_rt_segment,
{ "Segment", "dec_dna.ctl.segment",
FT_NONE, BASE_NONE, NULL, 0x0,
"Routing Segment", HFILL }},
{ &hf_dec_rt_id,
{ "Transmitting system ID", "dec_dna.ctl.id",
FT_ETHER, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_iinfo,
{ "Routing information", "dec_dna.ctl.tiinfo",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_iinfo_node_type,
{ "Node type", "dec_dna.ctl.iinfo.node_type",
FT_UINT8, BASE_HEX, VALS(rt_iinfo_node_type_vals), 0x03,
NULL, HFILL }},
{ &hf_dec_rt_iinfo_vrf,
{ "Verification required", "dec_dna.ctl.iinfo.vrf",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x4,
"Verification required?", HFILL }},
{ &hf_dec_rt_iinfo_rej,
{ "Rejected", "dec_dna.ctl.iinfo.rej",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x8,
"Rejected message", HFILL }},
{ &hf_dec_rt_iinfo_verf,
{ "Verification failed", "dec_dna.ctl.iinfo.verf",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x10,
"Verification failed?", HFILL }},
{ &hf_dec_rt_iinfo_mta,
{ "Accepts multicast traffic", "dec_dna.ctl.iinfo.mta",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x20,
"Accepts multicast traffic?", HFILL }},
{ &hf_dec_rt_iinfo_blkreq,
{ "Blocking requested", "dec_dna.ctl.iinfo.blkreq",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x40,
"Blocking requested?", HFILL }},
{ &hf_dec_rt_iprio,
{ "Routing priority", "dec_dna.ctl.prio",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_neighbor,
{ "Neighbor", "dec_dna.ctl_neighbor",
FT_ETHER, BASE_NONE, NULL, 0x0,
"Neighbour ID", HFILL }},
{ &hf_dec_rt_seed,
{ "Verification seed", "dec_dna.ctl.seed",
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_elist,
{ "List of router states", "dec_dna.ctl.elist",
FT_NONE, BASE_NONE, NULL, 0x0,
"Router states", HFILL }},
{ &hf_dec_rt_ename,
{ "Ethernet name", "dec_dna.ctl.ename",
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_router_id,
{ "Router ID", "dec_dna.ctl.router_id",
FT_ETHER, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_router_state,
{ "Router state", "dec_dna.ctl.router_state",
FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_conn_contents,
{ "Session connect data", "dec_dna.sess.conn",
FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_router_prio,
{ "Router priority", "dec_dna.ctl.router_prio",
FT_UINT8, BASE_HEX, NULL, 0x7f,
NULL, HFILL }},
{ &hf_dec_sess_grp_code,
{ "Session Group code", "dec_dna.sess.grp_code",
FT_UINT16, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_sess_usr_code,
{ "Session User code", "dec_dna.sess.usr_code",
FT_UINT16, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_sess_dst_name,
{ "Session Destination end user", "dec_dna.sess.dst_name",
FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_sess_src_name,
{ "Session Source end user", "dec_dna.sess.src_name",
FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_sess_obj_type,
{ "Session Object type", "dec_dna.sess.obj_type",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_sess_menu_ver,
{ "Session Menu version", "dec_dna.sess.menu_ver",
FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_sess_rqstr_id,
{ "Session Requestor ID", "dec_dna.sess.rqstr_id",
FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
static hf_register_info hf[] = {
/* Mesage header items */
{ &hf_dec_routing_flags,
{ "Routing flags", "dec_dna.flags",
FT_UINT8, BASE_HEX, NULL, 0x0,
"DNA routing flag", HFILL }},
{ &hf_dec_rt_ctrl_msg,
{ "Control packet", "dec_dna.flags.control",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), RT_FLAGS_CTRL_MSG,
NULL, HFILL }},
{ &hf_dec_rt_long_msg,
{ "Long data packet format", "dec_dna.flags.msglen",
FT_UINT8, BASE_HEX, NULL, 0x06,
"Long message indicator", HFILL }},
{ &hf_dec_rt_short_msg,
{ "Short data packet format", "dec_dna.flags.msglen",
FT_UINT8, BASE_HEX, NULL, 0x06,
"Short message indicator", HFILL }},
{ &hf_dec_rt_rqr,
{ "Return to Sender Request", "dec_dna.flags.RQR",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), RT_FLAGS_RQR,
"Return to Sender", HFILL }},
{ &hf_dec_rt_rts,
{ "Packet on return trip", "dec_dna.flags.RTS",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), RT_FLAGS_RTS,
NULL, HFILL }},
{ &hf_dec_rt_inter_eth,
{ "Intra-ethernet packet", "dec_dna.flags.intra_eth",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), RT_FLAGS_INTRA_ETHER,
NULL, HFILL }},
{ &hf_dec_rt_discard,
{ "Discarded packet", "dec_dna.flags.discard",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), RT_FLAGS_DISCARD,
NULL, HFILL }},
{ &hf_dec_rt_dst_addr,
{ "Destination Address", "dec_dna.dst.address",
FT_ETHER, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_src_addr,
{ "Source Address", "dec_dna.src.addr",
FT_ETHER, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_nl2,
{ "Next level 2 router", "dec_dna.nl2",
FT_UINT8, BASE_HEX, NULL, 0x0,
"reserved", HFILL }},
{ &hf_dec_rt_service_class,
{ "Service class", "dec_dna.svc_cls",
FT_UINT8, BASE_HEX, NULL, 0x0,
"reserved", HFILL }},
{ &hf_dec_rt_protocol_type,
{ "Protocol type", "dec_dna.proto_type",
FT_UINT8, BASE_HEX, NULL, 0x0,
"reserved", HFILL }},
{ &hf_dec_rt_visit_count,
{ "Visit count", "dec_dna.visit_cnt",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_flow_control,
{ "Flow control", "dec_dna.nsp.flow_control",
FT_UINT8, BASE_HEX, VALS(rt_flow_control_vals), 0x3,
"Flow control(stop, go)", HFILL }},
{ &hf_dec_rt_services,
{ "Requested services", "dec_dna.nsp.services",
FT_UINT8, BASE_HEX, VALS(rt_services_vals), 0x0c,
"Services requested", HFILL }},
{ &hf_dec_rt_info,
{ "Version info", "dec_dna.nsp.info",
FT_UINT8, BASE_HEX, VALS(rt_info_version_vals), 0x03,
NULL, HFILL }},
{ &hf_dec_rt_dst_node,
{ "Destination node", "dec_dna.dst_node",
FT_UINT16, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_seg_size,
{ "Maximum data segment size", "dec_dna.nsp.segsize",
FT_UINT16, BASE_DEC, NULL, 0x0,
"Max. segment size", HFILL }},
{ &hf_dec_rt_src_node,
{ "Source node", "dec_dna.src_node",
FT_UINT16, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_segnum,
{ "Message number", "dec_dna.nsp.segnum",
FT_UINT16, BASE_DEC, NULL, 0xfff,
"Segment number", HFILL }},
{ &hf_dec_rt_delay,
{ "Delayed ACK allowed", "dec_dna.nsp.delay",
FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x1000,
"Delayed ACK allowed?", HFILL }},
{ &hf_dec_rt_visited_nodes,
{ "Nodes visited ty this package", "dec_dna.vst_node",
FT_UINT8, BASE_DEC, NULL, 0x0,
"Nodes visited", HFILL }},
/* Control messsage items */
{ &hf_dec_ctl_msgs,
{ "Routing control message", "dec_dna.rt.msg_type",
FT_UINT8, BASE_HEX, VALS(rt_msg_type_vals), 0xe,
"Routing control", HFILL }},
{ &hf_dec_ctl_msg_hdr,
{ "Routing control message", "dec_dna.rt.msg_type",
FT_UINT8, BASE_HEX, VALS(rt_msg_type_vals), 0xe,
"Routing control", HFILL }},
{ &hf_dec_nsp_msgs,
{ "DNA NSP message", "dec_dna.nsp.msg_type",
FT_UINT8, BASE_HEX, VALS(nsp_msg_type_vals), 0x0,
"NSP message", HFILL }},
{ &hf_dec_rt_acknum,
{ "Ack/Nak", "dec_dna.ctl.acknum",
FT_NONE, BASE_NONE, NULL, 0x0,
"ack/nak number", HFILL }},
{ &hf_dec_rt_fc_val,
{ "Flow control", "dec_dna.nsp.fc_val",
FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_tiinfo,
{ "Routing information", "dec_dna.ctl.tiinfo",
FT_UINT8, BASE_HEX, VALS(rt_tiinfo_vals), 0x0,
NULL, HFILL }},
{ &hf_dec_rt_blk_size,
{ "Block size", "dec_dna.ctl.blk_size",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_disc_reason,
{ "Reason for disconnect","dec_dna.nsp.disc_reason",
FT_UINT16, BASE_HEX, VALS(rt_disc_reason_vals), 0x0,
"Disconnect reason", HFILL }},
{ &hf_dec_rt_version,
{ "Version", "dec_dna.ctl.version",
FT_NONE, BASE_NONE, NULL, 0x0,
"Control protocol version", HFILL }},
{ &hf_dec_rt_timer,
{ "Hello timer(seconds)", "dec_dna.ctl.timer",
FT_UINT16, BASE_DEC, NULL, 0x0,
"Hello timer in seconds", HFILL }},
{ &hf_dec_rt_reserved,
{ "Reserved", "dec_dna.ctl.reserved",
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_fcnval,
{ "Verification message function value", "dec_dna.ctl.fcnval",
FT_BYTES, BASE_NONE, NULL, 0x0,
"Routing Verification function", HFILL }},
{ &hf_dec_rt_test_data,
{ "Test message data", "dec_dna.ctl.test_data",
FT_BYTES, BASE_NONE, NULL, 0x0,
"Routing Test message data", HFILL }},
{ &hf_dec_rt_segment,
{ "Segment", "dec_dna.ctl.segment",
FT_NONE, BASE_NONE, NULL, 0x0,
"Routing Segment", HFILL }},
{ &hf_dec_rt_id,
{ "Transmitting system ID", "dec_dna.ctl.id",
FT_ETHER, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_iinfo,
{ "Routing information", "dec_dna.ctl.tiinfo",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_iinfo_node_type,
{ "Node type", "dec_dna.ctl.iinfo.node_type",
FT_UINT8, BASE_HEX, VALS(rt_iinfo_node_type_vals), 0x03,
NULL, HFILL }},
{ &hf_dec_rt_iinfo_vrf,
{ "Verification required", "dec_dna.ctl.iinfo.vrf",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x4,
"Verification required?", HFILL }},
{ &hf_dec_rt_iinfo_rej,
{ "Rejected", "dec_dna.ctl.iinfo.rej",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x8,
"Rejected message", HFILL }},
{ &hf_dec_rt_iinfo_verf,
{ "Verification failed", "dec_dna.ctl.iinfo.verf",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x10,
"Verification failed?", HFILL }},
{ &hf_dec_rt_iinfo_mta,
{ "Accepts multicast traffic", "dec_dna.ctl.iinfo.mta",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x20,
"Accepts multicast traffic?", HFILL }},
{ &hf_dec_rt_iinfo_blkreq,
{ "Blocking requested", "dec_dna.ctl.iinfo.blkreq",
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x40,
"Blocking requested?", HFILL }},
{ &hf_dec_rt_iprio,
{ "Routing priority", "dec_dna.ctl.prio",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_neighbor,
{ "Neighbor", "dec_dna.ctl_neighbor",
FT_ETHER, BASE_NONE, NULL, 0x0,
"Neighbour ID", HFILL }},
{ &hf_dec_rt_seed,
{ "Verification seed", "dec_dna.ctl.seed",
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_elist,
{ "List of router states", "dec_dna.ctl.elist",
FT_NONE, BASE_NONE, NULL, 0x0,
"Router states", HFILL }},
{ &hf_dec_rt_ename,
{ "Ethernet name", "dec_dna.ctl.ename",
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_router_id,
{ "Router ID", "dec_dna.ctl.router_id",
FT_ETHER, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_router_state,
{ "Router state", "dec_dna.ctl.router_state",
FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_conn_contents,
{ "Session connect data", "dec_dna.sess.conn",
FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_rt_router_prio,
{ "Router priority", "dec_dna.ctl.router_prio",
FT_UINT8, BASE_HEX, NULL, 0x7f,
NULL, HFILL }},
{ &hf_dec_sess_grp_code,
{ "Session Group code", "dec_dna.sess.grp_code",
FT_UINT16, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_sess_usr_code,
{ "Session User code", "dec_dna.sess.usr_code",
FT_UINT16, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_sess_dst_name,
{ "Session Destination end user", "dec_dna.sess.dst_name",
FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_sess_src_name,
{ "Session Source end user", "dec_dna.sess.src_name",
FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_sess_obj_type,
{ "Session Object type", "dec_dna.sess.obj_type",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_sess_menu_ver,
{ "Session Menu version", "dec_dna.sess.menu_ver",
FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_dec_sess_rqstr_id,
{ "Session Requestor ID", "dec_dna.sess.rqstr_id",
FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
};
static gint *ett[] = {
&ett_dec_rt,
&ett_dec_routing_flags,
&ett_dec_msg_flags,
&ett_dec_rt_ctl_msg,
&ett_dec_rt_nsp_msg,
&ett_dec_rt_info_flags,
&ett_dec_rt_list,
&ett_dec_rt_rlist,
&ett_dec_rt_state,
&ett_dec_flow_control,
&ett_dec_sess_contents,
};
};
static gint *ett[] = {
&ett_dec_rt,
&ett_dec_routing_flags,
&ett_dec_msg_flags,
&ett_dec_rt_ctl_msg,
&ett_dec_rt_nsp_msg,
&ett_dec_rt_info_flags,
&ett_dec_rt_list,
&ett_dec_rt_rlist,
&ett_dec_rt_state,
&ett_dec_flow_control,
&ett_dec_sess_contents,
};
proto_dec_rt = proto_register_protocol("DEC DNA Routing Protocol",
"DEC_DNA", "dec_dna");
proto_register_field_array(proto_dec_rt, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
proto_dec_rt = proto_register_protocol("DEC DNA Routing Protocol",
"DEC_DNA", "dec_dna");
proto_register_field_array(proto_dec_rt, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_dec_rt(void)
{
dissector_handle_t dec_rt_handle;
dissector_handle_t dec_rt_handle;
dec_rt_handle = create_dissector_handle(dissect_dec_rt,
proto_dec_rt);
dissector_add_uint("ethertype", ETHERTYPE_DNA_RT, dec_rt_handle);
dissector_add_uint("chdlctype", ETHERTYPE_DNA_RT, dec_rt_handle);
dissector_add_uint("ppp.protocol", PPP_DEC4, dec_rt_handle);
dec_rt_handle = create_dissector_handle(dissect_dec_rt,
proto_dec_rt);
dissector_add_uint("ethertype", ETHERTYPE_DNA_RT, dec_rt_handle);
dissector_add_uint("chdlctype", ETHERTYPE_DNA_RT, dec_rt_handle);
dissector_add_uint("ppp.protocol", PPP_DEC4, dec_rt_handle);
/* dissector_add_uint("ppp.protocol", PPP_DECNETCP, dec_rt_handle);*/
}