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} |