- } else if (family != BSD_AFNUM_INET && family != 0) {
- printf("\n\t AFI %s", tok2str(bsd_af_values, "Unknown (%u)", family));
- print_unknown_data((u_int8_t *)&ni->rip_tag,"\n\t ",RIP_ROUTELEN-2);
- } else { /* BSD_AFNUM_INET or AFI 0 */
- printf("\n\t AFI %s, %15s/%-2d, tag 0x%04x, metric: %u, next-hop: ",
- tok2str(bsd_af_values, "%u", family),
- ipaddr_string(&ni->rip_dest),
- mask2plen(EXTRACT_32BITS(&ni->rip_dest_mask)),
- EXTRACT_16BITS(&ni->rip_tag),
- EXTRACT_32BITS(&ni->rip_metric));
- if (EXTRACT_32BITS(&ni->rip_router))
- printf("%s", ipaddr_string(&ni->rip_router));
- else
- printf("self");
+ } else if (family != BSD_AF_INET && family != 0) {
+ ND_PRINT("\n\t AFI %s", tok2str(bsd_af_values, "Unknown (%u)", family));
+ print_unknown_data(ndo, p + sizeof(*eh), "\n\t ", RIP_ROUTELEN - sizeof(*eh));
+ } else { /* BSD_AF_INET or AFI 0 */
+ ni = (const struct rip_netinfo_v2 *)p;
+ ND_ICHECKMSG_ZU("remaining data length", remaining, <,
+ sizeof(*ni));
+ ND_PRINT("\n\t AFI %s, %15s/%-2d, tag 0x%04x, metric: %u, next-hop: ",
+ tok2str(bsd_af_values, "%u", family),
+ GET_IPADDR_STRING(ni->rip_dest),
+ mask2plen(GET_BE_U_4(ni->rip_dest_mask)),
+ GET_BE_U_2(ni->rip_tag),
+ GET_BE_U_4(ni->rip_metric));
+ if (GET_BE_U_4(ni->rip_router))
+ ND_PRINT("%s", GET_IPADDR_STRING(ni->rip_router));
+ else
+ ND_PRINT("self");