projects
/
oweals
/
busybox.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
These were broken when using dmalloc due to include file ordering
[oweals/busybox.git]
/
networking
/
route.c
diff --git
a/networking/route.c
b/networking/route.c
index 3fad81a01c3120fc8439db3d2a96ba409e9d20df..d571fc5a3a770065792777d3662c9b547dd535a1 100644
(file)
--- a/
networking/route.c
+++ b/
networking/route.c
@@
-15,12
+15,12
@@
* Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* Foundation; either version 2 of the License, or (at
* your option) any later version.
*
- * $Id: route.c,v 1.
3 2001/02/14 21:23:0
6 andersen Exp $
+ * $Id: route.c,v 1.
10 2001/03/21 07:34:2
6 andersen Exp $
*
* displayroute() code added by Vladimir N. Oleynik <dzo@simtreas.ru>
*
* displayroute() code added by Vladimir N. Oleynik <dzo@simtreas.ru>
+ * adjustments by Larry Doolittle <LRDoolittle@lbl.gov>
*/
*/
-#include "busybox.h"
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
@@
-36,6
+36,7
@@
#include <getopt.h>
#include <unistd.h>
#include <ctype.h>
#include <getopt.h>
#include <unistd.h>
#include <ctype.h>
+#include "busybox.h"
#define _(x) x
#define _(x) x
@@
-59,18
+60,18
@@
static int
INET_resolve(char *name, struct sockaddr *sa)
{
static int
INET_resolve(char *name, struct sockaddr *sa)
{
- struct sockaddr_in *sin = (struct sockaddr_in *)sa;
+ struct sockaddr_in *s
_
in = (struct sockaddr_in *)sa;
- sin->sin_family = AF_INET;
- sin->sin_port = 0;
+ s
_
in->sin_family = AF_INET;
+ s
_
in->sin_port = 0;
/* Default is special, meaning 0.0.0.0. */
/* Default is special, meaning 0.0.0.0. */
- if (
!strcmp(name, "default")
) {
- sin->sin_addr.s_addr = INADDR_ANY;
- return
(1)
;
+ if (
strcmp(name, "default")==0
) {
+ s
_
in->sin_addr.s_addr = INADDR_ANY;
+ return
1
;
}
/* Look to see if it's a dotted quad. */
}
/* Look to see if it's a dotted quad. */
- if (inet_aton(name, &sin->sin_addr)) {
+ if (inet_aton(name, &s
_
in->sin_addr)) {
return 0;
}
/* guess not.. */
return 0;
}
/* guess not.. */
@@
-107,10
+108,10
@@
INET_setroute(int action, int options, char **args)
xflag = 0;
xflag = 0;
- if (
!strcmp(*args, "-net")
) {
+ if (
strcmp(*args, "-net")==0
) {
xflag = 1;
args++;
xflag = 1;
args++;
- } else if (
!strcmp(*args, "-host")
) {
+ } else if (
strcmp(*args, "-host")==0
) {
xflag = 2;
args++;
}
xflag = 2;
args++;
}
@@
-124,8
+125,8
@@
INET_setroute(int action, int options, char **args)
if ((isnet = INET_resolve(target, &rt.rt_dst)) < 0) {
if ((isnet = INET_resolve(target, &rt.rt_dst)) < 0) {
-
fprintf(stderr, "cant resolve %s\n"
, target);
- return
(1);
+
error_msg(_("can't resolve %s")
, target);
+ return
EXIT_FAILURE; /* XXX change to E_something */
}
switch (xflag) {
}
switch (xflag) {
@@
-147,7
+148,7
@@
INET_setroute(int action, int options, char **args)
rt.rt_flags &= ~RTF_HOST;
while (*args) {
rt.rt_flags &= ~RTF_HOST;
while (*args) {
- if (
!strcmp(*args, "metric")
) {
+ if (
strcmp(*args, "metric")==0
) {
int metric;
args++;
int metric;
args++;
@@
-157,13
+158,13
@@
INET_setroute(int action, int options, char **args)
#if HAVE_NEW_ADDRT
rt.rt_metric = metric + 1;
#else
#if HAVE_NEW_ADDRT
rt.rt_metric = metric + 1;
#else
- ENOSUPP("inet_setroute", "NEW_ADDRT (metric)");
+ ENOSUPP("inet_setroute", "NEW_ADDRT (metric)");
/* XXX Fixme */
#endif
args++;
continue;
}
#endif
args++;
continue;
}
- if (
!strcmp(*args, "netmask")
) {
+ if (
strcmp(*args, "netmask")==0
) {
struct sockaddr mask;
args++;
struct sockaddr mask;
args++;
@@
-171,15
+172,15
@@
INET_setroute(int action, int options, char **args)
show_usage();
safe_strncpy(netmask, *args, (sizeof netmask));
if ((isnet = INET_resolve(netmask, &mask)) < 0) {
show_usage();
safe_strncpy(netmask, *args, (sizeof netmask));
if ((isnet = INET_resolve(netmask, &mask)) < 0) {
-
fprintf(stderr, "cant resolve netmask %s\n"
, netmask);
- return
(E_LOOKUP)
;
+
error_msg(_("can't resolve netmask %s")
, netmask);
+ return
E_LOOKUP
;
}
rt.rt_genmask = full_mask(mask);
args++;
continue;
}
}
rt.rt_genmask = full_mask(mask);
args++;
continue;
}
- if (
!strcmp(*args, "gw") || !strcmp(*args, "gateway")
) {
+ if (
strcmp(*args, "gw")==0 || strcmp(*args, "gateway")==0
) {
args++;
if (!*args)
show_usage();
args++;
if (!*args)
show_usage();
@@
-187,21
+188,21
@@
INET_setroute(int action, int options, char **args)
show_usage();
safe_strncpy(gateway, *args, (sizeof gateway));
if ((isnet = INET_resolve(gateway, &rt.rt_gateway)) < 0) {
show_usage();
safe_strncpy(gateway, *args, (sizeof gateway));
if ((isnet = INET_resolve(gateway, &rt.rt_gateway)) < 0) {
-
fprintf(stderr, "cant resolve gw %s\n"
, gateway);
- return
(E_LOOKUP)
;
+
error_msg(_("can't resolve gw %s")
, gateway);
+ return
E_LOOKUP
;
}
if (isnet) {
}
if (isnet) {
- fprintf(stderr,
- _("
route: %s: cannot use a NETWORK as gateway!\n
"),
+ error_msg(
+ _("
%s: cannot use a NETWORK as gateway!
"),
gateway);
gateway);
- return
(E_OPTERR)
;
+ return
E_OPTERR
;
}
rt.rt_flags |= RTF_GATEWAY;
args++;
continue;
}
}
rt.rt_flags |= RTF_GATEWAY;
args++;
continue;
}
- if (
!strcmp(*args, "mss")
) {
+ if (
strcmp(*args, "mss")==0
) {
args++;
rt.rt_flags |= RTF_MSS;
if (!*args)
args++;
rt.rt_flags |= RTF_MSS;
if (!*args)
@@
-209,13
+210,13
@@
INET_setroute(int action, int options, char **args)
rt.rt_mss = atoi(*args);
args++;
if (rt.rt_mss < 64 || rt.rt_mss > 32768) {
rt.rt_mss = atoi(*args);
args++;
if (rt.rt_mss < 64 || rt.rt_mss > 32768) {
-
fprintf(stderr, _("route: Invalid MSS.\n
"));
- return
(E_OPTERR)
;
+
error_msg(_("Invalid MSS.
"));
+ return
E_OPTERR
;
}
continue;
}
}
continue;
}
- if (
!strcmp(*args, "window")
) {
+ if (
strcmp(*args, "window")==0
) {
args++;
if (!*args)
show_usage();
args++;
if (!*args)
show_usage();
@@
-223,13
+224,13
@@
INET_setroute(int action, int options, char **args)
rt.rt_window = atoi(*args);
args++;
if (rt.rt_window < 128) {
rt.rt_window = atoi(*args);
args++;
if (rt.rt_window < 128) {
-
fprintf(stderr, _("route: Invalid window.\n
"));
- return
(E_OPTERR)
;
+
error_msg(_("Invalid window.
"));
+ return
E_OPTERR
;
}
continue;
}
}
continue;
}
- if (
!strcmp(*args, "irtt")
) {
+ if (
strcmp(*args, "irtt")==0
) {
args++;
if (!*args)
show_usage();
args++;
if (!*args)
show_usage();
@@
-240,41
+241,41
@@
INET_setroute(int action, int options, char **args)
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)) {
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)) {
-
fprintf(stderr, _("route: Invalid initial rtt.\n
"));
- return
(E_OPTERR)
;
+
error_msg(_("Invalid initial rtt.
"));
+ return
E_OPTERR
;
}
#endif
#else
}
#endif
#else
- ENOSUPP("inet_setroute", "RTF_IRTT");
+ ENOSUPP("inet_setroute", "RTF_IRTT");
/* XXX Fixme */
#endif
continue;
}
#endif
continue;
}
- if (
!strcmp(*args, "reject")
) {
+ if (
strcmp(*args, "reject")==0
) {
args++;
#if HAVE_RTF_REJECT
rt.rt_flags |= RTF_REJECT;
#else
args++;
#if HAVE_RTF_REJECT
rt.rt_flags |= RTF_REJECT;
#else
- ENOSUPP("inet_setroute", "RTF_REJECT");
+ ENOSUPP("inet_setroute", "RTF_REJECT");
/* XXX Fixme */
#endif
continue;
}
#endif
continue;
}
- if (
!strcmp(*args, "mod")
) {
+ if (
strcmp(*args, "mod")==0
) {
args++;
rt.rt_flags |= RTF_MODIFIED;
continue;
}
args++;
rt.rt_flags |= RTF_MODIFIED;
continue;
}
- if (
!strcmp(*args, "dyn")
) {
+ if (
strcmp(*args, "dyn")==0
) {
args++;
rt.rt_flags |= RTF_DYNAMIC;
continue;
}
args++;
rt.rt_flags |= RTF_DYNAMIC;
continue;
}
- if (
!strcmp(*args, "reinstate")
) {
+ if (
strcmp(*args, "reinstate")==0
) {
args++;
rt.rt_flags |= RTF_REINSTATE;
continue;
}
args++;
rt.rt_flags |= RTF_REINSTATE;
continue;
}
- if (
!strcmp(*args, "device") || !strcmp(*args, "dev")
) {
+ if (
strcmp(*args, "device")==0 || strcmp(*args, "dev")==0
) {
args++;
if (rt.rt_dev || *args == NULL)
show_usage();
args++;
if (rt.rt_dev || *args == NULL)
show_usage();
@@
-286,8
+287,9
@@
INET_setroute(int action, int options, char **args)
rt.rt_dev = *args++;
if (*args)
show_usage(); /* must be last to catch typos */
rt.rt_dev = *args++;
if (*args)
show_usage(); /* must be last to catch typos */
- } else
+ } else
{
show_usage();
show_usage();
+ }
}
#if HAVE_RTF_REJECT
}
#if HAVE_RTF_REJECT
@@
-300,19
+302,19
@@
INET_setroute(int action, int options, char **args)
unsigned long mask = mask_in_addr(rt);
mask = ~ntohl(mask);
if ((rt.rt_flags & RTF_HOST) && mask != 0xffffffff) {
unsigned long mask = mask_in_addr(rt);
mask = ~ntohl(mask);
if ((rt.rt_flags & RTF_HOST) && mask != 0xffffffff) {
- fprintf(stderr,
- _("
route: netmask %.8x doesn't make sense with host route\n
"),
+ error_msg(
+ _("
netmask %.8x doesn't make sense with host route
"),
(unsigned int)mask);
(unsigned int)mask);
- return
(E_OPTERR)
;
+ return
E_OPTERR
;
}
if (mask & (mask + 1)) {
}
if (mask & (mask + 1)) {
-
fprintf(stderr, _("route: bogus netmask %s\n
"), netmask);
- return
(E_OPTERR)
;
+
error_msg(_("bogus netmask %s
"), netmask);
+ return
E_OPTERR
;
}
mask = ((struct sockaddr_in *) &rt.rt_dst)->sin_addr.s_addr;
if (mask & ~mask_in_addr(rt)) {
}
mask = ((struct sockaddr_in *) &rt.rt_dst)->sin_addr.s_addr;
if (mask & ~mask_in_addr(rt)) {
-
fprintf(stderr, _("route: netmask doesn't match route address\n
"));
- return
(E_OPTERR)
;
+
error_msg(_("netmask doesn't match route address
"));
+ return
E_OPTERR
;
}
}
/* Fill out netmask if still unset */
}
}
/* Fill out netmask if still unset */
@@
-322,29
+324,29
@@
INET_setroute(int action, int options, char **args)
/* Create a socket to the INET kernel. */
if ((skfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("socket");
/* Create a socket to the INET kernel. */
if ((skfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("socket");
- return
(E_SOCK)
;
+ return
E_SOCK
;
}
/* Tell the kernel to accept this route. */
if (action == RTACTION_DEL) {
if (ioctl(skfd, SIOCDELRT, &rt) < 0) {
perror("SIOCDELRT");
close(skfd);
}
/* Tell the kernel to accept this route. */
if (action == RTACTION_DEL) {
if (ioctl(skfd, SIOCDELRT, &rt) < 0) {
perror("SIOCDELRT");
close(skfd);
- return
(E_SOCK)
;
+ return
E_SOCK
;
}
} else {
if (ioctl(skfd, SIOCADDRT, &rt) < 0) {
perror("SIOCADDRT");
close(skfd);
}
} else {
if (ioctl(skfd, SIOCADDRT, &rt) < 0) {
perror("SIOCADDRT");
close(skfd);
- return
(E_SOCK)
;
+ return
E_SOCK
;
}
}
/* Close the socket. */
(void) close(skfd);
}
}
/* Close the socket. */
(void) close(skfd);
- return
(0)
;
+ return
EXIT_SUCCESS
;
}
}
-void displayroutes(void)
+
static
void displayroutes(void)
{
char buff[256];
int nl = 0 ;
{
char buff[256];
int nl = 0 ;
@@
-358,11
+360,8
@@
void displayroutes(void)
char sdest[16], sgw[16];
char sdest[16], sgw[16];
- FILE *fp = fopen("/proc/net/route", "r");
+ FILE *fp =
x
fopen("/proc/net/route", "r");
- if(fp==0) {
- perror_msg_and_die("/proc/net/route");
- }
while( fgets(buff, sizeof(buff), fp) != NULL ) {
if(nl) {
int ifl = 0;
while( fgets(buff, sizeof(buff), fp) != NULL ) {
if(nl) {
int ifl = 0;
@@
-373,12
+372,11
@@
void displayroutes(void)
&d, &g, &flgs, &ref, &use, &metric, &m)!=7) {
error_msg_and_die( "Unsuported kernel route format\n");
}
&d, &g, &flgs, &ref, &use, &metric, &m)!=7) {
error_msg_and_die( "Unsuported kernel route format\n");
}
- dest.s_addr = d;
- gw.s_addr = g;
- mask.s_addr = m;
- if(nl==1)
- printf("Kernel IP routing table\n\
-Destination\tGateway\t\tGenmask\t\tFlags Metric Ref Use Iface\n");
+ if(nl==1) {
+ printf("Kernel IP routing table\n"
+"Destination Gateway Genmask Flags Metric Ref Use Iface\n");
+ }
+
ifl = 0; /* parse flags */
if(flgs&1)
ifl = 0; /* parse flags */
if(flgs&1)
@@
-388,11
+386,14
@@
Destination\tGateway\t\tGenmask\t\tFlags Metric Ref Use Iface\n");
if(flgs&4)
flags[ifl++]='H';
flags[ifl]=0;
if(flgs&4)
flags[ifl++]='H';
flags[ifl]=0;
+ dest.s_addr = d;
+ gw.s_addr = g;
+ mask.s_addr = m;
strcpy(sdest, (dest.s_addr==0 ? "default" :
inet_ntoa(dest)));
strcpy(sgw, (gw.s_addr==0 ? "*" :
inet_ntoa(gw)));
strcpy(sdest, (dest.s_addr==0 ? "default" :
inet_ntoa(dest)));
strcpy(sgw, (gw.s_addr==0 ? "*" :
inet_ntoa(gw)));
- printf("%-16s%-16s%-16s%-6s%-
7d%-9d%-2d
%s\n",
+ printf("%-16s%-16s%-16s%-6s%-
6d %-2d %7d
%s\n",
sdest, sgw,
inet_ntoa(mask),
flags, metric, ref, use, buff);
sdest, sgw,
inet_ntoa(mask),
flags, metric, ref, use, buff);
@@
-410,20
+411,18
@@
int route_main(int argc, char **argv)
if (*argv == NULL) {
displayroutes();
if (*argv == NULL) {
displayroutes();
-
exit(EXIT_SUCCESS)
;
+
return EXIT_SUCCESS
;
} else {
/* check verb */
} else {
/* check verb */
- if (
!strcmp(*argv, "add")
)
+ if (
strcmp(*argv, "add")==0
)
what = RTACTION_ADD;
what = RTACTION_ADD;
- else if (
!strcmp(*argv, "del") || !strcmp(*argv, "delete")
)
+ else if (
strcmp(*argv, "del")==0 || strcmp(*argv, "delete")==0
)
what = RTACTION_DEL;
what = RTACTION_DEL;
- else if (
!strcmp(*argv, "flush")
)
+ else if (
strcmp(*argv, "flush")==0
)
what = RTACTION_FLUSH;
else
show_usage();
}
what = RTACTION_FLUSH;
else
show_usage();
}
- INET_setroute(what, 0, ++argv);
-
- exit(EXIT_SUCCESS);
+ return INET_setroute(what, 0, ++argv);
}
}