From 0f59bc7c4521cc6139dfe44d9775d06d99b8a583 Mon Sep 17 00:00:00 2001 From: Jeff Morriss Date: Fri, 11 Feb 2011 03:13:24 +0000 Subject: [PATCH] Rename vines_to_str() to tvb_vines_to_str() and make it take a pointer a TVB and an offset instead of (generally) a pointer into a TVB. Move most of the contents of packet-vines.h into packet-vines.c: the moved content is only needed in that file. svn path=/trunk/; revision=35912 --- epan/address_to_str.c | 4 +- epan/dissectors/packet-vines.c | 119 ++++++++++++++++++++++++++++++--- epan/dissectors/packet-vines.h | 102 ---------------------------- epan/to_str.h | 3 +- 4 files changed, 113 insertions(+), 115 deletions(-) diff --git a/epan/address_to_str.c b/epan/address_to_str.c index 0ffc6ab7b2..e65aa0e220 100644 --- a/epan/address_to_str.c +++ b/epan/address_to_str.c @@ -203,13 +203,13 @@ vines_addr_to_str_buf(const guint8 *addrp, gchar *buf, int buf_len) } gchar * -vines_addr_to_str(const guint8 *addrp) +tvb_vines_addr_to_str(tvbuff_t *tvb, const gint offset) { gchar *buf; buf=ep_alloc(214); /* XXX, 14 here? */ - vines_addr_to_str_buf(addrp, buf, 214); + vines_addr_to_str_buf(tvb_get_ptr(tvb, offset, VINES_ADDR_LEN), buf, 214); return buf; } diff --git a/epan/dissectors/packet-vines.c b/epan/dissectors/packet-vines.c index 43658d21fc..cc8308622c 100644 --- a/epan/dissectors/packet-vines.c +++ b/epan/dissectors/packet-vines.c @@ -25,6 +25,50 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* Information about VINES can be found in + * + * VINES Protocol Definition + * Order Number: DA254-00 + * Banyan Systems incorporated + * February 1990 + * Part Number: 092093-000 + * + * Some information can also be found in + * + * http://www.cisco.com/univercd/cc/td/doc/cisintwk/ito_doc/vines.htm + * + * and at + * + * http://www.synapse.de/ban/HTML/P_VINES/Eng/P_vines.html + * + * The document at + * + * http://www.watersprings.org/pub/id/draft-ietf-rmonmib-rmonprot-v2-00.txt + * + * lists a bunch of values of protocol identifier fields for various + * protocols. It speaks of the Vines Fragmentation Protocol, + * the "Vines Token Ring Protocol" which appears to be the same as the + * "Vines LLC" protocol here, the Vines echo protocol, Vines IP, and + * protocols running atop Vines IP. + * + * The LLC values it describes are: + * + * 0xbc (SAP_VINES2) Vines Token Ring a/k/a Vines LLC + * + * It doesn't mention 0xba (SAP_VINES1). + * + * The Vines Token Ring/Vines LLC protocol identifier values it + * describes are: + * + * 0xba Vines IP + * 0xbb Vines Echo + * + * The Ethernet type values it describes are: + * + * 0x0bad (ETHERTYPE_VINES) Vines IP + * 0x0baf Vines Echo + */ + #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -38,6 +82,7 @@ #include #include #include +#include #define UDP_PORT_VINES 573 @@ -86,6 +131,60 @@ static int proto_vines_icp = -1; static gint ett_vines_icp = -1; +/* VINES IP structs and definitions */ + +enum { + VIP_PROTO_IPC = 1, /* Interprocess Communications Protocol (IPC) */ + VIP_PROTO_SPP = 2, /* Sequenced Packet Protcol (SPP) */ + VIP_PROTO_ARP = 4, /* Address Resolution Protocol (ARP) */ + VIP_PROTO_RTP = 5, /* Routing Update Protocol (RTP) / SRTP (Sequenced RTP) */ + VIP_PROTO_ICP = 6 /* Internet Control Protocol (ICP) */ +}; + +typedef struct _e_vip { + guint16 vip_chksum; + guint16 vip_pktlen; + guint8 vip_tctl; /* Transport Control */ + guint8 vip_proto; + guint8 vip_dst[VINES_ADDR_LEN]; + guint8 vip_src[VINES_ADDR_LEN]; +} e_vip; + +/* VINES SPP and IPC structs and definitions */ + +enum { + PKTTYPE_DGRAM = 0, /* Unreliable datagram */ + PKTTYPE_DATA = 1, /* User Data */ + PKTTYPE_ERR = 2, /* Error */ + PKTTYPE_DISC = 3, /* Diconnect Request */ + PKTTYPE_PROBE = 4, /* Probe (retransmit) */ + PKTTYPE_ACK = 5 /* Acknowledgement */ +}; + +typedef struct _e_vspp { + guint16 vspp_sport; + guint16 vspp_dport; + guint8 vspp_pkttype; + guint8 vspp_control; + guint16 vspp_lclid; /* Local Connection ID */ + guint16 vspp_rmtid; /* Remote Connection ID */ + guint16 vspp_seqno; /* Sequence Number */ + guint16 vspp_ack; /* Acknowledgement Number */ + guint16 vspp_win; +} e_vspp; + +typedef struct _e_vipc { + guint16 vipc_sport; + guint16 vipc_dport; + guint8 vipc_pkttype; + guint8 vipc_control; + guint16 vipc_lclid; /* Local Connection ID */ + guint16 vipc_rmtid; /* Remote Connection ID */ + guint16 vipc_seqno; /* Sequence Number */ + guint16 vipc_ack; /* Acknowledgement Number */ + guint16 vipc_err_len; +} e_vipc; + void capture_vines(packet_counts *ld) { @@ -314,7 +413,7 @@ dissect_vines_ip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) SET_ADDRESS(&pinfo->net_src, AT_VINES, VINES_ADDR_LEN, src_addr); SET_ADDRESS(&pinfo->src, AT_VINES, VINES_ADDR_LEN, src_addr); dst_addr = tvb_get_ptr(tvb, offset+6, VINES_ADDR_LEN); - SET_ADDRESS(&pinfo->net_dst, AT_VINES, VINES_ADDR_LEN,dst_addr); + SET_ADDRESS(&pinfo->net_dst, AT_VINES, VINES_ADDR_LEN, dst_addr); SET_ADDRESS(&pinfo->dst, AT_VINES, VINES_ADDR_LEN, dst_addr); /* helpers to transport control */ @@ -376,11 +475,11 @@ dissect_vines_ip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) proto_tree_add_text(vip_tree, tvb, offset + 6, VINES_ADDR_LEN, "Destination: %s", - vines_addr_to_str(dst_addr)); + tvb_vines_addr_to_str(tvb, offset + 6)); proto_tree_add_text(vip_tree, tvb, offset + 12, VINES_ADDR_LEN, "Source: %s", - vines_addr_to_str(src_addr)); + tvb_vines_addr_to_str(tvb, offset + 12)); } offset += 18; @@ -896,13 +995,13 @@ dissect_vines_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) if (check_col(pinfo->cinfo, COL_INFO)) { col_append_fstr(pinfo->cinfo, COL_INFO, ", Address = %s", - vines_addr_to_str(tvb_get_ptr(tvb, 2, VINES_ADDR_LEN))); + tvb_vines_addr_to_str(tvb, 2)); } if (tree) { proto_tree_add_text(vines_arp_tree, tvb, 2, VINES_ADDR_LEN, "Address: %s", - vines_addr_to_str(tvb_get_ptr(tvb, 2, VINES_ADDR_LEN))); + tvb_vines_addr_to_str(tvb, 2)); } } if (tree) { @@ -938,13 +1037,13 @@ dissect_vines_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) if (check_col(pinfo->cinfo, COL_INFO)) { col_append_fstr(pinfo->cinfo, COL_INFO, ", Address = %s", - vines_addr_to_str(tvb_get_ptr(tvb, 2, VINES_ADDR_LEN))); + tvb_vines_addr_to_str(tvb, 2)); } if (tree) { proto_tree_add_text(vines_arp_tree, tvb, 2, VINES_ADDR_LEN, "Address: %s", - vines_addr_to_str(tvb_get_ptr(tvb, 2, VINES_ADDR_LEN))); + tvb_vines_addr_to_str(tvb, 2)); } } } @@ -1315,7 +1414,7 @@ dissect_vines_rtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) proto_tree_add_text(vines_rtp_tree, tvb, offset, VINES_ADDR_LEN, "Destination: %s", - vines_addr_to_str(tvb_get_ptr(tvb, offset, VINES_ADDR_LEN))); + tvb_vines_addr_to_str(tvb, offset)); offset += VINES_ADDR_LEN; metric = tvb_get_ntohs(tvb, offset); proto_tree_add_text(vines_rtp_tree, tvb, @@ -1343,7 +1442,7 @@ dissect_vines_rtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) proto_tree_add_text(vines_rtp_tree, tvb, offset, VINES_ADDR_LEN, "Preferred Gateway: %s", - vines_addr_to_str(tvb_get_ptr(tvb, offset, VINES_ADDR_LEN))); + tvb_vines_addr_to_str(tvb, offset)); offset += VINES_ADDR_LEN; metric = tvb_get_ntohs(tvb, offset); proto_tree_add_text(vines_rtp_tree, tvb, @@ -1447,7 +1546,7 @@ srtp_show_machine_info(proto_tree *tree, tvbuff_t *tvb, int offset, const char * proto_tree_add_text(tree, tvb, offset, VINES_ADDR_LEN, "%s: %s", tag, - vines_addr_to_str(tvb_get_ptr(tvb, offset, VINES_ADDR_LEN))); + tvb_vines_addr_to_str(tvb, offset)); offset += VINES_ADDR_LEN; metric = tvb_get_ntohs(tvb, offset); proto_tree_add_text(tree, tvb, offset, 2, diff --git a/epan/dissectors/packet-vines.h b/epan/dissectors/packet-vines.h index 2a389d6919..46476f2b85 100644 --- a/epan/dissectors/packet-vines.h +++ b/epan/dissectors/packet-vines.h @@ -25,111 +25,9 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* Information about VINES can be found in - * - * VINES Protocol Definition - * Order Number: DA254-00 - * Banyan Systems incorporated - * February 1990 - * Part Number: 092093-000 - * - * Some information can also be found in - * - * http://www.cisco.com/univercd/cc/td/doc/cisintwk/ito_doc/vines.htm - * - * and at - * - * http://www.synapse.de/ban/HTML/P_VINES/Eng/P_vines.html - * - * The document at - * - * http://www.watersprings.org/pub/id/draft-ietf-rmonmib-rmonprot-v2-00.txt - * - * lists a bunch of values of protocol identifier fields for various - * protocols. It speaks of the Vines Fragmentation Protocol, - * the "Vines Token Ring Protocol" which appears to be the same as the - * "Vines LLC" protocol here, the Vines echo protocol, Vines IP, and - * protocols running atop Vines IP. - * - * The LLC values it describes are: - * - * 0xbc (SAP_VINES2) Vines Token Ring a/k/a Vines LLC - * - * It doesn't mention 0xba (SAP_VINES1). - * - * The Vines Token Ring/Vines LLC protocol identifier values it - * describes are: - * - * 0xba Vines IP - * 0xbb Vines Echo - * - * The Ethernet type values it describes are: - * - * 0x0bad (ETHERTYPE_VINES) Vines IP - * 0x0baf Vines Echo - */ - #ifndef __PACKETVINES_H__ #define __PACKETVINES_H__ -#include - -#define VINES_ADDR_LEN 6 - -/* VINES IP structs and definitions */ - -enum { - VIP_PROTO_IPC = 1, /* Interprocess Communications Protocol (IPC) */ - VIP_PROTO_SPP = 2, /* Sequenced Packet Protcol (SPP) */ - VIP_PROTO_ARP = 4, /* Address Resolution Protocol (ARP) */ - VIP_PROTO_RTP = 5, /* Routing Update Protocol (RTP) / SRTP (Sequenced RTP) */ - VIP_PROTO_ICP = 6 /* Internet Control Protocol (ICP) */ -}; - -typedef struct _e_vip { - guint16 vip_chksum; - guint16 vip_pktlen; - guint8 vip_tctl; /* Transport Control */ - guint8 vip_proto; - guint8 vip_dst[VINES_ADDR_LEN]; - guint8 vip_src[VINES_ADDR_LEN]; -} e_vip; - -/* VINES SPP and IPC structs and definitions */ - -enum { - PKTTYPE_DGRAM = 0, /* Unreliable datagram */ - PKTTYPE_DATA = 1, /* User Data */ - PKTTYPE_ERR = 2, /* Error */ - PKTTYPE_DISC = 3, /* Diconnect Request */ - PKTTYPE_PROBE = 4, /* Probe (retransmit) */ - PKTTYPE_ACK = 5 /* Acknowledgement */ -}; - -typedef struct _e_vspp { - guint16 vspp_sport; - guint16 vspp_dport; - guint8 vspp_pkttype; - guint8 vspp_control; - guint16 vspp_lclid; /* Local Connection ID */ - guint16 vspp_rmtid; /* Remote Connection ID */ - guint16 vspp_seqno; /* Sequence Number */ - guint16 vspp_ack; /* Acknowledgement Number */ - guint16 vspp_win; -} e_vspp; - -typedef struct _e_vipc { - guint16 vipc_sport; - guint16 vipc_dport; - guint8 vipc_pkttype; - guint8 vipc_control; - guint16 vipc_lclid; /* Local Connection ID */ - guint16 vipc_rmtid; /* Remote Connection ID */ - guint16 vipc_seqno; /* Sequence Number */ - guint16 vipc_ack; /* Acknowledgement Number */ - guint16 vipc_err_len; -} e_vipc; - void capture_vines(packet_counts *); #endif /* packet-vines.h */ diff --git a/epan/to_str.h b/epan/to_str.h index 3fc560cf1f..5526f8b5d0 100644 --- a/epan/to_str.h +++ b/epan/to_str.h @@ -34,6 +34,7 @@ #define GUID_STR_LEN 37 #define MAX_IP_STR_LEN 16 #define MAX_ADDR_STR_LEN 256 +#define VINES_ADDR_LEN 6 /* * These are utility functions which convert various types to strings, @@ -63,7 +64,7 @@ extern void ip6_to_str_buf(const struct e_in6_addr *, gchar *); extern gchar* ipx_addr_to_str(const guint32, const guint8 *); extern gchar* ipxnet_to_string(const guint8 *ad); extern gchar* ipxnet_to_str_punct(const guint32 ad, const char punct); -extern gchar* vines_addr_to_str(const guint8 *addrp); +extern gchar* tvb_vines_addr_to_str(tvbuff_t *tvb, const gint offset); extern gchar* time_secs_to_str(const gint32 time_val); extern gchar* time_secs_to_str_unsigned(const guint32); extern gchar* time_msecs_to_str(gint32 time_val);