From bf10aaa2973eefcac8041bc5ea193195cfea97ed Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 4 May 2005 21:23:09 +0000 Subject: [PATCH] 2005-05-04 Dan Williams * src/NetworkManagerDevice.c - (nm_device_probe_wireless_link_state): don't lock the scan mutex here but let link_to_specific_ap() do the locking where it needs Patch from Bill Moss: * src/NetworkManagerSystem.c - Set MTU of VPN devices to 1412 git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@605 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 10 ++++++++++ src/NetworkManagerDevice.c | 8 -------- src/NetworkManagerSystem.c | 40 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index da2c4560e..35281a5d4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2005-05-04 Dan Williams + + * src/NetworkManagerDevice.c + - (nm_device_probe_wireless_link_state): don't lock the scan mutex here + but let link_to_specific_ap() do the locking where it needs + + Patch from Bill Moss: + * src/NetworkManagerSystem.c + - Set MTU of VPN devices to 1412 + 2005-05-04 Dan Williams * Remove NM_STATE_SCANNING from NetworkManager.h and applet code diff --git a/src/NetworkManagerDevice.c b/src/NetworkManagerDevice.c index 6769fd261..3696834dc 100644 --- a/src/NetworkManagerDevice.c +++ b/src/NetworkManagerDevice.c @@ -780,20 +780,12 @@ static gboolean nm_device_probe_wireless_link_state (NMDevice *dev) if (dev->test_device) return nm_device_has_active_link (dev); - /* If there's a scan in progress, pulling the ESSID off the card will yield - * completely useless results. Therefore, just return the current link - * state so nothing changes. - */ - if (!nm_try_acquire_mutex (dev->options.wireless.scan_mutex, __FUNCTION__)) - return nm_device_has_active_link (dev); - if ((best_ap = nm_device_get_best_ap (dev))) { link = link_to_specific_ap (dev, best_ap); nm_ap_unref (best_ap); } - nm_unlock_mutex (dev->options.wireless.scan_mutex, __FUNCTION__); return link; } diff --git a/src/NetworkManagerSystem.c b/src/NetworkManagerSystem.c index 3de1806d1..d3fc5a873 100644 --- a/src/NetworkManagerSystem.c +++ b/src/NetworkManagerSystem.c @@ -59,6 +59,9 @@ static gboolean nm_system_device_set_ip4_netmask_with_iface (NMDevice *dev, co static gboolean nm_system_device_set_ip4_broadcast (NMDevice *dev, int ip4_broadcast); static gboolean nm_system_device_set_ip4_broadcast_with_iface (NMDevice *dev, const char *iface, int ip4_broadcast); +static gboolean nm_system_device_set_mtu (NMDevice *dev, guint16 in_mtu); +static gboolean nm_system_device_set_mtu_with_iface (NMDevice *dev, const char *iface, guint16 in_mtu); + static gboolean nm_system_device_set_ip4_route (NMDevice *dev, int ip4_gateway, int ip4_dest, int ip4_netmask); static gboolean nm_system_device_set_ip4_route_with_iface (NMDevice *dev, const char *iface, int ip4_gateway, int ip4_dest, int ip4_netmask); @@ -237,6 +240,7 @@ gboolean nm_system_vpn_device_set_from_ip4_config (NMNamedManager *named, NMDevi nm_system_device_set_ip4_address_with_iface (NULL, iface, nm_ip4_config_get_address (config)); nm_system_device_set_ip4_ptp_address_with_iface (NULL, iface, nm_ip4_config_get_address (config)); nm_system_device_set_ip4_netmask_with_iface (NULL, iface, nm_ip4_config_get_netmask (config)); + nm_system_device_set_mtu_with_iface (NULL, iface, 1412); sleep (1); nm_system_delete_default_route (); nm_system_device_flush_routes_with_iface (iface); @@ -493,6 +497,42 @@ static gboolean nm_system_device_set_ip4_route (NMDevice *dev, int ip4_gateway, return nm_system_device_set_ip4_route_with_iface (dev, nm_device_get_iface (dev), ip4_gateway, ip4_dest, ip4_netmask); } +/* + * nm_system_device_set_mtu + * + * Set the MTU on a device. + * + */ +static gboolean nm_system_device_set_mtu (NMDevice *dev, guint16 in_mtu) +{ + g_return_val_if_fail (dev != NULL, FALSE); + + return nm_system_device_set_mtu_with_iface (dev, nm_device_get_iface (dev), in_mtu); +} + +static gboolean nm_system_device_set_mtu_with_iface (NMDevice *dev, const char *iface, guint16 in_mtu) +{ + struct ifreq ifr; + NMSock *sk; + gboolean success = FALSE; + + g_return_val_if_fail (iface != NULL, FALSE); + + if ((sk = nm_dev_sock_open (dev, NETWORK_CONTROL, __FUNCTION__, NULL)) == NULL) + return FALSE; + + memset (&ifr, 0, sizeof (struct ifreq)); + memcpy (ifr.ifr_name, iface, strlen (iface)); + ifr.ifr_mtu = in_mtu; + if (ioctl (nm_dev_sock_get_fd (sk), SIOCSIFMTU, &ifr) == -1) + nm_warning ("nm_system_device_set_mtu (%s): failed to set mtu! errno = %s", iface, strerror (errno)); + else + success = TRUE; + + nm_dev_sock_close (sk); + return (success); +} + static gboolean nm_system_device_set_ip4_route_with_iface (NMDevice *dev, const char *iface, int ip4_gateway, int ip4_dest, int ip4_netmask) { NMSock * sk;