Run through indent, fix comment
This commit is contained in:
		| @@ -15,7 +15,7 @@ | ||||
|  * Foundation;  either  version 2 of the License, or  (at | ||||
|  * your option) any later version. | ||||
|  * | ||||
|  * $Id: route.c,v 1.17 2002/07/03 11:46:34 andersen Exp $ | ||||
|  * $Id: route.c,v 1.18 2002/08/22 18:24:43 bug1 Exp $ | ||||
|  * | ||||
|  * displayroute() code added by Vladimir N. Oleynik <dzo@simtreas.ru> | ||||
|  * adjustments by Larry Doolittle  <LRDoolittle@lbl.gov> | ||||
| @@ -28,7 +28,7 @@ | ||||
| #include "inet_common.h" | ||||
| #include <net/route.h> | ||||
| #include <net/if.h> | ||||
| #include <linux/param.h>  // HZ | ||||
| #include <linux/param.h>	/* HZ */ | ||||
| #include <stdio.h> | ||||
| #include <errno.h> | ||||
| #include <fcntl.h> | ||||
| @@ -56,13 +56,13 @@ | ||||
| #define E_INTERN        2 | ||||
| #define E_NOSUPP        1 | ||||
|  | ||||
| #if defined (SIOCADDRTOLD) || defined (RTF_IRTT)        /* route */ | ||||
| #if defined (SIOCADDRTOLD) || defined (RTF_IRTT)	/* route */ | ||||
| #define HAVE_NEW_ADDRT 1 | ||||
| #endif | ||||
| #ifdef RTF_IRTT                 /* route */ | ||||
| #ifdef RTF_IRTT			/* route */ | ||||
| #define HAVE_RTF_IRTT 1 | ||||
| #endif | ||||
| #ifdef RTF_REJECT               /* route */ | ||||
| #ifdef RTF_REJECT		/* route */ | ||||
| #define HAVE_RTF_REJECT 1 | ||||
| #endif | ||||
|  | ||||
| @@ -78,8 +78,7 @@ | ||||
|  | ||||
| /* add or delete a route depending on action */ | ||||
|  | ||||
| static int | ||||
| INET_setroute(int action, int options, char **args) | ||||
| static int INET_setroute(int action, int options, char **args) | ||||
| { | ||||
| 	struct rtentry rt; | ||||
| 	char target[128], gateway[128] = "NONE"; | ||||
| @@ -90,38 +89,40 @@ INET_setroute(int action, int options, char **args) | ||||
| 	xflag = 0; | ||||
|  | ||||
| 	if (*args == NULL) | ||||
| 	    show_usage(); | ||||
| 	if (strcmp(*args, "-net")==0) { | ||||
| 		show_usage(); | ||||
| 	if (strcmp(*args, "-net") == 0) { | ||||
| 		xflag = 1; | ||||
| 		args++; | ||||
| 	} else if (strcmp(*args, "-host")==0) { | ||||
| 	} else if (strcmp(*args, "-host") == 0) { | ||||
| 		xflag = 2; | ||||
| 		args++; | ||||
| 	} | ||||
| 	if (*args == NULL) | ||||
| 	    show_usage(); | ||||
| 		show_usage(); | ||||
| 	safe_strncpy(target, *args++, (sizeof target)); | ||||
|  | ||||
| 	/* Clean out the RTREQ structure. */ | ||||
| 	memset((char *) &rt, 0, sizeof(struct rtentry)); | ||||
|  | ||||
|  | ||||
| 	if ((isnet = INET_resolve(target, (struct sockaddr_in *)&rt.rt_dst, xflag!=1)) < 0) { | ||||
| 	if ((isnet = | ||||
| 		 INET_resolve(target, (struct sockaddr_in *) &rt.rt_dst, | ||||
| 					  xflag != 1)) < 0) { | ||||
| 		error_msg(_("can't resolve %s"), target); | ||||
| 		return EXIT_FAILURE;   /* XXX change to E_something */ | ||||
| 		return EXIT_FAILURE;	/* XXX change to E_something */ | ||||
| 	} | ||||
|  | ||||
| 	switch (xflag) { | ||||
| 		case 1: | ||||
| 			isnet = 1; | ||||
| 			break; | ||||
| 	case 1: | ||||
| 		isnet = 1; | ||||
| 		break; | ||||
|  | ||||
| 		case 2: | ||||
| 			isnet = 0; | ||||
| 			break; | ||||
| 	case 2: | ||||
| 		isnet = 0; | ||||
| 		break; | ||||
|  | ||||
| 		default: | ||||
| 			break; | ||||
| 	default: | ||||
| 		break; | ||||
| 	} | ||||
|  | ||||
| 	/* Fill in the other fields. */ | ||||
| @@ -130,7 +131,7 @@ INET_setroute(int action, int options, char **args) | ||||
| 		rt.rt_flags &= ~RTF_HOST; | ||||
|  | ||||
| 	while (*args) { | ||||
| 		if (strcmp(*args, "metric")==0) { | ||||
| 		if (strcmp(*args, "metric") == 0) { | ||||
| 			int metric; | ||||
|  | ||||
| 			args++; | ||||
| @@ -140,20 +141,22 @@ INET_setroute(int action, int options, char **args) | ||||
| #if HAVE_NEW_ADDRT | ||||
| 			rt.rt_metric = metric + 1; | ||||
| #else | ||||
| 			ENOSUPP("inet_setroute", "NEW_ADDRT (metric)");  /* XXX Fixme */ | ||||
| 			ENOSUPP("inet_setroute", "NEW_ADDRT (metric)");	/* XXX Fixme */ | ||||
| #endif | ||||
| 			args++; | ||||
| 			continue; | ||||
| 		} | ||||
|  | ||||
| 		if (strcmp(*args, "netmask")==0) { | ||||
| 		if (strcmp(*args, "netmask") == 0) { | ||||
| 			struct sockaddr mask; | ||||
|  | ||||
| 			args++; | ||||
| 			if (!*args || mask_in_addr(rt)) | ||||
| 				show_usage(); | ||||
| 			netmask = *args; | ||||
| 			if ((isnet = INET_resolve(netmask, (struct sockaddr_in *)&mask, 0)) < 0) { | ||||
| 			if ((isnet = | ||||
| 				 INET_resolve(netmask, (struct sockaddr_in *) &mask, | ||||
| 							  0)) < 0) { | ||||
| 				error_msg(_("can't resolve netmask %s"), netmask); | ||||
| 				return E_LOOKUP; | ||||
| 			} | ||||
| @@ -162,21 +165,21 @@ INET_setroute(int action, int options, char **args) | ||||
| 			continue; | ||||
| 		} | ||||
|  | ||||
| 		if (strcmp(*args, "gw")==0 || strcmp(*args, "gateway")==0) { | ||||
| 		if (strcmp(*args, "gw") == 0 || strcmp(*args, "gateway") == 0) { | ||||
| 			args++; | ||||
| 			if (!*args) | ||||
| 				show_usage(); | ||||
| 			if (rt.rt_flags & RTF_GATEWAY) | ||||
| 				show_usage(); | ||||
| 			safe_strncpy(gateway, *args, (sizeof gateway)); | ||||
| 			if ((isnet = INET_resolve(gateway, (struct sockaddr_in *)&rt.rt_gateway, 1)) < 0) { | ||||
| 			if ((isnet = | ||||
| 				 INET_resolve(gateway, (struct sockaddr_in *) &rt.rt_gateway, | ||||
| 							  1)) < 0) { | ||||
| 				error_msg(_("can't resolve gw %s"), gateway); | ||||
| 				return E_LOOKUP; | ||||
| 			} | ||||
| 			if (isnet) { | ||||
| 				error_msg( | ||||
| 					_("%s: cannot use a NETWORK as gateway!"), | ||||
| 					gateway); | ||||
| 				error_msg(_("%s: cannot use a NETWORK as gateway!"), gateway); | ||||
| 				return E_OPTERR; | ||||
| 			} | ||||
| 			rt.rt_flags |= RTF_GATEWAY; | ||||
| @@ -184,7 +187,7 @@ INET_setroute(int action, int options, char **args) | ||||
| 			continue; | ||||
| 		} | ||||
|  | ||||
| 		if (strcmp(*args, "mss")==0) { | ||||
| 		if (strcmp(*args, "mss") == 0) { | ||||
| 			args++; | ||||
| 			rt.rt_flags |= RTF_MSS; | ||||
| 			if (!*args) | ||||
| @@ -198,7 +201,7 @@ INET_setroute(int action, int options, char **args) | ||||
| 			continue; | ||||
| 		} | ||||
|  | ||||
| 		if (strcmp(*args, "window")==0) { | ||||
| 		if (strcmp(*args, "window") == 0) { | ||||
| 			args++; | ||||
| 			if (!*args) | ||||
| 				show_usage(); | ||||
| @@ -212,7 +215,7 @@ INET_setroute(int action, int options, char **args) | ||||
| 			continue; | ||||
| 		} | ||||
|  | ||||
| 		if (strcmp(*args, "irtt")==0) { | ||||
| 		if (strcmp(*args, "irtt") == 0) { | ||||
| 			args++; | ||||
| 			if (!*args) | ||||
| 				show_usage(); | ||||
| @@ -220,44 +223,44 @@ INET_setroute(int action, int options, char **args) | ||||
| #if HAVE_RTF_IRTT | ||||
| 			rt.rt_flags |= RTF_IRTT; | ||||
| 			rt.rt_irtt = atoi(*(args - 1)); | ||||
| 			rt.rt_irtt *= (HZ / 100);       /* FIXME */ | ||||
| #if 0                           /* FIXME: do we need to check anything of this? */ | ||||
| 			rt.rt_irtt *= (HZ / 100);	/* FIXME */ | ||||
| #if 0					/* FIXME: do we need to check anything of this? */ | ||||
| 			if (rt.rt_irtt < 1 || rt.rt_irtt > (120 * HZ)) { | ||||
| 				error_msg(_("Invalid initial rtt.")); | ||||
| 				return E_OPTERR; | ||||
| 			} | ||||
| #endif | ||||
| #else | ||||
| 			ENOSUPP("inet_setroute", "RTF_IRTT"); /* XXX Fixme */ | ||||
| 			ENOSUPP("inet_setroute", "RTF_IRTT");	/* XXX Fixme */ | ||||
| #endif | ||||
| 			continue; | ||||
| 		} | ||||
|  | ||||
| 		if (strcmp(*args, "reject")==0) { | ||||
| 		if (strcmp(*args, "reject") == 0) { | ||||
| 			args++; | ||||
| #if HAVE_RTF_REJECT | ||||
| 			rt.rt_flags |= RTF_REJECT; | ||||
| #else | ||||
| 			ENOSUPP("inet_setroute", "RTF_REJECT"); /* XXX Fixme */ | ||||
| 			ENOSUPP("inet_setroute", "RTF_REJECT");	/* XXX Fixme */ | ||||
| #endif | ||||
| 			continue; | ||||
| 		} | ||||
| 		if (strcmp(*args, "mod")==0) { | ||||
| 		if (strcmp(*args, "mod") == 0) { | ||||
| 			args++; | ||||
| 			rt.rt_flags |= RTF_MODIFIED; | ||||
| 			continue; | ||||
| 		} | ||||
| 		if (strcmp(*args, "dyn")==0) { | ||||
| 		if (strcmp(*args, "dyn") == 0) { | ||||
| 			args++; | ||||
| 			rt.rt_flags |= RTF_DYNAMIC; | ||||
| 			continue; | ||||
| 		} | ||||
| 		if (strcmp(*args, "reinstate")==0) { | ||||
| 		if (strcmp(*args, "reinstate") == 0) { | ||||
| 			args++; | ||||
| 			rt.rt_flags |= RTF_REINSTATE; | ||||
| 			continue; | ||||
| 		} | ||||
| 		if (strcmp(*args, "device")==0 || strcmp(*args, "dev")==0) { | ||||
| 		if (strcmp(*args, "device") == 0 || strcmp(*args, "dev") == 0) { | ||||
| 			args++; | ||||
| 			if (rt.rt_dev || *args == NULL) | ||||
| 				show_usage(); | ||||
| @@ -268,7 +271,7 @@ INET_setroute(int action, int options, char **args) | ||||
| 		if (!rt.rt_dev) { | ||||
| 			rt.rt_dev = *args++; | ||||
| 			if (*args) | ||||
| 				show_usage();   /* must be last to catch typos */ | ||||
| 				show_usage();	/* must be last to catch typos */ | ||||
| 		} else { | ||||
| 			show_usage(); | ||||
| 		} | ||||
| @@ -282,11 +285,11 @@ INET_setroute(int action, int options, char **args) | ||||
| 	/* sanity checks.. */ | ||||
| 	if (mask_in_addr(rt)) { | ||||
| 		unsigned long mask = mask_in_addr(rt); | ||||
|  | ||||
| 		mask = ~ntohl(mask); | ||||
| 		if ((rt.rt_flags & RTF_HOST) && mask != 0xffffffff) { | ||||
| 			error_msg( | ||||
| 				_("netmask %.8x doesn't make sense with host route"), | ||||
| 				(unsigned int)mask); | ||||
| 			error_msg(_("netmask %.8x doesn't make sense with host route"), | ||||
| 					  (unsigned int) mask); | ||||
| 			return E_OPTERR; | ||||
| 		} | ||||
| 		if (mask & (mask + 1)) { | ||||
| @@ -356,9 +359,9 @@ static int INET6_setroute(int action, int options, char **args) | ||||
| 		} else { | ||||
| 			prefix_len = 128; | ||||
| 		} | ||||
| 		if (INET6_resolve(target, (struct sockaddr_in6 *)&sa6) < 0) { | ||||
| 		if (INET6_resolve(target, (struct sockaddr_in6 *) &sa6) < 0) { | ||||
| 			error_msg(_("can't resolve %s"), target); | ||||
| 			return EXIT_FAILURE;   /* XXX change to E_something */ | ||||
| 			return EXIT_FAILURE;	/* XXX change to E_something */ | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @@ -392,12 +395,12 @@ static int INET6_setroute(int action, int options, char **args) | ||||
| 			if (rt.rtmsg_flags & RTF_GATEWAY) | ||||
| 				show_usage(); | ||||
| 			strcpy(gateway, *args); | ||||
| 			if (INET6_resolve(gateway, (struct sockaddr_in6 *)&sa6) < 0) { | ||||
| 			if (INET6_resolve(gateway, (struct sockaddr_in6 *) &sa6) < 0) { | ||||
| 				error_msg(_("can't resolve gw %s"), gateway); | ||||
| 				return (E_LOOKUP); | ||||
| 			} | ||||
| 			memcpy(&rt.rtmsg_gateway, sa6.sin6_addr.s6_addr, | ||||
| 			       sizeof(struct in6_addr)); | ||||
| 				   sizeof(struct in6_addr)); | ||||
| 			rt.rtmsg_flags |= RTF_GATEWAY; | ||||
| 			args++; | ||||
| 			continue; | ||||
| @@ -463,95 +466,98 @@ static int INET6_setroute(int action, int options, char **args) | ||||
|  | ||||
| #ifndef RTF_UP | ||||
| /* Keep this in sync with /usr/src/linux/include/linux/route.h */ | ||||
| #define RTF_UP          0x0001          /* route usable                 */ | ||||
| #define RTF_GATEWAY     0x0002          /* destination is a gateway     */ | ||||
| #define RTF_HOST        0x0004          /* host entry (net otherwise)   */ | ||||
| #define RTF_REINSTATE   0x0008          /* reinstate route after tmout  */ | ||||
| #define RTF_DYNAMIC     0x0010          /* created dyn. (by redirect)   */ | ||||
| #define RTF_MODIFIED    0x0020          /* modified dyn. (by redirect)  */ | ||||
| #define RTF_MTU         0x0040          /* specific MTU for this route  */ | ||||
| #define RTF_UP          0x0001	/* route usable                 */ | ||||
| #define RTF_GATEWAY     0x0002	/* destination is a gateway     */ | ||||
| #define RTF_HOST        0x0004	/* host entry (net otherwise)   */ | ||||
| #define RTF_REINSTATE   0x0008	/* reinstate route after tmout  */ | ||||
| #define RTF_DYNAMIC     0x0010	/* created dyn. (by redirect)   */ | ||||
| #define RTF_MODIFIED    0x0020	/* modified dyn. (by redirect)  */ | ||||
| #define RTF_MTU         0x0040	/* specific MTU for this route  */ | ||||
| #ifndef RTF_MSS | ||||
| #define RTF_MSS         RTF_MTU         /* Compatibility :-(            */ | ||||
| #define RTF_MSS         RTF_MTU	/* Compatibility :-(            */ | ||||
| #endif | ||||
| #define RTF_WINDOW      0x0080          /* per route window clamping    */ | ||||
| #define RTF_IRTT        0x0100          /* Initial round trip time      */ | ||||
| #define RTF_REJECT      0x0200          /* Reject route                 */ | ||||
| #define RTF_WINDOW      0x0080	/* per route window clamping    */ | ||||
| #define RTF_IRTT        0x0100	/* Initial round trip time      */ | ||||
| #define RTF_REJECT      0x0200	/* Reject route                 */ | ||||
| #endif | ||||
|  | ||||
| void displayroutes(int noresolve, int netstatfmt) | ||||
| { | ||||
| 	char buff[256]; | ||||
| 	int  nl = 0 ; | ||||
| 	int nl = 0; | ||||
| 	struct in_addr dest; | ||||
| 	struct in_addr gw; | ||||
| 	struct in_addr mask; | ||||
| 	int flgs, ref, use, metric, mtu, win, ir; | ||||
| 	char flags[64]; | ||||
| 	unsigned long int d,g,m; | ||||
| 	unsigned long int d, g, m; | ||||
|  | ||||
| 	char sdest[16], sgw[16]; | ||||
|  | ||||
| 	FILE *fp = xfopen("/proc/net/route", "r"); | ||||
|  | ||||
| 	if(noresolve) | ||||
| 	if (noresolve) | ||||
| 		noresolve = 0x0fff; | ||||
|  | ||||
| 	while( fgets(buff, sizeof(buff), fp) != NULL ) { | ||||
| 		if(nl) { | ||||
| 	while (fgets(buff, sizeof(buff), fp) != NULL) { | ||||
| 		if (nl) { | ||||
| 			int ifl = 0; | ||||
| 			int numeric; | ||||
| 			struct sockaddr_in s_addr; | ||||
|  | ||||
| 			while(buff[ifl]!=' ' && buff[ifl]!='\t' && buff[ifl]!='\0') | ||||
| 			while (buff[ifl] != ' ' && buff[ifl] != '\t' && buff[ifl] != '\0') | ||||
| 				ifl++; | ||||
| 			buff[ifl]=0;    /* interface */ | ||||
| 			if(sscanf(buff+ifl+1, "%lx%lx%X%d%d%d%lx%d%d%d", | ||||
| 			   &d, &g, &flgs, &ref, &use, &metric, &m, &mtu, &win, &ir )!=10) { | ||||
| 				error_msg_and_die( "Unsuported kernel route format\n"); | ||||
| 			buff[ifl] = 0;	/* interface */ | ||||
| 			if (sscanf(buff + ifl + 1, "%lx%lx%X%d%d%d%lx%d%d%d", | ||||
| 					   &d, &g, &flgs, &ref, &use, &metric, &m, &mtu, &win, | ||||
| 					   &ir) != 10) { | ||||
| 				error_msg_and_die("Unsuported kernel route format\n"); | ||||
| 			} | ||||
| 			if(nl==1) { | ||||
| 			if (nl == 1) { | ||||
| 				printf("Kernel IP routing table\n"); | ||||
| 				printf("Destination     Gateway         Genmask         Flags %s Iface\n", | ||||
| 				       netstatfmt ? "  MSS Window  irtt" : "Metric Ref    Use"); | ||||
| 				printf | ||||
| 					("Destination     Gateway         Genmask         Flags %s Iface\n", | ||||
| 					 netstatfmt ? "  MSS Window  irtt" : "Metric Ref    Use"); | ||||
| 			} | ||||
| 			ifl = 0;        /* parse flags */ | ||||
|  			if(flgs&RTF_UP) { | ||||
|  				if(flgs&RTF_REJECT) | ||||
|  					flags[ifl++]='!'; | ||||
|  				else | ||||
|  					flags[ifl++]='U'; | ||||
|  				if(flgs&RTF_GATEWAY) | ||||
|  					flags[ifl++]='G'; | ||||
|  				if(flgs&RTF_HOST) | ||||
|  					flags[ifl++]='H'; | ||||
|  				if(flgs&RTF_REINSTATE) | ||||
|  					flags[ifl++]='R'; | ||||
|  				if(flgs&RTF_DYNAMIC) | ||||
|  					flags[ifl++]='D'; | ||||
|  				if(flgs&RTF_MODIFIED) | ||||
|  					flags[ifl++]='M'; | ||||
|  				flags[ifl]=0; | ||||
|  				dest.s_addr = d; | ||||
|  				gw.s_addr   = g; | ||||
|  				mask.s_addr = m; | ||||
| 			ifl = 0;	/* parse flags */ | ||||
| 			if (flgs & RTF_UP) { | ||||
| 				if (flgs & RTF_REJECT) | ||||
| 					flags[ifl++] = '!'; | ||||
| 				else | ||||
| 					flags[ifl++] = 'U'; | ||||
| 				if (flgs & RTF_GATEWAY) | ||||
| 					flags[ifl++] = 'G'; | ||||
| 				if (flgs & RTF_HOST) | ||||
| 					flags[ifl++] = 'H'; | ||||
| 				if (flgs & RTF_REINSTATE) | ||||
| 					flags[ifl++] = 'R'; | ||||
| 				if (flgs & RTF_DYNAMIC) | ||||
| 					flags[ifl++] = 'D'; | ||||
| 				if (flgs & RTF_MODIFIED) | ||||
| 					flags[ifl++] = 'M'; | ||||
| 				flags[ifl] = 0; | ||||
| 				dest.s_addr = d; | ||||
| 				gw.s_addr = g; | ||||
| 				mask.s_addr = m; | ||||
| 				memset(&s_addr, 0, sizeof(struct sockaddr_in)); | ||||
| 				s_addr.sin_family = AF_INET; | ||||
| 				s_addr.sin_addr = dest; | ||||
| 				numeric = noresolve | 0x8000; /* default instead of * */ | ||||
| 				numeric = noresolve | 0x8000;	/* default instead of * */ | ||||
| 				INET_rresolve(sdest, sizeof(sdest), &s_addr, numeric, m); | ||||
| 				numeric = noresolve | 0x4000; /* host instead of net */ | ||||
| 				numeric = noresolve | 0x4000;	/* host instead of net */ | ||||
| 				s_addr.sin_addr = gw; | ||||
| 				INET_rresolve(sgw, sizeof(sgw), &s_addr, numeric, m); | ||||
|  | ||||
| 				printf("%-16s%-16s%-16s%-6s", sdest, sgw, inet_ntoa(mask), flags); | ||||
| 				if ( netstatfmt ) | ||||
|  					printf("%5d %-5d %6d %s\n", mtu, win, ir, buff); | ||||
|  				else | ||||
|  					printf("%-6d %-2d %7d %s\n", metric, ref, use, buff); | ||||
| 				printf("%-16s%-16s%-16s%-6s", sdest, sgw, inet_ntoa(mask), | ||||
| 					   flags); | ||||
| 				if (netstatfmt) | ||||
| 					printf("%5d %-5d %6d %s\n", mtu, win, ir, buff); | ||||
| 				else | ||||
| 					printf("%-6d %-2d %7d %s\n", metric, ref, use, buff); | ||||
| 			} | ||||
|  		} | ||||
| 		} | ||||
| 		nl++; | ||||
|   	} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| #if CONFIG_FEATURE_IPV6 | ||||
| @@ -567,72 +573,75 @@ static void INET6_displayroutes(int noresolve) | ||||
| 	char addr6p[8][5], saddr6p[8][5], naddr6p[8][5]; | ||||
|  | ||||
| 	FILE *fp = xfopen("/proc/net/ipv6_route", "r"); | ||||
| 	flags[0]='U'; | ||||
|  | ||||
| 	if(noresolve) | ||||
| 	flags[0] = 'U'; | ||||
|  | ||||
| 	if (noresolve) | ||||
| 		noresolve = 0x0fff; | ||||
| 	numeric = noresolve | 0x8000; /* default instead of * */ | ||||
| 	numeric = noresolve | 0x8000;	/* default instead of * */ | ||||
|  | ||||
| 	printf("Kernel IPv6 routing table\n" | ||||
| 	       "Destination                                 " | ||||
| 	       "Next Hop                                " | ||||
| 	       "Flags Metric Ref    Use Iface\n"); | ||||
| 		   "Destination                                 " | ||||
| 		   "Next Hop                                " | ||||
| 		   "Flags Metric Ref    Use Iface\n"); | ||||
|  | ||||
| 	while( fgets(buff, sizeof(buff), fp) != NULL ) { | ||||
| 	while (fgets(buff, sizeof(buff), fp) != NULL) { | ||||
| 		int ifl; | ||||
|  | ||||
| 		if(sscanf(buff, "%4s%4s%4s%4s%4s%4s%4s%4s %02x " | ||||
| 			  "%4s%4s%4s%4s%4s%4s%4s%4s %02x " | ||||
| 			  "%4s%4s%4s%4s%4s%4s%4s%4s %08x %08x %08x %08x %s\n", | ||||
| 			  addr6p[0], addr6p[1], addr6p[2], addr6p[3], | ||||
| 			  addr6p[4], addr6p[5], addr6p[6], addr6p[7], | ||||
| 			  &prefix_len, | ||||
| 			  saddr6p[0], saddr6p[1], saddr6p[2], saddr6p[3], | ||||
| 			  saddr6p[4], saddr6p[5], saddr6p[6], saddr6p[7], | ||||
| 			  &slen, | ||||
| 			  naddr6p[0], naddr6p[1], naddr6p[2], naddr6p[3], | ||||
| 			  naddr6p[4], naddr6p[5], naddr6p[6], naddr6p[7], | ||||
| 			  &metric, &use, &refcnt, &iflags, iface)!=31) { | ||||
| 			error_msg_and_die( "Unsuported kernel route format\n"); | ||||
| 		if (sscanf(buff, "%4s%4s%4s%4s%4s%4s%4s%4s %02x " | ||||
| 				   "%4s%4s%4s%4s%4s%4s%4s%4s %02x " | ||||
| 				   "%4s%4s%4s%4s%4s%4s%4s%4s %08x %08x %08x %08x %s\n", | ||||
| 				   addr6p[0], addr6p[1], addr6p[2], addr6p[3], | ||||
| 				   addr6p[4], addr6p[5], addr6p[6], addr6p[7], | ||||
| 				   &prefix_len, | ||||
| 				   saddr6p[0], saddr6p[1], saddr6p[2], saddr6p[3], | ||||
| 				   saddr6p[4], saddr6p[5], saddr6p[6], saddr6p[7], | ||||
| 				   &slen, | ||||
| 				   naddr6p[0], naddr6p[1], naddr6p[2], naddr6p[3], | ||||
| 				   naddr6p[4], naddr6p[5], naddr6p[6], naddr6p[7], | ||||
| 				   &metric, &use, &refcnt, &iflags, iface) != 31) { | ||||
| 			error_msg_and_die("Unsuported kernel route format\n"); | ||||
| 		} | ||||
|  | ||||
| 		ifl = 1;        /* parse flags */ | ||||
| 		ifl = 1;		/* parse flags */ | ||||
| 		if (!(iflags & RTF_UP)) | ||||
| 			continue; | ||||
| 		if (iflags & RTF_GATEWAY) | ||||
| 			flags[ifl++]='G'; | ||||
| 			flags[ifl++] = 'G'; | ||||
| 		if (iflags & RTF_HOST) | ||||
| 			flags[ifl++]='H'; | ||||
| 			flags[ifl++] = 'H'; | ||||
| 		if (iflags & RTF_DEFAULT) | ||||
| 			flags[ifl++]='D'; | ||||
| 			flags[ifl++] = 'D'; | ||||
| 		if (iflags & RTF_ADDRCONF) | ||||
| 			flags[ifl++]='A'; | ||||
| 			flags[ifl++] = 'A'; | ||||
| 		if (iflags & RTF_CACHE) | ||||
| 			flags[ifl++]='C'; | ||||
| 		flags[ifl]=0; | ||||
| 			flags[ifl++] = 'C'; | ||||
| 		flags[ifl] = 0; | ||||
|  | ||||
| 		/* Fetch and resolve the target address. */ | ||||
| 		snprintf(addr6, sizeof(addr6), "%s:%s:%s:%s:%s:%s:%s:%s", | ||||
| 			 addr6p[0], addr6p[1], addr6p[2], addr6p[3], | ||||
| 			 addr6p[4], addr6p[5], addr6p[6], addr6p[7]); | ||||
| 				 addr6p[0], addr6p[1], addr6p[2], addr6p[3], | ||||
| 				 addr6p[4], addr6p[5], addr6p[6], addr6p[7]); | ||||
| 		inet_pton(AF_INET6, addr6, (struct sockaddr *) &saddr6.sin6_addr); | ||||
| 		saddr6.sin6_family=AF_INET6; | ||||
| 		saddr6.sin6_family = AF_INET6; | ||||
|  | ||||
| 		INET6_rresolve(addr6, sizeof(addr6), (struct sockaddr_in6 *) &saddr6, numeric); | ||||
| 		INET6_rresolve(addr6, sizeof(addr6), (struct sockaddr_in6 *) &saddr6, | ||||
| 					   numeric); | ||||
| 		snprintf(addr6, sizeof(addr6), "%s/%d", addr6, prefix_len); | ||||
|  | ||||
| 		/* Fetch and resolve the nexthop address. */ | ||||
| 		snprintf(naddr6, sizeof(naddr6), "%s:%s:%s:%s:%s:%s:%s:%s", | ||||
| 			 naddr6p[0], naddr6p[1], naddr6p[2], naddr6p[3], | ||||
| 			 naddr6p[4], naddr6p[5], naddr6p[6], naddr6p[7]); | ||||
| 				 naddr6p[0], naddr6p[1], naddr6p[2], naddr6p[3], | ||||
| 				 naddr6p[4], naddr6p[5], naddr6p[6], naddr6p[7]); | ||||
| 		inet_pton(AF_INET6, naddr6, (struct sockaddr *) &snaddr6.sin6_addr); | ||||
| 		snaddr6.sin6_family=AF_INET6; | ||||
| 		snaddr6.sin6_family = AF_INET6; | ||||
|  | ||||
| 		INET6_rresolve(naddr6, sizeof(naddr6), (struct sockaddr_in6 *) &snaddr6, numeric); | ||||
| 		INET6_rresolve(naddr6, sizeof(naddr6), | ||||
| 					   (struct sockaddr_in6 *) &snaddr6, numeric); | ||||
|  | ||||
| 		/* Print the info. */ | ||||
| 		printf("%-43s %-39s %-5s %-6d %-2d %7d %-8s\n", | ||||
| 		       addr6, naddr6, flags, metric, refcnt, use, iface); | ||||
| 			   addr6, naddr6, flags, metric, refcnt, use, iface); | ||||
| 	} | ||||
| } | ||||
| #endif | ||||
| @@ -641,56 +650,58 @@ int route_main(int argc, char **argv) | ||||
| { | ||||
| 	int opt; | ||||
| 	int what = 0; | ||||
|  | ||||
| #if CONFIG_FEATURE_IPV6 | ||||
| 	int af=AF_INET; | ||||
| 	int af = AF_INET; | ||||
| #endif | ||||
|  | ||||
| 	if ( !argv [1] || ( argv [1][0] == '-' )) { | ||||
| 	if (!argv[1] || (argv[1][0] == '-')) { | ||||
| 		/* check options */ | ||||
| 		int noresolve = 0; | ||||
| 		int extended = 0; | ||||
| 	 | ||||
|  | ||||
| 		while ((opt = getopt(argc, argv, "A:ne")) > 0) { | ||||
| 			switch (opt) { | ||||
| 				case 'n': | ||||
| 					noresolve = 1; | ||||
| 					break; | ||||
| 				case 'e': | ||||
| 					extended = 1; | ||||
| 					break; | ||||
| 				case 'A': | ||||
| 			case 'n': | ||||
| 				noresolve = 1; | ||||
| 				break; | ||||
| 			case 'e': | ||||
| 				extended = 1; | ||||
| 				break; | ||||
| 			case 'A': | ||||
| #if CONFIG_FEATURE_IPV6 | ||||
| 					if (strcmp(optarg, "inet6")==0) | ||||
| 						af=AF_INET6; | ||||
| 					break; | ||||
| 				if (strcmp(optarg, "inet6") == 0) | ||||
| 					af = AF_INET6; | ||||
| 				break; | ||||
| #endif | ||||
| 				default: | ||||
| 					show_usage ( ); | ||||
| 			default: | ||||
| 				show_usage(); | ||||
| 			} | ||||
| 		} | ||||
| 	 | ||||
|  | ||||
| #if CONFIG_FEATURE_IPV6 | ||||
| 		if (af==AF_INET6) | ||||
| 		if (af == AF_INET6) | ||||
| 			INET6_displayroutes(*argv != NULL); | ||||
| 		else | ||||
| #endif | ||||
| 		displayroutes ( noresolve, extended ); | ||||
| 			displayroutes(noresolve, extended); | ||||
| 		return EXIT_SUCCESS; | ||||
| 	} else { | ||||
| 		/* check verb */ | ||||
| 		if (strcmp( argv [1], "add")==0) | ||||
| 		if (strcmp(argv[1], "add") == 0) | ||||
| 			what = RTACTION_ADD; | ||||
| 		else if (strcmp( argv [1], "del")==0 || strcmp( argv [1], "delete")==0) | ||||
| 		else if (strcmp(argv[1], "del") == 0 | ||||
| 				 || strcmp(argv[1], "delete") == 0) | ||||
| 			what = RTACTION_DEL; | ||||
| 		else if (strcmp( argv [1], "flush")==0) | ||||
| 		else if (strcmp(argv[1], "flush") == 0) | ||||
| 			what = RTACTION_FLUSH; | ||||
| 		else | ||||
| 			show_usage(); | ||||
| 	} | ||||
|  | ||||
| #if CONFIG_FEATURE_IPV6 | ||||
| 	if (af==AF_INET6) | ||||
| 		return INET6_setroute(what, 0, argv+2); | ||||
| 	if (af == AF_INET6) | ||||
| 		return INET6_setroute(what, 0, argv + 2); | ||||
| #endif | ||||
| 	return INET_setroute(what, 0, argv+2 );	 | ||||
| 	return INET_setroute(what, 0, argv + 2); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user