diff options
Diffstat (limited to 'epan/dissectors/packet-xtp.c')
-rw-r--r-- | epan/dissectors/packet-xtp.c | 130 |
1 files changed, 129 insertions, 1 deletions
diff --git a/epan/dissectors/packet-xtp.c b/epan/dissectors/packet-xtp.c index 399c4d137d..8cf34d84fc 100644 --- a/epan/dissectors/packet-xtp.c +++ b/epan/dissectors/packet-xtp.c @@ -35,8 +35,136 @@ #include <epan/ipproto.h> #include <epan/in_cksum.h> -#include "packet-xtp.h" +#define XTP_VERSION_4 0x001 + +/* XTP type of Service */ +#define XTP_TOS_UNSPEC 0 +#define XTP_TOS_UNACKED_DGRAM 1 +#define XTP_TOS_ACKED_DGRAM 2 +#define XTP_TOS_TRANS 3 +#define XTP_TOS_UNICAST_STREAM 4 +#define XTP_TOS_UNACKED_MULTICAST_STREAM 5 +#define XTP_TOS_MULTICAST_STREAM 6 + +/* Address Format */ +#define XTP_ADDR_NULL 0 +#define XTP_ADDR_IP 1 +#define XTP_ADDR_ISO 2 +#define XTP_ADDR_XEROX 3 +#define XTP_ADDR_IPX 4 +#define XTP_ADDR_LOCAL 5 +#define XTP_ADDR_IP6 6 + +/* packet type */ +#define XTP_DATA_PKT 0 +#define XTP_CNTL_PKT 1 +#define XTP_FIRST_PKT 2 +#define XTP_ECNTL_PKT 3 +#define XTP_TCNTL_PKT 5 +#define XTP_JOIN_PKT 6 +#define XTP_JCNTL_PKT 7 +#define XTP_DIAG_PKT 8 + +/* cmd options mask */ +#define XTP_CMD_OPTIONS_NOCHECK 0x400000 +#define XTP_CMD_OPTIONS_EDGE 0x200000 +#define XTP_CMD_OPTIONS_NOERR 0x100000 +#define XTP_CMD_OPTIONS_MULTI 0x080000 +#define XTP_CMD_OPTIONS_RES 0x040000 +#define XTP_CMD_OPTIONS_SORT 0x020000 +#define XTP_CMD_OPTIONS_NOFLOW 0x010000 +#define XTP_CMD_OPTIONS_FASTNAK 0x008000 +#define XTP_CMD_OPTIONS_SREQ 0x004000 +#define XTP_CMD_OPTIONS_DREQ 0x002000 +#define XTP_CMD_OPTIONS_RCLOSE 0x001000 +#define XTP_CMD_OPTIONS_WCLOSE 0x000800 +#define XTP_CMD_OPTIONS_EOM 0x000400 +#define XTP_CMD_OPTIONS_END 0x000200 +#define XTP_CMD_OPTIONS_BTAG 0x000100 + +#define XTP_KEY_RTN ((guint64)1<<63) + +/** packet structures definition **/ +struct xtp_cntl { + guint64 rseq; + guint64 alloc; + guint32 echo; +}; +#define XTP_CNTL_PKT_LEN 20 + +struct xtp_ecntl { + guint64 rseq; + guint64 alloc; + guint32 echo; + guint32 nspan; +}; +#define MIN_XTP_ECNTL_PKT_LEN 24 + +struct xtp_traffic_cntl { + guint64 rseq; + guint64 alloc; + guint32 echo; + guint32 rsvd; + guint64 xkey; +}; +#define XTP_TRAFFIC_CNTL_LEN 32 + +/* tformat = 0x00 */ +struct xtp_traffic_spec0 { + guint16 tlen; + guint8 service; + guint8 tformat; + guint32 none; +}; +#define XTP_TRAFFIC_SPEC0_LEN 8 + +/* tformat = 0x01 */ +struct xtp_traffic_spec1 { + guint16 tlen; + guint8 service; + guint8 tformat; + guint32 maxdata; + guint32 inrate; + guint32 inburst; + guint32 outrate; + guint32 outburst; +}; +#define XTP_TRAFFIC_SPEC1_LEN 24 + +struct xtp_ip_addr_seg { + guint16 alen; + guint8 adomain; + guint8 aformat; + guint32 dsthost; + guint32 srchost; + guint16 dstport; + guint16 srcport; +}; +#define XTP_IP_ADDR_SEG_LEN 16 +#define XTP_NULL_ADDR_SEG_LEN 8 + +struct xtp_diag { + guint32 code; + guint32 val; + gchar *msg; +}; +#define XTP_DIAG_PKT_HEADER_LEN 8 + +struct xtphdr { + guint64 key; + guint32 cmd; + guint32 cmd_options; /* 24 bits */ + guint8 cmd_ptype; + guint8 cmd_ptype_ver; /* 3 bits */ + guint8 cmd_ptype_pformat; /* 5 bits */ + guint32 dlen; + guint16 check; + guint16 sort; + guint32 sync; + guint64 seq; +}; +#define XTP_HEADER_LEN 32 static const value_string version_vals[] = { |