ND_TCHECK_4(cp);
- if(cp[0] != 42) {
+ if(EXTRACT_U_1(cp) != 42) {
ND_PRINT((ndo, " invalid header"));
return;
} else {
ND_PRINT((ndo, " %d", EXTRACT_U_1(cp + 1)));
}
- switch(cp[1]) {
+ switch(EXTRACT_U_1(cp + 1)) {
case 2:
babel_print_v2(ndo, cp, length);
break;
{
static char buf[25];
snprintf(buf, 25, "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
- id[0], id[1], id[2], id[3], id[4], id[5], id[6], id[7]);
+ EXTRACT_U_1(id), EXTRACT_U_1(id + 1), EXTRACT_U_1(id + 2),
+ EXTRACT_U_1(id + 3), EXTRACT_U_1(id + 4), EXTRACT_U_1(id + 5),
+ EXTRACT_U_1(id + 6), EXTRACT_U_1(id + 7));
buf[24] = '\0';
return buf;
}
message = cp + 4 + i;
ND_TCHECK_1(message);
- if((type = message[0]) == MESSAGE_PAD1) {
+ if((type = EXTRACT_U_1(message)) == MESSAGE_PAD1) {
ND_PRINT((ndo, ndo->ndo_vflag ? "\n\tPad 1" : " pad1"));
i += 1;
continue;
ND_TCHECK_2(message);
ICHECK(i, 2);
- len = message[1];
+ len = EXTRACT_U_1(message + 1);
- ND_TCHECK2(*message, 2 + len);
+ ND_TCHECK_LEN(message, 2 + len);
ICHECK(i, 2 + len);
switch(type) {
if(len < 6) goto invalid;
txcost = EXTRACT_BE_U_2(message + 4);
interval = EXTRACT_BE_U_2(message + 6);
- rc = network_address(message[2], message + 8, len - 6, address);
+ rc = network_address(EXTRACT_U_1(message + 2), message + 8,
+ len - 6, address);
if(rc < 0) { ND_PRINT((ndo, "%s", tstr)); break; }
ND_PRINT((ndo, "%s txcost %u interval %s",
format_address(ndo, address), txcost, format_interval(interval)));
u_char nh[16];
ND_PRINT((ndo, "\n\tNext Hop"));
if(len < 2) goto invalid;
- rc = network_address(message[2], message + 4, len - 2, nh);
+ rc = network_address(EXTRACT_U_1(message + 2), message + 4,
+ len - 2, nh);
if(rc < 0) goto invalid;
ND_PRINT((ndo, " %s", format_address(ndo, nh)));
}
u_char prefix[16];
ND_PRINT((ndo, "\n\tUpdate"));
if(len < 10) goto invalid;
- plen = message[4] + (message[2] == 1 ? 96 : 0);
- rc = network_prefix(message[2], message[4], message[5],
+ plen = EXTRACT_U_1(message + 4) + (EXTRACT_U_1(message + 2) == 1 ? 96 : 0);
+ rc = network_prefix(EXTRACT_U_1(message + 2),
+ EXTRACT_U_1(message + 4),
+ EXTRACT_U_1(message + 5),
message + 12,
- message[2] == 1 ? v4_prefix : v6_prefix,
+ EXTRACT_U_1(message + 2) == 1 ? v4_prefix : v6_prefix,
len - 10, prefix);
if(rc < 0) goto invalid;
interval = EXTRACT_BE_U_2(message + 6);
(EXTRACT_U_1(message + 3) & 0x3f) ? "/unknown" : "",
format_prefix(ndo, prefix, plen),
metric, seqno, format_interval_update(interval)));
- if(message[3] & 0x80) {
- if(message[2] == 1)
+ if(EXTRACT_U_1(message + 3) & 0x80) {
+ if(EXTRACT_U_1(message + 2) == 1)
memcpy(v4_prefix, prefix, 16);
else
memcpy(v6_prefix, prefix, 16);
u_char prefix[16], plen;
ND_PRINT((ndo, "\n\tRequest "));
if(len < 2) goto invalid;
- plen = message[3] + (message[2] == 1 ? 96 : 0);
- rc = network_prefix(message[2], message[3], 0,
+ plen = EXTRACT_U_1(message + 3) + (EXTRACT_U_1(message + 2) == 1 ? 96 : 0);
+ rc = network_prefix(EXTRACT_U_1(message + 2),
+ EXTRACT_U_1(message + 3), 0,
message + 4, NULL, len - 2, prefix);
if(rc < 0) goto invalid;
ND_PRINT((ndo, "for %s",
ND_PRINT((ndo, "\n\tMH-Request "));
if(len < 14) goto invalid;
seqno = EXTRACT_BE_U_2(message + 4);
- rc = network_prefix(message[2], message[3], 0,
+ rc = network_prefix(EXTRACT_U_1(message + 2),
+ EXTRACT_U_1(message + 3), 0,
message + 16, NULL, len - 14, prefix);
if(rc < 0) goto invalid;
- plen = message[3] + (message[2] == 1 ? 96 : 0);
+ plen = EXTRACT_U_1(message + 3) + (EXTRACT_U_1(message + 2) == 1 ? 96 : 0);
ND_PRINT((ndo, "(%u hops) for %s seqno %u id %s",
EXTRACT_U_1(message + 6), format_prefix(ndo, prefix, plen),
seqno, format_id(message + 8)));
int parsed_len = 10;
ND_PRINT((ndo, "\n\tSS-Update"));
if(len < 10) goto invalid;
- ae = message[2];
- src_plen = message[3];
- plen = message[4];
- omitted = message[5];
+ ae = EXTRACT_U_1(message + 2);
+ src_plen = EXTRACT_U_1(message + 3);
+ plen = EXTRACT_U_1(message + 4);
+ omitted = EXTRACT_U_1(message + 5);
interval = EXTRACT_BE_U_2(message + 6);
seqno = EXTRACT_BE_U_2(message + 8);
metric = EXTRACT_BE_U_2(message + 10);
u_char ae, plen, src_plen, prefix[16], src_prefix[16];
ND_PRINT((ndo, "\n\tSS-Request "));
if(len < 3) goto invalid;
- ae = message[2];
- plen = message[3];
- src_plen = message[4];
+ ae = EXTRACT_U_1(message + 2);
+ plen = EXTRACT_U_1(message + 3);
+ src_plen = EXTRACT_U_1(message + 4);
rc = network_prefix(ae, plen, 0, message + 2 + parsed_len,
NULL, len - parsed_len, prefix);
if(rc < 0) goto invalid;
const u_char *router_id = NULL;
ND_PRINT((ndo, "\n\tSS-MH-Request "));
if(len < 14) goto invalid;
- ae = message[2];
- plen = message[3];
+ ae = EXTRACT_U_1(message + 2);
+ plen = EXTRACT_U_1(message + 3);
seqno = EXTRACT_BE_U_2(message + 4);
- hopc = message[6];
- src_plen = message[7];
+ hopc = EXTRACT_U_1(message + 6);
+ src_plen = EXTRACT_U_1(message + 7);
router_id = message + 8;
rc = network_prefix(ae, plen, 0, message + 2 + parsed_len,
NULL, len - parsed_len, prefix);