Upgrade to tcpdump 4.7.4.

Bug: http://b/24902618
Change-Id: I7c3605015d90453b0a8c339b1774e285796f8775
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);
 }