Deleted Added
full compact
route.c (100161) route.c (102975)
1/*
2 * Copyright (c) 1983, 1988, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 22 unchanged lines hidden (view full) ---

31 * SUCH DAMAGE.
32 */
33
34#ifndef lint
35#if 0
36static char sccsid[] = "From: @(#)route.c 8.6 (Berkeley) 4/28/95";
37#endif
38static const char rcsid[] =
1/*
2 * Copyright (c) 1983, 1988, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 22 unchanged lines hidden (view full) ---

31 * SUCH DAMAGE.
32 */
33
34#ifndef lint
35#if 0
36static char sccsid[] = "From: @(#)route.c 8.6 (Berkeley) 4/28/95";
37#endif
38static const char rcsid[] =
39 "$FreeBSD: head/usr.bin/netstat/route.c 100161 2002-07-16 05:57:21Z kbyanc $";
39 "$FreeBSD: head/usr.bin/netstat/route.c 102975 2002-09-05 17:06:51Z dwmalone $";
40#endif /* not lint */
41
42#include <sys/param.h>
43#include <sys/protosw.h>
44#include <sys/socket.h>
45#include <sys/time.h>
46
47#include <net/ethernet.h>

--- 53 unchanged lines hidden (view full) ---

101 { RTF_STATIC, 'S' },
102 { RTF_PROTO1, '1' },
103 { RTF_PROTO2, '2' },
104 { RTF_WASCLONED,'W' },
105 { RTF_PRCLONING,'c' },
106 { RTF_PROTO3, '3' },
107 { RTF_BLACKHOLE,'B' },
108 { RTF_BROADCAST,'b' },
40#endif /* not lint */
41
42#include <sys/param.h>
43#include <sys/protosw.h>
44#include <sys/socket.h>
45#include <sys/time.h>
46
47#include <net/ethernet.h>

--- 53 unchanged lines hidden (view full) ---

101 { RTF_STATIC, 'S' },
102 { RTF_PROTO1, '1' },
103 { RTF_PROTO2, '2' },
104 { RTF_WASCLONED,'W' },
105 { RTF_PRCLONING,'c' },
106 { RTF_PROTO3, '3' },
107 { RTF_BLACKHOLE,'B' },
108 { RTF_BROADCAST,'b' },
109 { 0 }
109 { 0 , 0 }
110};
111
112typedef union {
113 long dummy; /* Helps align structure. */
114 struct sockaddr u_sa;
115 u_short u_data[128];
116} sa_u;
117

--- 13 unchanged lines hidden (view full) ---

131static void size_cols_rtentry (struct rtentry *rt);
132static void p_tree (struct radix_node *);
133static void p_rtnode (void);
134static void ntreestuff (void);
135static void np_rtentry (struct rt_msghdr *);
136static void p_sockaddr (struct sockaddr *, struct sockaddr *, int, int);
137static const char *fmt_sockaddr (struct sockaddr *sa, struct sockaddr *mask,
138 int flags);
110};
111
112typedef union {
113 long dummy; /* Helps align structure. */
114 struct sockaddr u_sa;
115 u_short u_data[128];
116} sa_u;
117

--- 13 unchanged lines hidden (view full) ---

131static void size_cols_rtentry (struct rtentry *rt);
132static void p_tree (struct radix_node *);
133static void p_rtnode (void);
134static void ntreestuff (void);
135static void np_rtentry (struct rt_msghdr *);
136static void p_sockaddr (struct sockaddr *, struct sockaddr *, int, int);
137static const char *fmt_sockaddr (struct sockaddr *sa, struct sockaddr *mask,
138 int flags);
139static void p_flags (int, char *);
139static void p_flags (int, const char *);
140static const char *fmt_flags(int f);
141static void p_rtentry (struct rtentry *);
142static u_long forgemask (u_long);
143static void domask (char *, u_long, u_long);
144
145/*
146 * Print routing tables.
147 */

--- 33 unchanged lines hidden (view full) ---

