diff options
author | Guy Harris <guy@alum.mit.edu> | 1999-10-22 08:11:40 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 1999-10-22 08:11:40 +0000 |
commit | 1ff9a0d3e3b578b5cdfa47b19dd98f7dd854ae7c (patch) | |
tree | 15174816805a3c72ce2d3854311a75423af03869 /packet-atalk.c | |
parent | d9e7aca79ec35b879a6299e40f7fa690dc50c1ad (diff) | |
download | wireshark-1ff9a0d3e3b578b5cdfa47b19dd98f7dd854ae7c.tar.gz wireshark-1ff9a0d3e3b578b5cdfa47b19dd98f7dd854ae7c.tar.bz2 wireshark-1ff9a0d3e3b578b5cdfa47b19dd98f7dd854ae7c.zip |
Add support for Appletalk DDP addresses to the code that handles the
"address" type.
Use that in the Appletalk DDP dissector.
Show the DDP packet type by name, if it's a known packet type.
svn path=/trunk/; revision=911
Diffstat (limited to 'packet-atalk.c')
-rw-r--r-- | packet-atalk.c | 62 |
1 files changed, 46 insertions, 16 deletions
diff --git a/packet-atalk.c b/packet-atalk.c index 28802df5bf..4f190c6dba 100644 --- a/packet-atalk.c +++ b/packet-atalk.c @@ -1,7 +1,7 @@ -/* packet-ddp.c - * Routines for DDP packet disassembly. +/* packet-atalk.c + * Routines for Appletalk packet disassembly (DDP, currently). * - * $Id: packet-atalk.c,v 1.15 1999/10/12 06:20:02 gram Exp $ + * $Id: packet-atalk.c,v 1.16 1999/10/22 08:11:40 guy Exp $ * * Simon Wilkinson <sxw@dcs.ed.ac.uk> * @@ -31,6 +31,7 @@ #include <glib.h> #include "globals.h" #include "packet.h" +#include "packet-atalk.h" #ifdef HAVE_NETINET_IN_H # include <netinet/in.h> @@ -75,19 +76,41 @@ typedef struct _e_ddp { #define DDP_ADSP 0x07 #define DDP_HEADER_SIZE 13 +extern gchar * +atalk_addr_to_str(const struct atalk_ddp_addr *addrp) +{ + static gchar str[3][22]; + static gchar *cur; + + if (cur == &str[0][0]) { + cur = &str[1][0]; + } else if (cur == &str[1][0]) { + cur = &str[2][0]; + } else { + cur = &str[0][0]; + } + + sprintf(cur, "%d.%d:%d", addrp->net, addrp->node, addrp->port); + return cur; +} + +static const value_string op_vals[] = { + {DDP_RTMPDATA, "AppleTalk Routing Table response or data" }, + {DDP_NBP, "AppleTalk Name Binding Protocol packet"}, + {DDP_ATP, "AppleTalk Transaction Protocol packet"}, + {DDP_AEP, "AppleTalk Echo Protocol packet"}, + {DDP_RTMPREQ, "AppleTalk Routing Table request"}, + {DDP_ZIP, "AppleTalk Zone Information Protocol packet"}, + {DDP_ADSP, "AppleTalk Data Stream Protocol"}, + {0, NULL} +}; + void dissect_ddp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) { e_ddp ddp; proto_tree *ddp_tree; proto_item *ti; - value_string op_vals[] = { {DDP_RTMPDATA, "AppleTalk Routing Table response or data" }, - {DDP_NBP, "AppleTalk Name Binding Protocol packet"}, - {DDP_ATP, "AppleTalk Transaction Protocol packet"}, - {DDP_AEP, "AppleTalk Echo Protocol packet"}, - {DDP_RTMPREQ, "AppleTalk Routing Table request"}, - {DDP_ZIP, "AppleTalk Zone Information Protocol packet"}, - {DDP_ADSP, "AppleTalk Data Stream Protocol"}, - {0, NULL} }; + static struct atalk_ddp_addr src, dst; if (!BYTES_ARE_IN_FRAME(offset, DDP_HEADER_SIZE)) { dissect_data(pd, offset, fd, tree); @@ -99,10 +122,17 @@ dissect_ddp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) { ddp.snet=ntohs(ddp.snet); ddp.sum=ntohs(ddp.sum); - if (check_col(fd, COL_RES_NET_SRC)) - col_add_fstr(fd, COL_RES_NET_SRC, "%d.%d:%d", ddp.snet, ddp.snode, ddp.sport); - if (check_col(fd, COL_RES_NET_DST)) - col_add_fstr(fd, COL_RES_NET_DST, "%d.%d:%d", ddp.dnet, ddp.dnode, ddp.dport); + src.net = ddp.snet; + src.node = ddp.snode; + src.port = ddp.sport; + dst.net = ddp.dnet; + dst.node = ddp.dnode; + dst.port = ddp.dport; + SET_ADDRESS(&pi.net_src, AT_ATALK, sizeof src, (guint8 *)&src); + SET_ADDRESS(&pi.src, AT_ATALK, sizeof src, (guint8 *)&src); + SET_ADDRESS(&pi.net_dst, AT_ATALK, sizeof dst, (guint8 *)&dst); + SET_ADDRESS(&pi.dst, AT_ATALK, sizeof dst, (guint8 *)&dst); + if (check_col(fd, COL_PROTOCOL)) col_add_str(fd, COL_PROTOCOL, "DDP"); if (check_col(fd, COL_INFO)) @@ -171,7 +201,7 @@ proto_register_atalk(void) "" }}, { &hf_ddp_type, - { "Protocol type", "ddp.type", FT_UINT8, BASE_DEC, NULL, 0x0, + { "Protocol type", "ddp.type", FT_UINT8, BASE_DEC, VALS(op_vals), 0x0, "" }}, }; |