diff options
author | Glenn L McGrath <bug1@ihug.co.nz> | 2002-08-22 18:24:43 +0000 |
---|---|---|
committer | Glenn L McGrath <bug1@ihug.co.nz> | 2002-08-22 18:24:43 +0000 |
commit | 7c58e9be69b2a3f52977879b1a300579c9914b29 (patch) | |
tree | a3d67beb9b866735d55918322e6d85dcf9d3245d | |
parent | baf55a85fc08ddad71b43a2348fd4f58338be83f (diff) | |
download | busybox-w32-7c58e9be69b2a3f52977879b1a300579c9914b29.tar.gz busybox-w32-7c58e9be69b2a3f52977879b1a300579c9914b29.tar.bz2 busybox-w32-7c58e9be69b2a3f52977879b1a300579c9914b29.zip |
Run through indent, fix comment
-rw-r--r-- | networking/route.c | 337 |
1 files changed, 174 insertions, 163 deletions
diff --git a/networking/route.c b/networking/route.c index 76e76b4b7..5c4ce8ca3 100644 --- a/networking/route.c +++ b/networking/route.c | |||
@@ -15,7 +15,7 @@ | |||
15 | * Foundation; either version 2 of the License, or (at | 15 | * Foundation; either version 2 of the License, or (at |
16 | * your option) any later version. | 16 | * your option) any later version. |
17 | * | 17 | * |
18 | * $Id: route.c,v 1.17 2002/07/03 11:46:34 andersen Exp $ | 18 | * $Id: route.c,v 1.18 2002/08/22 18:24:43 bug1 Exp $ |
19 | * | 19 | * |
20 | * displayroute() code added by Vladimir N. Oleynik <dzo@simtreas.ru> | 20 | * displayroute() code added by Vladimir N. Oleynik <dzo@simtreas.ru> |
21 | * adjustments by Larry Doolittle <LRDoolittle@lbl.gov> | 21 | * adjustments by Larry Doolittle <LRDoolittle@lbl.gov> |
@@ -28,7 +28,7 @@ | |||
28 | #include "inet_common.h" | 28 | #include "inet_common.h" |
29 | #include <net/route.h> | 29 | #include <net/route.h> |
30 | #include <net/if.h> | 30 | #include <net/if.h> |
31 | #include <linux/param.h> // HZ | 31 | #include <linux/param.h> /* HZ */ |
32 | #include <stdio.h> | 32 | #include <stdio.h> |
33 | #include <errno.h> | 33 | #include <errno.h> |
34 | #include <fcntl.h> | 34 | #include <fcntl.h> |
@@ -56,13 +56,13 @@ | |||
56 | #define E_INTERN 2 | 56 | #define E_INTERN 2 |
57 | #define E_NOSUPP 1 | 57 | #define E_NOSUPP 1 |
58 | 58 | ||
59 | #if defined (SIOCADDRTOLD) || defined (RTF_IRTT) /* route */ | 59 | #if defined (SIOCADDRTOLD) || defined (RTF_IRTT) /* route */ |
60 | #define HAVE_NEW_ADDRT 1 | 60 | #define HAVE_NEW_ADDRT 1 |
61 | #endif | 61 | #endif |
62 | #ifdef RTF_IRTT /* route */ | 62 | #ifdef RTF_IRTT /* route */ |
63 | #define HAVE_RTF_IRTT 1 | 63 | #define HAVE_RTF_IRTT 1 |
64 | #endif | 64 | #endif |
65 | #ifdef RTF_REJECT /* route */ | 65 | #ifdef RTF_REJECT /* route */ |
66 | #define HAVE_RTF_REJECT 1 | 66 | #define HAVE_RTF_REJECT 1 |
67 | #endif | 67 | #endif |
68 | 68 | ||
@@ -78,8 +78,7 @@ | |||
78 | 78 | ||
79 | /* add or delete a route depending on action */ | 79 | /* add or delete a route depending on action */ |
80 | 80 | ||
81 | static int | 81 | static int INET_setroute(int action, int options, char **args) |
82 | INET_setroute(int action, int options, char **args) | ||
83 | { | 82 | { |
84 | struct rtentry rt; | 83 | struct rtentry rt; |
85 | char target[128], gateway[128] = "NONE"; | 84 | char target[128], gateway[128] = "NONE"; |
@@ -90,38 +89,40 @@ INET_setroute(int action, int options, char **args) | |||
90 | xflag = 0; | 89 | xflag = 0; |
91 | 90 | ||
92 | if (*args == NULL) | 91 | if (*args == NULL) |
93 | show_usage(); | 92 | show_usage(); |
94 | if (strcmp(*args, "-net")==0) { | 93 | if (strcmp(*args, "-net") == 0) { |
95 | xflag = 1; | 94 | xflag = 1; |
96 | args++; | 95 | args++; |
97 | } else if (strcmp(*args, "-host")==0) { | 96 | } else if (strcmp(*args, "-host") == 0) { |
98 | xflag = 2; | 97 | xflag = 2; |
99 | args++; | 98 | args++; |
100 | } | 99 | } |
101 | if (*args == NULL) | 100 | if (*args == NULL) |
102 | show_usage(); | 101 | show_usage(); |
103 | safe_strncpy(target, *args++, (sizeof target)); | 102 | safe_strncpy(target, *args++, (sizeof target)); |
104 | 103 | ||
105 | /* Clean out the RTREQ structure. */ | 104 | /* Clean out the RTREQ structure. */ |
106 | memset((char *) &rt, 0, sizeof(struct rtentry)); | 105 | memset((char *) &rt, 0, sizeof(struct rtentry)); |
107 | 106 | ||
108 | 107 | ||
109 | if ((isnet = INET_resolve(target, (struct sockaddr_in *)&rt.rt_dst, xflag!=1)) < 0) { | 108 | if ((isnet = |
109 | INET_resolve(target, (struct sockaddr_in *) &rt.rt_dst, | ||
110 | xflag != 1)) < 0) { | ||
110 | error_msg(_("can't resolve %s"), target); | 111 | error_msg(_("can't resolve %s"), target); |
111 | return EXIT_FAILURE; /* XXX change to E_something */ | 112 | return EXIT_FAILURE; /* XXX change to E_something */ |
112 | } | 113 | } |
113 | 114 | ||
114 | switch (xflag) { | 115 | switch (xflag) { |
115 | case 1: | 116 | case 1: |
116 | isnet = 1; | 117 | isnet = 1; |
117 | break; | 118 | break; |
118 | 119 | ||
119 | case 2: | 120 | case 2: |
120 | isnet = 0; | 121 | isnet = 0; |
121 | break; | 122 | break; |
122 | 123 | ||
123 | default: | 124 | default: |
124 | break; | 125 | break; |
125 | } | 126 | } |
126 | 127 | ||
127 | /* Fill in the other fields. */ | 128 | /* Fill in the other fields. */ |
@@ -130,7 +131,7 @@ INET_setroute(int action, int options, char **args) | |||
130 | rt.rt_flags &= ~RTF_HOST; | 131 | rt.rt_flags &= ~RTF_HOST; |
131 | 132 | ||
132 | while (*args) { | 133 | while (*args) { |
133 | if (strcmp(*args, "metric")==0) { | 134 | if (strcmp(*args, "metric") == 0) { |
134 | int metric; | 135 | int metric; |
135 | 136 | ||
136 | args++; | 137 | args++; |
@@ -140,20 +141,22 @@ INET_setroute(int action, int options, char **args) | |||
140 | #if HAVE_NEW_ADDRT | 141 | #if HAVE_NEW_ADDRT |
141 | rt.rt_metric = metric + 1; | 142 | rt.rt_metric = metric + 1; |
142 | #else | 143 | #else |
143 | ENOSUPP("inet_setroute", "NEW_ADDRT (metric)"); /* XXX Fixme */ | 144 | ENOSUPP("inet_setroute", "NEW_ADDRT (metric)"); /* XXX Fixme */ |
144 | #endif | 145 | #endif |
145 | args++; | 146 | args++; |
146 | continue; | 147 | continue; |
147 | } | 148 | } |
148 | 149 | ||
149 | if (strcmp(*args, "netmask")==0) { | 150 | if (strcmp(*args, "netmask") == 0) { |
150 | struct sockaddr mask; | 151 | struct sockaddr mask; |
151 | 152 | ||
152 | args++; | 153 | args++; |
153 | if (!*args || mask_in_addr(rt)) | 154 | if (!*args || mask_in_addr(rt)) |
154 | show_usage(); | 155 | show_usage(); |
155 | netmask = *args; | 156 | netmask = *args; |
156 | if ((isnet = INET_resolve(netmask, (struct sockaddr_in *)&mask, 0)) < 0) { | 157 | if ((isnet = |
158 | INET_resolve(netmask, (struct sockaddr_in *) &mask, | ||
159 | 0)) < 0) { | ||
157 | error_msg(_("can't resolve netmask %s"), netmask); | 160 | error_msg(_("can't resolve netmask %s"), netmask); |
158 | return E_LOOKUP; | 161 | return E_LOOKUP; |
159 | } | 162 | } |
@@ -162,21 +165,21 @@ INET_setroute(int action, int options, char **args) | |||
162 | continue; | 165 | continue; |
163 | } | 166 | } |
164 | 167 | ||
165 | if (strcmp(*args, "gw")==0 || strcmp(*args, "gateway")==0) { | 168 | if (strcmp(*args, "gw") == 0 || strcmp(*args, "gateway") == 0) { |
166 | args++; | 169 | args++; |
167 | if (!*args) | 170 | if (!*args) |
168 | show_usage(); | 171 | show_usage(); |
169 | if (rt.rt_flags & RTF_GATEWAY) | 172 | if (rt.rt_flags & RTF_GATEWAY) |
170 | show_usage(); | 173 | show_usage(); |
171 | safe_strncpy(gateway, *args, (sizeof gateway)); | 174 | safe_strncpy(gateway, *args, (sizeof gateway)); |
172 | if ((isnet = INET_resolve(gateway, (struct sockaddr_in *)&rt.rt_gateway, 1)) < 0) { | 175 | if ((isnet = |
176 | INET_resolve(gateway, (struct sockaddr_in *) &rt.rt_gateway, | ||
177 | 1)) < 0) { | ||
173 | error_msg(_("can't resolve gw %s"), gateway); | 178 | error_msg(_("can't resolve gw %s"), gateway); |
174 | return E_LOOKUP; | 179 | return E_LOOKUP; |
175 | } | 180 | } |
176 | if (isnet) { | 181 | if (isnet) { |
177 | error_msg( | 182 | error_msg(_("%s: cannot use a NETWORK as gateway!"), gateway); |
178 | _("%s: cannot use a NETWORK as gateway!"), | ||
179 | gateway); | ||
180 | return E_OPTERR; | 183 | return E_OPTERR; |
181 | } | 184 | } |
182 | rt.rt_flags |= RTF_GATEWAY; | 185 | rt.rt_flags |= RTF_GATEWAY; |
@@ -184,7 +187,7 @@ INET_setroute(int action, int options, char **args) | |||
184 | continue; | 187 | continue; |
185 | } | 188 | } |
186 | 189 | ||
187 | if (strcmp(*args, "mss")==0) { | 190 | if (strcmp(*args, "mss") == 0) { |
188 | args++; | 191 | args++; |
189 | rt.rt_flags |= RTF_MSS; | 192 | rt.rt_flags |= RTF_MSS; |
190 | if (!*args) | 193 | if (!*args) |
@@ -198,7 +201,7 @@ INET_setroute(int action, int options, char **args) | |||
198 | continue; | 201 | continue; |
199 | } | 202 | } |
200 | 203 | ||
201 | if (strcmp(*args, "window")==0) { | 204 | if (strcmp(*args, "window") == 0) { |
202 | args++; | 205 | args++; |
203 | if (!*args) | 206 | if (!*args) |
204 | show_usage(); | 207 | show_usage(); |
@@ -212,7 +215,7 @@ INET_setroute(int action, int options, char **args) | |||
212 | continue; | 215 | continue; |
213 | } | 216 | } |
214 | 217 | ||
215 | if (strcmp(*args, "irtt")==0) { | 218 | if (strcmp(*args, "irtt") == 0) { |
216 | args++; | 219 | args++; |
217 | if (!*args) | 220 | if (!*args) |
218 | show_usage(); | 221 | show_usage(); |
@@ -220,44 +223,44 @@ INET_setroute(int action, int options, char **args) | |||
220 | #if HAVE_RTF_IRTT | 223 | #if HAVE_RTF_IRTT |
221 | rt.rt_flags |= RTF_IRTT; | 224 | rt.rt_flags |= RTF_IRTT; |
222 | rt.rt_irtt = atoi(*(args - 1)); | 225 | rt.rt_irtt = atoi(*(args - 1)); |
223 | rt.rt_irtt *= (HZ / 100); /* FIXME */ | 226 | rt.rt_irtt *= (HZ / 100); /* FIXME */ |
224 | #if 0 /* FIXME: do we need to check anything of this? */ | 227 | #if 0 /* FIXME: do we need to check anything of this? */ |
225 | if (rt.rt_irtt < 1 || rt.rt_irtt > (120 * HZ)) { | 228 | if (rt.rt_irtt < 1 || rt.rt_irtt > (120 * HZ)) { |
226 | error_msg(_("Invalid initial rtt.")); | 229 | error_msg(_("Invalid initial rtt.")); |
227 | return E_OPTERR; | 230 | return E_OPTERR; |
228 | } | 231 | } |
229 | #endif | 232 | #endif |
230 | #else | 233 | #else |
231 | ENOSUPP("inet_setroute", "RTF_IRTT"); /* XXX Fixme */ | 234 | ENOSUPP("inet_setroute", "RTF_IRTT"); /* XXX Fixme */ |
232 | #endif | 235 | #endif |
233 | continue; | 236 | continue; |
234 | } | 237 | } |
235 | 238 | ||
236 | if (strcmp(*args, "reject")==0) { | 239 | if (strcmp(*args, "reject") == 0) { |
237 | args++; | 240 | args++; |
238 | #if HAVE_RTF_REJECT | 241 | #if HAVE_RTF_REJECT |
239 | rt.rt_flags |= RTF_REJECT; | 242 | rt.rt_flags |= RTF_REJECT; |
240 | #else | 243 | #else |
241 | ENOSUPP("inet_setroute", "RTF_REJECT"); /* XXX Fixme */ | 244 | ENOSUPP("inet_setroute", "RTF_REJECT"); /* XXX Fixme */ |
242 | #endif | 245 | #endif |
243 | continue; | 246 | continue; |
244 | } | 247 | } |
245 | if (strcmp(*args, "mod")==0) { | 248 | if (strcmp(*args, "mod") == 0) { |
246 | args++; | 249 | args++; |
247 | rt.rt_flags |= RTF_MODIFIED; | 250 | rt.rt_flags |= RTF_MODIFIED; |
248 | continue; | 251 | continue; |
249 | } | 252 | } |
250 | if (strcmp(*args, "dyn")==0) { | 253 | if (strcmp(*args, "dyn") == 0) { |
251 | args++; | 254 | args++; |
252 | rt.rt_flags |= RTF_DYNAMIC; | 255 | rt.rt_flags |= RTF_DYNAMIC; |
253 | continue; | 256 | continue; |
254 | } | 257 | } |
255 | if (strcmp(*args, "reinstate")==0) { | 258 | if (strcmp(*args, "reinstate") == 0) { |
256 | args++; | 259 | args++; |
257 | rt.rt_flags |= RTF_REINSTATE; | 260 | rt.rt_flags |= RTF_REINSTATE; |
258 | continue; | 261 | continue; |
259 | } | 262 | } |
260 | if (strcmp(*args, "device")==0 || strcmp(*args, "dev")==0) { | 263 | if (strcmp(*args, "device") == 0 || strcmp(*args, "dev") == 0) { |
261 | args++; | 264 | args++; |
262 | if (rt.rt_dev || *args == NULL) | 265 | if (rt.rt_dev || *args == NULL) |
263 | show_usage(); | 266 | show_usage(); |
@@ -268,7 +271,7 @@ INET_setroute(int action, int options, char **args) | |||
268 | if (!rt.rt_dev) { | 271 | if (!rt.rt_dev) { |
269 | rt.rt_dev = *args++; | 272 | rt.rt_dev = *args++; |
270 | if (*args) | 273 | if (*args) |
271 | show_usage(); /* must be last to catch typos */ | 274 | show_usage(); /* must be last to catch typos */ |
272 | } else { | 275 | } else { |
273 | show_usage(); | 276 | show_usage(); |
274 | } | 277 | } |
@@ -282,11 +285,11 @@ INET_setroute(int action, int options, char **args) | |||
282 | /* sanity checks.. */ | 285 | /* sanity checks.. */ |
283 | if (mask_in_addr(rt)) { | 286 | if (mask_in_addr(rt)) { |
284 | unsigned long mask = mask_in_addr(rt); | 287 | unsigned long mask = mask_in_addr(rt); |
288 | |||
285 | mask = ~ntohl(mask); | 289 | mask = ~ntohl(mask); |
286 | if ((rt.rt_flags & RTF_HOST) && mask != 0xffffffff) { | 290 | if ((rt.rt_flags & RTF_HOST) && mask != 0xffffffff) { |
287 | error_msg( | 291 | error_msg(_("netmask %.8x doesn't make sense with host route"), |
288 | _("netmask %.8x doesn't make sense with host route"), | 292 | (unsigned int) mask); |
289 | (unsigned int)mask); | ||
290 | return E_OPTERR; | 293 | return E_OPTERR; |
291 | } | 294 | } |
292 | if (mask & (mask + 1)) { | 295 | if (mask & (mask + 1)) { |
@@ -356,9 +359,9 @@ static int INET6_setroute(int action, int options, char **args) | |||
356 | } else { | 359 | } else { |
357 | prefix_len = 128; | 360 | prefix_len = 128; |
358 | } | 361 | } |
359 | if (INET6_resolve(target, (struct sockaddr_in6 *)&sa6) < 0) { | 362 | if (INET6_resolve(target, (struct sockaddr_in6 *) &sa6) < 0) { |
360 | error_msg(_("can't resolve %s"), target); | 363 | error_msg(_("can't resolve %s"), target); |
361 | return EXIT_FAILURE; /* XXX change to E_something */ | 364 | return EXIT_FAILURE; /* XXX change to E_something */ |
362 | } | 365 | } |
363 | } | 366 | } |
364 | 367 | ||
@@ -392,12 +395,12 @@ static int INET6_setroute(int action, int options, char **args) | |||
392 | if (rt.rtmsg_flags & RTF_GATEWAY) | 395 | if (rt.rtmsg_flags & RTF_GATEWAY) |
393 | show_usage(); | 396 | show_usage(); |
394 | strcpy(gateway, *args); | 397 | strcpy(gateway, *args); |
395 | if (INET6_resolve(gateway, (struct sockaddr_in6 *)&sa6) < 0) { | 398 | if (INET6_resolve(gateway, (struct sockaddr_in6 *) &sa6) < 0) { |
396 | error_msg(_("can't resolve gw %s"), gateway); | 399 | error_msg(_("can't resolve gw %s"), gateway); |
397 | return (E_LOOKUP); | 400 | return (E_LOOKUP); |
398 | } | 401 | } |
399 | memcpy(&rt.rtmsg_gateway, sa6.sin6_addr.s6_addr, | 402 | memcpy(&rt.rtmsg_gateway, sa6.sin6_addr.s6_addr, |
400 | sizeof(struct in6_addr)); | 403 | sizeof(struct in6_addr)); |
401 | rt.rtmsg_flags |= RTF_GATEWAY; | 404 | rt.rtmsg_flags |= RTF_GATEWAY; |
402 | args++; | 405 | args++; |
403 | continue; | 406 | continue; |
@@ -463,95 +466,98 @@ static int INET6_setroute(int action, int options, char **args) | |||
463 | 466 | ||
464 | #ifndef RTF_UP | 467 | #ifndef RTF_UP |
465 | /* Keep this in sync with /usr/src/linux/include/linux/route.h */ | 468 | /* Keep this in sync with /usr/src/linux/include/linux/route.h */ |
466 | #define RTF_UP 0x0001 /* route usable */ | 469 | #define RTF_UP 0x0001 /* route usable */ |
467 | #define RTF_GATEWAY 0x0002 /* destination is a gateway */ | 470 | #define RTF_GATEWAY 0x0002 /* destination is a gateway */ |
468 | #define RTF_HOST 0x0004 /* host entry (net otherwise) */ | 471 | #define RTF_HOST 0x0004 /* host entry (net otherwise) */ |
469 | #define RTF_REINSTATE 0x0008 /* reinstate route after tmout */ | 472 | #define RTF_REINSTATE 0x0008 /* reinstate route after tmout */ |
470 | #define RTF_DYNAMIC 0x0010 /* created dyn. (by redirect) */ | 473 | #define RTF_DYNAMIC 0x0010 /* created dyn. (by redirect) */ |
471 | #define RTF_MODIFIED 0x0020 /* modified dyn. (by redirect) */ | 474 | #define RTF_MODIFIED 0x0020 /* modified dyn. (by redirect) */ |
472 | #define RTF_MTU 0x0040 /* specific MTU for this route */ | 475 | #define RTF_MTU 0x0040 /* specific MTU for this route */ |
473 | #ifndef RTF_MSS | 476 | #ifndef RTF_MSS |
474 | #define RTF_MSS RTF_MTU /* Compatibility :-( */ | 477 | #define RTF_MSS RTF_MTU /* Compatibility :-( */ |
475 | #endif | 478 | #endif |
476 | #define RTF_WINDOW 0x0080 /* per route window clamping */ | 479 | #define RTF_WINDOW 0x0080 /* per route window clamping */ |
477 | #define RTF_IRTT 0x0100 /* Initial round trip time */ | 480 | #define RTF_IRTT 0x0100 /* Initial round trip time */ |
478 | #define RTF_REJECT 0x0200 /* Reject route */ | 481 | #define RTF_REJECT 0x0200 /* Reject route */ |
479 | #endif | 482 | #endif |
480 | 483 | ||
481 | void displayroutes(int noresolve, int netstatfmt) | 484 | void displayroutes(int noresolve, int netstatfmt) |
482 | { | 485 | { |
483 | char buff[256]; | 486 | char buff[256]; |
484 | int nl = 0 ; | 487 | int nl = 0; |
485 | struct in_addr dest; | 488 | struct in_addr dest; |
486 | struct in_addr gw; | 489 | struct in_addr gw; |
487 | struct in_addr mask; | 490 | struct in_addr mask; |
488 | int flgs, ref, use, metric, mtu, win, ir; | 491 | int flgs, ref, use, metric, mtu, win, ir; |
489 | char flags[64]; | 492 | char flags[64]; |
490 | unsigned long int d,g,m; | 493 | unsigned long int d, g, m; |
491 | 494 | ||
492 | char sdest[16], sgw[16]; | 495 | char sdest[16], sgw[16]; |
493 | 496 | ||
494 | FILE *fp = xfopen("/proc/net/route", "r"); | 497 | FILE *fp = xfopen("/proc/net/route", "r"); |
495 | 498 | ||
496 | if(noresolve) | 499 | if (noresolve) |
497 | noresolve = 0x0fff; | 500 | noresolve = 0x0fff; |
498 | 501 | ||
499 | while( fgets(buff, sizeof(buff), fp) != NULL ) { | 502 | while (fgets(buff, sizeof(buff), fp) != NULL) { |
500 | if(nl) { | 503 | if (nl) { |
501 | int ifl = 0; | 504 | int ifl = 0; |
502 | int numeric; | 505 | int numeric; |
503 | struct sockaddr_in s_addr; | 506 | struct sockaddr_in s_addr; |
504 | 507 | ||
505 | while(buff[ifl]!=' ' && buff[ifl]!='\t' && buff[ifl]!='\0') | 508 | while (buff[ifl] != ' ' && buff[ifl] != '\t' && buff[ifl] != '\0') |
506 | ifl++; | 509 | ifl++; |
507 | buff[ifl]=0; /* interface */ | 510 | buff[ifl] = 0; /* interface */ |
508 | if(sscanf(buff+ifl+1, "%lx%lx%X%d%d%d%lx%d%d%d", | 511 | if (sscanf(buff + ifl + 1, "%lx%lx%X%d%d%d%lx%d%d%d", |
509 | &d, &g, &flgs, &ref, &use, &metric, &m, &mtu, &win, &ir )!=10) { | 512 | &d, &g, &flgs, &ref, &use, &metric, &m, &mtu, &win, |
510 | error_msg_and_die( "Unsuported kernel route format\n"); | 513 | &ir) != 10) { |
514 | error_msg_and_die("Unsuported kernel route format\n"); | ||
511 | } | 515 | } |
512 | if(nl==1) { | 516 | if (nl == 1) { |
513 | printf("Kernel IP routing table\n"); | 517 | printf("Kernel IP routing table\n"); |
514 | printf("Destination Gateway Genmask Flags %s Iface\n", | 518 | printf |
515 | netstatfmt ? " MSS Window irtt" : "Metric Ref Use"); | 519 | ("Destination Gateway Genmask Flags %s Iface\n", |
520 | netstatfmt ? " MSS Window irtt" : "Metric Ref Use"); | ||
516 | } | 521 | } |
517 | ifl = 0; /* parse flags */ | 522 | ifl = 0; /* parse flags */ |
518 | if(flgs&RTF_UP) { | 523 | if (flgs & RTF_UP) { |
519 | if(flgs&RTF_REJECT) | 524 | if (flgs & RTF_REJECT) |
520 | flags[ifl++]='!'; | 525 | flags[ifl++] = '!'; |
521 | else | 526 | else |
522 | flags[ifl++]='U'; | 527 | flags[ifl++] = 'U'; |
523 | if(flgs&RTF_GATEWAY) | 528 | if (flgs & RTF_GATEWAY) |
524 | flags[ifl++]='G'; | 529 | flags[ifl++] = 'G'; |
525 | if(flgs&RTF_HOST) | 530 | if (flgs & RTF_HOST) |
526 | flags[ifl++]='H'; | 531 | flags[ifl++] = 'H'; |
527 | if(flgs&RTF_REINSTATE) | 532 | if (flgs & RTF_REINSTATE) |
528 | flags[ifl++]='R'; | 533 | flags[ifl++] = 'R'; |
529 | if(flgs&RTF_DYNAMIC) | 534 | if (flgs & RTF_DYNAMIC) |
530 | flags[ifl++]='D'; | 535 | flags[ifl++] = 'D'; |
531 | if(flgs&RTF_MODIFIED) | 536 | if (flgs & RTF_MODIFIED) |
532 | flags[ifl++]='M'; | 537 | flags[ifl++] = 'M'; |
533 | flags[ifl]=0; | 538 | flags[ifl] = 0; |
534 | dest.s_addr = d; | 539 | dest.s_addr = d; |
535 | gw.s_addr = g; | 540 | gw.s_addr = g; |
536 | mask.s_addr = m; | 541 | mask.s_addr = m; |
537 | memset(&s_addr, 0, sizeof(struct sockaddr_in)); | 542 | memset(&s_addr, 0, sizeof(struct sockaddr_in)); |
538 | s_addr.sin_family = AF_INET; | 543 | s_addr.sin_family = AF_INET; |
539 | s_addr.sin_addr = dest; | 544 | s_addr.sin_addr = dest; |
540 | numeric = noresolve | 0x8000; /* default instead of * */ | 545 | numeric = noresolve | 0x8000; /* default instead of * */ |
541 | INET_rresolve(sdest, sizeof(sdest), &s_addr, numeric, m); | 546 | INET_rresolve(sdest, sizeof(sdest), &s_addr, numeric, m); |
542 | numeric = noresolve | 0x4000; /* host instead of net */ | 547 | numeric = noresolve | 0x4000; /* host instead of net */ |
543 | s_addr.sin_addr = gw; | 548 | s_addr.sin_addr = gw; |
544 | INET_rresolve(sgw, sizeof(sgw), &s_addr, numeric, m); | 549 | INET_rresolve(sgw, sizeof(sgw), &s_addr, numeric, m); |
545 | 550 | ||
546 | printf("%-16s%-16s%-16s%-6s", sdest, sgw, inet_ntoa(mask), flags); | 551 | printf("%-16s%-16s%-16s%-6s", sdest, sgw, inet_ntoa(mask), |
547 | if ( netstatfmt ) | 552 | flags); |
548 | printf("%5d %-5d %6d %s\n", mtu, win, ir, buff); | 553 | if (netstatfmt) |
549 | else | 554 | printf("%5d %-5d %6d %s\n", mtu, win, ir, buff); |
550 | printf("%-6d %-2d %7d %s\n", metric, ref, use, buff); | 555 | else |
556 | printf("%-6d %-2d %7d %s\n", metric, ref, use, buff); | ||
551 | } | 557 | } |
552 | } | 558 | } |
553 | nl++; | 559 | nl++; |
554 | } | 560 | } |
555 | } | 561 | } |
556 | 562 | ||
557 | #if CONFIG_FEATURE_IPV6 | 563 | #if CONFIG_FEATURE_IPV6 |
@@ -567,72 +573,75 @@ static void INET6_displayroutes(int noresolve) | |||
567 | char addr6p[8][5], saddr6p[8][5], naddr6p[8][5]; | 573 | char addr6p[8][5], saddr6p[8][5], naddr6p[8][5]; |
568 | 574 | ||
569 | FILE *fp = xfopen("/proc/net/ipv6_route", "r"); | 575 | FILE *fp = xfopen("/proc/net/ipv6_route", "r"); |
570 | flags[0]='U'; | ||
571 | 576 | ||
572 | if(noresolve) | 577 | flags[0] = 'U'; |
578 | |||
579 | if (noresolve) | ||
573 | noresolve = 0x0fff; | 580 | noresolve = 0x0fff; |
574 | numeric = noresolve | 0x8000; /* default instead of * */ | 581 | numeric = noresolve | 0x8000; /* default instead of * */ |
575 | 582 | ||
576 | printf("Kernel IPv6 routing table\n" | 583 | printf("Kernel IPv6 routing table\n" |
577 | "Destination " | 584 | "Destination " |
578 | "Next Hop " | 585 | "Next Hop " |
579 | "Flags Metric Ref Use Iface\n"); | 586 | "Flags Metric Ref Use Iface\n"); |
580 | 587 | ||
581 | while( fgets(buff, sizeof(buff), fp) != NULL ) { | 588 | while (fgets(buff, sizeof(buff), fp) != NULL) { |
582 | int ifl; | 589 | int ifl; |
583 | 590 | ||
584 | if(sscanf(buff, "%4s%4s%4s%4s%4s%4s%4s%4s %02x " | 591 | if (sscanf(buff, "%4s%4s%4s%4s%4s%4s%4s%4s %02x " |
585 | "%4s%4s%4s%4s%4s%4s%4s%4s %02x " | 592 | "%4s%4s%4s%4s%4s%4s%4s%4s %02x " |
586 | "%4s%4s%4s%4s%4s%4s%4s%4s %08x %08x %08x %08x %s\n", | 593 | "%4s%4s%4s%4s%4s%4s%4s%4s %08x %08x %08x %08x %s\n", |
587 | addr6p[0], addr6p[1], addr6p[2], addr6p[3], | 594 | addr6p[0], addr6p[1], addr6p[2], addr6p[3], |
588 | addr6p[4], addr6p[5], addr6p[6], addr6p[7], | 595 | addr6p[4], addr6p[5], addr6p[6], addr6p[7], |
589 | &prefix_len, | 596 | &prefix_len, |
590 | saddr6p[0], saddr6p[1], saddr6p[2], saddr6p[3], | 597 | saddr6p[0], saddr6p[1], saddr6p[2], saddr6p[3], |
591 | saddr6p[4], saddr6p[5], saddr6p[6], saddr6p[7], | 598 | saddr6p[4], saddr6p[5], saddr6p[6], saddr6p[7], |
592 | &slen, | 599 | &slen, |
593 | naddr6p[0], naddr6p[1], naddr6p[2], naddr6p[3], | 600 | naddr6p[0], naddr6p[1], naddr6p[2], naddr6p[3], |
594 | naddr6p[4], naddr6p[5], naddr6p[6], naddr6p[7], | 601 | naddr6p[4], naddr6p[5], naddr6p[6], naddr6p[7], |
595 | &metric, &use, &refcnt, &iflags, iface)!=31) { | 602 | &metric, &use, &refcnt, &iflags, iface) != 31) { |
596 | error_msg_and_die( "Unsuported kernel route format\n"); | 603 | error_msg_and_die("Unsuported kernel route format\n"); |
597 | } | 604 | } |
598 | 605 | ||
599 | ifl = 1; /* parse flags */ | 606 | ifl = 1; /* parse flags */ |
600 | if (!(iflags & RTF_UP)) | 607 | if (!(iflags & RTF_UP)) |
601 | continue; | 608 | continue; |
602 | if (iflags & RTF_GATEWAY) | 609 | if (iflags & RTF_GATEWAY) |
603 | flags[ifl++]='G'; | 610 | flags[ifl++] = 'G'; |
604 | if (iflags & RTF_HOST) | 611 | if (iflags & RTF_HOST) |
605 | flags[ifl++]='H'; | 612 | flags[ifl++] = 'H'; |
606 | if (iflags & RTF_DEFAULT) | 613 | if (iflags & RTF_DEFAULT) |
607 | flags[ifl++]='D'; | 614 | flags[ifl++] = 'D'; |
608 | if (iflags & RTF_ADDRCONF) | 615 | if (iflags & RTF_ADDRCONF) |
609 | flags[ifl++]='A'; | 616 | flags[ifl++] = 'A'; |
610 | if (iflags & RTF_CACHE) | 617 | if (iflags & RTF_CACHE) |
611 | flags[ifl++]='C'; | 618 | flags[ifl++] = 'C'; |
612 | flags[ifl]=0; | 619 | flags[ifl] = 0; |
613 | 620 | ||
614 | /* Fetch and resolve the target address. */ | 621 | /* Fetch and resolve the target address. */ |
615 | snprintf(addr6, sizeof(addr6), "%s:%s:%s:%s:%s:%s:%s:%s", | 622 | snprintf(addr6, sizeof(addr6), "%s:%s:%s:%s:%s:%s:%s:%s", |
616 | addr6p[0], addr6p[1], addr6p[2], addr6p[3], | 623 | addr6p[0], addr6p[1], addr6p[2], addr6p[3], |
617 | addr6p[4], addr6p[5], addr6p[6], addr6p[7]); | 624 | addr6p[4], addr6p[5], addr6p[6], addr6p[7]); |
618 | inet_pton(AF_INET6, addr6, (struct sockaddr *) &saddr6.sin6_addr); | 625 | inet_pton(AF_INET6, addr6, (struct sockaddr *) &saddr6.sin6_addr); |
619 | saddr6.sin6_family=AF_INET6; | 626 | saddr6.sin6_family = AF_INET6; |
620 | 627 | ||
621 | INET6_rresolve(addr6, sizeof(addr6), (struct sockaddr_in6 *) &saddr6, numeric); | 628 | INET6_rresolve(addr6, sizeof(addr6), (struct sockaddr_in6 *) &saddr6, |
629 | numeric); | ||
622 | snprintf(addr6, sizeof(addr6), "%s/%d", addr6, prefix_len); | 630 | snprintf(addr6, sizeof(addr6), "%s/%d", addr6, prefix_len); |
623 | 631 | ||
624 | /* Fetch and resolve the nexthop address. */ | 632 | /* Fetch and resolve the nexthop address. */ |
625 | snprintf(naddr6, sizeof(naddr6), "%s:%s:%s:%s:%s:%s:%s:%s", | 633 | snprintf(naddr6, sizeof(naddr6), "%s:%s:%s:%s:%s:%s:%s:%s", |
626 | naddr6p[0], naddr6p[1], naddr6p[2], naddr6p[3], | 634 | naddr6p[0], naddr6p[1], naddr6p[2], naddr6p[3], |
627 | naddr6p[4], naddr6p[5], naddr6p[6], naddr6p[7]); | 635 | naddr6p[4], naddr6p[5], naddr6p[6], naddr6p[7]); |
628 | inet_pton(AF_INET6, naddr6, (struct sockaddr *) &snaddr6.sin6_addr); | 636 | inet_pton(AF_INET6, naddr6, (struct sockaddr *) &snaddr6.sin6_addr); |
629 | snaddr6.sin6_family=AF_INET6; | 637 | snaddr6.sin6_family = AF_INET6; |
630 | 638 | ||
631 | INET6_rresolve(naddr6, sizeof(naddr6), (struct sockaddr_in6 *) &snaddr6, numeric); | 639 | INET6_rresolve(naddr6, sizeof(naddr6), |
640 | (struct sockaddr_in6 *) &snaddr6, numeric); | ||
632 | 641 | ||
633 | /* Print the info. */ | 642 | /* Print the info. */ |
634 | printf("%-43s %-39s %-5s %-6d %-2d %7d %-8s\n", | 643 | printf("%-43s %-39s %-5s %-6d %-2d %7d %-8s\n", |
635 | addr6, naddr6, flags, metric, refcnt, use, iface); | 644 | addr6, naddr6, flags, metric, refcnt, use, iface); |
636 | } | 645 | } |
637 | } | 646 | } |
638 | #endif | 647 | #endif |
@@ -641,56 +650,58 @@ int route_main(int argc, char **argv) | |||
641 | { | 650 | { |
642 | int opt; | 651 | int opt; |
643 | int what = 0; | 652 | int what = 0; |
653 | |||
644 | #if CONFIG_FEATURE_IPV6 | 654 | #if CONFIG_FEATURE_IPV6 |
645 | int af=AF_INET; | 655 | int af = AF_INET; |
646 | #endif | 656 | #endif |
647 | 657 | ||
648 | if ( !argv [1] || ( argv [1][0] == '-' )) { | 658 | if (!argv[1] || (argv[1][0] == '-')) { |
649 | /* check options */ | 659 | /* check options */ |
650 | int noresolve = 0; | 660 | int noresolve = 0; |
651 | int extended = 0; | 661 | int extended = 0; |
652 | 662 | ||
653 | while ((opt = getopt(argc, argv, "A:ne")) > 0) { | 663 | while ((opt = getopt(argc, argv, "A:ne")) > 0) { |
654 | switch (opt) { | 664 | switch (opt) { |
655 | case 'n': | 665 | case 'n': |
656 | noresolve = 1; | 666 | noresolve = 1; |
657 | break; | 667 | break; |
658 | case 'e': | 668 | case 'e': |
659 | extended = 1; | 669 | extended = 1; |
660 | break; | 670 | break; |
661 | case 'A': | 671 | case 'A': |
662 | #if CONFIG_FEATURE_IPV6 | 672 | #if CONFIG_FEATURE_IPV6 |
663 | if (strcmp(optarg, "inet6")==0) | 673 | if (strcmp(optarg, "inet6") == 0) |
664 | af=AF_INET6; | 674 | af = AF_INET6; |
665 | break; | 675 | break; |
666 | #endif | 676 | #endif |
667 | default: | 677 | default: |
668 | show_usage ( ); | 678 | show_usage(); |
669 | } | 679 | } |
670 | } | 680 | } |
671 | 681 | ||
672 | #if CONFIG_FEATURE_IPV6 | 682 | #if CONFIG_FEATURE_IPV6 |
673 | if (af==AF_INET6) | 683 | if (af == AF_INET6) |
674 | INET6_displayroutes(*argv != NULL); | 684 | INET6_displayroutes(*argv != NULL); |
675 | else | 685 | else |
676 | #endif | 686 | #endif |
677 | displayroutes ( noresolve, extended ); | 687 | displayroutes(noresolve, extended); |
678 | return EXIT_SUCCESS; | 688 | return EXIT_SUCCESS; |
679 | } else { | 689 | } else { |
680 | /* check verb */ | 690 | /* check verb */ |
681 | if (strcmp( argv [1], "add")==0) | 691 | if (strcmp(argv[1], "add") == 0) |
682 | what = RTACTION_ADD; | 692 | what = RTACTION_ADD; |
683 | else if (strcmp( argv [1], "del")==0 || strcmp( argv [1], "delete")==0) | 693 | else if (strcmp(argv[1], "del") == 0 |
694 | || strcmp(argv[1], "delete") == 0) | ||
684 | what = RTACTION_DEL; | 695 | what = RTACTION_DEL; |
685 | else if (strcmp( argv [1], "flush")==0) | 696 | else if (strcmp(argv[1], "flush") == 0) |
686 | what = RTACTION_FLUSH; | 697 | what = RTACTION_FLUSH; |
687 | else | 698 | else |
688 | show_usage(); | 699 | show_usage(); |
689 | } | 700 | } |
690 | 701 | ||
691 | #if CONFIG_FEATURE_IPV6 | 702 | #if CONFIG_FEATURE_IPV6 |
692 | if (af==AF_INET6) | 703 | if (af == AF_INET6) |
693 | return INET6_setroute(what, 0, argv+2); | 704 | return INET6_setroute(what, 0, argv + 2); |
694 | #endif | 705 | #endif |
695 | return INET_setroute(what, 0, argv+2 ); | 706 | return INET_setroute(what, 0, argv + 2); |
696 | } | 707 | } |