summaryrefslogtreecommitdiff
path: root/src/backends
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2008-03-07 19:41:32 +0000
committerDan Williams <dcbw@redhat.com>2008-03-07 19:41:32 +0000
commit3fec4814144c036d8560c1c332ffb137bd0f5dfc (patch)
tree3c551652128a36f637cf4ba4a3659d8b330b245f /src/backends
parentd84a51a145028901f7fc7dfe73bbe30bcfd1b0ae (diff)
downloadNetworkManager-3fec4814144c036d8560c1c332ffb137bd0f5dfc.tar.gz
2008-03-07 Dan Williams <dcbw@redhat.com>
First pass of multiple active device support. Expect bugs. * src/nm-ip4-config.c src/nm-ip4-config.h - (nm_ip4_config_get_secondary, nm_ip4_config_set_secondary): remove; there are better ways to do this in the named manager * src/nm-device.c src/nm-device.h - (nm_device_can_activate): return whether the device can activate a connection right now; taking into account things like carrier state and rfkill state - (nm_device_get_best_auto_connection): renamed from nm_device_get_best_connection - (real_act_stage4_get_ip4_config): MTU stuff is now handled in the device subclasses themselves, so that each device can override the MTU from it's NMSetting subclass if needed - (nm_device_set_ip4_config): set MTU when setting up routes and stuff in NetworkManagerSystem.c, not here * src/named-manager/nm-named-manager.c src/named-manager/nm-named-manager.h - (nm_named_manager_name_owner_changed, nm_named_manager_dbus_connection_changed): fix for changes to rewrite_resolv_conf() - (compute_nameservers): don't need the NMNamedManager at all, remove from parameter list - (merge_one_ip4_config): new function; merge ip4 configs together - (rewrite_resolv_conf): write out resolv.conf from all the stored ip4 configs; the VPN config takes precedence, then the best device config, then the rest of the configs - (get_domain_for_config): take the NMNamedManager as an argument to check whether the config is the VPN config - (add_ip4_config_to_named): fixups for removal of the 'secondary' attribute from ip4 configs - (add_all_ip4_configs_to_named): add all the configs in priority order - (remove_ip4_config_from_named): fix for changes to get_domain_for_config() - (nm_named_manager_add_ip4_config): assign the config to the right slot based on its type; callers must pass in the type now - (get_last_default_domain): remove, unused - (nm_named_manager_remove_ip4_config): handle config slots correctly * src/nm-device-802-11-wireless.c - (real_can_activate): new function - (real_get_best_auto_connection): renamed from real_get_best_connection - (real_act_stage4_get_ip4_config): handle MTU override * src/nm-device-802-3-ethernet.c - (real_can_activate): new function - (real_get_best_auto_connection): renamed from real_get_best_connection - (real_act_stage4_get_ip4_config): new function; handle MTU override * src/vpn-manager/nm-vpn-connection.c - (nm_vpn_connection_ip4_config_get): don't need to set the 'secondary' attribute on the ip4 config * src/NetworkManagerPolicy.c - (nm_policy_auto_get_best_device): remove - (nm_policy_device_change_check): remove - (update_default_route): new function; set the default route via the specified device - (get_device_priority): new function; return the priority number of a device type WRT which one should have the default route. Order is (highest to lowest) wired, wireless, GSM, CDMA. - (update_routing_and_dns): new function; determine which device should have the default route, then update the routing table and DNS - (maybe_auto_activate_device): new function; if a device is now available for activation, find out what connection it would like to activate and do it - (schedule_activate_check): new function; if a device can be activated now, schedule the activation. Each device may have only one pending activation at a given time. - (device_state_changed): if activation was canceled, try again, possibly with another connection; if the device was activated, update routing and DNS; if the device was deactivated, try again with another connection - (device_carrier_changed): if there is no carrier, deactivate the device; otherwise schedule an activation check for the device - (wireless_networks_changed): schedule an activation check for the device - (device_added): keep track of the signal handler IDs so they can be removed when the device goes away - (device_removed): remove any signal handlers that might be attached to the device; update routing and DNS - (schedule_activate_all): new function - (connections_added, connection_added, connection_updated): when connections change, schedule all devices for an activation check - (connection_removed): when a device is deactivated because its connection was removed, schedule another activation check for it - (nm_policy_destroy): destroy pending activations and disconnect all device signal handlers * src/nm-manager.c - (nm_manager_activate_device): if the device was already actived, deactivate it - (deactivate_old_device): remove - (connection_added_default_handler, impl_manager_activate_device): don't deactivate other devices when activating this one * src/backends/NetworkManagerGentoo.c src/backends/NetworkManagerFrugalware.c src/backends/NetworkManagerPaldo.c src/backends/NetworkManagerRedHat.c src/backends/NetworkManagerSlackware.c src/backends/NetworkManagerArch.c src/backends/NetworkManagerSuSE.c src/backends/NetworkManagerDebian.c - (nm_system_get_mtu): remove; MTU should be provided through the distro's system settings service plugin instead - (nm_system_device_add_default_route_via_device): remove - (nm_system_device_add_default_route_via_device_with_iface): remove - (nm_system_device_replace_default_route): new function; call generic implementation * src/backends/NetworkManagerGeneric.c src/backends/NetworkManagerGeneric.h - (nm_generic_device_add_default_route_via_device, nm_generic_device_add_default_route_via_device_with_iface): remove - (nm_generic_device_replace_default_route): replace the default route with the given route via some gateway * src/NetworkManagerSystem.c src/NetworkManagerSystem.h - (nm_system_device_set_from_ip4_config): let the policy handle updates to routing and DNS; but set the MTU here - (nm_system_vpn_device_set_from_ip4_config): set the route with the ip_iface of the active device; use the standard MTU setting function - (nm_system_set_mtu): remove - (nm_system_device_set_mtu): consolidate MTU setting code in one place git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3391 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Diffstat (limited to 'src/backends')
-rw-r--r--src/backends/NetworkManagerArch.c32
-rw-r--r--src/backends/NetworkManagerDebian.c32
-rw-r--r--src/backends/NetworkManagerFrugalware.c41
-rw-r--r--src/backends/NetworkManagerGeneric.c48
-rw-r--r--src/backends/NetworkManagerGeneric.h6
-rw-r--r--src/backends/NetworkManagerGentoo.c31
-rw-r--r--src/backends/NetworkManagerPaldo.c31
-rw-r--r--src/backends/NetworkManagerRedHat.c32
-rw-r--r--src/backends/NetworkManagerSlackware.c31
-rw-r--r--src/backends/NetworkManagerSuSE.c38
10 files changed, 70 insertions, 252 deletions
diff --git a/src/backends/NetworkManagerArch.c b/src/backends/NetworkManagerArch.c
index 373335ea58..e8550f59df 100644
--- a/src/backends/NetworkManagerArch.c
+++ b/src/backends/NetworkManagerArch.c
@@ -65,26 +65,17 @@ void nm_system_init (void)
}
/*
- * nm_system_device_add_default_route_via_device
+ * nm_system_device_replace_default_route
*
* Add default route to the given device
*
*/
-void nm_system_device_add_default_route_via_device (NMDevice *dev)
+void
+nm_system_device_replace_default_route (const char *iface,
+ guint32 gw,
+ guint32 mss)
{
- nm_generic_device_add_default_route_via_device (dev);
-}
-
-
-/*
- * nm_system_device_add_default_route_via_device_with_iface
- *
- * Add default route to the given device
- *
- */
-void nm_system_device_add_default_route_via_device_with_iface (const char *iface)
-{
- nm_generic_device_add_default_route_via_device_with_iface (iface);
+ nm_generic_device_replace_default_route (iface, gw, mss);
}
/*
@@ -686,14 +677,3 @@ void nm_system_set_hostname (NMIP4Config *config)
{
}
-/*
- * nm_system_get_mtu
- *
- * Return a user-provided or system-mandated MTU for this device or zero if
- * no such MTU is provided.
- */
-guint32 nm_system_get_mtu (NMDevice *dev)
-{
- return 0;
-
-}
diff --git a/src/backends/NetworkManagerDebian.c b/src/backends/NetworkManagerDebian.c
index 6be15f91b5..a9acbe8cfe 100644
--- a/src/backends/NetworkManagerDebian.c
+++ b/src/backends/NetworkManagerDebian.c
@@ -54,26 +54,17 @@ void nm_system_init (void)
}
/*
- * nm_system_device_add_default_route_via_device
+ * nm_system_device_replace_default_route
*
* Add default route to the given device
*
*/
-void nm_system_device_add_default_route_via_device (NMDevice *dev)
+void
+nm_system_device_replace_default_route (const char *iface,
+ guint32 gw,
+ guint32 mss)
{
- nm_generic_device_add_default_route_via_device (dev);
-}
-
-
-/*
- * nm_system_device_add_default_route_via_device_with_iface
- *
- * Add default route to the given device
- *
- */
-void nm_system_device_add_default_route_via_device_with_iface (const char *iface)
-{
- nm_generic_device_add_default_route_via_device_with_iface (iface);
+ nm_generic_device_replace_default_route (iface, gw, mss);
}
/*
@@ -405,14 +396,3 @@ gboolean nm_system_should_modify_resolv_conf (void)
return TRUE;
}
-
-/*
- * nm_system_get_mtu
- *
- * Return a user-provided or system-mandated MTU for this device or zero if
- * no such MTU is provided.
- */
-guint32 nm_system_get_mtu (NMDevice *dev)
-{
- return 0;
-}
diff --git a/src/backends/NetworkManagerFrugalware.c b/src/backends/NetworkManagerFrugalware.c
index d1cc6fb8e0..78d245690a 100644
--- a/src/backends/NetworkManagerFrugalware.c
+++ b/src/backends/NetworkManagerFrugalware.c
@@ -243,37 +243,21 @@ void nm_system_device_add_route_via_device_with_iface (const char *iface, const
g_free (buf);
}
-/*
- * nm_system_device_add_default_route_via_device
- *
- * Flush all routes associated with a network device
- *
- */
-void nm_system_device_add_default_route_via_device (NMDevice *dev)
-{
- g_return_if_fail (dev != NULL);
-
- nm_system_device_add_default_route_via_device_with_iface (nm_device_get_iface (dev));
-}
/*
- * nm_system_device_add_default_route_via_device_with_iface
+ * nm_system_device_replace_default_route
*
* Add default route to the given device
*
*/
-void nm_system_device_add_default_route_via_device_with_iface (const char *iface)
+void
+nm_system_device_replace_default_route (const char *iface,
+ guint32 gw,
+ guint32 mss)
{
- char *buf;
-
- g_return_if_fail (iface != NULL);
-
- /* Add default gateway */
- buf = g_strdup_printf ("/usr/sbin/ip route add default dev %s", iface);
- nm_spawn_process (buf);
- g_free (buf);
+ nm_generic_device_replace_default_route (iface, gw, mss);
}
-
+
/*
* nm_system_flush_loopback_routes
@@ -372,17 +356,6 @@ gboolean nm_system_should_modify_resolv_conf (void)
/*
- * nm_system_get_mtu
- *
- * Return a user-provided or system-mandated MTU for this device or zero if
- * no such MTU is provided.
- */
-guint32 nm_system_get_mtu (NMDevice *dev)
-{
- return 0;
-}
-
-/*
* nm_system_device_get_system_config
*
* Read in the config file for a device.
diff --git a/src/backends/NetworkManagerGeneric.c b/src/backends/NetworkManagerGeneric.c
index adc57acd9e..50dd60f038 100644
--- a/src/backends/NetworkManagerGeneric.c
+++ b/src/backends/NetworkManagerGeneric.c
@@ -50,33 +50,34 @@ void nm_generic_init (void)
}
/*
- * nm_generic_device_add_default_route_via_device
+ * nm_generic_replace_default_route
*
- * Add default route to the given device
+ * Replace default route with one via the current device
*
*/
-void nm_generic_device_add_default_route_via_device (NMDevice *dev)
+void
+nm_generic_device_replace_default_route (const char *iface, guint32 gw, guint32 mss)
{
- g_return_if_fail (dev != NULL);
+ char *buf, *addr_str = NULL, *mss_str = NULL;
- nm_system_device_add_default_route_via_device_with_iface (nm_device_get_iface (dev));
-}
+ g_return_if_fail (iface != NULL);
+ if (gw > 0) {
+ struct in_addr addr = { .s_addr = gw };
+ char buf2[INET_ADDRSTRLEN + 1];
-/*
- * nm_generic_device_add_default_route_via_device_with_iface
- *
- * Add default route to the given device
- *
- */
-void nm_generic_device_add_default_route_via_device_with_iface (const char *iface)
-{
- char *buf;
+ memset (buf2, 0, sizeof (buf2));
+ inet_ntop (AF_INET, &addr, buf2, INET_ADDRSTRLEN);
+ addr_str = g_strdup_printf ("via %s", buf2);
+ }
- g_return_if_fail (iface != NULL);
+ if (mss > 0)
+ mss_str = g_strdup_printf ("advmss %d", mss);
- /* Add default gateway */
- buf = g_strdup_printf (IP_BINARY_PATH" route add default dev %s", iface);
+ buf = g_strdup_printf (IP_BINARY_PATH" route replace default %s %s dev %s",
+ addr_str ? addr_str : "",
+ mss_str ? mss_str : "",
+ iface);
nm_spawn_process (buf);
g_free (buf);
}
@@ -452,14 +453,3 @@ gboolean nm_generic_should_modify_resolv_conf (void)
return TRUE;
}
-
-/*
- * nm_generic_get_mtu
- *
- * Return a user-provided or system-mandated MTU for this device or zero if
- * no such MTU is provided.
- */
-guint32 nm_generic_get_mtu (NMDevice *dev)
-{
- return 0;
-}
diff --git a/src/backends/NetworkManagerGeneric.h b/src/backends/NetworkManagerGeneric.h
index 962944311c..f69b08c673 100644
--- a/src/backends/NetworkManagerGeneric.h
+++ b/src/backends/NetworkManagerGeneric.h
@@ -39,8 +39,7 @@ gboolean nm_generic_device_has_active_routes (NMDevice *dev);
void nm_generic_device_flush_routes (NMDevice *dev);
void nm_generic_device_flush_routes_with_iface (const char *iface);
-void nm_generic_device_add_default_route_via_device(NMDevice *dev);
-void nm_generic_device_add_default_route_via_device_with_iface(const char *iface);
+void nm_generic_device_replace_default_route (const char *iface, guint32 gw, guint32 mss);
void nm_generic_device_add_route_via_device_with_iface (const char *iface, const char *route);
@@ -78,9 +77,6 @@ void nm_generic_set_hostname (NMIP4Config *config);
void nm_generic_activate_nis (NMIP4Config *config);
void nm_generic_shutdown_nis (void);
-void nm_generic_set_mtu (NMDevice *dev);
-guint32 nm_generic_get_mtu (NMDevice *dev);
-
gboolean nm_generic_should_modify_resolv_conf (void);
#endif
diff --git a/src/backends/NetworkManagerGentoo.c b/src/backends/NetworkManagerGentoo.c
index c7469a294e..944bb8c575 100644
--- a/src/backends/NetworkManagerGentoo.c
+++ b/src/backends/NetworkManagerGentoo.c
@@ -404,25 +404,17 @@ void *nm_system_device_get_system_config (NMDevice *dev)
}
/*
- * nm_system_device_add_default_route_via_device
- *
- * Flush all routes associated with a network device
- *
- */
-void nm_system_device_add_default_route_via_device (NMDevice *dev)
-{
- nm_generic_device_add_default_route_via_device (dev);
-}
-
-/*
- * nm_system_device_add_default_route_via_device_with_iface
+ * nm_system_device_replace_default_route
*
* Add default route to the given device
*
*/
-void nm_system_device_add_default_route_via_device_with_iface (const char *iface)
+void
+nm_system_device_replace_default_route (const char *iface,
+ guint32 gw,
+ guint32 mss)
{
- nm_generic_device_add_default_route_via_device_with_iface (iface);
+ nm_generic_device_replace_default_route (iface, gw, mss);
}
void nm_system_device_free_system_config (NMDevice *dev, void *system_config_data)
@@ -491,13 +483,4 @@ gboolean nm_system_should_modify_resolv_conf (void)
return TRUE;
}
-/*
- * nm_system_get_mtu
- *
- * Return a user-provided or system-mandated MTU for this device or zero if
- * no such MTU is provided.
- */
-guint32 nm_system_get_mtu (NMDevice *dev)
-{
- return 0;
-}
+
diff --git a/src/backends/NetworkManagerPaldo.c b/src/backends/NetworkManagerPaldo.c
index cb96b7e37c..9e457df449 100644
--- a/src/backends/NetworkManagerPaldo.c
+++ b/src/backends/NetworkManagerPaldo.c
@@ -76,26 +76,17 @@ void nm_system_device_flush_routes_with_iface (const char *iface)
/*
- * nm_system_device_add_default_route_via_device
+ * nm_system_device_replace_default_route
*
* Add default route to the given device
*
*/
-void nm_system_device_add_default_route_via_device (NMDevice *dev)
+void
+nm_system_device_replace_default_route (const char *iface,
+ guint32 gw,
+ guint32 mss)
{
- nm_generic_device_add_default_route_via_device (dev);
-}
-
-
-/*
- * nm_system_device_add_default_route_via_device_with_iface
- *
- * Add default route to the given device
- *
- */
-void nm_system_device_add_default_route_via_device_with_iface (const char *iface)
-{
- nm_generic_device_add_default_route_via_device_with_iface (iface);
+ nm_generic_device_replace_default_route (iface, gw, mss);
}
@@ -527,13 +518,3 @@ gboolean nm_system_should_modify_resolv_conf (void)
return TRUE;
}
-/*
- * nm_system_get_mtu
- *
- * Return a user-provided or system-mandated MTU for this device or zero if
- * no such MTU is provided.
- */
-unsigned int nm_system_get_mtu (NMDevice *dev)
-{
- return 0;
-}
diff --git a/src/backends/NetworkManagerRedHat.c b/src/backends/NetworkManagerRedHat.c
index 5f653f79c7..7e3ce249da 100644
--- a/src/backends/NetworkManagerRedHat.c
+++ b/src/backends/NetworkManagerRedHat.c
@@ -73,26 +73,17 @@ void nm_system_device_flush_routes_with_iface (const char *iface)
/*
- * nm_system_device_add_default_route_via_device
+ * nm_system_device_replace_default_route
*
* Add default route to the given device
*
*/
-void nm_system_device_add_default_route_via_device (NMDevice *dev)
+void
+nm_system_device_replace_default_route (const char *iface,
+ guint32 gw,
+ guint32 mss)
{
- nm_generic_device_add_default_route_via_device (dev);
-}
-
-
-/*
- * nm_system_device_add_default_route_via_device_with_iface
- *
- * Add default route to the given device
- *
- */
-void nm_system_device_add_default_route_via_device_with_iface (const char *iface)
-{
- nm_generic_device_add_default_route_via_device_with_iface (iface);
+ nm_generic_device_replace_default_route (iface, gw, mss);
}
@@ -543,14 +534,3 @@ gboolean nm_system_should_modify_resolv_conf (void)
return TRUE;
}
-
-/*
- * nm_system_get_mtu
- *
- * Return a user-provided or system-mandated MTU for this device or zero if
- * no such MTU is provided.
- */
-guint32 nm_system_get_mtu (NMDevice *dev)
-{
- return 0;
-}
diff --git a/src/backends/NetworkManagerSlackware.c b/src/backends/NetworkManagerSlackware.c
index ba6b67e9d7..599534d6f4 100644
--- a/src/backends/NetworkManagerSlackware.c
+++ b/src/backends/NetworkManagerSlackware.c
@@ -219,25 +219,17 @@ void nm_system_device_add_route_via_device_with_iface (const char *iface, const
}
/*
- * nm_system_device_add_default_route_via_device
- *
- * Flush all routes associated with a network device
- *
- */
-void nm_system_device_add_default_route_via_device (NMDevice *dev)
-{
- nm_generic_device_add_default_route_via_device (dev);
-}
-
-/*
- * nm_system_device_add_default_route_via_device_with_iface
+ * nm_system_device_replace_default_route
*
* Add default route to the given device
*
*/
-void nm_system_device_add_default_route_via_device_with_iface (const char *iface)
+void
+nm_system_device_replace_default_route (const char *iface,
+ guint32 gw,
+ guint32 mss)
{
- nm_generic_device_add_default_route_via_device_with_iface (iface);
+ nm_generic_device_replace_default_route (iface, gw, mss);
}
@@ -322,14 +314,3 @@ gboolean nm_system_should_modify_resolv_conf (void)
return TRUE;
}
-
-/*
- * nm_system_get_mtu
- *
- * Return a user-provided or system-mandated MTU for this device or zero if
- * no such MTU is provided.
- */
-guint32 nm_system_get_mtu (NMDevice *dev)
-{
- return 0;
-}
diff --git a/src/backends/NetworkManagerSuSE.c b/src/backends/NetworkManagerSuSE.c
index e5afd61ac5..eeefb66c7c 100644
--- a/src/backends/NetworkManagerSuSE.c
+++ b/src/backends/NetworkManagerSuSE.c
@@ -80,26 +80,17 @@ void nm_system_device_flush_routes_with_iface (const char *iface)
/*
- * nm_system_device_add_default_route_via_device
+ * nm_system_device_replace_default_route
*
* Add default route to the given device
*
*/
-void nm_system_device_add_default_route_via_device (NMDevice *dev)
+void
+nm_system_device_replace_default_route (const char *iface,
+ guint32 gw,
+ guint32 mss)
{
- nm_generic_device_add_default_route_via_device (dev);
-}
-
-
-/*
- * nm_system_device_add_default_route_via_device_with_iface
- *
- * Add default route to the given device
- *
- */
-void nm_system_device_add_default_route_via_device_with_iface (const char *iface)
-{
- nm_generic_device_add_default_route_via_device_with_iface (iface);
+ nm_generic_device_replace_default_route (iface, gw, mss);
}
@@ -724,20 +715,3 @@ out_gfree:
return ret;
}
-
-/*
- * nm_system_get_mtu
- *
- * Return a user-provided or system-mandated MTU for this device or zero if
- * no such MTU is provided.
- */
-guint32 nm_system_get_mtu (NMDevice *dev)
-{
- SuSEDeviceConfigData * sys_data;
-
- sys_data = nm_device_get_system_config_data (dev);
- if (!sys_data)
- return 0;
-
- return sys_data->mtu;
-}