always create device routes
authorFelix Fietkau <nbd@openwrt.org>
Thu, 15 Mar 2012 10:03:52 +0000 (11:03 +0100)
committerFelix Fietkau <nbd@openwrt.org>
Thu, 15 Mar 2012 10:10:36 +0000 (11:10 +0100)
interface-ip.c
interface-ip.h
proto.c
system-dummy.c
system-linux.c

index 51612fa..3204cd9 100644 (file)
@@ -83,8 +83,6 @@ interface_ip_add_route(struct interface *iface, struct blob_attr *attr, bool v6)
                        DPRINTF("Failed to parse route gateway: %s\n", (char *) blobmsg_data(cur));
                        goto error;
                }
-       } else {
-               route->flags |= DEVADDR_DEVICE;
        }
 
        if ((cur = tb[ROUTE_METRIC]) != NULL)
index e983a84..0ce94df 100644 (file)
@@ -9,9 +9,6 @@ enum device_addr_flags {
        DEVADDR_INET6           = (1 << 0),
        DEVADDR_FAMILY          = DEVADDR_INET4 | DEVADDR_INET6,
 
-       /* device route (no gateway) */
-       DEVADDR_DEVICE          = (1 << 1),
-
        /* externally added address */
        DEVADDR_EXTERNAL        = (1 << 2),
 };
diff --git a/proto.c b/proto.c
index 56870b1..246d78e 100644 (file)
--- a/proto.c
+++ b/proto.c
@@ -183,7 +183,7 @@ parse_gateway_option(struct interface *iface, struct blob_attr *attr, bool v6)
        }
 
        route->mask = 0;
-       route->flags = DEVADDR_DEVICE | (v6 ? DEVADDR_INET6 : DEVADDR_INET4);
+       route->flags = (v6 ? DEVADDR_INET6 : DEVADDR_INET4);
        vlist_add(&iface->proto_ip.route, &route->node, &route->mask);
 
        return true;
index 401a1a9..b3aefbe 100644 (file)
@@ -156,8 +156,7 @@ int system_add_route(struct device *dev, struct device_route *route)
                sprintf(gw, " gw %d.%d.%d.%d",
                        a2[0], a2[1], a2[2], a2[3]);
 
-       if (route->flags & DEVADDR_DEVICE)
-               sprintf(devstr, " dev %s", dev->ifname);
+       sprintf(devstr, " dev %s", dev->ifname);
 
        if (route->metric > 0)
                sprintf(devstr, " metric %d", route->metric);
@@ -185,8 +184,7 @@ int system_del_route(struct device *dev, struct device_route *route)
                sprintf(gw, " gw %d.%d.%d.%d",
                        a2[0], a2[1], a2[2], a2[3]);
 
-       if (route->flags & DEVADDR_DEVICE)
-               sprintf(devstr, " dev %s", dev->ifname);
+       sprintf(devstr, " dev %s", dev->ifname);
 
        D(SYSTEM, "route del %s%s%s\n", addr, gw, devstr);
        return 0;
index 0e6ce5a..66799e9 100644 (file)
@@ -901,8 +901,7 @@ static int system_rt(struct device *dev, struct device_route *route, int cmd)
        if (have_gw)
                nla_put(msg, RTA_GATEWAY, alen, &route->nexthop);
 
-       if (route->flags & DEVADDR_DEVICE)
-               nla_put_u32(msg, RTA_OIF, ifindex);
+       nla_put_u32(msg, RTA_OIF, ifindex);
 
        return system_rtnl_call(msg);
 }