diff --git a/print-sip.c b/print-sip.c
index c5bc853..d0fd349 100644
--- a/print-sip.c
+++ b/print-sip.c
@@ -11,54 +11,43 @@
  * FOR A PARTICULAR PURPOSE.
  *
  * Original code by Hannes Gredler (hannes@juniper.net)
+ * 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
-
+#define NETDISSECT_REWORKED
 #ifdef HAVE_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"
+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]");
+	txtproto_print(ndo, pptr, len, "sip", sipcmds, RESP_CODE_SECOND_TOKEN);
 }
