diff --git a/networking/route.c b/networking/route.c index 8e12a3f2e..bb88307a8 100644 --- a/networking/route.c +++ b/networking/route.c @@ -15,7 +15,7 @@ * Foundation; either version 2 of the License, or (at * your option) any later version. * - * $Id: route.c,v 1.11 2001/08/23 22:05:33 andersen Exp $ + * $Id: route.c,v 1.12 2001/08/27 17:57:27 andersen Exp $ * * displayroute() code added by Vladimir N. Oleynik * adjustments by Larry Doolittle @@ -345,6 +345,23 @@ INET_setroute(int action, int options, char **args) return EXIT_SUCCESS; } +#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 */ +#ifndef RTF_MSS +#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 */ +#endif + static void displayroutes(void) { char buff[256]; @@ -371,21 +388,25 @@ static void displayroutes(void) &d, &g, &flgs, &ref, &use, &metric, &m)!=7) { error_msg_and_die( "Unsuported kernel route format\n"); } - if(nl==1) { + if(nl==1) printf("Kernel IP routing table\n" "Destination Gateway Genmask Flags Metric Ref Use Iface\n"); - } else { - nl++; - continue; - } ifl = 0; /* parse flags */ - if(flgs&1) + if(flgs&RTF_UP) flags[ifl++]='U'; - if(flgs&2) + if(flgs&RTF_GATEWAY) flags[ifl++]='G'; - if(flgs&4) + 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++]='H'; + if(flgs&RTF_REJECT) + flags[ifl++]='!'; flags[ifl]=0; dest.s_addr = d; gw.s_addr = g; diff --git a/route.c b/route.c index 8e12a3f2e..bb88307a8 100644 --- a/route.c +++ b/route.c @@ -15,7 +15,7 @@ * Foundation; either version 2 of the License, or (at * your option) any later version. * - * $Id: route.c,v 1.11 2001/08/23 22:05:33 andersen Exp $ + * $Id: route.c,v 1.12 2001/08/27 17:57:27 andersen Exp $ * * displayroute() code added by Vladimir N. Oleynik * adjustments by Larry Doolittle @@ -345,6 +345,23 @@ INET_setroute(int action, int options, char **args) return EXIT_SUCCESS; } +#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 */ +#ifndef RTF_MSS +#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 */ +#endif + static void displayroutes(void) { char buff[256]; @@ -371,21 +388,25 @@ static void displayroutes(void) &d, &g, &flgs, &ref, &use, &metric, &m)!=7) { error_msg_and_die( "Unsuported kernel route format\n"); } - if(nl==1) { + if(nl==1) printf("Kernel IP routing table\n" "Destination Gateway Genmask Flags Metric Ref Use Iface\n"); - } else { - nl++; - continue; - } ifl = 0; /* parse flags */ - if(flgs&1) + if(flgs&RTF_UP) flags[ifl++]='U'; - if(flgs&2) + if(flgs&RTF_GATEWAY) flags[ifl++]='G'; - if(flgs&4) + 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++]='H'; + if(flgs&RTF_REJECT) + flags[ifl++]='!'; flags[ifl]=0; dest.s_addr = d; gw.s_addr = g;