summaryrefslogtreecommitdiffstats
path: root/toolbox/route.c
diff options
context:
space:
mode:
authorSan Mehat <san@google.com>2009-05-13 17:18:27 -0700
committerSan Mehat <san@google.com>2009-05-14 07:28:45 -0700
commit83ec181dc74d5dab4110e1895e62f1bdbf6d7d7a (patch)
treea6c60da72de468db3659697aa20a64368829b507 /toolbox/route.c
parent0389a1297d65321a882ea0dcc69f4de4e3bcb169 (diff)
downloadsystem_core-83ec181dc74d5dab4110e1895e62f1bdbf6d7d7a.zip
system_core-83ec181dc74d5dab4110e1895e62f1bdbf6d7d7a.tar.gz
system_core-83ec181dc74d5dab4110e1895e62f1bdbf6d7d7a.tar.bz2
toolbox: route: Reflow some of the mess, fix route add parameter names to
match standard route Signed-off-by: San Mehat <san@google.com>
Diffstat (limited to 'toolbox/route.c')
-rw-r--r--toolbox/route.c120
1 files changed, 62 insertions, 58 deletions
diff --git a/toolbox/route.c b/toolbox/route.c
index 86fc35b..2fd7108 100644
--- a/toolbox/route.c
+++ b/toolbox/route.c
@@ -51,75 +51,79 @@ int route_main(int argc, char *argv[])
{
struct ifreq ifr;
int s,i;
- struct rtentry rt;
- struct sockaddr_in ina;
+ struct rtentry rt;
+ struct sockaddr_in ina;
- if(argc == 0) return 0;
-
+ if (!argc)
+ return 0;
+
strncpy(ifr.ifr_name, argv[0], IFNAMSIZ);
ifr.ifr_name[IFNAMSIZ-1] = 0;
- ADVANCE(argc, argv);
+ ADVANCE(argc, argv);
- if((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
+ if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
die("cannot open control socket\n");
}
while(argc > 0){
- if(!strcmp(argv[0], "add")) {
- EXPECT_NEXT(argc, argv);
- if(!strcmp(argv[0], "default")) {
- EXPECT_NEXT(argc, argv);
- memset((char *) &rt, 0, sizeof(struct rtentry));
- rt.rt_dst.sa_family = AF_INET;
- if(!strcmp(argv[0], "dev")) {
- EXPECT_NEXT(argc, argv);
- rt.rt_flags = RTF_UP | RTF_HOST;
- rt.rt_dev = argv[0];
- if (ioctl(s, SIOCADDRT, &rt) < 0) die("SIOCADDRT\n");
- }else if(!strcmp(argv[0], "gw")) {
- EXPECT_NEXT(argc, argv);
- rt.rt_flags = RTF_UP | RTF_GATEWAY;
- init_sockaddr_in((struct sockaddr_in *)&(rt.rt_genmask), "0.0.0.0");
- if(isdigit(argv[0][0])){
- init_sockaddr_in((struct sockaddr_in *)&(rt.rt_gateway), argv[0]);
- }else{
- die("expecting an IP address for parameter \"gw\"\n");
- }
- EXPECT_NEXT(argc, argv);
- if(!strcmp(argv[0], "dev")) {
- EXPECT_NEXT(argc, argv);
- rt.rt_dev = argv[0];
- if (ioctl(s, SIOCADDRT, &rt) < 0){
- die("SIOCADDRT\n");
- }
- }
- }
- } else {
- char keywords[3][5] = { "net", "mask", "gw" };
- struct sockaddr_in *paddr[3] = { &rt.rt_dst, &rt.rt_genmask, &rt.rt_gateway };
- int k = 0;
-
- memset((char *) &rt, 0, sizeof(struct rtentry));
- rt.rt_flags = RTF_UP | RTF_GATEWAY;
- do {
- if(!strcmp(argv[0], keywords[k])) {
- EXPECT_NEXT(argc, argv);
- if(isdigit(argv[0][0])) {
- init_sockaddr_in(paddr[k], argv[0]);
- } else {
- die("expecting an IP/MASK address for parameter %s\n", keywords[k]);
- }
- if(k < 2) EXPECT_NEXT(argc, argv);
- } else {
- die("expecting keyword(s)\n");
- }
- } while(++k < 3);
- if(ioctl(s, SIOCADDRT, &rt) < 0) {
+ if (!strcmp(argv[0], "add")) {
+ EXPECT_NEXT(argc, argv);
+ if (!strcmp(argv[0], "default")) {
+ EXPECT_NEXT(argc, argv);
+ memset((char *) &rt, 0, sizeof(struct rtentry));
+ rt.rt_dst.sa_family = AF_INET;
+ if(!strcmp(argv[0], "dev")) {
+ EXPECT_NEXT(argc, argv);
+ rt.rt_flags = RTF_UP | RTF_HOST;
+ rt.rt_dev = argv[0];
+ if (ioctl(s, SIOCADDRT, &rt) < 0)
+ die("SIOCADDRT\n");
+ } else if (!strcmp(argv[0], "gw")) {
+ EXPECT_NEXT(argc, argv);
+ rt.rt_flags = RTF_UP | RTF_GATEWAY;
+ init_sockaddr_in((struct sockaddr_in *)&(rt.rt_genmask), "0.0.0.0");
+ if(isdigit(argv[0][0])) {
+ init_sockaddr_in((struct sockaddr_in *)&(rt.rt_gateway), argv[0]);
+ } else {
+ die("expecting an IP address for parameter \"gw\"\n");
+ }
+ EXPECT_NEXT(argc, argv);
+ if (!strcmp(argv[0], "dev")) {
+ EXPECT_NEXT(argc, argv);
+ rt.rt_dev = argv[0];
+ if (ioctl(s, SIOCADDRT, &rt) < 0) {
die("SIOCADDRT\n");
- }
}
+ }
+ }
+ } else {
+ char keywords[3][10] = { "-net", "netmask", "gw" };
+ struct sockaddr_in *paddr[3] = { &rt.rt_dst, &rt.rt_genmask, &rt.rt_gateway };
+ int k = 0;
+
+ memset((char *) &rt, 0, sizeof(struct rtentry));
+ rt.rt_flags = RTF_UP | RTF_GATEWAY;
+ do {
+ if (!strcmp(argv[0], keywords[k])) {
+ EXPECT_NEXT(argc, argv);
+ if (isdigit(argv[0][0])) {
+ init_sockaddr_in(paddr[k], argv[0]);
+ } else {
+ die("expecting an IP/MASK address for parameter %s\n", keywords[k]);
+ }
+ if (k < 2)
+ EXPECT_NEXT(argc, argv);
+ } else {
+ die("expecting keyword(s)\n");
+ }
+ } while (++k < 3);
+
+ if (ioctl(s, SIOCADDRT, &rt) < 0) {
+ die("SIOCADDRT\n");
+ }
+ }
}
- ADVANCE(argc, argv);
+ ADVANCE(argc, argv);
}
return 0;