diff options
author | Guy Harris <guy@alum.mit.edu> | 2003-12-29 19:04:05 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2003-12-29 19:04:05 +0000 |
commit | 3e035003682bd21d608ef183c4ec8cc0b2d0b476 (patch) | |
tree | 9298bdd18c6435d1e9f0178235d7aa1580efcdf5 /packet-ipx.c | |
parent | d72750578bd90389586b901055b1aee07b2a96bf (diff) |
Add support for NetWare's serialization protocol.
svn path=/trunk/; revision=9472
Diffstat (limited to 'packet-ipx.c')
-rw-r--r-- | packet-ipx.c | 51 |
1 files changed, 49 insertions, 2 deletions
diff --git a/packet-ipx.c b/packet-ipx.c index 8742530092..cc45df342d 100644 --- a/packet-ipx.c +++ b/packet-ipx.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 2000-2002 by Gilbert Ramirez. * Portions Copyright (c) Novell, Inc. 2002-2003 * - * $Id: packet-ipx.c,v 1.137 2003/10/03 09:09:34 sahlberg Exp $ + * $Id: packet-ipx.c,v 1.138 2003/12/29 19:04:05 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -107,6 +107,10 @@ static int hf_ipxrip_response = -1; static gint ett_ipxrip = -1; +static int proto_serialization = -1; + +static gint ett_serialization = -1; + static int proto_sap = -1; static int hf_sap_request = -1; static int hf_sap_response = -1; @@ -128,6 +132,9 @@ static void dissect_ipxrip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); static void +dissect_serialization(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); + +static void dissect_ipxsap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); static void @@ -952,6 +959,37 @@ dissect_ipxrip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } } +/* ================================================================= */ +/* IPX Serialization */ +/* ================================================================= */ +static void +dissect_serialization(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) +{ + proto_tree *ser_tree = NULL; + proto_item *ti; + + if (check_col(pinfo->cinfo, COL_PROTOCOL)) + col_set_str(pinfo->cinfo, COL_PROTOCOL, "NW_SERIAL"); + if (check_col(pinfo->cinfo, COL_INFO)) + col_clear(pinfo->cinfo, COL_INFO); + + if (tree) { + ti = proto_tree_add_item(tree, proto_serialization, tvb, 0, -1, + FALSE); + ser_tree = proto_item_add_subtree(ti, ett_serialization); + } + + if (check_col(pinfo->cinfo, COL_INFO)) { + col_add_fstr(pinfo->cinfo, COL_INFO, "Serial number %s", + tvb_bytes_to_str(tvb, 0, 6)); + } + + if (tree) { + proto_tree_add_text(ser_tree, tvb, 0, 6, + "Serial number: %s", tvb_bytes_to_str(tvb, 0, 6)); + } +} + /* * Some of these are from ncpfs, others are from the book, * others are from the page at @@ -1455,6 +1493,7 @@ proto_register_ipx(void) &ett_spx_connctrl, &ett_ipxmsg, &ett_ipxrip, + &ett_serialization, &ett_ipxsap, &ett_ipxsap_server, }; @@ -1473,6 +1512,9 @@ proto_register_ipx(void) "IPX RIP", "ipxrip"); proto_register_field_array(proto_ipxrip, hf_ipxrip, array_length(hf_ipxrip)); + proto_serialization = proto_register_protocol("NetWare Serialization Protocol", + "NW_SERIAL", "nw_serial"); + proto_ipxmsg = proto_register_protocol("IPX Message", "IPX MSG", "ipxmsg"); proto_register_field_array(proto_ipxmsg, hf_ipxmsg, array_length(hf_ipxmsg)); @@ -1502,7 +1544,7 @@ proto_reg_handoff_ipx(void) { dissector_handle_t ipx_handle, spx_handle; dissector_handle_t ipxsap_handle, ipxrip_handle; - dissector_handle_t ipxmsg_handle; + dissector_handle_t serialization_handle, ipxmsg_handle; ipx_handle = find_dissector("ipx"); dissector_add("udp.port", UDP_PORT_IPX, ipx_handle); @@ -1525,6 +1567,11 @@ proto_reg_handoff_ipx(void) ipxrip_handle = create_dissector_handle(dissect_ipxrip, proto_ipxrip); dissector_add("ipx.socket", IPX_SOCKET_IPXRIP, ipxrip_handle); + serialization_handle = create_dissector_handle(dissect_serialization, + proto_serialization); + dissector_add("ipx.socket", IPX_SOCKET_SERIALIZATION, + serialization_handle); + ipxmsg_handle = create_dissector_handle(dissect_ipxmsg, proto_ipxmsg); dissector_add("ipx.socket", IPX_SOCKET_IPX_MESSAGE, ipxmsg_handle); dissector_add("ipx.socket", IPX_SOCKET_IPX_MESSAGE1, ipxmsg_handle); |