Patch from Bastian Blank:
authorEric Andersen <andersen@codepoet.org>
Fri, 15 Nov 2002 09:12:47 +0000 (09:12 -0000)
committerEric Andersen <andersen@codepoet.org>
Fri, 15 Nov 2002 09:12:47 +0000 (09:12 -0000)
    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

index e38abcd01890777f8c35700ab01af34c318d21f2..8b6e7eebdeef581ae6d235f6e190211ea7902e45 100644 (file)
@@ -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);