diff options
author | Vyacheslav Trushkin <dogonthesun@gmail.com> | 2013-11-22 16:28:37 +0700 |
---|---|---|
committer | Denis Ovsienko <infrastation@yandex.ru> | 2014-04-21 18:53:40 +0400 |
commit | a97e56cb1124eec90a989e7aa75973343c656f1e (patch) | |
tree | 8e1f10d230371ff609fcaf4fc582f72b799b8865 | |
parent | 9f033017d58aca8f44c6c6e05e77daea35c67e0a (diff) | |
download | tcpdump-a97e56cb1124eec90a989e7aa75973343c656f1e.tar.gz |
M3UA support added (GH #342)
SCTP's payload protocol identifiers added.
M3UA tests provided by wireshark
http://wiki.wireshark.org/SampleCaptures#Sigtran_Protocol_Family
But RFC4666 tells that parameter 0x0002 aren't carried by M3UA, so
it's OK that tcpdump doesn't know about this identifier.
Conflicts:
Makefile.in
interface.h
print-sctp.c
sctpConstants.h
-----------------------------------------------------------------------
The change to sctp_print() does three things:
* makes detection of ForCES consider PPID, not just port number
* verifies chunk length of all SCTP_DATA chunks, not just of ForCES
* adds PPID-specific dispatching with a particular case of M3UA
-- Denis
-rw-r--r-- | Makefile.in | 3 | ||||
-rw-r--r-- | interface.h | 1 | ||||
-rw-r--r-- | m3ua.h | 90 | ||||
-rw-r--r-- | print-m3ua.c | 175 | ||||
-rw-r--r-- | print-sctp.c | 132 | ||||
-rw-r--r-- | tests/TESTLIST | 4 | ||||
-rw-r--r-- | tests/isup.out | 6 | ||||
-rw-r--r-- | tests/isup.pcap | bin | 0 -> 704 bytes | |||
-rw-r--r-- | tests/isupvv.out | 30 |
9 files changed, 404 insertions, 37 deletions
diff --git a/Makefile.in b/Makefile.in index 17d023b0..bac05dd1 100644 --- a/Makefile.in +++ b/Makefile.in @@ -148,6 +148,7 @@ LIBNETDISSECT_SRC=\ print-lspping.c \ print-lwapp.c \ print-lwres.c \ + print-m3ua.c \ print-mobile.c \ print-mpcp.c \ print-mpls.c \ @@ -359,7 +360,7 @@ $(PROG): $(OBJ) @V_PCAPDEP@ $(LIBNETDISSECT): $(LIBNETDISSECT_OBJ) @rm -f $@ - $(AR) cr $@ $(LIBNETDISSECT_OBJ) + $(AR) cr $@ $(LIBNETDISSECT_OBJ) $(RANLIB) $@ datalinks.o: $(srcdir)/missing/datalinks.c diff --git a/interface.h b/interface.h index 37053496..d46f2bfe 100644 --- a/interface.h +++ b/interface.h @@ -151,6 +151,7 @@ extern u_int16_t create_osi_cksum(const u_int8_t *, int, int); extern char *q922_string(const u_char *); extern char *smb_errstr(int, int); extern const char *nt_errstr(u_int32_t); +extern void print_m3ua(const u_char *, u_int); #ifdef INET6 extern int mask62plen(const u_char *); @@ -0,0 +1,90 @@ +#ifndef __m3ua_h__ +#define __m3ua_h__ + +/* RFC 4666 */ + +struct m3ua_common_header { + u_int8_t v; + u_int8_t reserved; + u_int8_t msg_class; + u_int8_t msg_type; + u_int32_t len; +}; + +struct m3ua_param_header { + u_int16_t tag; + u_int16_t len; +}; + +/* message classes */ +#define M3UA_MSGC_MGMT 0 +#define M3UA_MSGC_TRANSFER 1 +#define M3UA_MSGC_SSNM 2 +#define M3UA_MSGC_ASPSM 3 +#define M3UA_MSGC_ASPTM 4 +/* reserved values */ +#define M3UA_MSGC_RKM 9 + +/* management messages */ +#define M3UA_MGMT_ERROR 0 +#define M3UA_MGMT_NOTIFY 1 + +/* transfer messages */ +#define M3UA_TRANSFER_DATA 1 + +/* SS7 Signaling Network Management messages */ +#define M3UA_SSNM_DUNA 1 +#define M3UA_SSNM_DAVA 2 +#define M3UA_SSNM_DAUD 3 +#define M3UA_SSNM_SCON 4 +#define M3UA_SSNM_DUPU 5 +#define M3UA_SSNM_DRST 6 + +/* ASP State Maintenance messages */ +#define M3UA_ASP_UP 1 +#define M3UA_ASP_DN 2 +#define M3UA_ASP_BEAT 3 +#define M3UA_ASP_UP_ACK 4 +#define M3UA_ASP_DN_ACK 5 +#define M3UA_ASP_BEAT_ACK 6 + +/* ASP Traffic Maintenance messages */ +#define M3UA_ASP_AC 1 +#define M3UA_ASP_IA 2 +#define M3UA_ASP_AC_ACK 3 +#define M3UA_ASP_IA_ACK 4 + +/* Routing Key Management messages */ +#define M3UA_RKM_REQ 1 +#define M3UA_RKM_RSP 2 +#define M3UA_RKM_DEREQ 3 +#define M3UA_RKM_DERSP 4 + +/* M3UA Parameters */ +#define M3UA_PARAM_INFO 0x0004 +#define M3UA_PARAM_ROUTING_CTX 0x0006 +#define M3UA_PARAM_DIAGNOSTIC 0x0007 +#define M3UA_PARAM_HB_DATA 0x0009 +#define M3UA_PARAM_TRAFFIC_MODE_TYPE 0x000b +#define M3UA_PARAM_ERROR_CODE 0x000c +#define M3UA_PARAM_STATUS 0x000d +#define M3UA_PARAM_ASP_ID 0x0011 +#define M3UA_PARAM_AFFECTED_POINT_CODE 0x0012 +#define M3UA_PARAM_CORR_ID 0x0013 + +#define M3UA_PARAM_NETWORK_APPEARANCE 0x0200 +#define M3UA_PARAM_USER 0x0204 +#define M3UA_PARAM_CONGESTION_INDICATION 0x0205 +#define M3UA_PARAM_CONCERNED_DST 0x0206 +#define M3UA_PARAM_ROUTING_KEY 0x0207 +#define M3UA_PARAM_REG_RESULT 0x0208 +#define M3UA_PARAM_DEREG_RESULT 0x0209 +#define M3UA_PARAM_LOCAL_ROUTING_KEY_ID 0x020a +#define M3UA_PARAM_DST_POINT_CODE 0x020b +#define M3UA_PARAM_SI 0x020c +#define M3UA_PARAM_ORIGIN_POINT_CODE_LIST 0x020e +#define M3UA_PARAM_PROTO_DATA 0x0210 +#define M3UA_PARAM_REG_STATUS 0x0212 +#define M3UA_PARAM_DEREG_STATUS 0x0213 + +#endif // __m3ua_h__ diff --git a/print-m3ua.c b/print-m3ua.c new file mode 100644 index 00000000..e38e8769 --- /dev/null +++ b/print-m3ua.c @@ -0,0 +1,175 @@ +/* Copyright (c) 2013, The TCPDUMP project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <tcpdump-stdinc.h> +#include "m3ua.h" + +#include "interface.h" +#include "addrtoname.h" +#include "extract.h" + +static const struct tok MgmtMessages[] = { + { M3UA_MGMT_ERROR, "Error" }, + { M3UA_MGMT_NOTIFY, "Notify" }, + { 0, NULL } +}; + +static const struct tok TransferMessages[] = { + { M3UA_TRANSFER_DATA, "Data" }, + { 0, NULL } +}; + +static const struct tok SS7Messages[] = { + { M3UA_SSNM_DUNA, "Destination Unavailable" }, + { M3UA_SSNM_DAVA, "Destination Available" }, + { M3UA_SSNM_DAUD, "Destination State Audit" }, + { M3UA_SSNM_SCON, "Signalling Congestion" }, + { M3UA_SSNM_DUPU, "Destination User Part Unavailable" }, + { M3UA_SSNM_DRST, "Destination Restricted" }, + { 0, NULL } +}; + +static const struct tok ASPStateMessages[] = { + { M3UA_ASP_UP, "Up" }, + { M3UA_ASP_DN, "Down" }, + { M3UA_ASP_BEAT, "Heartbeat" }, + { M3UA_ASP_UP_ACK, "Up Acknowledgement" }, + { M3UA_ASP_DN_ACK, "Down Acknowledgement" }, + { M3UA_ASP_BEAT_ACK, "Heartbeat Acknowledgement" }, + { 0, NULL } +}; + +static const struct tok ASPTrafficMessages[] = { + { M3UA_ASP_AC, "Active" }, + { M3UA_ASP_IA, "Inactive" }, + { M3UA_ASP_AC_ACK, "Active Acknowledgement" }, + { M3UA_ASP_IA_ACK, "Inactive Acknowledgement" }, + { 0, NULL } +}; + +static const struct tok RoutingKeyMgmtMessages[] = { + { M3UA_RKM_REQ, "Registration Request" }, + { M3UA_RKM_RSP, "Registration Response" }, + { M3UA_RKM_DEREQ, "Deregistration Request" }, + { M3UA_RKM_DERSP, "Deregistration Response" }, + { 0, NULL } +}; + +static const struct tok ParamName[] = { + { M3UA_PARAM_INFO, "INFO String" }, + { M3UA_PARAM_ROUTING_CTX, "Routing Context" }, + { M3UA_PARAM_DIAGNOSTIC, "Diagnostic Info" }, + { M3UA_PARAM_HB_DATA, "Heartbeat Data" }, + { M3UA_PARAM_TRAFFIC_MODE_TYPE, "Traffic Mode Type" }, + { M3UA_PARAM_ERROR_CODE, "Error Code" }, + { M3UA_PARAM_STATUS, "Status" }, + { M3UA_PARAM_ASP_ID, "ASP Identifier" }, + { M3UA_PARAM_AFFECTED_POINT_CODE, "Affected Point Code" }, + { M3UA_PARAM_CORR_ID, "Correlation ID" }, + { M3UA_PARAM_NETWORK_APPEARANCE, "Network Appearance" }, + { M3UA_PARAM_USER, "User/Cause" }, + { M3UA_PARAM_CONGESTION_INDICATION, "Congestion Indications" }, + { M3UA_PARAM_CONCERNED_DST, "Concerned Destination" }, + { M3UA_PARAM_ROUTING_KEY, "Routing Key" }, + { M3UA_PARAM_REG_RESULT, "Registration Result" }, + { M3UA_PARAM_DEREG_RESULT, "Deregistration Result" }, + { M3UA_PARAM_LOCAL_ROUTING_KEY_ID, "Local Routing Key Identifier" }, + { M3UA_PARAM_DST_POINT_CODE, "Destination Point Code" }, + { M3UA_PARAM_SI, "Service Indicators" }, + { M3UA_PARAM_ORIGIN_POINT_CODE_LIST, "Originating Point Code List" }, + { M3UA_PARAM_PROTO_DATA, "Protocol Data" }, + { M3UA_PARAM_REG_STATUS, "Registration Status" }, + { M3UA_PARAM_DEREG_STATUS, "Deregistration Status" }, + { 0, NULL } +}; + +static void print_tag_value(const u_char *buf, u_int16_t tag, u_int16_t size) +{ + switch (tag) { + case M3UA_PARAM_NETWORK_APPEARANCE: + case M3UA_PARAM_ROUTING_CTX: + case M3UA_PARAM_CORR_ID: + printf("0x%08x", EXTRACT_32BITS(buf)); + break; + /* ... */ + default: + printf("(length %u)", size); + } +} + +static void print_m3ua_tags(const u_char *buf, u_int size) +{ + const u_char *p = buf; + while (p < buf + size) { + const struct m3ua_param_header *hdr = (const struct m3ua_param_header *) p; + printf("\n\t\t\t%s: ", tok2str(ParamName, "Unknown Parameter (0x%04x)", EXTRACT_16BITS(&hdr->tag))); + print_tag_value(p + sizeof(struct m3ua_param_header), EXTRACT_16BITS(&hdr->tag), EXTRACT_16BITS(&hdr->len)); + p += EXTRACT_16BITS(&hdr->len); + int align = (int) (p - buf) % 4; + p += (align) ? 4 - align : 0; + } +} + +void print_m3ua(const u_char *buf, u_int size) +{ + const struct m3ua_common_header *hdr = (const struct m3ua_common_header *) buf; + + printf("\n\t\t"); + switch (hdr->msg_class) { + case M3UA_MSGC_MGMT: + printf("Management %s Message", tok2str(MgmtMessages, "Unknown (0x%02x)", hdr->msg_type)); + break; + case M3UA_MSGC_TRANSFER: + printf("Transfer %s Message", tok2str(TransferMessages, "Unknown (0x%02x)", hdr->msg_type)); + break; + case M3UA_MSGC_SSNM: + printf("SS7 %s Message", tok2str(SS7Messages, "Unknown (0x%02x)", hdr->msg_type)); + break; + case M3UA_MSGC_ASPSM: + printf("ASP %s Message", tok2str(ASPStateMessages, "Unknown (0x%02x)", hdr->msg_type)); + break; + case M3UA_MSGC_ASPTM: + printf("ASP %s Message", tok2str(ASPTrafficMessages, "Unknown (0x%02x)", hdr->msg_type)); + break; + case M3UA_MSGC_RKM: + printf("Routing Key Managment %s Message", + tok2str(RoutingKeyMgmtMessages, "Unknown (0x%02x)", hdr->msg_type)); + break; + default: + printf("Unknown message class %i", hdr->msg_class); + break; + }; + + fflush(stdout); + + if (size != EXTRACT_32BITS(&hdr->len)) + printf("\n\t\t\t@@@@@@ Corrupted length %u of message @@@@@@", EXTRACT_32BITS(&hdr->len)); + else + print_m3ua_tags(buf + sizeof(struct m3ua_common_header), EXTRACT_32BITS(&hdr->len) - sizeof(struct m3ua_common_header)); +} + diff --git a/print-sctp.c b/print-sctp.c index 03de6a37..4e079b0b 100644 --- a/print-sctp.c +++ b/print-sctp.c @@ -417,6 +417,68 @@ static const struct tok ForCES_channels[] = { { 0, NULL } }; +/* data chunk's payload protocol identifiers */ + +#define SCTP_PPID_IUA 1 +#define SCTP_PPID_M2UA 2 +#define SCTP_PPID_M3UA 3 +#define SCTP_PPID_SUA 4 +#define SCTP_PPID_M2PA 5 +#define SCTP_PPID_V5UA 6 +#define SCTP_PPID_H248 7 +#define SCTP_PPID_BICC 8 +#define SCTP_PPID_TALI 9 +#define SCTP_PPID_DUA 10 +#define SCTP_PPID_ASAP 11 +#define SCTP_PPID_ENRP 12 +#define SCTP_PPID_H323 13 +#define SCTP_PPID_QIPC 14 +#define SCTP_PPID_SIMCO 15 +#define SCTP_PPID_DDPSC 16 +#define SCTP_PPID_DDPSSC 17 +#define SCTP_PPID_S1AP 18 +#define SCTP_PPID_RUA 19 +#define SCTP_PPID_HNBAP 20 +#define SCTP_PPID_FORCES_HP 21 +#define SCTP_PPID_FORCES_MP 22 +#define SCTP_PPID_FORCES_LP 23 +#define SCTP_PPID_SBC_AP 24 +#define SCTP_PPID_NBAP 25 +/* 26 */ +#define SCTP_PPID_X2AP 27 + +static const struct tok PayloadProto_idents[] = { + { SCTP_PPID_IUA, "ISDN Q.921" }, + { SCTP_PPID_M2UA, "M2UA" }, + { SCTP_PPID_M3UA, "M3UA" }, + { SCTP_PPID_SUA, "SUA" }, + { SCTP_PPID_M2PA, "M2PA" }, + { SCTP_PPID_V5UA, "V5.2" }, + { SCTP_PPID_H248, "H.248" }, + { SCTP_PPID_BICC, "BICC" }, + { SCTP_PPID_TALI, "TALI" }, + { SCTP_PPID_DUA, "DUA" }, + { SCTP_PPID_ASAP, "ASAP" }, + { SCTP_PPID_ENRP, "ENRP" }, + { SCTP_PPID_H323, "H.323" }, + { SCTP_PPID_QIPC, "Q.IPC" }, + { SCTP_PPID_SIMCO, "SIMCO" }, + { SCTP_PPID_DDPSC, "DDPSC" }, + { SCTP_PPID_DDPSSC, "DDPSSC" }, + { SCTP_PPID_S1AP, "S1AP" }, + { SCTP_PPID_RUA, "RUA" }, + { SCTP_PPID_HNBAP, "HNBAP" }, + { SCTP_PPID_FORCES_HP, "ForCES HP" }, + { SCTP_PPID_FORCES_MP, "ForCES MP" }, + { SCTP_PPID_FORCES_LP, "ForCES LP" }, + { SCTP_PPID_SBC_AP, "SBc-AP" }, + { SCTP_PPID_NBAP, "NBAP" }, + /* 26 */ + { SCTP_PPID_X2AP, "X2AP" }, + { 0, NULL } +}; + + static inline int isForCES_port(u_short Port) { if (Port == CHAN_HP) @@ -569,49 +631,47 @@ void sctp_print(netdissect_options *ndo, dataHdrPtr=(const struct sctpDataPart*)(chunkDescPtr+1); + u_int32_t ppid = EXTRACT_32BITS(&dataHdrPtr->payloadtype); ND_PRINT((ndo, "[TSN: %u] ", EXTRACT_32BITS(&dataHdrPtr->TSN))); ND_PRINT((ndo, "[SID: %u] ", EXTRACT_16BITS(&dataHdrPtr->streamId))); ND_PRINT((ndo, "[SSEQ %u] ", EXTRACT_16BITS(&dataHdrPtr->sequence))); - ND_PRINT((ndo, "[PPID 0x%x] ", EXTRACT_32BITS(&dataHdrPtr->payloadtype))); - if (isforces) { - const u_char *payloadPtr; - u_int chunksize = sizeof(struct sctpDataPart)+ - sizeof(struct sctpChunkDesc); - payloadPtr = (const u_char *) (dataHdrPtr + 1); - if (EXTRACT_16BITS(&chunkDescPtr->chunkLength) < - sizeof(struct sctpDataPart)+ - sizeof(struct sctpChunkDesc)+1) { - /* Less than 1 byte of chunk payload */ - ND_PRINT((ndo, "bogus ForCES chunk length %u]", - EXTRACT_16BITS(&chunkDescPtr->chunkLength))); - return; - } + ND_PRINT((ndo, "[PPID %s] ", + tok2str(PayloadProto_idents, "0x%x", ppid))); - forces_print(ndo, payloadPtr, EXTRACT_16BITS(&chunkDescPtr->chunkLength)- chunksize); - } else if (ndo->ndo_vflag >= 2) { /* if verbose output is specified */ + if (!isforces) { + isforces = (ppid == SCTP_PPID_FORCES_HP) || + (ppid == SCTP_PPID_FORCES_MP) || + (ppid == SCTP_PPID_FORCES_LP); + } + + const u_char *payloadPtr = (const u_char *) (dataHdrPtr + 1); + if (EXTRACT_16BITS(&chunkDescPtr->chunkLength) < + sizeof(struct sctpDataPart) + sizeof(struct sctpChunkDesc) + 1) { + ND_PRINT((ndo, "bogus chunk length %u]", EXTRACT_16BITS(&chunkDescPtr->chunkLength))); + return; + } + + u_int payload_size = EXTRACT_16BITS(&chunkDescPtr->chunkLength) - + (sizeof(struct sctpDataPart) + sizeof(struct sctpChunkDesc)); + + if (isforces) { + forces_print(ndo, payloadPtr, payload_size); + } else if (ndo->ndo_vflag >= 2) { /* if verbose output is specified */ /* at the command line */ - const u_char *payloadPtr; - - ND_PRINT((ndo, "[Payload")); - - if (!ndo->ndo_suppress_default_print) { - payloadPtr = (const u_char *) (++dataHdrPtr); - ND_PRINT((ndo, ":")); - if (EXTRACT_16BITS(&chunkDescPtr->chunkLength) < - sizeof(struct sctpDataPart)+ - sizeof(struct sctpChunkDesc)+1) { - /* Less than 1 byte of chunk payload */ - ND_PRINT((ndo, "bogus chunk length %u]", - EXTRACT_16BITS(&chunkDescPtr->chunkLength))); - return; + switch (ppid) { + case SCTP_PPID_M3UA : + print_m3ua(payloadPtr, payload_size); + break; + default: + ND_PRINT((ndo, "[Payload")); + if (!ndo->ndo_suppress_default_print) { + ND_PRINT((ndo, ":")); + ND_DEFAULTPRINT(payloadPtr, payload_size); } - ND_DEFAULTPRINT(payloadPtr, - EXTRACT_16BITS(&chunkDescPtr->chunkLength) - - (sizeof(struct sctpDataPart)+ - sizeof(struct sctpChunkDesc))); - } else ND_PRINT((ndo, "]")); - } + break; + } + } break; } case SCTP_INITIATION : diff --git a/tests/TESTLIST b/tests/TESTLIST index 01d6d383..6726fa52 100644 --- a/tests/TESTLIST +++ b/tests/TESTLIST @@ -175,6 +175,10 @@ of10_7050q-v of10_7050q.pcap of10_7050q-v.out -t -v # GeoNetworking and CALM FAST tests geonet-calm-fast geonet_and_calm_fast.pcap geonet_and_calm_fast.out -t -vv -n +# M3UA tests +m3ua isup.pcap isup.out -t +m3ua-vv isup.pcap isupvv.out -t -vv + # NFLOG test case nflog-e nflog.pcap nflog-e.out -t -e diff --git a/tests/isup.out b/tests/isup.out new file mode 100644 index 00000000..fb4d9af6 --- /dev/null +++ b/tests/isup.out @@ -0,0 +1,6 @@ +IP 10.28.6.42.2905 > 10.28.6.44.2905: sctp (1) [DATA] (B)(E) [TSN: 1822994892] [SID: 6] [SSEQ 42] [PPID M3UA] +IP 10.28.6.44.2905 > 10.28.6.42.2905: sctp (1) [DATA] (B)(E) [TSN: 4307] [SID: 0] [SSEQ 643] [PPID M3UA] +IP 10.28.6.44.2905 > 10.28.6.42.2905: sctp (1) [DATA] (B)(E) [TSN: 4308] [SID: 0] [SSEQ 644] [PPID M3UA] +IP 10.28.6.44.2905 > 10.28.6.42.2905: sctp (1) [DATA] (B)(E) [TSN: 4309] [SID: 0] [SSEQ 645] [PPID M3UA] +IP 10.28.6.42.2905 > 10.28.6.44.2905: sctp (1) [DATA] (B)(E) [TSN: 1822994893] [SID: 6] [SSEQ 43] [PPID M3UA] +IP 10.28.6.44.2905 > 10.28.6.42.2905: sctp (1) [DATA] (B)(E) [TSN: 4310] [SID: 0] [SSEQ 646] [PPID M3UA] diff --git a/tests/isup.pcap b/tests/isup.pcap Binary files differnew file mode 100644 index 00000000..39f16b9a --- /dev/null +++ b/tests/isup.pcap diff --git a/tests/isupvv.out b/tests/isupvv.out new file mode 100644 index 00000000..8e8a0086 --- /dev/null +++ b/tests/isupvv.out @@ -0,0 +1,30 @@ +IP (tos 0x0, ttl 64, id 38618, offset 0, flags [none], proto SCTP (132), length 132) + 10.28.6.42.2905 > 10.28.6.44.2905: sctp + 1) [DATA] (B)(E) [TSN: 1822994892] [SID: 6] [SSEQ 42] [PPID M3UA] + Transfer Data Message + Unknown Parameter (0x0002): (length 73) +IP (tos 0x0, ttl 255, id 50089, offset 0, flags [DF], proto SCTP (132), length 76) + 10.28.6.44.2905 > 10.28.6.42.2905: sctp + 1) [DATA] (B)(E) [TSN: 4307] [SID: 0] [SSEQ 643] [PPID M3UA] + Transfer Data Message + Unknown Parameter (0x0002): (length 18) +IP (tos 0x0, ttl 255, id 50090, offset 0, flags [DF], proto SCTP (132), length 72) + 10.28.6.44.2905 > 10.28.6.42.2905: sctp + 1) [DATA] (B)(E) [TSN: 4308] [SID: 0] [SSEQ 644] [PPID M3UA] + Transfer Data Message + Unknown Parameter (0x0002): (length 15) +IP (tos 0x0, ttl 255, id 50091, offset 0, flags [DF], proto SCTP (132), length 72) + 10.28.6.44.2905 > 10.28.6.42.2905: sctp + 1) [DATA] (B)(E) [TSN: 4309] [SID: 0] [SSEQ 645] [PPID M3UA] + Transfer Data Message + Unknown Parameter (0x0002): (length 13) +IP (tos 0x0, ttl 64, id 38651, offset 0, flags [none], proto SCTP (132), length 76) + 10.28.6.42.2905 > 10.28.6.44.2905: sctp + 1) [DATA] (B)(E) [TSN: 1822994893] [SID: 6] [SSEQ 43] [PPID M3UA] + Transfer Data Message + Unknown Parameter (0x0002): (length 17) +IP (tos 0x0, ttl 255, id 50109, offset 0, flags [DF], proto SCTP (132), length 72) + 10.28.6.44.2905 > 10.28.6.42.2905: sctp + 1) [DATA] (B)(E) [TSN: 4310] [SID: 0] [SSEQ 646] [PPID M3UA] + Transfer Data Message + Unknown Parameter (0x0002): (length 13) |