diff options
author | pkelsey <pkelsey@FreeBSD.org> | 2015-07-08 16:19:32 +0000 |
---|---|---|
committer | pkelsey <pkelsey@FreeBSD.org> | 2015-07-08 16:19:32 +0000 |
commit | 7e965066ede451d7a551dd68d6c59acf32e4846e (patch) | |
tree | f0c2243cc0a2a59f3eb1354ba3987d4cbcb788bc /contrib/tcpdump/print-sip.c | |
parent | 732211dc794db586649eabfc1d517b8a477440f5 (diff) | |
parent | c2704d8ede887d9fe69a9a11fe0755b09ec6895d (diff) | |
download | FreeBSD-src-7e965066ede451d7a551dd68d6c59acf32e4846e.zip FreeBSD-src-7e965066ede451d7a551dd68d6c59acf32e4846e.tar.gz |
MFV r285191: tcpdump 4.7.4.
Also, the changes made in r272451 and r272653 that were lost in the
merge of 4.6.2 (r276788) have been restored.
PR: 199568
Differential Revision: https://reviews.freebsd.org/D3007
Reviewed by: brooks, hiren
Approved by: jmallett (mentor)
MFC after: 1 month
Diffstat (limited to 'contrib/tcpdump/print-sip.c')
-rw-r--r-- | contrib/tcpdump/print-sip.c | 53 |
1 files changed, 25 insertions, 28 deletions
diff --git a/contrib/tcpdump/print-sip.c b/contrib/tcpdump/print-sip.c index 540cbf4..d0fd349 100644 --- a/contrib/tcpdump/print-sip.c +++ b/contrib/tcpdump/print-sip.c @@ -11,6 +11,8 @@ * FOR A PARTICULAR PURPOSE. * * Original code by Hannes Gredler (hannes@juniper.net) + * Turned into common "text protocol" code, which this uses, by + * Guy Harris. */ #define NETDISSECT_REWORKED @@ -23,34 +25,29 @@ #include "interface.h" #include "extract.h" +static const char *sipcmds[] = { + "ACK", + "BYE", + "CANCEL", + "DO", + "INFO", + "INVITE", + "MESSAGE", + "NOTIFY", + "OPTIONS", + "PRACK", + "QAUTH", + "REFER", + "REGISTER", + "SPRACK", + "SUBSCRIBE", + "UPDATE", + "PUBLISH", + NULL +}; + void -sip_print(netdissect_options *ndo, - register const u_char *pptr, register u_int len) +sip_print(netdissect_options *ndo, const u_char *pptr, u_int len) { - u_int idx; - - ND_PRINT((ndo, "SIP, length: %u%s", len, ndo->ndo_vflag ? "\n\t" : "")); - - /* in non-verbose mode just lets print the protocol and length */ - if (ndo->ndo_vflag < 1) - return; - - for (idx = 0; idx < len; idx++) { - ND_TCHECK2(*(pptr+idx), 2); - if (EXTRACT_16BITS(pptr+idx) != 0x0d0a) { /* linefeed ? */ - safeputchar(ndo, *(pptr + idx)); - } else { - ND_PRINT((ndo, "\n\t")); - idx+=1; - } - } - - /* do we want to see an additionally hexdump ? */ - if (ndo->ndo_vflag > 1) - print_unknown_data(ndo, pptr, "\n\t", len); - - return; - -trunc: - ND_PRINT((ndo, "[|sip]")); + txtproto_print(ndo, pptr, len, "sip", sipcmds, RESP_CODE_SECOND_TOKEN); } |