]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-sip.c
Lose some more unnecessary #include lines. [skip ci]
[tcpdump] / print-sip.c
index c5bc8534daaa784443d8fb45fb430d1173717831..bfbfddfd4749237d4156f1e12daa05d10e83e97f 100644 (file)
  * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  * FOR A PARTICULAR PURPOSE.
  *
- * Original code by Hannes Gredler ([email protected])
+ * Original code by Hannes Gredler ([email protected])
+ * Turned into common "text protocol" code, which this uses, by
+ * Guy Harris.
  */
 
-#ifndef lint
-static const char rcsid[] _U_ =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-sip.c,v 1.1 2004-07-27 17:04:20 hannes Exp $";
-#endif
+/* \summary: Session Initiation Protocol (SIP) printer */
 
 #ifdef HAVE_CONFIG_H
-#include "config.h"
+#include <config.h>
 #endif
 
-#include <tcpdump-stdinc.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "interface.h"
-#include "extract.h"
-
-#include "udp.h"
+#include "netdissect-stdinc.h"
+
+#include "netdissect.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(register const u_char *pptr, register u_int len)
+sip_print(netdissect_options *ndo, const u_char *pptr, u_int len)
 {
-    u_int idx;
-
-    printf("SIP, length: %u%s", len, vflag ? "\n\t" : "");
-
-    /* in non-verbose mode just lets print the protocol and length */
-    if (vflag < 1)
-        return;
-
-    for (idx = 0; idx < len; idx++) {
-        TCHECK2(*(pptr+idx), 2);
-        if (EXTRACT_16BITS(pptr+idx) != 0x0d0a) { /* linefeed ? */
-            safeputchar(*(pptr+idx));
-        } else {
-            printf("\n\t");
-            idx+=1;
-        }
-    }
-
-    /* do we want to see an additionally hexdump ? */
-    if (vflag> 1)
-        print_unknown_data(pptr,"\n\t",len);
-
-    return;
-
-trunc:
-    printf("[|sip]");
+       ndo->ndo_protocol = "sip";
+       txtproto_print(ndo, pptr, len, sipcmds, RESP_CODE_SECOND_TOKEN);
 }