Changeset 718dc95 in rtems
- Timestamp:
- 09/21/98 00:46:00 (25 years ago)
- Branches:
- 4.10, 4.11, 4.8, 4.9, 5, master
- Children:
- e62488d
- Parents:
- 7ddcfb8c
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
c/src/exec/libnetworking/rtems/rtems_showroute.c
r7ddcfb8c r718dc95 17 17 18 18 #include <net/if.h> 19 #include <net/if_dl.h> 19 20 #include <net/route.h> 20 21 21 22 #include <netinet/in.h> 23 24 #include <arpa/inet.h> 22 25 23 26 /* … … 26 29 #undef malloc 27 30 #undef free 31 28 32 /* 29 33 * Information per route 30 34 */ 31 35 struct rinfo { 32 struct in_addr dst; 33 struct in_addr gw_mask; 36 struct sockaddr dst; 37 union { 38 struct sockaddr sa; 39 struct sockaddr_in sin; 40 struct sockaddr_dl sdl; 41 } un; 34 42 unsigned long pksent; 35 43 unsigned long expire; … … 48 56 struct rinfo *routes; 49 57 }; 58 59 /* 60 * Copy address 61 */ 62 static void 63 copyAddress (void *to, void *from, int tolen) 64 { 65 int ncopy; 66 struct sockaddr dummy; 67 68 if (from == NULL) { 69 /* 70 * Create a fake address of unspecified type 71 */ 72 from = &dummy; 73 dummy.sa_len = 4; 74 dummy.sa_family = AF_UNSPEC; 75 } 76 ncopy = ((struct sockaddr *)from)->sa_len; 77 if (ncopy > tolen) 78 ncopy = tolen; 79 memcpy (to, from, ncopy); 80 } 50 81 51 82 /* … … 79 110 * Fill in the route info structure 80 111 */ 81 r->dst = ((struct sockaddr_in *)rt_key(rt))->sin_addr; 82 if (rt->rt_flags & RTF_GATEWAY) 83 r->gw_mask = ((struct sockaddr_in *)rt->rt_gateway)->sin_addr; 84 else if (!(rt->rt_flags & RTF_HOST)) 85 r->gw_mask = ((struct sockaddr_in *)rt_mask(rt))->sin_addr; 112 copyAddress (&r->dst, rt_key(rt), sizeof r->dst); 113 if (rt->rt_flags & (RTF_GATEWAY | RTF_HOST)) { 114 copyAddress (&r->un, rt->rt_gateway, sizeof r->un); 115 } 116 else { 117 /* 118 * Create a fake address to hold the mask 119 */ 120 struct sockaddr_in dummy; 121 122 dummy.sin_family = AF_INET; 123 dummy.sin_len = sizeof dummy; 124 dummy.sin_addr = ((struct sockaddr_in *)rt_mask(rt))->sin_addr; 125 copyAddress (&r->un, &dummy, sizeof r->un); 126 } 86 127 r->flags = rt->rt_flags; 87 128 r->refcnt = rt->rt_refcnt; … … 95 136 96 137 /* 97 * Reentrant version of inet_ntoa 98 */ 99 char * 100 inet_ntoa_r (struct in_addr ina, char *buf) 101 { 102 unsigned char *ucp = (unsigned char *)&ina; 103 104 sprintf (buf, "%d.%d.%d.%d", 105 ucp[0] & 0xff, 106 ucp[1] & 0xff, 107 ucp[2] & 0xff, 108 ucp[3] & 0xff); 109 return buf; 110 } 111 138 * Convert link address to ASCII 139 */ 140 static char * 141 link_ascii (struct sockaddr_dl *sdl, char *buf, int bufsize) 142 { 143 char *cp; 144 int i; 145 int first = 1; 146 int nleft = sdl->sdl_alen; 147 unsigned char *ap = LLADDR (sdl); 148 static const char hextab[16] = "0123456789ABCDEF"; 149 150 cp = buf; 151 while (nleft && (bufsize > 4)) { 152 if (first) { 153 first = 0; 154 } 155 else { 156 *cp++ = ':'; 157 bufsize--; 158 } 159 i = *ap++; 160 *cp++ = hextab[(i >> 4) & 0xf]; 161 *cp++ = hextab[i & 0xf]; 162 nleft--; 163 bufsize -= 2; 164 } 165 *cp = '\0'; 166 return buf; 167 } 168 112 169 void 113 170 rtems_bsdnet_show_inet_routes (void) … … 118 175 int i, error; 119 176 177 /* 178 * For now we'll handle only AF_INET 179 */ 120 180 rnh = rt_tables[AF_INET]; 121 181 if (!rnh) … … 134 194 return; 135 195 } 136 printf ("Destination Gateway/Mask Flags Refs Use Expire Interface\n");196 printf ("Destination Gateway/Mask/Hw Flags Refs Use Expire Interface\n"); 137 197 for (i = 0, r = d.routes ; i < d.count ; i++, r++) { 138 198 char buf[30]; 139 199 char *cp, *fc, flagbuf[10]; 200 const char *addr; 140 201 unsigned long flagbit; 141 142 if (r->dst.s_addr == INADDR_ANY) 143 cp = "default"; 202 struct sockaddr_in *sin; 203 204 sin = (struct sockaddr_in *)&r->dst; 205 if (sin->sin_addr.s_addr == INADDR_ANY) 206 addr = "default"; 144 207 else 145 cp = inet_ntoa_r (r->dst, buf); 146 printf ("%-16s", cp); 147 if (!(r->flags & RTF_HOST)) 148 cp = inet_ntoa_r (r->gw_mask, buf); 149 else 150 cp = ""; 151 printf ("%-16s", cp); 208 addr = inet_ntop (AF_INET, &sin->sin_addr, buf, sizeof buf); 209 printf ("%-16s", addr); 210 switch (r->un.sa.sa_family) { 211 case AF_INET: 212 addr = inet_ntop (AF_INET, &r->un.sin.sin_addr, buf, sizeof buf); 213 break; 214 215 case AF_LINK: 216 addr = link_ascii (&r->un.sdl, buf, sizeof buf); 217 break; 218 219 default: 220 addr = ""; 221 break; 222 } 223 printf ("%-19s", addr); 152 224 fc = "UGHRDM XLS"; 153 225 for (flagbit = 0x1, cp = flagbuf ; *fc ; flagbit <<= 1, fc++) { -
c/src/lib/libnetworking/rtems/rtems_showroute.c
r7ddcfb8c r718dc95 17 17 18 18 #include <net/if.h> 19 #include <net/if_dl.h> 19 20 #include <net/route.h> 20 21 21 22 #include <netinet/in.h> 23 24 #include <arpa/inet.h> 22 25 23 26 /* … … 26 29 #undef malloc 27 30 #undef free 31 28 32 /* 29 33 * Information per route 30 34 */ 31 35 struct rinfo { 32 struct in_addr dst; 33 struct in_addr gw_mask; 36 struct sockaddr dst; 37 union { 38 struct sockaddr sa; 39 struct sockaddr_in sin; 40 struct sockaddr_dl sdl; 41 } un; 34 42 unsigned long pksent; 35 43 unsigned long expire; … … 48 56 struct rinfo *routes; 49 57 }; 58 59 /* 60 * Copy address 61 */ 62 static void 63 copyAddress (void *to, void *from, int tolen) 64 { 65 int ncopy; 66 struct sockaddr dummy; 67 68 if (from == NULL) { 69 /* 70 * Create a fake address of unspecified type 71 */ 72 from = &dummy; 73 dummy.sa_len = 4; 74 dummy.sa_family = AF_UNSPEC; 75 } 76 ncopy = ((struct sockaddr *)from)->sa_len; 77 if (ncopy > tolen) 78 ncopy = tolen; 79 memcpy (to, from, ncopy); 80 } 50 81 51 82 /* … … 79 110 * Fill in the route info structure 80 111 */ 81 r->dst = ((struct sockaddr_in *)rt_key(rt))->sin_addr; 82 if (rt->rt_flags & RTF_GATEWAY) 83 r->gw_mask = ((struct sockaddr_in *)rt->rt_gateway)->sin_addr; 84 else if (!(rt->rt_flags & RTF_HOST)) 85 r->gw_mask = ((struct sockaddr_in *)rt_mask(rt))->sin_addr; 112 copyAddress (&r->dst, rt_key(rt), sizeof r->dst); 113 if (rt->rt_flags & (RTF_GATEWAY | RTF_HOST)) { 114 copyAddress (&r->un, rt->rt_gateway, sizeof r->un); 115 } 116 else { 117 /* 118 * Create a fake address to hold the mask 119 */ 120 struct sockaddr_in dummy; 121 122 dummy.sin_family = AF_INET; 123 dummy.sin_len = sizeof dummy; 124 dummy.sin_addr = ((struct sockaddr_in *)rt_mask(rt))->sin_addr; 125 copyAddress (&r->un, &dummy, sizeof r->un); 126 } 86 127 r->flags = rt->rt_flags; 87 128 r->refcnt = rt->rt_refcnt; … … 95 136 96 137 /* 97 * Reentrant version of inet_ntoa 98 */ 99 char * 100 inet_ntoa_r (struct in_addr ina, char *buf) 101 { 102 unsigned char *ucp = (unsigned char *)&ina; 103 104 sprintf (buf, "%d.%d.%d.%d", 105 ucp[0] & 0xff, 106 ucp[1] & 0xff, 107 ucp[2] & 0xff, 108 ucp[3] & 0xff); 109 return buf; 110 } 111 138 * Convert link address to ASCII 139 */ 140 static char * 141 link_ascii (struct sockaddr_dl *sdl, char *buf, int bufsize) 142 { 143 char *cp; 144 int i; 145 int first = 1; 146 int nleft = sdl->sdl_alen; 147 unsigned char *ap = LLADDR (sdl); 148 static const char hextab[16] = "0123456789ABCDEF"; 149 150 cp = buf; 151 while (nleft && (bufsize > 4)) { 152 if (first) { 153 first = 0; 154 } 155 else { 156 *cp++ = ':'; 157 bufsize--; 158 } 159 i = *ap++; 160 *cp++ = hextab[(i >> 4) & 0xf]; 161 *cp++ = hextab[i & 0xf]; 162 nleft--; 163 bufsize -= 2; 164 } 165 *cp = '\0'; 166 return buf; 167 } 168 112 169 void 113 170 rtems_bsdnet_show_inet_routes (void) … … 118 175 int i, error; 119 176 177 /* 178 * For now we'll handle only AF_INET 179 */ 120 180 rnh = rt_tables[AF_INET]; 121 181 if (!rnh) … … 134 194 return; 135 195 } 136 printf ("Destination Gateway/Mask Flags Refs Use Expire Interface\n");196 printf ("Destination Gateway/Mask/Hw Flags Refs Use Expire Interface\n"); 137 197 for (i = 0, r = d.routes ; i < d.count ; i++, r++) { 138 198 char buf[30]; 139 199 char *cp, *fc, flagbuf[10]; 200 const char *addr; 140 201 unsigned long flagbit; 141 142 if (r->dst.s_addr == INADDR_ANY) 143 cp = "default"; 202 struct sockaddr_in *sin; 203 204 sin = (struct sockaddr_in *)&r->dst; 205 if (sin->sin_addr.s_addr == INADDR_ANY) 206 addr = "default"; 144 207 else 145 cp = inet_ntoa_r (r->dst, buf); 146 printf ("%-16s", cp); 147 if (!(r->flags & RTF_HOST)) 148 cp = inet_ntoa_r (r->gw_mask, buf); 149 else 150 cp = ""; 151 printf ("%-16s", cp); 208 addr = inet_ntop (AF_INET, &sin->sin_addr, buf, sizeof buf); 209 printf ("%-16s", addr); 210 switch (r->un.sa.sa_family) { 211 case AF_INET: 212 addr = inet_ntop (AF_INET, &r->un.sin.sin_addr, buf, sizeof buf); 213 break; 214 215 case AF_LINK: 216 addr = link_ascii (&r->un.sdl, buf, sizeof buf); 217 break; 218 219 default: 220 addr = ""; 221 break; 222 } 223 printf ("%-19s", addr); 152 224 fc = "UGHRDM XLS"; 153 225 for (flagbit = 0x1, cp = flagbuf ; *fc ; flagbit <<= 1, fc++) { -
c/src/libnetworking/rtems/rtems_showroute.c
r7ddcfb8c r718dc95 17 17 18 18 #include <net/if.h> 19 #include <net/if_dl.h> 19 20 #include <net/route.h> 20 21 21 22 #include <netinet/in.h> 23 24 #include <arpa/inet.h> 22 25 23 26 /* … … 26 29 #undef malloc 27 30 #undef free 31 28 32 /* 29 33 * Information per route 30 34 */ 31 35 struct rinfo { 32 struct in_addr dst; 33 struct in_addr gw_mask; 36 struct sockaddr dst; 37 union { 38 struct sockaddr sa; 39 struct sockaddr_in sin; 40 struct sockaddr_dl sdl; 41 } un; 34 42 unsigned long pksent; 35 43 unsigned long expire; … … 48 56 struct rinfo *routes; 49 57 }; 58 59 /* 60 * Copy address 61 */ 62 static void 63 copyAddress (void *to, void *from, int tolen) 64 { 65 int ncopy; 66 struct sockaddr dummy; 67 68 if (from == NULL) { 69 /* 70 * Create a fake address of unspecified type 71 */ 72 from = &dummy; 73 dummy.sa_len = 4; 74 dummy.sa_family = AF_UNSPEC; 75 } 76 ncopy = ((struct sockaddr *)from)->sa_len; 77 if (ncopy > tolen) 78 ncopy = tolen; 79 memcpy (to, from, ncopy); 80 } 50 81 51 82 /* … … 79 110 * Fill in the route info structure 80 111 */ 81 r->dst = ((struct sockaddr_in *)rt_key(rt))->sin_addr; 82 if (rt->rt_flags & RTF_GATEWAY) 83 r->gw_mask = ((struct sockaddr_in *)rt->rt_gateway)->sin_addr; 84 else if (!(rt->rt_flags & RTF_HOST)) 85 r->gw_mask = ((struct sockaddr_in *)rt_mask(rt))->sin_addr; 112 copyAddress (&r->dst, rt_key(rt), sizeof r->dst); 113 if (rt->rt_flags & (RTF_GATEWAY | RTF_HOST)) { 114 copyAddress (&r->un, rt->rt_gateway, sizeof r->un); 115 } 116 else { 117 /* 118 * Create a fake address to hold the mask 119 */ 120 struct sockaddr_in dummy; 121 122 dummy.sin_family = AF_INET; 123 dummy.sin_len = sizeof dummy; 124 dummy.sin_addr = ((struct sockaddr_in *)rt_mask(rt))->sin_addr; 125 copyAddress (&r->un, &dummy, sizeof r->un); 126 } 86 127 r->flags = rt->rt_flags; 87 128 r->refcnt = rt->rt_refcnt; … … 95 136 96 137 /* 97 * Reentrant version of inet_ntoa 98 */ 99 char * 100 inet_ntoa_r (struct in_addr ina, char *buf) 101 { 102 unsigned char *ucp = (unsigned char *)&ina; 103 104 sprintf (buf, "%d.%d.%d.%d", 105 ucp[0] & 0xff, 106 ucp[1] & 0xff, 107 ucp[2] & 0xff, 108 ucp[3] & 0xff); 109 return buf; 110 } 111 138 * Convert link address to ASCII 139 */ 140 static char * 141 link_ascii (struct sockaddr_dl *sdl, char *buf, int bufsize) 142 { 143 char *cp; 144 int i; 145 int first = 1; 146 int nleft = sdl->sdl_alen; 147 unsigned char *ap = LLADDR (sdl); 148 static const char hextab[16] = "0123456789ABCDEF"; 149 150 cp = buf; 151 while (nleft && (bufsize > 4)) { 152 if (first) { 153 first = 0; 154 } 155 else { 156 *cp++ = ':'; 157 bufsize--; 158 } 159 i = *ap++; 160 *cp++ = hextab[(i >> 4) & 0xf]; 161 *cp++ = hextab[i & 0xf]; 162 nleft--; 163 bufsize -= 2; 164 } 165 *cp = '\0'; 166 return buf; 167 } 168 112 169 void 113 170 rtems_bsdnet_show_inet_routes (void) … … 118 175 int i, error; 119 176 177 /* 178 * For now we'll handle only AF_INET 179 */ 120 180 rnh = rt_tables[AF_INET]; 121 181 if (!rnh) … … 134 194 return; 135 195 } 136 printf ("Destination Gateway/Mask Flags Refs Use Expire Interface\n");196 printf ("Destination Gateway/Mask/Hw Flags Refs Use Expire Interface\n"); 137 197 for (i = 0, r = d.routes ; i < d.count ; i++, r++) { 138 198 char buf[30]; 139 199 char *cp, *fc, flagbuf[10]; 200 const char *addr; 140 201 unsigned long flagbit; 141 142 if (r->dst.s_addr == INADDR_ANY) 143 cp = "default"; 202 struct sockaddr_in *sin; 203 204 sin = (struct sockaddr_in *)&r->dst; 205 if (sin->sin_addr.s_addr == INADDR_ANY) 206 addr = "default"; 144 207 else 145 cp = inet_ntoa_r (r->dst, buf); 146 printf ("%-16s", cp); 147 if (!(r->flags & RTF_HOST)) 148 cp = inet_ntoa_r (r->gw_mask, buf); 149 else 150 cp = ""; 151 printf ("%-16s", cp); 208 addr = inet_ntop (AF_INET, &sin->sin_addr, buf, sizeof buf); 209 printf ("%-16s", addr); 210 switch (r->un.sa.sa_family) { 211 case AF_INET: 212 addr = inet_ntop (AF_INET, &r->un.sin.sin_addr, buf, sizeof buf); 213 break; 214 215 case AF_LINK: 216 addr = link_ascii (&r->un.sdl, buf, sizeof buf); 217 break; 218 219 default: 220 addr = ""; 221 break; 222 } 223 printf ("%-19s", addr); 152 224 fc = "UGHRDM XLS"; 153 225 for (flagbit = 0x1, cp = flagbuf ; *fc ; flagbit <<= 1, fc++) { -
cpukit/libnetworking/rtems/rtems_showroute.c
r7ddcfb8c r718dc95 17 17 18 18 #include <net/if.h> 19 #include <net/if_dl.h> 19 20 #include <net/route.h> 20 21 21 22 #include <netinet/in.h> 23 24 #include <arpa/inet.h> 22 25 23 26 /* … … 26 29 #undef malloc 27 30 #undef free 31 28 32 /* 29 33 * Information per route 30 34 */ 31 35 struct rinfo { 32 struct in_addr dst; 33 struct in_addr gw_mask; 36 struct sockaddr dst; 37 union { 38 struct sockaddr sa; 39 struct sockaddr_in sin; 40 struct sockaddr_dl sdl; 41 } un; 34 42 unsigned long pksent; 35 43 unsigned long expire; … … 48 56 struct rinfo *routes; 49 57 }; 58 59 /* 60 * Copy address 61 */ 62 static void 63 copyAddress (void *to, void *from, int tolen) 64 { 65 int ncopy; 66 struct sockaddr dummy; 67 68 if (from == NULL) { 69 /* 70 * Create a fake address of unspecified type 71 */ 72 from = &dummy; 73 dummy.sa_len = 4; 74 dummy.sa_family = AF_UNSPEC; 75 } 76 ncopy = ((struct sockaddr *)from)->sa_len; 77 if (ncopy > tolen) 78 ncopy = tolen; 79 memcpy (to, from, ncopy); 80 } 50 81 51 82 /* … … 79 110 * Fill in the route info structure 80 111 */ 81 r->dst = ((struct sockaddr_in *)rt_key(rt))->sin_addr; 82 if (rt->rt_flags & RTF_GATEWAY) 83 r->gw_mask = ((struct sockaddr_in *)rt->rt_gateway)->sin_addr; 84 else if (!(rt->rt_flags & RTF_HOST)) 85 r->gw_mask = ((struct sockaddr_in *)rt_mask(rt))->sin_addr; 112 copyAddress (&r->dst, rt_key(rt), sizeof r->dst); 113 if (rt->rt_flags & (RTF_GATEWAY | RTF_HOST)) { 114 copyAddress (&r->un, rt->rt_gateway, sizeof r->un); 115 } 116 else { 117 /* 118 * Create a fake address to hold the mask 119 */ 120 struct sockaddr_in dummy; 121 122 dummy.sin_family = AF_INET; 123 dummy.sin_len = sizeof dummy; 124 dummy.sin_addr = ((struct sockaddr_in *)rt_mask(rt))->sin_addr; 125 copyAddress (&r->un, &dummy, sizeof r->un); 126 } 86 127 r->flags = rt->rt_flags; 87 128 r->refcnt = rt->rt_refcnt; … … 95 136 96 137 /* 97 * Reentrant version of inet_ntoa 98 */ 99 char * 100 inet_ntoa_r (struct in_addr ina, char *buf) 101 { 102 unsigned char *ucp = (unsigned char *)&ina; 103 104 sprintf (buf, "%d.%d.%d.%d", 105 ucp[0] & 0xff, 106 ucp[1] & 0xff, 107 ucp[2] & 0xff, 108 ucp[3] & 0xff); 109 return buf; 110 } 111 138 * Convert link address to ASCII 139 */ 140 static char * 141 link_ascii (struct sockaddr_dl *sdl, char *buf, int bufsize) 142 { 143 char *cp; 144 int i; 145 int first = 1; 146 int nleft = sdl->sdl_alen; 147 unsigned char *ap = LLADDR (sdl); 148 static const char hextab[16] = "0123456789ABCDEF"; 149 150 cp = buf; 151 while (nleft && (bufsize > 4)) { 152 if (first) { 153 first = 0; 154 } 155 else { 156 *cp++ = ':'; 157 bufsize--; 158 } 159 i = *ap++; 160 *cp++ = hextab[(i >> 4) & 0xf]; 161 *cp++ = hextab[i & 0xf]; 162 nleft--; 163 bufsize -= 2; 164 } 165 *cp = '\0'; 166 return buf; 167 } 168 112 169 void 113 170 rtems_bsdnet_show_inet_routes (void) … … 118 175 int i, error; 119 176 177 /* 178 * For now we'll handle only AF_INET 179 */ 120 180 rnh = rt_tables[AF_INET]; 121 181 if (!rnh) … … 134 194 return; 135 195 } 136 printf ("Destination Gateway/Mask Flags Refs Use Expire Interface\n");196 printf ("Destination Gateway/Mask/Hw Flags Refs Use Expire Interface\n"); 137 197 for (i = 0, r = d.routes ; i < d.count ; i++, r++) { 138 198 char buf[30]; 139 199 char *cp, *fc, flagbuf[10]; 200 const char *addr; 140 201 unsigned long flagbit; 141 142 if (r->dst.s_addr == INADDR_ANY) 143 cp = "default"; 202 struct sockaddr_in *sin; 203 204 sin = (struct sockaddr_in *)&r->dst; 205 if (sin->sin_addr.s_addr == INADDR_ANY) 206 addr = "default"; 144 207 else 145 cp = inet_ntoa_r (r->dst, buf); 146 printf ("%-16s", cp); 147 if (!(r->flags & RTF_HOST)) 148 cp = inet_ntoa_r (r->gw_mask, buf); 149 else 150 cp = ""; 151 printf ("%-16s", cp); 208 addr = inet_ntop (AF_INET, &sin->sin_addr, buf, sizeof buf); 209 printf ("%-16s", addr); 210 switch (r->un.sa.sa_family) { 211 case AF_INET: 212 addr = inet_ntop (AF_INET, &r->un.sin.sin_addr, buf, sizeof buf); 213 break; 214 215 case AF_LINK: 216 addr = link_ascii (&r->un.sdl, buf, sizeof buf); 217 break; 218 219 default: 220 addr = ""; 221 break; 222 } 223 printf ("%-19s", addr); 152 224 fc = "UGHRDM XLS"; 153 225 for (flagbit = 0x1, cp = flagbuf ; *fc ; flagbit <<= 1, fc++) {
Note: See TracChangeset
for help on using the changeset viewer.