]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-hsrp.c
add support for AS-PIC cookies
[tcpdump] / print-hsrp.c
index 0d3e4287ff238c66493efd0ccdcb2357e3ff3f16..21ec05404e112fc3bcb82a02fe7d24bc3f4dce48 100644 (file)
 /* Cisco Hot Standby Router Protocol (HSRP). */
 
 #ifndef lint
-static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-hsrp.c,v 1.4 2002-06-11 17:08:47 itojun Exp $";
+static const char rcsid[] _U_ =
+    "@(#) $Header: /tcpdump/master/tcpdump/print-hsrp.c,v 1.9.2.1 2005-05-06 07:57:17 guy Exp $";
 #endif
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
 
-#include <sys/types.h>
+#include <tcpdump-stdinc.h>
 
 #include <stdio.h>
-#include <netinet/in.h>
 
 #include "interface.h"
 #include "addrtoname.h"
@@ -86,20 +85,20 @@ static struct tok states[] = {
 
 /* HSRP protocol header. */
 struct hsrp {
-       u_char          hsrp_version;
-       u_char          hsrp_op_code;
-       u_char          hsrp_state;
-       u_char          hsrp_hellotime;
-       u_char          hsrp_holdtime;
-       u_char          hsrp_priority;
-       u_char          hsrp_group;
-       u_char          hsrp_reserved;
-       u_char          hsrp_authdata[HSRP_AUTH_SIZE];
+       u_int8_t        hsrp_version;
+       u_int8_t        hsrp_op_code;
+       u_int8_t        hsrp_state;
+       u_int8_t        hsrp_hellotime;
+       u_int8_t        hsrp_holdtime;
+       u_int8_t        hsrp_priority;
+       u_int8_t        hsrp_group;
+       u_int8_t        hsrp_reserved;
+       u_int8_t        hsrp_authdata[HSRP_AUTH_SIZE];
        struct in_addr  hsrp_virtaddr;
 };
 
 void
-hsrp_print(register const u_char *bp, register u_int len)
+hsrp_print(register const u_int8_t *bp, register u_int len)
 {
        struct hsrp *hp = (struct hsrp *) bp;
 
@@ -128,7 +127,11 @@ hsrp_print(register const u_char *bp, register u_int len)
                relts_print(hp->hsrp_holdtime);
                printf(" priority=%d", hp->hsrp_priority);
                printf(" auth=\"");
-               fn_printn(hp->hsrp_authdata, sizeof(hp->hsrp_authdata), NULL);
+               if (fn_printn(hp->hsrp_authdata, sizeof(hp->hsrp_authdata),
+                   snapend)) {
+                       printf("\"");
+                       goto trunc;
+               }
                printf("\"");
        }
        return;