181 }
182 }
183}
184
185/*
186 * Print address family header before a section of the routing table.
187 */
188void
140static const char *fmt_flags(int f);
141static void p_rtentry (struct rtentry *);
142static u_long forgemask (u_long);
143static void domask (char *, u_long, u_long);
144
145/*
146 * Print routing tables.
147 */

--- 33 unchanged lines hidden (view full) ---

181 }
182 }
183}
184
185/*
186 * Print address family header before a section of the routing table.
187 */
188void
189pr_family(int af)
189pr_family(int af1)
190{
190{
191 char *afname;
191 const char *afname;
192
192
193 switch (af) {
193 switch (af1) {
194 case AF_INET:
195 afname = "Internet";
196 break;
197#ifdef INET6
198 case AF_INET6:
199 afname = "Internet6";
200 break;
201#endif /*INET6*/

--- 19 unchanged lines hidden (view full) ---

221 break;
222 default:
223 afname = NULL;
224 break;
225 }
226 if (afname)
227 printf("\n%s:\n", afname);
228 else
194 case AF_INET:
195 afname = "Internet";
196 break;
197#ifdef INET6
198 case AF_INET6:
199 afname = "Internet6";
200 break;
201#endif /*INET6*/

--- 19 unchanged lines hidden (view full) ---

221 break;
222 default:
223 afname = NULL;
224 break;
225 }
226 if (afname)
227 printf("\n%s:\n", afname);
228 else
229 printf("\nProtocol Family %d:\n", af);
229 printf("\nProtocol Family %d:\n", af1);
230}
231
232/* column widths; each followed by one space */
233#ifndef INET6
234#define WID_DST_DEFAULT(af) 18 /* width of destination column */
235#define WID_GW_DEFAULT(af) 18 /* width of gateway column */
236#define WID_IF_DEFAULT(af) 6 /* width of netif column */
237#else

--- 120 unchanged lines hidden (view full) ---

358 }
359}
360
361
362/*
363 * Print header for routing table columns.
364 */
365void
230}
231
232/* column widths; each followed by one space */
233#ifndef INET6
234#define WID_DST_DEFAULT(af) 18 /* width of destination column */
235#define WID_GW_DEFAULT(af) 18 /* width of gateway column */
236#define WID_IF_DEFAULT(af) 6 /* width of netif column */
237#else

--- 120 unchanged lines hidden (view full) ---

