- if (af == AFNUM_INET) {
- i=decode_prefix4(tptr,buf,sizeof(buf));
- printf(": IPv4 prefix %s",buf);
- }
-#ifdef INET6
- else if (af == AFNUM_INET6) {
- i=decode_prefix6(tptr,buf,sizeof(buf));
- printf(": IPv6 prefix %s",buf);
- }
-#endif
+ tlv_tlen-=2;
+ if (af == AFNUM_IP) {
+ i=decode_prefix4(ndo, tptr, tlv_tlen, buf, sizeof(buf));
+ if (i == -2)
+ goto trunc;
+ if (i == -3)
+ ND_PRINT(": IPv4 prefix (goes past end of TLV)");
+ else if (i == -1)
+ ND_PRINT(": IPv4 prefix (invalid length)");
+ else
+ ND_PRINT(": IPv4 prefix %s", buf);
+ } else if (af == AFNUM_IP6) {
+ i=decode_prefix6(ndo, tptr, tlv_tlen, buf, sizeof(buf));
+ if (i == -2)
+ goto trunc;
+ if (i == -3)
+ ND_PRINT(": IPv4 prefix (goes past end of TLV)");
+ else if (i == -1)
+ ND_PRINT(": IPv6 prefix (invalid length)");
+ else
+ ND_PRINT(": IPv6 prefix %s", buf);
+ } else
+ ND_PRINT(": Address family %u prefix", af);