From 5780adb586042f02b10546f17d3cf1bb72d1e9d5 Mon Sep 17 00:00:00 2001
From: Eric Andersen
Date: Fri, 15 Nov 2002 09:12:47 +0000
Subject: Patch from Bastian Blank:

    hi erik

    the following patch fixes the handling of iproute add <route> dev <dev>.
    the code got lost while removing things.

    bastian
---
 networking/libiproute/iproute.c | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

(limited to 'networking/libiproute')

diff --git a/networking/libiproute/iproute.c b/networking/libiproute/iproute.c
index e38abcd..8b6e7ee 100644
--- a/networking/libiproute/iproute.c
+++ b/networking/libiproute/iproute.c
@@ -234,9 +234,6 @@ int iproute_modify(int cmd, unsigned flags, int argc, char **argv)
 	char  *d = NULL;
 	int gw_ok = 0;
 	int dst_ok = 0;
-	//int nhs_ok = 0;
-	//int scope_ok = 0;
-	//int table_ok = 0;
 	int proto_ok = 0;
 	int type_ok = 0;
 
@@ -325,6 +322,20 @@ int iproute_modify(int cmd, unsigned flags, int argc, char **argv)
 	if (rtnl_open(&rth, 0) < 0)
 		exit(1);
 
+	if (d)  {
+		int idx;
+
+		ll_init_map(&rth);
+
+		if (d) {
+			if ((idx = ll_name_to_index(d)) == 0) {
+				fprintf(stderr, "Cannot find device \"%s\"\n", d);
+				return -1;
+			}
+			addattr32(&req.n, sizeof(req), RTA_OIF, idx);
+		}
+	}
+
 	if (mxrta->rta_len > RTA_LENGTH(0)) {
 		if (mxlock)
 			rta_addattr32(mxrta, sizeof(mxbuf), RTAX_LOCK, mxlock);
-- 
cgit v1.1