]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-isakmp.c
On Solaris, for 64-bit builds, use the 64-bit pcap-config.
[tcpdump] / print-isakmp.c
index 18102ebce9fea081b1740c68e9c62d80d1e13416..52bf1fda5216d1f50e67120a1c015c4f90b43c06 100644 (file)
@@ -47,6 +47,8 @@
 
 #include <string.h>
 
+#include "netdissect-ctype.h"
+
 #include "netdissect.h"
 #include "addrtoname.h"
 #include "extract.h"
@@ -635,8 +637,8 @@ ikev1_print(netdissect_options *ndo,
 #define MAXINITIATORS  20
 static int ninitiator = 0;
 union inaddr_u {
-       struct in_addr in4;
-       struct in6_addr in6;
+       nd_ipv4 in4;
+       nd_ipv6 in6;
 };
 static struct {
        cookie_t initiator;
@@ -912,11 +914,9 @@ ikev1_attrmap_print(netdissect_options *ndo,
        u_int totlen;
        uint32_t t, v;
 
-       ND_TCHECK_1(p);
        if (GET_U_1(p) & 0x80)
                totlen = 4;
        else {
-               ND_TCHECK_2(p + 2);
                totlen = 4 + GET_BE_U_2(p + 2);
        }
        if (ep2 < p + totlen) {
@@ -924,7 +924,6 @@ ikev1_attrmap_print(netdissect_options *ndo,
                return ep2 + 1;
        }
 
-       ND_TCHECK_2(p);
        ND_PRINT("(");
        t = GET_BE_U_2(p) & 0x7fff;
        if (map && t < nmap && map[t].type)
@@ -933,7 +932,6 @@ ikev1_attrmap_print(netdissect_options *ndo,
                ND_PRINT("type=#%u ", t);
        if (GET_U_1(p) & 0x80) {
                ND_PRINT("value=");
-               ND_TCHECK_2(p + 2);
                v = GET_BE_U_2(p + 2);
                if (map && t < nmap && v < map[t].nvalue && map[t].value[v])
                        ND_PRINT("%s", map[t].value[v]);
@@ -963,11 +961,9 @@ ikev1_attr_print(netdissect_options *ndo, const u_char *p, const u_char *ep2)
        u_int totlen;
        uint32_t t;
 
-       ND_TCHECK_1(p);
        if (GET_U_1(p) & 0x80)
                totlen = 4;
        else {
-               ND_TCHECK_2(p + 2);
                totlen = 4 + GET_BE_U_2(p + 2);
        }
        if (ep2 < p + totlen) {
@@ -975,7 +971,6 @@ ikev1_attr_print(netdissect_options *ndo, const u_char *p, const u_char *ep2)
                return ep2 + 1;
        }
 
-       ND_TCHECK_2(p);
        ND_PRINT("(");
        t = GET_BE_U_2(p) & 0x7fff;
        ND_PRINT("type=#%u ", t);
@@ -1040,7 +1035,6 @@ ikev1_sa_print(netdissect_options *ndo, u_char tpay _U_,
 
        np = (const u_char *)ext + sizeof(struct ikev1_pl_sa);
        if (sit != 0x01) {
-               ND_TCHECK_4(ext + 1);
                ident = GET_BE_U_4(ext + 1);
                ND_PRINT(" ident=%u", ident);
                np += sizeof(ident);
@@ -1390,7 +1384,7 @@ ikev1_id_print(netdissect_options *ndo, u_char tpay _U_,
                        if (len < 4)
                                ND_PRINT(" len=%u [bad: < 4]", len);
                        else
-                               ND_PRINT(" len=%u %s", len, ipaddr_string(ndo, data));
+                               ND_PRINT(" len=%u %s", len, GET_IPADDR_STRING(data));
                        len = 0;
                        break;
                case IPSECDOI_ID_FQDN:
@@ -1411,7 +1405,7 @@ ikev1_id_print(netdissect_options *ndo, u_char tpay _U_,
                        else {
                                mask = data + sizeof(nd_ipv4);
                                ND_PRINT(" len=%u %s/%u.%u.%u.%u", len,
-                                         ipaddr_string(ndo, data),
+                                         GET_IPADDR_STRING(data),
                                          GET_U_1(mask), GET_U_1(mask + 1),
                                          GET_U_1(mask + 2),
                                          GET_U_1(mask + 3));
@@ -1423,7 +1417,7 @@ ikev1_id_print(netdissect_options *ndo, u_char tpay _U_,
                        if (len < 16)
                                ND_PRINT(" len=%u [bad: < 16]", len);
                        else
-                               ND_PRINT(" len=%u %s", len, ip6addr_string(ndo, data));
+                               ND_PRINT(" len=%u %s", len, GET_IP6ADDR_STRING(data));
                        len = 0;
                        break;
                case IPSECDOI_ID_IPV6_ADDR_SUBNET:
@@ -1435,7 +1429,7 @@ ikev1_id_print(netdissect_options *ndo, u_char tpay _U_,
                                mask = (const u_char *)(data + sizeof(nd_ipv6));
                                /*XXX*/
                                ND_PRINT(" len=%u %s/0x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", len,
-                                         ip6addr_string(ndo, data),
+                                         GET_IP6ADDR_STRING(data),
                                          GET_U_1(mask), GET_U_1(mask + 1),
                                          GET_U_1(mask + 2),
                                          GET_U_1(mask + 3),
@@ -1460,8 +1454,8 @@ ikev1_id_print(netdissect_options *ndo, u_char tpay _U_,
                                ND_PRINT(" len=%u [bad: < 8]", len);
                        else {
                                ND_PRINT(" len=%u %s-%s", len,
-                                         ipaddr_string(ndo, data),
-                                         ipaddr_string(ndo, data + sizeof(nd_ipv4)));
+                                         GET_IPADDR_STRING(data),
+                                         GET_IPADDR_STRING(data + sizeof(nd_ipv4)));
                        }
                        len = 0;
                        break;
@@ -1470,8 +1464,8 @@ ikev1_id_print(netdissect_options *ndo, u_char tpay _U_,
                                ND_PRINT(" len=%u [bad: < 32]", len);
                        else {
                                ND_PRINT(" len=%u %s-%s", len,
-                                         ip6addr_string(ndo, data),
-                                         ip6addr_string(ndo, data + sizeof(nd_ipv6)));
+                                         GET_IP6ADDR_STRING(data),
+                                         GET_IP6ADDR_STRING(data + sizeof(nd_ipv6)));
                        }
                        len = 0;
                        break;
@@ -2267,7 +2261,7 @@ ikev2_ID_print(netdissect_options *ndo, u_char tpay,
        if(dumpascii) {
                ND_TCHECK_LEN(typedata, idtype_len);
                for(i=0; i<idtype_len; i++) {
-                       if(ND_ISPRINT(GET_U_1(typedata + i))) {
+                       if(ND_ASCII_ISPRINT(GET_U_1(typedata + i))) {
                                ND_PRINT("%c", GET_U_1(typedata + i));
                        } else {
                                ND_PRINT(".");
@@ -2610,7 +2604,7 @@ ikev2_vid_print(netdissect_options *ndo, u_char tpay,
        len = item_len - 4;
        ND_TCHECK_LEN(vid, len);
        for(i=0; i<len; i++) {
-               if(ND_ISPRINT(GET_U_1(vid + i)))
+               if(ND_ASCII_ISPRINT(GET_U_1(vid + i)))
                        ND_PRINT("%c", GET_U_1(vid + i));
                else ND_PRINT(".");
        }
@@ -2687,7 +2681,7 @@ ikev2_e_print(netdissect_options *ndo,
        np = GET_U_1(ext->np);
 
        /* try to decrypt it! */
-       if(esp_print_decrypt_buffer_by_ikev2(ndo,
+       if(esp_decrypt_buffer_by_ikev2_print(ndo,
                                             GET_U_1(base->flags) & ISAKMP_FLAG_I,
                                             base->i_ck, base->r_ck,
                                             dat, dat+dlen)) {
@@ -2699,7 +2693,7 @@ ikev2_e_print(netdissect_options *ndo,
                                ndo->ndo_snapend, phase, doi, proto, depth+1);
 
                /*
-                * esp_print_decrypt_buffer_by_ikev2 pushed information
+                * esp_decrypt_buffer_by_ikev2_print pushed information
                 * on the buffer stack; we're done with the buffer, so
                 * pop it (which frees the buffer)
                 */
@@ -2820,7 +2814,7 @@ static char *
 numstr(u_int x)
 {
        static char buf[20];
-       nd_snprintf(buf, sizeof(buf), "#%u", x);
+       snprintf(buf, sizeof(buf), "#%u", x);
        return buf;
 }
 
@@ -3057,7 +3051,7 @@ isakmp_print(netdissect_options *ndo,
        /* initialize SAs */
        if (ndo->ndo_sa_list_head == NULL) {
                if (ndo->ndo_espsecret)
-                       esp_print_decodesecret(ndo);
+                       esp_decodesecret_print(ndo);
        }
 #endif
 
@@ -3109,7 +3103,6 @@ isakmp_rfc3948_print(netdissect_options *ndo,
                     const u_char *bp2, int ver, int fragmented, u_int ttl_hl)
 {
        ndo->ndo_protocol = "isakmp_rfc3948";
-       ND_TCHECK_1(bp);
        if(length == 1 && GET_U_1(bp)==0xff) {
                ND_PRINT("isakmp-nat-keep-alive");
                return;
@@ -3118,7 +3111,6 @@ isakmp_rfc3948_print(netdissect_options *ndo,
        if(length < 4) {
                goto trunc;
        }
-       ND_TCHECK_1(bp + 3);
 
        /*
         * see if this is an IKE packet
@@ -3146,5 +3138,4 @@ isakmp_rfc3948_print(netdissect_options *ndo,
 
 trunc:
        nd_print_trunc(ndo);
-       return;
 }