diff options
author | Xin LI <delphij@FreeBSD.org> | 2015-01-07 19:55:18 +0000 |
---|---|---|
committer | Xin LI <delphij@FreeBSD.org> | 2015-01-07 19:55:18 +0000 |
commit | 3c602fabf9b894ff79f08a80cbb7ad3b1eb84e62 (patch) | |
tree | e268839e08c106e178b33bd461d8d0a9c6fb5ad9 /contrib/tcpdump/print-eap.c | |
parent | 61b3223976cc010f61cd50773dd8b9e06d123d9a (diff) | |
parent | e91eac244982a8728f370000c353b16e18174ec9 (diff) | |
download | src-3c602fabf9b894ff79f08a80cbb7ad3b1eb84e62.tar.gz src-3c602fabf9b894ff79f08a80cbb7ad3b1eb84e62.zip |
Notes
Diffstat (limited to 'contrib/tcpdump/print-eap.c')
-rw-r--r-- | contrib/tcpdump/print-eap.c | 89 |
1 files changed, 39 insertions, 50 deletions
diff --git a/contrib/tcpdump/print-eap.c b/contrib/tcpdump/print-eap.c index 9fb333ad86b1..0e2c2d38a1d8 100644 --- a/contrib/tcpdump/print-eap.c +++ b/contrib/tcpdump/print-eap.c @@ -21,25 +21,15 @@ * */ -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-eap.c,v 1.5 2007-10-04 16:41:33 hannes Exp $"; -#endif - +#define NETDISSECT_REWORKED #ifdef HAVE_CONFIG_H #include "config.h" #endif #include <tcpdump-stdinc.h> -#include <stdio.h> -#include <string.h> - -#include "netdissect.h" #include "interface.h" -#include "addrtoname.h" #include "extract.h" -#include "ether.h" #define EAP_FRAME_TYPE_PACKET 0 #define EAP_FRAME_TYPE_START 1 @@ -113,7 +103,7 @@ static const struct tok eap_type_values[] = { { EAP_TYPE_EXPANDED_TYPES, "Expanded types" }, { EAP_TYPE_EXPERIMENTAL, "Experimental" }, { 0, NULL} -}; +}; #define EAP_TLS_EXTRACT_BIT_L(x) (((x)&0x80)>>7) @@ -159,7 +149,7 @@ static const struct tok eap_aka_subtype_values[] = { * Print EAP requests / responses */ void -eap_print(netdissect_options *ndo _U_, +eap_print(netdissect_options *ndo, register const u_char *cp, u_int length _U_) { @@ -167,27 +157,27 @@ eap_print(netdissect_options *ndo _U_, const u_char *tptr; u_int tlen, type, subtype; int count=0, len; - + tptr = cp; tlen = length; eap = (const struct eap_frame_t *)cp; - TCHECK(*eap); + ND_TCHECK(*eap); /* in non-verbose mode just lets print the basic info */ - if (vflag < 1) { - printf("%s (%u) v%u, len %u", + if (ndo->ndo_vflag < 1) { + ND_PRINT((ndo, "%s (%u) v%u, len %u", tok2str(eap_frame_type_values, "unknown", eap->type), eap->type, eap->version, - EXTRACT_16BITS(eap->length)); + EXTRACT_16BITS(eap->length))); return; } - - printf("%s (%u) v%u, len %u", + + ND_PRINT((ndo, "%s (%u) v%u, len %u", tok2str(eap_frame_type_values, "unknown", eap->type), eap->type, eap->version, - EXTRACT_16BITS(eap->length)); + EXTRACT_16BITS(eap->length))); tptr += sizeof(const struct eap_frame_t); tlen -= sizeof(const struct eap_frame_t); @@ -196,33 +186,32 @@ eap_print(netdissect_options *ndo _U_, case EAP_FRAME_TYPE_PACKET: type = *(tptr); len = EXTRACT_16BITS(tptr+2); - printf(", %s (%u), id %u, len %u", + ND_PRINT((ndo, ", %s (%u), id %u, len %u", tok2str(eap_code_values, "unknown", type), type, *(tptr+1), - len); + len)); - if (!TTEST2(*tptr, len)) - goto trunc; + ND_TCHECK2(*tptr, len); if (type <= 2) { /* For EAP_REQUEST and EAP_RESPONSE only */ subtype = *(tptr+4); - printf("\n\t\t Type %s (%u)", + ND_PRINT((ndo, "\n\t\t Type %s (%u)", tok2str(eap_type_values, "unknown", *(tptr+4)), - *(tptr+4)); + *(tptr + 4))); - switch (subtype) { + switch (subtype) { case EAP_TYPE_IDENTITY: if (len - 5 > 0) { - printf(", Identity: "); - safeputs((const char *)tptr+5, len-5); + ND_PRINT((ndo, ", Identity: ")); + safeputs(ndo, tptr + 5, len - 5); } break; case EAP_TYPE_NOTIFICATION: if (len - 5 > 0) { - printf(", Notification: "); - safeputs((const char *)tptr+5, len-5); + ND_PRINT((ndo, ", Notification: ")); + safeputs(ndo, tptr + 5, len - 5); } break; @@ -234,36 +223,36 @@ eap_print(netdissect_options *ndo _U_, * the desired authentication * type one octet per type */ - while (count < len) { - printf(" %s (%u),", + while (count < len) { + ND_PRINT((ndo, " %s (%u),", tok2str(eap_type_values, "unknown", *(tptr+count)), - *(tptr+count)); + *(tptr + count))); count++; } break; case EAP_TYPE_TTLS: - printf(" TTLSv%u", - EAP_TTLS_VERSION(*(tptr+5))); /* fall through */ + ND_PRINT((ndo, " TTLSv%u", + EAP_TTLS_VERSION(*(tptr + 5)))); /* fall through */ case EAP_TYPE_TLS: - printf(" flags [%s] 0x%02x,", + ND_PRINT((ndo, " flags [%s] 0x%02x,", bittok2str(eap_tls_flags_values, "none", *(tptr+5)), - *(tptr+5)); + *(tptr + 5))); if (EAP_TLS_EXTRACT_BIT_L(*(tptr+5))) { - printf(" len %u", EXTRACT_32BITS(tptr+6)); + ND_PRINT((ndo, " len %u", EXTRACT_32BITS(tptr + 6))); } break; case EAP_TYPE_FAST: - printf(" FASTv%u", - EAP_TTLS_VERSION(*(tptr+5))); - printf(" flags [%s] 0x%02x,", + ND_PRINT((ndo, " FASTv%u", + EAP_TTLS_VERSION(*(tptr + 5)))); + ND_PRINT((ndo, " flags [%s] 0x%02x,", bittok2str(eap_tls_flags_values, "none", *(tptr+5)), - *(tptr+5)); + *(tptr + 5))); if (EAP_TLS_EXTRACT_BIT_L(*(tptr+5))) { - printf(" len %u", EXTRACT_32BITS(tptr+6)); + ND_PRINT((ndo, " len %u", EXTRACT_32BITS(tptr + 6))); } /* FIXME - TLV attributes follow */ @@ -271,14 +260,14 @@ eap_print(netdissect_options *ndo _U_, case EAP_TYPE_AKA: case EAP_TYPE_SIM: - printf(" subtype [%s] 0x%02x,", + ND_PRINT((ndo, " subtype [%s] 0x%02x,", tok2str(eap_aka_subtype_values, "unknown", *(tptr+5)), - *(tptr+5)); + *(tptr + 5))); /* FIXME - TLV attributes follow */ break; - case EAP_TYPE_MD5_CHALLENGE: + case EAP_TYPE_MD5_CHALLENGE: case EAP_TYPE_OTP: case EAP_TYPE_GTC: case EAP_TYPE_EXPANDED_TYPES: @@ -287,7 +276,7 @@ eap_print(netdissect_options *ndo _U_, break; } } - break; + break; case EAP_FRAME_TYPE_LOGOFF: case EAP_FRAME_TYPE_ENCAP_ASF_ALERT: @@ -297,7 +286,7 @@ eap_print(netdissect_options *ndo _U_, return; trunc: - printf("\n\t[|EAP]"); + ND_PRINT((ndo, "\n\t[|EAP]")); } /* |