892a893,895 > #include > #include > 1067a1071,1172 > static void > db_print_sa( struct sockaddr *sa) > { > int len; > u_char *p; > > if (sa == 0) { > printf("[NULL]"); > return; > } > > p = (u_char*)sa; > len = sa->sa_len; > printf("["); > while (len > 0) { > printf("%d", *p); > p++; > len--; > if (len) > printf(","); > } > printf("]\n"); > } > > static void > db_print_ifa( struct ifaddr *ifa) > { > if (ifa == 0) > return; > printf(" ifa_addr="); > db_print_sa(ifa->ifa_addr); > printf(" ifa_dsta="); > db_print_sa(ifa->ifa_dstaddr); > printf(" ifa_mask="); > db_print_sa(ifa->ifa_netmask); > printf(" flags=0x%x, refcnt=%d, metric=%d\n", > ifa->ifa_flags, ifa->ifa_refcnt, ifa->ifa_metric); > } > > static void > db_print_llinfo( caddr_t li ) > { > struct llinfo_arp *la; > > if (li == 0) > return; > la = (struct llinfo_arp *)li; > printf(" la_rt=%p la_hold=%p, la_asked=0x%lx\n", > la->la_rt, la->la_hold, la->la_asked); > } > > /* > * Function to pass to rn_walktree(). > * Return non-zero error to abort walk. > */ > static int > db_show_radix_node( struct radix_node *rn, void *w ) > { > struct rtentry *rt = (struct rtentry *)rn; > > printf("rtentry=%p", rt); > > printf(" flags=0x%x refcnt=%d use=%ld \n", > rt->rt_flags, rt->rt_refcnt, rt->rt_use); > > printf(" key="); db_print_sa(rt_key(rt)); > printf(" mask="); db_print_sa(rt_mask(rt)); > printf(" gw="); db_print_sa(rt->rt_gateway); > > printf(" ifp=%p ", rt->rt_ifp); > if (rt->rt_ifp) > printf("(%s)", rt->rt_ifp->if_xname); > else > printf("(NULL)"); > > printf(" ifa=%p\n", rt->rt_ifa); > db_print_ifa(rt->rt_ifa); > > printf(" genmask="); db_print_sa(rt->rt_genmask); > > printf(" gwroute=%p llinfo=%p\n", rt->rt_gwroute, rt->rt_llinfo); > db_print_llinfo(rt->rt_llinfo); > return (0); > } > > /* > * Function to print all the route trees. > * Use this from ddb: "call db_show_arptab" > */ > int > db_show_arptab() > { > struct radix_node_head *rnh; > rnh = rt_tables[AF_INET]; > printf("Route tree for AF_INET\n"); > if (rnh == NULL) { > printf(" (not initialized)\n"); > return (0); > } > rn_walktree(rnh, db_show_radix_node, NULL); > return (0); > }