PERFORCE change 40408 for review
Sam Leffler
sam at FreeBSD.org
Fri Oct 24 10:53:30 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=40408
Change 40408 by sam at sam_ebb on 2003/10/24 10:52:50
add rt_print function to dump a routing table entry;
needs to be under DIAGNOSTICS or similar and needs more
work
Affected files ...
.. //depot/projects/netperf/sys/net/route.c#19 edit
.. //depot/projects/netperf/sys/net/route.h#9 edit
Differences ...
==== //depot/projects/netperf/sys/net/route.c#19 (text+ko) ====
@@ -1217,5 +1217,46 @@
#undef senderr
}
+static void
+rt_print_sockaddr(const char *leader, const char *tag, const struct sockaddr *sa)
+{
+ printf("%s%s: len %u af %u addr %7D\n", leader, tag,
+ sa->sa_len, sa->sa_family,
+ (const unsigned char *) sa->sa_data, ":");
+}
+
+static void
+rt_print1(const char *leader, const char *tag, const struct rtentry *rt)
+{
+ printf("%s%s @%p: refcnt %ld flags 0x%lx\n", leader, tag,
+ rt, rt->rt_refcnt, rt->rt_flags);
+ printf("%sllinfo %p nodes %p %p\n", leader,
+ rt->rt_llinfo, &rt->rt_nodes[0], &rt->rt_nodes[1]);
+ if (rt->rt_gateway)
+ rt_print_sockaddr(leader, "gw", rt->rt_gateway);
+ if (rt_key(rt))
+ rt_print_sockaddr(leader, "key", rt_key(rt));
+ if (rt_mask(rt))
+ rt_print_sockaddr(leader, "mask", rt_mask(rt));
+ if (rt->rt_ifp)
+ printf("%sifp: %p (%s%u)\n", leader,
+ rt->rt_ifp, rt->rt_ifp->if_name, rt->rt_ifp->if_unit);
+ if (rt->rt_ifa)
+ printf("%sifa: %p\n", leader, rt->rt_ifa); /* XXX expand */
+ if (rt->rt_genmask)
+ rt_print_sockaddr(leader, "genmask", rt->rt_genmask);
+ if (rt->rt_gwroute)
+ rt_print1(" ", "gwroute", rt->rt_gwroute);
+ if (rt->rt_parent)
+ rt_print1(" ", "parent", rt->rt_parent);
+ /* XXX rt_rmx */
+}
+
+void
+rt_print(const struct rtentry *rt)
+{
+ rt_print1("", "route", rt);
+}
+
/* This must be before ip6_init2(), which is now SI_ORDER_MIDDLE */
SYSINIT(route, SI_SUB_PROTO_DOMAIN, SI_ORDER_THIRD, route_init, 0);
==== //depot/projects/netperf/sys/net/route.h#9 (text+ko) ====
@@ -306,6 +306,7 @@
struct sockaddr *, struct sockaddr *, int, struct rtentry **);
int rtrequest1(int, struct rt_addrinfo *, struct rtentry **);
int rt_check(struct rtentry **, struct rtentry **, struct sockaddr *);
+void rt_print(const struct rtentry *);
#endif
#endif
More information about the p4-projects
mailing list