From 863a3e15d6f08e187238ded7fc17422dd947ef1e Mon Sep 17 00:00:00 2001
From: Eric Andersen
Date: Mon, 27 Aug 2001 17:57:27 +0000
Subject: patch from vodz -- route cleanup to display all route entries

---
 networking/route.c | 39 ++++++++++++++++++++++++++++++---------
 route.c            | 39 ++++++++++++++++++++++++++++++---------
 2 files changed, 60 insertions(+), 18 deletions(-)

diff --git a/networking/route.c b/networking/route.c
index 8e12a3f..bb88307 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 <dzo@simtreas.ru>
  * adjustments by Larry Doolittle  <LRDoolittle@lbl.gov>
@@ -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 8e12a3f..bb88307 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 <dzo@simtreas.ru>
  * adjustments by Larry Doolittle  <LRDoolittle@lbl.gov>
@@ -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;
-- 
cgit v1.1