+ ND_PRINT("%s/%u", ip6addr_string(ndo, data2), GET_U_1(data + 1));
+
+ if (GET_U_1(data + 1) > 8 * (length - 2))
+ ND_PRINT(" (inconsistent prefix length)");
+
+ return;
+
+ trunc:
+ nd_print_trunc(ndo);
+}
+
+static void
+print_attr_mip6_home_link_prefix(netdissect_options *ndo,
+ const u_char *data, u_int length, u_short attr_code _U_)
+{
+ if (length != 17)
+ {
+ ND_PRINT("ERROR: length %u != 17", length);
+ return;
+ }
+ ND_TCHECK_LEN(data, length);
+ if (GET_U_1(data) > 128)
+ {
+ ND_PRINT("ERROR: netmask %u not in range (0..128)", GET_U_1(data));
+ return;
+ }
+
+ ND_PRINT("%s/%u", GET_IP6ADDR_STRING(data + 1), GET_U_1(data));
+
+ return;
+
+ trunc:
+ nd_print_trunc(ndo);
+}
+
+static void
+print_attr_operator_name(netdissect_options *ndo,
+ const u_char *data, u_int length, u_short attr_code _U_)
+{
+ u_int namespace_value;
+
+ ND_TCHECK_LEN(data, length);
+ if (length < 2)
+ {
+ ND_PRINT("ERROR: length %u < 2", length);
+ return;
+ }
+ namespace_value = GET_U_1(data);
+ data++;
+ ND_PRINT("[%s] ", tok2str(operator_name_vector, "unknown namespace %u", namespace_value));
+
+ nd_printjn(ndo, data, length - 1);
+
+ return;
+
+ trunc:
+ nd_print_trunc(ndo);
+}
+
+static void
+print_attr_location_information(netdissect_options *ndo,
+ const u_char *data, u_int length, u_short attr_code _U_)
+{
+ uint16_t index;
+ uint8_t code, entity;
+
+ ND_TCHECK_LEN(data, length);
+ if (length < 21)
+ {
+ ND_PRINT("ERROR: length %u < 21", length);
+ return;
+ }
+
+ index = GET_BE_U_2(data);
+ data += 2;
+
+ code = GET_U_1(data);
+ data++;
+
+ entity = GET_U_1(data);
+ data++;
+
+ ND_PRINT("index %u, code %s, entity %s, ",
+ index,
+ tok2str(location_information_code_vector, "Unknown (%u)", code),
+ tok2str(location_information_entity_vector, "Unknown (%u)", entity)
+ );
+
+ ND_PRINT("sighting time ");
+ p_ntp_time(ndo, (const struct l_fixedpt *)data);
+ ND_PRINT(", ");
+ data += 8;
+
+ ND_PRINT("time to live ");
+ p_ntp_time(ndo, (const struct l_fixedpt *)data);
+ ND_PRINT(", ");
+ data += 8;
+
+ ND_PRINT("method \"");
+ nd_printjn(ndo, data, length - 20);
+ ND_PRINT("\"");