netdev: Add 'netdev' parameter to netdev_add_router().
authorBen Pfaff <blp@nicira.com>
Thu, 23 Jul 2009 19:18:14 +0000 (12:18 -0700)
committerBen Pfaff <blp@nicira.com>
Thu, 30 Jul 2009 23:07:14 +0000 (16:07 -0700)
When there is the possibility of multiple classes of netdevs,
netdev_add_router() needs to know which of these to use, so it needs a
"struct netdev *" parameter.

lib/dhcp-client.c
lib/netdev.c
lib/netdev.h
vswitchd/bridge.c

index a9163c78ace5be42daeacf1ad80fdf38dcb89603..c8ae00e061eb3499a3be3c8101f768c360c452f7 100644 (file)
@@ -411,7 +411,7 @@ dhclient_configure_netdev(struct dhclient *cli)
     }
 
     if (!error && router.s_addr) {
-        error = netdev_add_router(router);
+        error = netdev_add_router(cli->netdev, router);
         if (error) {
             VLOG_ERR("failed to add default route to "IP_FMT" on %s: %s",
                      IP_ARGS(&router), netdev_get_name(cli->netdev),
index 903d14cf7fe458bbe1cc2fcf334b26d1dfa6077d..701bb53e5e43db47b5bb1ef499c0a913fe6a2237 100644 (file)
@@ -879,9 +879,10 @@ netdev_set_in4(struct netdev *netdev, struct in_addr addr, struct in_addr mask)
     return error;
 }
 
-/* Adds 'router' as a default IP gateway. */
+/* Adds 'router' as a default IP gateway for the TCP/IP stack that corresponds
+ * to 'netdev'. */
 int
-netdev_add_router(struct in_addr router)
+netdev_add_router(struct netdev *netdev UNUSED, struct in_addr router)
 {
     struct in_addr any = { INADDR_ANY };
     struct rtentry rt;
index 01eebebe40544fd4ae03e1f9fe045997fe81eed8..fb8c1e530027852c45f979bb2334efe23eeb19e6 100644 (file)
@@ -94,7 +94,7 @@ int netdev_get_features(struct netdev *,
 int netdev_set_advertisements(struct netdev *, uint32_t advertise);
 int netdev_get_in4(const struct netdev *, struct in_addr *);
 int netdev_set_in4(struct netdev *, struct in_addr addr, struct in_addr mask);
-int netdev_add_router(struct in_addr router);
+int netdev_add_router(struct netdev *, struct in_addr router);
 bool netdev_get_in6(const struct netdev *, struct in6_addr *);
 int netdev_get_flags(const struct netdev *, enum netdev_flags *);
 int netdev_set_flags(struct netdev *, enum netdev_flags, bool permanent);
index cd4fde3665fe37642182f7730c8ea89221f74b7d..69c50901afbb4ac09e02b3bbdf114c3c4a2100c6 100644 (file)
@@ -1145,7 +1145,7 @@ bridge_reconfigure_controller(struct bridge *br)
                     }
 
                     if (gateway.s_addr) {
-                        if (!netdev_add_router(gateway)) {
+                        if (!netdev_add_router(netdev, gateway)) {
                             VLOG_INFO("bridge %s: configured gateway "IP_FMT,
                                       br->name, IP_ARGS(&gateway.s_addr));
                         }