Another fix from vodz

This commit is contained in:
Eric Andersen 2001-09-05 19:32:00 +00:00
parent 3b1525e444
commit b9408504f5
2 changed files with 94 additions and 90 deletions

View File

@ -15,7 +15,7 @@
* Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* $Id: route.c,v 1.12 2001/08/27 17:57:27 andersen Exp $
* $Id: route.c,v 1.13 2001/09/05 19:32:00 andersen Exp $
*
* displayroute() code added by Vladimir N. Oleynik <dzo@simtreas.ru>
* adjustments by Larry Doolittle <LRDoolittle@lbl.gov>
@ -370,7 +370,7 @@ static void displayroutes(void)
struct in_addr gw;
struct in_addr mask;
int flgs, ref, use, metric;
char flags[4];
char flags[64];
unsigned long int d,g,m;
char sdest[16], sgw[16];
@ -384,7 +384,7 @@ static void displayroutes(void)
while(buff[ifl]!=' ' && buff[ifl]!='\t' && buff[ifl]!='\0')
ifl++;
buff[ifl]=0; /* interface */
if(sscanf(buff+ifl+1, "%lx%lx%d%d%d%d%lx",
if(sscanf(buff+ifl+1, "%lx%lx%X%d%d%d%lx",
&d, &g, &flgs, &ref, &use, &metric, &m)!=7) {
error_msg_and_die( "Unsuported kernel route format\n");
}
@ -393,7 +393,10 @@ static void displayroutes(void)
"Destination Gateway Genmask Flags Metric Ref Use Iface\n");
ifl = 0; /* parse flags */
if(flgs&RTF_UP)
if(flgs&RTF_UP) {
if(flgs&RTF_REJECT)
flags[ifl++]='!';
else
flags[ifl++]='U';
if(flgs&RTF_GATEWAY)
flags[ifl++]='G';
@ -404,9 +407,7 @@ static void displayroutes(void)
if(flgs&RTF_DYNAMIC)
flags[ifl++]='D';
if(flgs&RTF_MODIFIED)
flags[ifl++]='H';
if(flgs&RTF_REJECT)
flags[ifl++]='!';
flags[ifl++]='M';
flags[ifl]=0;
dest.s_addr = d;
gw.s_addr = g;
@ -420,6 +421,7 @@ static void displayroutes(void)
inet_ntoa(mask),
flags, metric, ref, use, buff);
}
}
nl++;
}
}

16
route.c
View File

@ -15,7 +15,7 @@
* Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* $Id: route.c,v 1.12 2001/08/27 17:57:27 andersen Exp $
* $Id: route.c,v 1.13 2001/09/05 19:32:00 andersen Exp $
*
* displayroute() code added by Vladimir N. Oleynik <dzo@simtreas.ru>
* adjustments by Larry Doolittle <LRDoolittle@lbl.gov>
@ -370,7 +370,7 @@ static void displayroutes(void)
struct in_addr gw;
struct in_addr mask;
int flgs, ref, use, metric;
char flags[4];
char flags[64];
unsigned long int d,g,m;
char sdest[16], sgw[16];
@ -384,7 +384,7 @@ static void displayroutes(void)
while(buff[ifl]!=' ' && buff[ifl]!='\t' && buff[ifl]!='\0')
ifl++;
buff[ifl]=0; /* interface */
if(sscanf(buff+ifl+1, "%lx%lx%d%d%d%d%lx",
if(sscanf(buff+ifl+1, "%lx%lx%X%d%d%d%lx",
&d, &g, &flgs, &ref, &use, &metric, &m)!=7) {
error_msg_and_die( "Unsuported kernel route format\n");
}
@ -393,7 +393,10 @@ static void displayroutes(void)
"Destination Gateway Genmask Flags Metric Ref Use Iface\n");
ifl = 0; /* parse flags */
if(flgs&RTF_UP)
if(flgs&RTF_UP) {
if(flgs&RTF_REJECT)
flags[ifl++]='!';
else
flags[ifl++]='U';
if(flgs&RTF_GATEWAY)
flags[ifl++]='G';
@ -404,9 +407,7 @@ static void displayroutes(void)
if(flgs&RTF_DYNAMIC)
flags[ifl++]='D';
if(flgs&RTF_MODIFIED)
flags[ifl++]='H';
if(flgs&RTF_REJECT)
flags[ifl++]='!';
flags[ifl++]='M';
flags[ifl]=0;
dest.s_addr = d;
gw.s_addr = g;
@ -420,6 +421,7 @@ static void displayroutes(void)
inet_ntoa(mask),
flags, metric, ref, use, buff);
}
}
nl++;
}
}