ND_TCHECK_4(cp);
- if(cp[0] != 42) {
+ if(EXTRACT_U_1(cp) != 42) {
ND_PRINT((ndo, " invalid header"));
return;
} else {
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) {
u_char prefix[16];
ND_PRINT((ndo, "\n\tUpdate"));
if(len < 10) goto invalid;
- plen = message[4] + (message[2] == 1 ? 96 : 0);
+ 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);
format_prefix(ndo, prefix, plen),
metric, seqno, format_interval_update(interval)));
if(EXTRACT_U_1(message + 3) & 0x80) {
- if(message[2] == 1)
+ 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);
+ 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);
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);