case 0: ND_PRINT((ndo, "Spectrum Management Act#%d", EXTRACT_U_1(p + 1))); break;
case 1: ND_PRINT((ndo, "QoS Act#%d", EXTRACT_U_1(p + 1))); break;
case 2: ND_PRINT((ndo, "DLS Act#%d", EXTRACT_U_1(p + 1))); break;
- case 3: ND_PRINT((ndo, "BA ")); PRINT_BA_ACTION(p[1]); break;
- case 7: ND_PRINT((ndo, "HT ")); PRINT_HT_ACTION(p[1]); break;
- case 13: ND_PRINT((ndo, "MeshAction ")); PRINT_MESH_ACTION(p[1]); break;
+ case 3: ND_PRINT((ndo, "BA ")); PRINT_BA_ACTION(EXTRACT_U_1(p + 1)); break;
+ case 7: ND_PRINT((ndo, "HT ")); PRINT_HT_ACTION(EXTRACT_U_1(p + 1)); break;
+ case 13: ND_PRINT((ndo, "MeshAction ")); PRINT_MESH_ACTION(EXTRACT_U_1(p + 1)); break;
case 14:
ND_PRINT((ndo, "MultiohopAction "));
- PRINT_MULTIHOP_ACTION(p[1]); break;
+ PRINT_MULTIHOP_ACTION(EXTRACT_U_1(p + 1)); break;
case 15:
ND_PRINT((ndo, "SelfprotectAction "));
- PRINT_SELFPROT_ACTION(p[1]); break;
+ PRINT_SELFPROT_ACTION(EXTRACT_U_1(p + 1)); break;
case 127: ND_PRINT((ndo, "Vendor Act#%d", EXTRACT_U_1(p + 1))); break;
default:
ND_PRINT((ndo, "Reserved(%d) Act#%d", EXTRACT_U_1(p), EXTRACT_U_1(p + 1)));
{
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;
}
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)));
}
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],
+ 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,
len - 10, prefix);
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,
+ 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);
static int i = 0;
i = (i + 1) % 4;
snprintf(buf[i], sizeof(buf[i]), "%02x:%02x:%02x:%02x",
- data[0], data[1], data[2], data[3]);
+ EXTRACT_U_1(data), EXTRACT_U_1(data + 1), EXTRACT_U_1(data + 2),
+ EXTRACT_U_1(data + 3));
return buf[i];
}
static char line[256];
snprintf(line, sizeof(line), "%08x.%02x:%02x:%02x:%02x:%02x:%02x",
- net, node[0], node[1], node[2], node[3], node[4], node[5]);
+ net, EXTRACT_U_1(node), EXTRACT_U_1(node + 1),
+ EXTRACT_U_1(node + 2), EXTRACT_U_1(node + 3),
+ EXTRACT_U_1(node + 4), EXTRACT_U_1(node + 5));
return line;
}
int i;
ND_PRINT((ndo," len=%d ", len));
for (i = 0; i < len; i++)
- safeputchar(ndo, data[i]);
+ safeputchar(ndo, EXTRACT_U_1(data + i));
len = 0;
break;
}
if(dumpascii) {
ND_TCHECK2(*typedata, idtype_len);
for(i=0; i<idtype_len; i++) {
- if(ND_ISPRINT(typedata[i])) {
+ if(ND_ISPRINT(EXTRACT_U_1(typedata + i))) {
ND_PRINT((ndo, "%c", typedata[i]));
} else {
ND_PRINT((ndo, "."));
len = ntohs(e.len) - 4;
ND_TCHECK2(*vid, len);
for(i=0; i<len; i++) {
- if(ND_ISPRINT(vid[i])) ND_PRINT((ndo, "%c", EXTRACT_U_1(vid + i)));
+ if(ND_ISPRINT(EXTRACT_U_1(vid + i)))
+ ND_PRINT((ndo, "%c", EXTRACT_U_1(vid + i)));
else ND_PRINT((ndo, "."));
}
if (2 < ndo->ndo_vflag && 4 < len) {
snprintf(bridge_id_str, sizeof(bridge_id_str),
"%.2x%.2x.%.2x:%.2x:%.2x:%.2x:%.2x:%.2x",
- p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7]);
+ EXTRACT_U_1(p), EXTRACT_U_1(p + 1), EXTRACT_U_1(p + 2),
+ EXTRACT_U_1(p + 3), EXTRACT_U_1(p + 4), EXTRACT_U_1(p + 5),
+ EXTRACT_U_1(p + 6), EXTRACT_U_1(p + 7));
return bridge_id_str;
}
{
int i;
for (i = 0; i < len; i++)
- safeputchar(ndo, buf[i]);
+ safeputchar(ndo, EXTRACT_U_1(buf + i));
}
static const char *
ND_TCHECK(s[0]);
if (l >= MAX_UNISTR_SIZE)
break;
- if (ND_ISPRINT(s[0]))
+ if (ND_ISPRINT(EXTRACT_U_1(s)))
buf[l] = s[0];
else {
if (s[0] == 0)
ND_TCHECK_2(s);
if (l >= MAX_UNISTR_SIZE)
break;
- if (s[1] == 0 && ND_ISPRINT(s[0])) {
+ if (s[1] == 0 && ND_ISPRINT(EXTRACT_U_1(s))) {
/* It's a printable ASCII character */
buf[l] = s[0];
} else {
switch (*fmt) {
case 'a':
ND_TCHECK(buf[0]);
- write_bits(ndo, buf[0], attrib_fmt);
+ write_bits(ndo, EXTRACT_U_1(buf), attrib_fmt);
buf++;
fmt++;
break;
bitfmt[l] = '\0';
fmt = p + 1;
ND_TCHECK(buf[0]);
- write_bits(ndo, buf[0], bitfmt);
+ write_bits(ndo, EXTRACT_U_1(buf), bitfmt);
buf++;
break;
}