u_char prefix[16];
ND_PRINT((ndo, "\n\tUpdate"));
if(len < 10) goto invalid;
u_char prefix[16];
ND_PRINT((ndo, "\n\tUpdate"));
if(len < 10) goto invalid;
rc = network_prefix(EXTRACT_U_1(message + 2),
EXTRACT_U_1(message + 4),
EXTRACT_U_1(message + 5),
message + 12,
rc = network_prefix(EXTRACT_U_1(message + 2),
EXTRACT_U_1(message + 4),
EXTRACT_U_1(message + 5),
message + 12,
format_prefix(ndo, prefix, plen),
metric, seqno, format_interval_update(interval)));
if(EXTRACT_U_1(message + 3) & 0x80) {
format_prefix(ndo, prefix, plen),
metric, seqno, format_interval_update(interval)));
if(EXTRACT_U_1(message + 3) & 0x80) {
memcpy(v4_prefix, prefix, 16);
else
memcpy(v6_prefix, prefix, 16);
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;
u_char prefix[16], plen;
ND_PRINT((ndo, "\n\tRequest "));
if(len < 2) goto invalid;
rc = network_prefix(EXTRACT_U_1(message + 2),
EXTRACT_U_1(message + 3), 0,
message + 4, NULL, len - 2, prefix);
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;
EXTRACT_U_1(message + 3), 0,
message + 16, NULL, len - 14, prefix);
if(rc < 0) goto invalid;
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)));
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;
int parsed_len = 10;
ND_PRINT((ndo, "\n\tSS-Update"));
if(len < 10) goto invalid;
interval = EXTRACT_BE_U_2(message + 6);
seqno = EXTRACT_BE_U_2(message + 8);
metric = EXTRACT_BE_U_2(message + 10);
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;
u_char ae, plen, src_plen, prefix[16], src_prefix[16];
ND_PRINT((ndo, "\n\tSS-Request "));
if(len < 3) goto invalid;
rc = network_prefix(ae, plen, 0, message + 2 + parsed_len,
NULL, len - parsed_len, prefix);
if(rc < 0) goto invalid;
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;
const u_char *router_id = NULL;
ND_PRINT((ndo, "\n\tSS-MH-Request "));
if(len < 14) goto invalid;
router_id = message + 8;
rc = network_prefix(ae, plen, 0, message + 2 + parsed_len,
NULL, len - parsed_len, prefix);
router_id = message + 8;
rc = network_prefix(ae, plen, 0, message + 2 + parsed_len,
NULL, len - parsed_len, prefix);