358 }
359}
360
361
362/*
363 * Print header for routing table columns.
364 */
365void
366pr_rthdr(int af)
366pr_rthdr(int af1)
367{
368
369 if (Aflag)
370 printf("%-8.8s ","Address");
367{
368
369 if (Aflag)
370 printf("%-8.8s ","Address");
371 if (af == AF_INET || Wflag) {
371 if (af1 == AF_INET || Wflag) {
372 if (Wflag) {
373 printf("%-*.*s %-*.*s %-*.*s %*.*s %*.*s %*.*s %*.*s %*s\n",
374 wid_dst, wid_dst, "Destination",
375 wid_gw, wid_gw, "Gateway",
376 wid_flags, wid_flags, "Flags",
377 wid_refs, wid_refs, "Refs",
378 wid_use, wid_use, "Use",
379 wid_mtu, wid_mtu, "Mtu",

--- 105 unchanged lines hidden (view full) ---

485}
486
487static void
488ntreestuff(void)
489{
490 size_t needed;
491 int mib[6];
492 char *buf, *next, *lim;
372 if (Wflag) {
373 printf("%-*.*s %-*.*s %-*.*s %*.*s %*.*s %*.*s %*.*s %*s\n",
374 wid_dst, wid_dst, "Destination",
375 wid_gw, wid_gw, "Gateway",
376 wid_flags, wid_flags, "Flags",
377 wid_refs, wid_refs, "Refs",
378 wid_use, wid_use, "Use",
379 wid_mtu, wid_mtu, "Mtu",

--- 105 unchanged lines hidden (view full) ---

485}
486
487static void
488ntreestuff(void)
489{
490 size_t needed;
491 int mib[6];
492 char *buf, *next, *lim;
493 register struct rt_msghdr *rtm;
493 struct rt_msghdr *rtm;
494
495 mib[0] = CTL_NET;
496 mib[1] = PF_ROUTE;
497 mib[2] = 0;
498 mib[3] = 0;
499 mib[4] = NET_RT_DUMP;
500 mib[5] = 0;
501 if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) {

--- 11 unchanged lines hidden (view full) ---

513 rtm = (struct rt_msghdr *)next;
514 np_rtentry(rtm);
515 }
516}
517
518static void
519np_rtentry(struct rt_msghdr *rtm)
520{
494
495 mib[0] = CTL_NET;
496 mib[1] = PF_ROUTE;
497 mib[2] = 0;
498 mib[3] = 0;
499 mib[4] = NET_RT_DUMP;
500 mib[5] = 0;
501 if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) {

--- 11 unchanged lines hidden (view full) ---

513 rtm = (struct rt_msghdr *)next;
514 np_rtentry(rtm);
515 }
516}
517
518static void
519np_rtentry(struct rt_msghdr *rtm)
520{
521 register struct sockaddr *sa = (struct sockaddr *)(rtm + 1);
521 struct sockaddr *sa = (struct sockaddr *)(rtm + 1);
522#ifdef notdef
523 static int masks_done, banner_printed;
524#endif
525 static int old_af;
522#ifdef notdef
523 static int masks_done, banner_printed;
524#endif
525 static int old_af;
526 int af = 0, interesting = RTF_UP | RTF_GATEWAY | RTF_HOST;
526 int af1 = 0, interesting = RTF_UP | RTF_GATEWAY | RTF_HOST;
527
528#ifdef notdef
529 /* for the moment, netmasks are skipped over */
530 if (!banner_printed) {
531 printf("Netmasks:\n");
532 banner_printed = 1;
533 }
534 if (masks_done == 0) {
535 if (rtm->rtm_addrs != RTA_DST ) {
536 masks_done = 1;
527
528#ifdef notdef
529 /* for the moment, netmasks are skipped over */
530 if (!banner_printed) {
531 printf("Netmasks:\n");
532 banner_printed = 1;
533 }
534 if (masks_done == 0) {
535 if (rtm->rtm_addrs != RTA_DST ) {
536 masks_done = 1;
537 af = sa->sa_family;
537 af1 = sa->sa_family;
538 }
539 } else
540#endif
538 }
539 } else
540#endif
541 af = sa->sa_family;
542 if (af != old_af) {
543 pr_family(af);
544 old_af = af;
541 af1 = sa->sa_family;
542 if (af1 != old_af) {
543 pr_family(af1);
544 old_af = af1;
545 }
546 if (rtm->rtm_addrs == RTA_DST)
547 p_sockaddr(sa, NULL, 0, 36);
548 else {
549 p_sockaddr(sa, NULL, rtm->rtm_flags, 16);
550 sa = (struct sockaddr *)(ROUNDUP(sa->sa_len) + (char *)sa);
551 p_sockaddr(sa, NULL, 0, 18);
552 }

--- 17 unchanged lines hidden (view full) ---

570 printf("%-*.*s ", width, width, cp);
571 }
572}
573
574static const char *
575fmt_sockaddr(struct sockaddr *sa, struct sockaddr *mask, int flags)
576{
577 static char workbuf[128];
545 }
546 if (rtm->rtm_addrs == RTA_DST)
547 p_sockaddr(sa, NULL, 0, 36);
548 else {
549 p_sockaddr(sa, NULL, rtm->rtm_flags, 16);
550 sa = (struct sockaddr *)(ROUNDUP(sa->sa_len) + (char *)sa);
551 p_sockaddr(sa, NULL, 0, 18);
552 }

--- 17 unchanged lines hidden (view full) ---

570 printf("%-*.*s ", width, width, cp);
571 }
572}
573
574static const char *
575fmt_sockaddr(struct sockaddr *sa, struct sockaddr *mask, int flags)
576{
577 static char workbuf[128];
578 char *cplim;
579 char *cp = workbuf;
578 const char *cp;
580
581 switch(sa->sa_family) {
582 case AF_INET:
583 {
579
580 switch(sa->sa_family) {
581 case AF_INET:
582 {
584 register struct sockaddr_in *sin = (struct sockaddr_in *)sa;
583 struct sockaddr_in *sin = (struct sockaddr_in *)sa;
585
586 if ((sin->sin_addr.s_addr == INADDR_ANY) &&
587 mask &&
588 ntohl(((struct sockaddr_in *)mask)->sin_addr.s_addr)
589 ==0L)
590 cp = "default" ;
591 else if (flags & RTF_HOST)
592 cp = routename(sin->sin_addr.s_addr);

--- 60 unchanged lines hidden (view full) ---

653#ifdef NS
654 case AF_NS:
655 cp = ns_print(sa);
656 break;
657#endif
658
659 case AF_LINK:
660 {
584
585 if ((sin->sin_addr.s_addr == INADDR_ANY) &&
586 mask &&
587 ntohl(((struct sockaddr_in *)mask)->sin_addr.s_addr)
588 ==0L)
589 cp = "default" ;
590 else if (flags & RTF_HOST)
591 cp = routename(sin->sin_addr.s_addr);

--- 60 unchanged lines hidden (view full) ---

652#ifdef NS
653 case AF_NS:
654 cp = ns_print(sa);
655 break;
656#endif
657
658 case AF_LINK:
659 {
661 register struct sockaddr_dl *sdl = (struct sockaddr_dl *)sa;
660 struct sockaddr_dl *sdl = (struct sockaddr_dl *)sa;
662
663 if (sdl->sdl_nlen == 0 && sdl->sdl_alen == 0 &&
661
662 if (sdl->sdl_nlen == 0 && sdl->sdl_alen == 0 &&
664 sdl->sdl_slen == 0)
663 sdl->sdl_slen == 0) {
665 (void) sprintf(workbuf, "link#%d", sdl->sdl_index);
664 (void) sprintf(workbuf, "link#%d", sdl->sdl_index);
666 else
665 cp = workbuf;
666 } else
667 switch (sdl->sdl_type) {
668
669 case IFT_ETHER:
670 if (sdl->sdl_alen == ETHER_ADDR_LEN) {
671 cp = ether_ntoa((struct ether_addr *)
672 (sdl->sdl_data + sdl->sdl_nlen));
673 break;
674 }
675 /* FALLTHROUGH */
676 default:
677 cp = link_ntoa(sdl);
678 break;
679 }
680 break;
681 }
682
683 default:
684 {
667 switch (sdl->sdl_type) {
668
669 case IFT_ETHER:
670 if (sdl->sdl_alen == ETHER_ADDR_LEN) {
671 cp = ether_ntoa((struct ether_addr *)
672 (sdl->sdl_data + sdl->sdl_nlen));
673 break;
674 }
675 /* FALLTHROUGH */
676 default:
677 cp = link_ntoa(sdl);
678 break;
679 }
680 break;
681 }
682
683 default:
684 {
685 register u_char *s = (u_char *)sa->sa_data, *slim;
685 u_char *s = (u_char *)sa->sa_data, *slim;
686 char *cq, *cqlim;
686
687
688 cq = workbuf;
687 slim = sa->sa_len + (u_char *) sa;
689 slim = sa->sa_len + (u_char *) sa;
688 cplim = cp + sizeof(workbuf) - 6;
689 cp += sprintf(cp, "(%d)", sa->sa_family);
690 while (s < slim && cp < cplim) {
691 cp += sprintf(cp, " %02x", *s++);
690 cqlim = cq + sizeof(workbuf) - 6;
691 cq += sprintf(cq, "(%d)", sa->sa_family);
692 while (s < slim && cq < cqlim) {
693 cq += sprintf(cq, " %02x", *s++);
692 if (s < slim)
694 if (s < slim)
693 cp += sprintf(cp, "%02x", *s++);
695 cq += sprintf(cq, "%02x", *s++);
694 }
695 cp = workbuf;
696 }
697 }
698
699 return (cp);
700}
701
702static void
696 }
697 cp = workbuf;
698 }
699 }
700
701 return (cp);
702}
703
704static void
703p_flags(int f, char *format)
705p_flags(int f, const char *format)
704{
705 printf(format, fmt_flags(f));
706}
707
708static const char *
709fmt_flags(int f)
710{
711 static char name[33];

--- 66 unchanged lines hidden (view full) ---

778 printf(" =>");
779 }
780 putchar('\n');
781}
782
783char *
784routename(u_long in)
785{
706{
707 printf(format, fmt_flags(f));
708}
709
710static const char *
711fmt_flags(int f)
712{
713 static char name[33];

--- 66 unchanged lines hidden (view full) ---

780 printf(" =>");
781 }
782 putchar('\n');
783}
784
785char *
786routename(u_long in)
787{
786 register char *cp;
788 char *cp;
787 static char line[MAXHOSTNAMELEN];
788 struct hostent *hp;
789
790 cp = 0;
791 if (!numeric_addr) {
792 hp = gethostbyaddr((char *)&in, sizeof (struct in_addr),
793 AF_INET);
794 if (hp) {

--- 25 unchanged lines hidden (view full) ---

820 else
821 m = IN_CLASSC_NET;
822 return (m);
823}
824
825static void
826domask(char *dst, u_long addr, u_long mask)
827{
789 static char line[MAXHOSTNAMELEN];
790 struct hostent *hp;
791
792 cp = 0;
793 if (!numeric_addr) {
794 hp = gethostbyaddr((char *)&in, sizeof (struct in_addr),
795 AF_INET);
796 if (hp) {

--- 25 unchanged lines hidden (view full) ---

822 else
823 m = IN_CLASSC_NET;
824 return (m);
825}
826
827static void
828domask(char *dst, u_long addr, u_long mask)
829{
828 register int b, i;
830 int b, i;
829
830 if (!mask || (forgemask(addr) == mask)) {
831 *dst = '\0';
832 return;
833 }
834 i = 0;
835 for (b = 0; b < 32; b++)
836 if (mask & (1 << b)) {
831
832 if (!mask || (forgemask(addr) == mask)) {
833 *dst = '\0';
834 return;
835 }
836 i = 0;
837 for (b = 0; b < 32; b++)
838 if (mask & (1 << b)) {
837 register int bb;
839 int bb;
838
839 i = b;
840 for (bb = b+1; bb < 32; bb++)
841 if (!(mask & (1 << bb))) {
842 i = -1; /* noncontig */
843 break;
844 }
845 break;

--- 10 unchanged lines hidden (view full) ---

856 */
857char *
858netname(u_long in, u_long mask)
859{
860 char *cp = 0;
861 static char line[MAXHOSTNAMELEN];
862 struct netent *np = 0;
863 u_long dmask;
840
841 i = b;
842 for (bb = b+1; bb < 32; bb++)
843 if (!(mask & (1 << bb))) {
844 i = -1; /* noncontig */
845 break;
846 }
847 break;

--- 10 unchanged lines hidden (view full) ---

858 */
859char *
860netname(u_long in, u_long mask)
861{
862 char *cp = 0;
863 static char line[MAXHOSTNAMELEN];
864 struct netent *np = 0;
865 u_long dmask;
864 register u_long i;
866 u_long i;
865
866#define NSHIFT(m) ( \
867 (m) == IN_CLASSA_NET ? IN_CLASSA_NSHIFT : \
868 (m) == IN_CLASSB_NET ? IN_CLASSB_NSHIFT : \
869 (m) == IN_CLASSC_NET ? IN_CLASSC_NSHIFT : \
870 0)
871
872 i = ntohl(in);

--- 39 unchanged lines hidden (view full) ---

912 break;
913 }
914 }
915 domask(line + strlen(line), i, mask);
916 return (line);
917}
918
919#ifdef INET6
867
868#define NSHIFT(m) ( \
869 (m) == IN_CLASSA_NET ? IN_CLASSA_NSHIFT : \
870 (m) == IN_CLASSB_NET ? IN_CLASSB_NSHIFT : \
871 (m) == IN_CLASSC_NET ? IN_CLASSC_NSHIFT : \
872 0)
873
874 i = ntohl(in);

--- 39 unchanged lines hidden (view full) ---

914 break;
915 }
916 }
917 domask(line + strlen(line), i, mask);
918 return (line);
919}
920
921#ifdef INET6
920char *
922const char *
921netname6(struct sockaddr_in6 *sa6, struct in6_addr *mask)
922{
923 static char line[MAXHOSTNAMELEN];
924 u_char *p = (u_char *)mask;
925 u_char *lim;
926 int masklen, illegal = 0, flag = NI_WITHSCOPEID;
927
928 if (mask) {

--- 107 unchanged lines hidden (view full) ---

1036 rttrash, plural(rttrash));
1037}
1038
1039char *
1040ipx_print(struct sockaddr *sa)
1041{
1042 u_short port;
1043 struct servent *sp = 0;
923netname6(struct sockaddr_in6 *sa6, struct in6_addr *mask)
924{
925 static char line[MAXHOSTNAMELEN];
926 u_char *p = (u_char *)mask;
927 u_char *lim;
928 int masklen, illegal = 0, flag = NI_WITHSCOPEID;
929
930 if (mask) {

--- 107 unchanged lines hidden (view full) ---

1038 rttrash, plural(rttrash));
1039}
1040
1041char *
1042ipx_print(struct sockaddr *sa)
1043{
1044 u_short port;
1045 struct servent *sp = 0;
1044 char *net = "", *host = "";
1045 register char *p;
1046 register u_char *q;
1046 const char *net = "", *host = "";
1047 char *p;
1048 u_char *q;
1047 struct ipx_addr work = ((struct sockaddr_ipx *)sa)->sipx_addr;
1048 static char mybuf[50];
1049 char cport[10], chost[15], cnet[15];
1050
1051 port = ntohs(work.x_port);
1052
1053 if (ipx_nullnet(work) && ipx_nullhost(work)) {
1054

--- 48 unchanged lines hidden (view full) ---

1103
1104 snprintf(mybuf, sizeof(mybuf), "%s.%s%s", net, host, cport);
1105 return(mybuf);
1106}
1107
1108char *
1109ipx_phost(struct sockaddr *sa)
1110{
1049 struct ipx_addr work = ((struct sockaddr_ipx *)sa)->sipx_addr;
1050 static char mybuf[50];
1051 char cport[10], chost[15], cnet[15];
1052
1053 port = ntohs(work.x_port);
1054
1055 if (ipx_nullnet(work) && ipx_nullhost(work)) {
1056

--- 48 unchanged lines hidden (view full) ---

1105
1106 snprintf(mybuf, sizeof(mybuf), "%s.%s%s", net, host, cport);
1107 return(mybuf);
1108}
1109
1110char *
1111ipx_phost(struct sockaddr *sa)
1112{
1111 register struct sockaddr_ipx *sipx = (struct sockaddr_ipx *)sa;
1113 struct sockaddr_ipx *sipx = (struct sockaddr_ipx *)sa;
1112 struct sockaddr_ipx work;
1113 static union ipx_net ipx_zeronet;
1114 char *p;
1115 struct ipx_addr in;
1116
1117 work = *sipx;
1118 in = work.sipx_addr;
1119

--- 7 unchanged lines hidden (view full) ---

1127
1128#ifdef NS
1129short ns_nullh[] = {0,0,0};
1130short ns_bh[] = {-1,-1,-1};
1131
1132char *
1133ns_print(struct sockaddr *sa)
1134{
1114 struct sockaddr_ipx work;
1115 static union ipx_net ipx_zeronet;
1116 char *p;
1117 struct ipx_addr in;
1118
1119 work = *sipx;
1120 in = work.sipx_addr;
1121

--- 7 unchanged lines hidden (view full) ---

1129
1130#ifdef NS
1131short ns_nullh[] = {0,0,0};
1132short ns_bh[] = {-1,-1,-1};
1133
1134char *
1135ns_print(struct sockaddr *sa)
1136{
1135 register struct sockaddr_ns *sns = (struct sockaddr_ns*)sa;
1137 struct sockaddr_ns *sns = (struct sockaddr_ns*)sa;
1136 struct ns_addr work;
1137 union { union ns_net net_e; u_long long_e; } net;
1138 u_short port;
1139 static char mybuf[50], cport[10], chost[25];
1140 char *host = "";
1138 struct ns_addr work;
1139 union { union ns_net net_e; u_long long_e; } net;
1140 u_short port;
1141 static char mybuf[50], cport[10], chost[25];
1142 char *host = "";
1141 register char *p; register u_char *q;
1143 char *p; u_char *q;
1142
1143 work = sns->sns_addr;
1144 port = ntohs(work.x_port);
1145 work.x_port = 0;
1146 net.net_e = work.x_net;
1147 if (ns_nullhost(work) && net.long_e == 0) {
1148 if (port ) {
1149 sprintf(mybuf, "*.%xH", port);

--- 23 unchanged lines hidden (view full) ---

1173 sprintf(mybuf,"%xH.%s%s", ntohl(net.long_e), host, cport);
1174 upHex(mybuf);
1175 return(mybuf);
1176}
1177
1178char *
1179ns_phost(struct sockaddr *sa)
1180{
1144
1145 work = sns->sns_addr;
1146 port = ntohs(work.x_port);
1147 work.x_port = 0;
1148 net.net_e = work.x_net;
1149 if (ns_nullhost(work) && net.long_e == 0) {
1150 if (port ) {
1151 sprintf(mybuf, "*.%xH", port);

--- 23 unchanged lines hidden (view full) ---

1175 sprintf(mybuf,"%xH.%s%s", ntohl(net.long_e), host, cport);
1176 upHex(mybuf);
1177 return(mybuf);
1178}
1179
1180char *
1181ns_phost(struct sockaddr *sa)
1182{
1181 register struct sockaddr_ns *sns = (struct sockaddr_ns *)sa;
1183 struct sockaddr_ns *sns = (struct sockaddr_ns *)sa;
1182 struct sockaddr_ns work;
1183 static union ns_net ns_zeronet;
1184 char *p;
1185
1186 work = *sns;
1187 work.sns_addr.x_port = 0;
1188 work.sns_addr.x_net = ns_zeronet;
1189
1190 p = ns_print((struct sockaddr *)&work);
1191 if (strncmp("0H.", p, 3) == 0)
1192 p += 3;
1193 return(p);
1194}
1195#endif
1196
1197void
1198upHex(char *p0)
1199{
1184 struct sockaddr_ns work;
1185 static union ns_net ns_zeronet;
1186 char *p;
1187
1188 work = *sns;
1189 work.sns_addr.x_port = 0;
1190 work.sns_addr.x_net = ns_zeronet;
1191
1192 p = ns_print((struct sockaddr *)&work);
1193 if (strncmp("0H.", p, 3) == 0)
1194 p += 3;
1195 return(p);
1196}
1197#endif
1198
1199void
1200upHex(char *p0)
1201{
1200 register char *p = p0;
1202 char *p = p0;
1201
1202 for (; *p; p++)
1203 switch (*p) {
1204
1205 case 'a':
1206 case 'b':
1207 case 'c':
1208 case 'd':
1209 case 'e':
1210 case 'f':
1211 *p += ('A' - 'a');
1212 break;
1213 }
1214}
1203
1204 for (; *p; p++)
1205 switch (*p) {
1206
1207 case 'a':
1208 case 'b':
1209 case 'c':
1210 case 'd':
1211 case 'e':
1212 case 'f':
1213 *p += ('A' - 'a');
1214 break;
1215 }
1216}