From e7caad20c9b30594fc0f700e98a6576e577a764b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20=C5=A0imerda?= Date: Tue, 22 Jan 2013 16:43:15 +0100 Subject: [PATCH] device: share implementation of hw_is_up, hw_bring_up and hw_take_down --- src/nm-device-modem.c | 18 ------------------ src/nm-device-olpc-mesh.c | 21 --------------------- src/nm-device-vlan.c | 16 +--------------- src/nm-device-wifi.c | 18 ++---------------- src/nm-device-wired.c | 22 ++++------------------ src/nm-device.c | 25 +++++++++++++++++++++++++ 6 files changed, 32 insertions(+), 88 deletions(-) diff --git a/src/nm-device-modem.c b/src/nm-device-modem.c index 57f0bf8ef3..24d9cefbfe 100644 --- a/src/nm-device-modem.c +++ b/src/nm-device-modem.c @@ -254,22 +254,6 @@ complete_connection (NMDevice *device, return nm_modem_complete_connection (priv->modem, connection, existing_connections, error); } -static gboolean -hw_is_up (NMDevice *device) -{ - int ifindex = nm_device_get_ip_ifindex (device); - - return ifindex > 0 ? nm_system_iface_is_up (ifindex) : TRUE; -} - -static gboolean -hw_bring_up (NMDevice *device, gboolean *no_firmware) -{ - int ifindex = nm_device_get_ip_ifindex (device); - - return ifindex > 0 ? nm_system_iface_set_up (ifindex, TRUE, no_firmware) : TRUE; -} - static void deactivate (NMDevice *device) { @@ -508,8 +492,6 @@ nm_device_modem_class_init (NMDeviceModemClass *mclass) device_class->get_best_auto_connection = get_best_auto_connection; device_class->check_connection_compatible = check_connection_compatible; device_class->complete_connection = complete_connection; - device_class->hw_is_up = hw_is_up; - device_class->hw_bring_up = hw_bring_up; device_class->deactivate = deactivate; device_class->act_stage1_prepare = act_stage1_prepare; device_class->act_stage2_config = act_stage2_config; diff --git a/src/nm-device-olpc-mesh.c b/src/nm-device-olpc-mesh.c index 289e5be397..b46f2ee006 100644 --- a/src/nm-device-olpc-mesh.c +++ b/src/nm-device-olpc-mesh.c @@ -186,24 +186,6 @@ constructor (GType type, return object; } -static gboolean -hw_is_up (NMDevice *device) -{ - return nm_system_iface_is_up (nm_device_get_ip_ifindex (device)); -} - -static gboolean -hw_bring_up (NMDevice *dev, gboolean *no_firmware) -{ - return nm_system_iface_set_up (nm_device_get_ip_ifindex (dev), TRUE, no_firmware); -} - -static void -hw_take_down (NMDevice *dev) -{ - nm_system_iface_set_up (nm_device_get_ip_ifindex (dev), FALSE, NULL); -} - static gboolean is_up (NMDevice *device) { @@ -554,9 +536,6 @@ nm_device_olpc_mesh_class_init (NMDeviceOlpcMeshClass *klass) parent_class->get_type_capabilities = NULL; parent_class->get_generic_capabilities = get_generic_capabilities; - parent_class->hw_is_up = hw_is_up; - parent_class->hw_bring_up = hw_bring_up; - parent_class->hw_take_down = hw_take_down; parent_class->is_up = is_up; parent_class->bring_up = bring_up; parent_class->take_down = take_down; diff --git a/src/nm-device-vlan.c b/src/nm-device-vlan.c index f22d47d837..56cadcf620 100644 --- a/src/nm-device-vlan.c +++ b/src/nm-device-vlan.c @@ -129,12 +129,6 @@ get_carrier_sync (NMDeviceVlan *self) return !!(ifflags & IFF_LOWER_UP); } -static gboolean -hw_is_up (NMDevice *device) -{ - return nm_system_iface_is_up (nm_device_get_ip_ifindex (device)); -} - static gboolean hw_bring_up (NMDevice *dev, gboolean *no_firmware) { @@ -142,7 +136,7 @@ hw_bring_up (NMDevice *dev, gboolean *no_firmware) guint i = 20; while (i-- > 0 && !success) { - success = nm_system_iface_set_up (nm_device_get_ip_ifindex (dev), TRUE, no_firmware); + success = NM_DEVICE_GET_CLASS (dev)->hw_bring_up (dev, no_firmware); g_usleep (50); } @@ -162,12 +156,6 @@ hw_bring_up (NMDevice *dev, gboolean *no_firmware) return success; } -static void -hw_take_down (NMDevice *dev) -{ - nm_system_iface_set_up (nm_device_get_ip_ifindex (dev), FALSE, NULL); -} - static void update_hw_address (NMDevice *dev) { @@ -760,9 +748,7 @@ nm_device_vlan_class_init (NMDeviceVlanClass *klass) parent_class->get_generic_capabilities = get_generic_capabilities; parent_class->update_hw_address = update_hw_address; - parent_class->hw_is_up = hw_is_up; parent_class->hw_bring_up = hw_bring_up; - parent_class->hw_take_down = hw_take_down; parent_class->can_interrupt_activation = can_interrupt_activation; parent_class->is_available = is_available; diff --git a/src/nm-device-wifi.c b/src/nm-device-wifi.c index eb5ac1aa47..6a10295244 100644 --- a/src/nm-device-wifi.c +++ b/src/nm-device-wifi.c @@ -803,25 +803,13 @@ periodic_update (gpointer user_data) return TRUE; } -static gboolean -hw_is_up (NMDevice *device) -{ - return nm_system_iface_is_up (nm_device_get_ip_ifindex (device)); -} - static gboolean hw_bring_up (NMDevice *device, gboolean *no_firmware) { if (!NM_DEVICE_WIFI_GET_PRIVATE (device)->enabled) return FALSE; - return nm_system_iface_set_up (nm_device_get_ip_ifindex (device), TRUE, no_firmware); -} - -static void -hw_take_down (NMDevice *device) -{ - nm_system_iface_set_up (nm_device_get_ip_ifindex (device), FALSE, NULL); + return NM_DEVICE_GET_CLASS (device)->hw_bring_up (device, no_firmware); } static gboolean @@ -880,7 +868,7 @@ _set_hw_addr (NMDeviceWifi *self, const guint8 *addr, const char *detail) } /* Can't change MAC address while device is up */ - hw_take_down (dev); + nm_device_hw_take_down (dev, FALSE); success = nm_system_iface_set_mac (nm_device_get_ip_ifindex (dev), (struct ether_addr *) addr); if (success) { @@ -3789,9 +3777,7 @@ nm_device_wifi_class_init (NMDeviceWifiClass *klass) parent_class->get_type_capabilities = get_type_capabilities; parent_class->get_generic_capabilities = get_generic_capabilities; - parent_class->hw_is_up = hw_is_up; parent_class->hw_bring_up = hw_bring_up; - parent_class->hw_take_down = hw_take_down; parent_class->is_up = is_up; parent_class->bring_up = bring_up; parent_class->take_down = take_down; diff --git a/src/nm-device-wired.c b/src/nm-device-wired.c index 44510fc635..c419bcd124 100644 --- a/src/nm-device-wired.c +++ b/src/nm-device-wired.c @@ -356,33 +356,21 @@ nm_device_wired_init (NMDeviceWired * self) { } -static gboolean -hw_is_up (NMDevice *device) -{ - return nm_system_iface_is_up (nm_device_get_ip_ifindex (device)); -} - static gboolean hw_bring_up (NMDevice *dev, gboolean *no_firmware) { - gboolean success, carrier; + gboolean result, carrier; guint32 caps; - success = nm_system_iface_set_up (nm_device_get_ip_ifindex (dev), TRUE, no_firmware); - if (success) { + result = NM_DEVICE_GET_CLASS(dev)->hw_bring_up (dev, no_firmware); + if (result) { caps = nm_device_get_capabilities (dev); if (caps & NM_DEVICE_CAP_CARRIER_DETECT) { carrier = get_carrier_sync (NM_DEVICE_WIRED (dev)); set_carrier (NM_DEVICE_WIRED (dev), carrier, carrier ? FALSE : TRUE); } } - return success; -} - -static void -hw_take_down (NMDevice *dev) -{ - nm_system_iface_set_up (nm_device_get_ip_ifindex (dev), FALSE, NULL); + return result; } static void @@ -505,9 +493,7 @@ nm_device_wired_class_init (NMDeviceWiredClass *klass) object_class->constructor = constructor; object_class->dispose = dispose; - parent_class->hw_is_up = hw_is_up; parent_class->hw_bring_up = hw_bring_up; - parent_class->hw_take_down = hw_take_down; parent_class->can_interrupt_activation = can_interrupt_activation; parent_class->update_hw_address = update_hw_address; parent_class->is_available = is_available; diff --git a/src/nm-device.c b/src/nm-device.c index e868d6b741..c3ad14ab93 100644 --- a/src/nm-device.c +++ b/src/nm-device.c @@ -498,6 +498,14 @@ nm_device_hw_is_up (NMDevice *self) return TRUE; } +static gboolean +hw_is_up (NMDevice *device) +{ + int ifindex = nm_device_get_ip_ifindex (device); + + return ifindex > 0 ? nm_system_iface_is_up (ifindex) : TRUE; +} + static guint32 get_generic_capabilities (NMDevice *dev) { @@ -3919,6 +3927,14 @@ out: return TRUE; } +static gboolean +hw_bring_up (NMDevice *device, gboolean *no_firmware) +{ + int ifindex = nm_device_get_ip_ifindex (device); + + return ifindex > 0 ? nm_system_iface_set_up (ifindex, TRUE, no_firmware) : TRUE; +} + void nm_device_hw_take_down (NMDevice *self, gboolean block) { @@ -3939,6 +3955,12 @@ nm_device_hw_take_down (NMDevice *self, gboolean block) g_usleep (200); } +static void +hw_take_down (NMDevice *device) +{ + nm_system_iface_set_up (nm_device_get_ip_ifindex (device), FALSE, NULL); +} + static gboolean nm_device_bring_up (NMDevice *self, gboolean block, gboolean *no_firmware) { @@ -4330,6 +4352,9 @@ nm_device_class_init (NMDeviceClass *klass) klass->act_stage4_ip4_config_timeout = act_stage4_ip4_config_timeout; klass->act_stage4_ip6_config_timeout = act_stage4_ip6_config_timeout; klass->check_connection_available = check_connection_available; + klass->hw_is_up = hw_is_up; + klass->hw_bring_up = hw_bring_up; + klass->hw_take_down = hw_take_down; /* Properties */ g_object_class_install_property