- switch(rt->rt_dst.sa_family) {
- case AF_INET:
- sin = (struct sockaddr_in *)&rt->rt_dst;
- printf("%-16.16s ",
- (sin->sin_addr.s_addr == 0) ? "default" :
- (rt->rt_flags & RTF_HOST) ?
- routename(sin->sin_addr) :
- netname(sin->sin_addr, 0L));
- sin = (struct sockaddr_in *)&rt->rt_gateway;
- printf("%-18.18s ", routename(sin->sin_addr));
- break;
- case AF_NS:
- printf("%-16s ",
- ns_print((struct sockaddr_ns *)&rt->rt_dst));
- printf("%-18s ",
- ns_print((struct sockaddr_ns *)&rt->rt_gateway));
- break;
- default:
- {
- u_short *s = (u_short *)rt->rt_dst.sa_data;
- printf("(%d)%x %x %x %x %x %x %x ",
- rt->rt_dst.sa_family,
- s[0], s[1], s[2], s[3], s[4], s[5], s[6]);
- s = (u_short *)rt->rt_gateway.sa_data;
- printf("(%d)%x %x %x %x %x %x %x ",
- rt->rt_gateway.sa_family,
- s[0], s[1], s[2], s[3], s[4], s[5], s[6]);
- }
- }
- for (flags = name, p = bits; p->b_mask; p++)
- if (p->b_mask & rt->rt_flags)
- *flags++ = p->b_val;
- *flags = '\0';
- printf("%-6.6s %6d %8d ", name,
- rt->rt_refcnt, rt->rt_use);
+ p_sockaddr(&rt->rt_dst, rt->rt_flags, "%-16.16s ");
+ p_sockaddr(&rt->rt_gateway, 0, "%-18.18s ");
+ p_flags(rt->rt_flags, "%-6.6s ");
+ printf("%6d %8d ", rt->rt_refcnt, rt->rt_use);