]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-isakmp.c
s/sprintf/snprintf/.
[tcpdump] / print-isakmp.c
index f82ae0ab3f527a6563e7b49061378bf47680a954..5f4abc00aa1e5dda5b2c0b4abdccf26cf73de1ec 100644 (file)
 
 #ifndef lint
 static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-isakmp.c,v 1.5 1999-10-30 05:37:35 itojun Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/tcpdump/print-isakmp.c,v 1.10 2000-01-17 06:24:25 itojun Exp $ (LBL)";
+#endif
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
 #endif
 
 #include <string.h>
@@ -206,11 +210,15 @@ cookie_record(cookie_t *in, const u_char *bp2)
                        sizeof(cookiecache[ninitiator].raddr));
 
                sin = (struct sockaddr_in *)&cookiecache[ninitiator].iaddr;
+#ifdef HAVE_SOCKADDR_SA_LEN
                sin->sin_len = sizeof(struct sockaddr_in);
+#endif
                sin->sin_family = AF_INET;
                memcpy(&sin->sin_addr, &ip->ip_src, sizeof(ip->ip_src));
                sin = (struct sockaddr_in *)&cookiecache[ninitiator].raddr;
+#ifdef HAVE_SOCKADDR_SA_LEN
                sin->sin_len = sizeof(struct sockaddr_in);
+#endif
                sin->sin_family = AF_INET;
                memcpy(&sin->sin_addr, &ip->ip_dst, sizeof(ip->ip_dst));
                break;
@@ -223,11 +231,15 @@ cookie_record(cookie_t *in, const u_char *bp2)
 
                ip6 = (struct ip6_hdr *)bp2;
                sin6 = (struct sockaddr_in6 *)&cookiecache[ninitiator].iaddr;
+#ifdef HAVE_SOCKADDR_SA_LEN
                sin6->sin6_len = sizeof(struct sockaddr_in6);
+#endif
                sin6->sin6_family = AF_INET6;
                memcpy(&sin6->sin6_addr, &ip6->ip6_src, sizeof(ip6->ip6_src));
                sin6 = (struct sockaddr_in6 *)&cookiecache[ninitiator].raddr;
+#ifdef HAVE_SOCKADDR_SA_LEN
                sin6->sin6_len = sizeof(struct sockaddr_in6);
+#endif
                sin6->sin6_family = AF_INET6;
                memcpy(&sin6->sin6_addr, &ip6->ip6_dst, sizeof(ip6->ip6_dst));
                break;
@@ -259,7 +271,9 @@ cookie_sidecheck(int i, const u_char *bp2, int initiator)
        switch (ip->ip_v) {
        case 4:
                sin = (struct sockaddr_in *)&ss;
+#ifdef HAVE_SOCKADDR_SA_LEN
                sin->sin_len = sizeof(struct sockaddr_in);
+#endif
                sin->sin_family = AF_INET;
                memcpy(&sin->sin_addr, &ip->ip_src, sizeof(ip->ip_src));
                break;
@@ -267,7 +281,9 @@ cookie_sidecheck(int i, const u_char *bp2, int initiator)
        case 6:
                ip6 = (struct ip6_hdr *)bp2;
                sin6 = (struct sockaddr_in6 *)&ss;
+#ifdef HAVE_SOCKADDR_SA_LEN
                sin6->sin6_len = sizeof(struct sockaddr_in6);
+#endif
                sin6->sin6_family = AF_INET6;
                memcpy(&sin6->sin6_addr, &ip6->ip6_src, sizeof(ip6->ip6_src));
                break;
@@ -985,6 +1001,7 @@ isakmp_print(const u_char *bp, u_int length, const u_char *bp2)
        u_char np;
        int i;
        int phase;
+       int major, minor;
 
        base = (struct isakmp *)bp;
        ep = (u_char *)snapend;
@@ -995,8 +1012,13 @@ isakmp_print(const u_char *bp, u_int length, const u_char *bp2)
        }
 
        printf("isakmp");
-       if (vflag)
-               printf(" %d.%d", base->v_maj, base->v_min);
+       if (vflag) {
+               major = (base->vers & ISAKMP_VERS_MAJOR)
+                               >> ISAKMP_VERS_MAJOR_SHIFT;
+               minor = (base->vers & ISAKMP_VERS_MINOR)
+                               >> ISAKMP_VERS_MINOR_SHIFT;
+               printf(" %d.%d", major, minor);
+       }
 
        if (vflag) {
                printf(" msgid ");