diff options
author | Dan Williams <dcbw@redhat.com> | 2008-03-07 19:41:32 +0000 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2008-03-07 19:41:32 +0000 |
commit | 3fec4814144c036d8560c1c332ffb137bd0f5dfc (patch) | |
tree | 3c551652128a36f637cf4ba4a3659d8b330b245f /src/backends | |
parent | d84a51a145028901f7fc7dfe73bbe30bcfd1b0ae (diff) | |
download | NetworkManager-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.c | 32 | ||||
-rw-r--r-- | src/backends/NetworkManagerDebian.c | 32 | ||||
-rw-r--r-- | src/backends/NetworkManagerFrugalware.c | 41 | ||||
-rw-r--r-- | src/backends/NetworkManagerGeneric.c | 48 | ||||
-rw-r--r-- | src/backends/NetworkManagerGeneric.h | 6 | ||||
-rw-r--r-- | src/backends/NetworkManagerGentoo.c | 31 | ||||
-rw-r--r-- | src/backends/NetworkManagerPaldo.c | 31 | ||||
-rw-r--r-- | src/backends/NetworkManagerRedHat.c | 32 | ||||
-rw-r--r-- | src/backends/NetworkManagerSlackware.c | 31 | ||||
-rw-r--r-- | src/backends/NetworkManagerSuSE.c | 38 |
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; -} |