diff options
author | Denis Ovsienko <infrastation@yandex.ru> | 2014-03-14 20:05:27 +0400 |
---|---|---|
committer | Denis Ovsienko <infrastation@yandex.ru> | 2014-03-14 20:57:32 +0400 |
commit | 85a2dd977cad3e21b475abbedeb795989207b8db (patch) | |
tree | 12cb0b36c7461922dbf9dafff089acbd1d33369c /print-rpki-rtr.c | |
parent | f9b3c51da6c9454af79601666b5afe705901c126 (diff) | |
download | tcpdump-85a2dd977cad3e21b475abbedeb795989207b8db.tar.gz |
NDOize DCCP, Linux socket and RPKI-Router decoders
Diffstat (limited to 'print-rpki-rtr.c')
-rw-r--r-- | print-rpki-rtr.c | 54 |
1 files changed, 26 insertions, 28 deletions
diff --git a/print-rpki-rtr.c b/print-rpki-rtr.c index 5e4e4539..fa7adac5 100644 --- a/print-rpki-rtr.c +++ b/print-rpki-rtr.c @@ -23,11 +23,9 @@ #include <tcpdump-stdinc.h> -#include <stdio.h> -#include <stdlib.h> #include <string.h> -#include "interface.h" +#include "netdissect.h" #include "extract.h" #include "addrtoname.h" @@ -170,7 +168,7 @@ indent_string (u_int indent) * Print a single PDU. */ static void -rpki_rtr_pdu_print (const u_char *tptr, u_int indent) +rpki_rtr_pdu_print (netdissect_options *ndo, const u_char *tptr, u_int indent) { const rpki_rtr_pdu *pdu_header; u_int pdu_type, pdu_len, hexdump; @@ -181,11 +179,11 @@ rpki_rtr_pdu_print (const u_char *tptr, u_int indent) pdu_len = EXTRACT_32BITS(pdu_header->length); hexdump = FALSE; - printf("%sRPKI-RTRv%u, %s PDU (%u), length: %u", + ND_PRINT((ndo, "%sRPKI-RTRv%u, %s PDU (%u), length: %u", indent_string(8), pdu_header->version, tok2str(rpki_rtr_pdu_values, "Unknown", pdu_type), - pdu_type, pdu_len); + pdu_type, pdu_len)); switch (pdu_type) { @@ -196,10 +194,10 @@ rpki_rtr_pdu_print (const u_char *tptr, u_int indent) case RPKI_RTR_SERIAL_QUERY_PDU: case RPKI_RTR_END_OF_DATA_PDU: msg = (const u_char *)(pdu_header + 1); - printf("%sSession ID: 0x%04x, Serial: %u", + ND_PRINT((ndo, "%sSession ID: 0x%04x, Serial: %u", indent_string(indent+2), EXTRACT_16BITS(pdu_header->u.session_id), - EXTRACT_32BITS(msg)); + EXTRACT_32BITS(msg))); break; /* @@ -214,9 +212,9 @@ rpki_rtr_pdu_print (const u_char *tptr, u_int indent) break; case RPKI_RTR_CACHE_RESPONSE_PDU: - printf("%sSession ID: 0x%04x", + ND_PRINT((ndo, "%sSession ID: 0x%04x", indent_string(indent+2), - EXTRACT_16BITS(pdu_header->u.session_id)); + EXTRACT_16BITS(pdu_header->u.session_id))); break; case RPKI_RTR_IPV4_PREFIX_PDU: @@ -224,11 +222,11 @@ rpki_rtr_pdu_print (const u_char *tptr, u_int indent) rpki_rtr_pdu_ipv4_prefix *pdu; pdu = (rpki_rtr_pdu_ipv4_prefix *)tptr; - printf("%sIPv4 Prefix %s/%u-%u, origin-as %u, flags 0x%02x", + ND_PRINT((ndo, "%sIPv4 Prefix %s/%u-%u, origin-as %u, flags 0x%02x", indent_string(indent+2), ipaddr_string(pdu->prefix), pdu->prefix_length, pdu->max_length, - EXTRACT_32BITS(pdu->as), pdu->flags); + EXTRACT_32BITS(pdu->as), pdu->flags)); } break; @@ -238,11 +236,11 @@ rpki_rtr_pdu_print (const u_char *tptr, u_int indent) rpki_rtr_pdu_ipv6_prefix *pdu; pdu = (rpki_rtr_pdu_ipv6_prefix *)tptr; - printf("%sIPv6 Prefix %s/%u-%u, origin-as %u, flags 0x%02x", + ND_PRINT((ndo, "%sIPv6 Prefix %s/%u-%u, origin-as %u, flags 0x%02x", indent_string(indent+2), ip6addr_string(pdu->prefix), pdu->prefix_length, pdu->max_length, - EXTRACT_32BITS(pdu->as), pdu->flags); + EXTRACT_32BITS(pdu->as), pdu->flags)); } break; #endif @@ -258,10 +256,10 @@ rpki_rtr_pdu_print (const u_char *tptr, u_int indent) tlen = pdu_len; error_code = EXTRACT_16BITS(pdu->pdu_header.u.error_code); - printf("%sError code: %s (%u), Encapsulated PDU length: %u", + ND_PRINT((ndo, "%sError code: %s (%u), Encapsulated PDU length: %u", indent_string(indent+2), tok2str(rpki_rtr_error_codes, "Unknown", error_code), - error_code, encapsulated_pdu_length); + error_code, encapsulated_pdu_length)); tptr += sizeof(*pdu); tlen -= sizeof(*pdu); @@ -271,8 +269,8 @@ rpki_rtr_pdu_print (const u_char *tptr, u_int indent) */ if (encapsulated_pdu_length && (encapsulated_pdu_length <= tlen)) { - printf("%s-----encapsulated PDU-----", indent_string(indent+4)); - rpki_rtr_pdu_print(tptr, indent+2); + ND_PRINT((ndo, "%s-----encapsulated PDU-----", indent_string(indent+4))); + rpki_rtr_pdu_print(ndo, tptr, indent+2); } tptr += encapsulated_pdu_length; @@ -290,7 +288,7 @@ rpki_rtr_pdu_print (const u_char *tptr, u_int indent) if (text_length && (text_length <= tlen )) { memcpy(buf, tptr, MIN(sizeof(buf)-1, text_length)); buf[text_length] = '\0'; - printf("%sError text: %s", indent_string(indent+2), buf); + ND_PRINT((ndo, "%sError text: %s", indent_string(indent+2), buf)); } } break; @@ -304,13 +302,13 @@ rpki_rtr_pdu_print (const u_char *tptr, u_int indent) } /* do we also want to see a hex dump ? */ - if (vflag > 1 || (vflag && hexdump)) { - print_unknown_data(gndo,tptr,"\n\t ", pdu_len); + if (ndo->ndo_vflag > 1 || (ndo->ndo_vflag && hexdump)) { + print_unknown_data(ndo,tptr,"\n\t ", pdu_len); } } void -rpki_rtr_print(register const u_char *pptr, register u_int len) { +rpki_rtr_print(netdissect_options *ndo, register const u_char *pptr, register u_int len) { u_int tlen, pdu_type, pdu_len; const u_char *tptr; @@ -319,14 +317,14 @@ rpki_rtr_print(register const u_char *pptr, register u_int len) { tptr = pptr; tlen = len; - if (!vflag) { - printf(", RPKI-RTR"); + if (!ndo->ndo_vflag) { + ND_PRINT((ndo, ", RPKI-RTR")); return; } while (tlen >= sizeof(rpki_rtr_pdu)) { - TCHECK2(*tptr, sizeof(rpki_rtr_pdu)); + ND_TCHECK2(*tptr, sizeof(rpki_rtr_pdu)); pdu_header = (rpki_rtr_pdu *)tptr; pdu_type = pdu_header->pdu_type; @@ -337,7 +335,7 @@ rpki_rtr_print(register const u_char *pptr, register u_int len) { break; } - TCHECK2(*tptr, pdu_len); + ND_TCHECK2(*tptr, pdu_len); if (tlen < pdu_len) { goto trunc; } @@ -345,14 +343,14 @@ rpki_rtr_print(register const u_char *pptr, register u_int len) { /* * Print the PDU. */ - rpki_rtr_pdu_print(tptr, 8); + rpki_rtr_pdu_print(ndo, tptr, 8); tlen -= pdu_len; tptr += pdu_len; } return; trunc: - printf("\n\t[|RPKI-RTR]"); + ND_PRINT((ndo, "\n\t[|RPKI-RTR]")); } /* |