Deleted Added
full compact
36c36
< static char sccsid[] = "From: @(#)route.c 8.3 (Berkeley) 3/9/94";
---
> static char sccsid[] = "From: @(#)route.c 8.6 (Berkeley) 4/28/95";
39c39
< "$Id: route.c,v 1.7 1995/10/26 20:31:59 julian Exp $";
---
> "$Id: route.c,v 1.8 1995/12/05 07:29:15 julian Exp $";
117c117
< static void p_sockaddr __P((struct sockaddr *, int, int));
---
> static void p_sockaddr __P((struct sockaddr *, struct sockaddr *, int, int));
197c197
< #define WID_DST 16 /* width of destination column */
---
> #define WID_DST 18 /* width of destination column */
246c246
< 0, 44);
---
> NULL, 0, 44);
273c273
< 0, -1);
---
> NULL, 0, -1);
285c285,293
< p_sockaddr(kgetsa((struct sockaddr *)rmask.rm_mask), 0, -1);
---
> if (rmask.rm_flags & RNF_NORMAL) {
> struct radix_node rnode_aux;
> printf(" <normal>, ");
> kget(rmask.rm_leaf, rnode_aux);
> p_sockaddr(kgetsa((struct sockaddr *)rnode_aux.rn_mask),
> NULL, 0, -1);
> } else
> p_sockaddr(kgetsa((struct sockaddr *)rmask.rm_mask),
> NULL, 0, -1);
354c362
< p_sockaddr(sa, 0, 36);
---
> p_sockaddr(sa, NULL, 0, 36);
356c364
< p_sockaddr(sa, rtm->rtm_flags, 16);
---
> p_sockaddr(sa, NULL, rtm->rtm_flags, 16);
360c368
< p_sockaddr(sa, 0, 18);
---
> p_sockaddr(sa, NULL, 0, 18);
367,368c375,376
< p_sockaddr(sa, flags, width)
< struct sockaddr *sa;
---
> p_sockaddr(sa, mask, flags, width)
> struct sockaddr *sa, *mask;
379,382c387,396
< cp = (sin->sin_addr.s_addr == 0) ? "default" :
< ((flags & RTF_HOST) ?
< routename(sin->sin_addr.s_addr) :
< netname(sin->sin_addr.s_addr, 0L));
---
> if (sin->sin_addr.s_addr == INADDR_ANY)
> cp = "default";
> else if (flags & RTF_HOST)
> cp = routename(sin->sin_addr.s_addr);
> else if (mask)
> cp = netname(sin->sin_addr.s_addr,
> ntohl(((struct sockaddr_in *)mask)
> ->sin_addr.s_addr));
> else
> cp = netname(sin->sin_addr.s_addr, 0L);
475a490,491
> struct sockaddr *sa;
> struct sockaddr addr, mask;
483,484c499,508
< p_sockaddr(kgetsa(rt_key(rt)), rt->rt_flags, WID_DST);
< p_sockaddr(kgetsa(rt->rt_gateway), RTF_HOST, WID_GW);
---
> if (!(sa = kgetsa(rt_key(rt))))
> bzero(&addr, sizeof addr);
> else
> addr = *sa;
> if (!rt_mask(rt) || !(sa = kgetsa(rt_mask(rt))))
> bzero(&mask, sizeof mask);
> else
> mask = *sa;
> p_sockaddr(&addr, &mask, rt->rt_flags, WID_DST);
> p_sockaddr(kgetsa(rt->rt_gateway), NULL, RTF_HOST, WID_GW);
551a576,620
> static u_long
> forgemask(a)
> u_long a;
> {
> u_long m;
>
> if (IN_CLASSA(a))
> m = IN_CLASSA_NET;
> else if (IN_CLASSB(a))
> m = IN_CLASSB_NET;
> else
> m = IN_CLASSC_NET;
> return (m);
> }
>
> static void
> domask(dst, addr, mask)
> char *dst;
> u_long addr, mask;
> {
> register int b, i;
>
> if (!mask || (forgemask(addr) == mask)) {
> *dst = '\0';
> return;
> }
> i = 0;
> for (b = 0; b < 32; b++)
> if (mask & (1 << b)) {
> register int bb;
>
> i = b;
> for (bb = b+1; bb < 32; bb++)
> if (!(mask & (1 << bb))) {
> i = -1; /* noncontig */
> break;
> }
> break;
> }
> if (i == -1)
> sprintf(dst, "&0x%lx", mask);
> else
> sprintf(dst, "/%d", 32-i);
> }
>
563,564c632,633
< u_long net;
< register int i;
---
> u_long net, omask;
> register u_long i;
567a637
> omask = mask;
570,571c640,641
< if (IN_CLASSA(i)) {
< mask = IN_CLASSA_NET;
---
> switch (mask = forgemask(i)) {
> case IN_CLASSA_NET:
573,574c643,644
< } else if (IN_CLASSB(i)) {
< mask = IN_CLASSB_NET;
---
> break;
> case IN_CLASSB_NET:
576,577c646,647
< } else {
< mask = IN_CLASSC_NET;
---
> break;
> case IN_CLASSC_NET:
578a649,651
> break;
> default:
> abort();
607a681
> domask(line+strlen(line), i, omask);