-babel_print(const u_char *cp, u_int length) {
- printf("babel");
+babel_print(netdissect_options *ndo,
+ const u_char *cp, u_int length) {
+ ND_PRINT((ndo, "babel"));
* The former would mean a lack of any claims about the interference, and the
* latter would state that interference is definitely absent. */
static void
* The former would mean a lack of any claims about the interference, and the
* latter would state that interference is definitely absent. */
static void
-subtlvs_print(const u_char *cp, const u_char *ep, const uint8_t tlv_type) {
+subtlvs_print(netdissect_options *ndo,
+ const u_char *cp, const u_char *ep, const uint8_t tlv_type) {
- printf("%s%s", sep, tok2str(diversity_str, "%u", *cp++));
+ ND_PRINT((ndo, "%s%s", sep, tok2str(diversity_str, "%u", *cp++)));
-babel_print_v2(const u_char *cp, u_int length) {
+babel_print_v2(netdissect_options *ndo,
+ const u_char *cp, u_int length) {
u_int i;
u_short bodylen;
u_char v4_prefix[16] =
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xFF, 0xFF, 0, 0, 0, 0 };
u_char v6_prefix[16] = {0};
u_int i;
u_short bodylen;
u_char v4_prefix[16] =
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xFF, 0xFF, 0, 0, 0, 0 };
u_char v6_prefix[16] = {0};
if(len < 6) goto corrupt;
nonce = EXTRACT_16BITS(message + 4);
interval = EXTRACT_16BITS(message + 6);
if(len < 6) goto corrupt;
nonce = EXTRACT_16BITS(message + 4);
interval = EXTRACT_16BITS(message + 6);
- printf("%04x %s", nonce, format_interval(interval));
+ ND_PRINT((ndo, "%04x %s", nonce, format_interval(interval)));
if(len < 6) goto corrupt;
seqno = EXTRACT_16BITS(message + 4);
interval = EXTRACT_16BITS(message + 6);
if(len < 6) goto corrupt;
seqno = EXTRACT_16BITS(message + 4);
interval = EXTRACT_16BITS(message + 6);
- printf("seqno %u interval %s", seqno, format_interval(interval));
+ ND_PRINT((ndo, "seqno %u interval %s", seqno, format_interval(interval)));
if(len < 6) goto corrupt;
txcost = EXTRACT_16BITS(message + 4);
interval = EXTRACT_16BITS(message + 6);
rc = network_address(message[2], message + 8, len - 6, address);
if(len < 6) goto corrupt;
txcost = EXTRACT_16BITS(message + 4);
interval = EXTRACT_16BITS(message + 6);
rc = network_address(message[2], message + 8, len - 6, address);
- if(rc < 0) { printf("%s", tstr); break; }
- printf("%s txcost %u interval %s",
- format_address(address), txcost, format_interval(interval));
+ if(rc < 0) { ND_PRINT((ndo, "%s", tstr)); break; }
+ ND_PRINT((ndo, "%s txcost %u interval %s",
+ format_address(address), txcost, format_interval(interval)));
if(len < 2) goto corrupt;
rc = network_address(message[2], message + 4, len - 2, nh);
if(rc < 0) goto corrupt;
if(len < 2) goto corrupt;
rc = network_address(message[2], message + 4, len - 2, nh);
if(rc < 0) goto corrupt;
(message[3] & 0x80) ? "/prefix": "",
(message[3] & 0x40) ? "/id" : "",
(message[3] & 0x80) ? "/prefix": "",
(message[3] & 0x40) ? "/id" : "",
if(len < 10) goto corrupt;
plen = message[4] + (message[2] == 1 ? 96 : 0);
rc = network_prefix(message[2], message[4], message[5],
if(len < 10) goto corrupt;
plen = message[4] + (message[2] == 1 ? 96 : 0);
rc = network_prefix(message[2], message[4], message[5],
interval = EXTRACT_16BITS(message + 6);
seqno = EXTRACT_16BITS(message + 8);
metric = EXTRACT_16BITS(message + 10);
interval = EXTRACT_16BITS(message + 6);
seqno = EXTRACT_16BITS(message + 8);
metric = EXTRACT_16BITS(message + 10);
(message[3] & 0x80) ? "/prefix": "",
(message[3] & 0x40) ? "/id" : "",
(message[3] & 0x3f) ? "/unknown" : "",
format_prefix(prefix, plen),
(message[3] & 0x80) ? "/prefix": "",
(message[3] & 0x40) ? "/id" : "",
(message[3] & 0x3f) ? "/unknown" : "",
format_prefix(prefix, plen),
- subtlvs_print(message + 12 + rc, message + 2 + len, type);
+ subtlvs_print(ndo, message + 12 + rc, message + 2 + len, type);
if(len < 2) goto corrupt;
plen = message[3] + (message[2] == 1 ? 96 : 0);
rc = network_prefix(message[2], message[3], 0,
message + 4, NULL, len - 2, prefix);
if(rc < 0) goto corrupt;
if(len < 2) goto corrupt;
plen = message[3] + (message[2] == 1 ? 96 : 0);
rc = network_prefix(message[2], message[3], 0,
message + 4, NULL, len - 2, prefix);
if(rc < 0) goto corrupt;
- printf("for %s",
- message[2] == 0 ? "any" : format_prefix(prefix, plen));
+ ND_PRINT((ndo, "for %s",
+ message[2] == 0 ? "any" : format_prefix(prefix, plen)));
if(len < 14) goto corrupt;
seqno = EXTRACT_16BITS(message + 4);
rc = network_prefix(message[2], message[3], 0,
message + 16, NULL, len - 14, prefix);
if(rc < 0) goto corrupt;
plen = message[3] + (message[2] == 1 ? 96 : 0);
if(len < 14) goto corrupt;
seqno = EXTRACT_16BITS(message + 4);
rc = network_prefix(message[2], message[3], 0,
message + 16, NULL, len - 14, prefix);
if(rc < 0) goto corrupt;
plen = message[3] + (message[2] == 1 ? 96 : 0);
message[6], format_prefix(prefix, plen),
message[6], format_prefix(prefix, plen),
- printf("timestamp %u packetcounter %u", EXTRACT_32BITS (message + 4),
- EXTRACT_16BITS(message + 2));
+ ND_PRINT((ndo, "timestamp %u packetcounter %u", EXTRACT_32BITS (message + 4),
+ EXTRACT_16BITS(message + 2)));
- printf("key-id %u digest-%u ", EXTRACT_16BITS(message + 2), len - 2);
+ ND_PRINT((ndo, "key-id %u digest-%u ", EXTRACT_16BITS(message + 2), len - 2));