diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2019-09-12 10:17:35 +0200 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2019-09-12 10:17:53 +0200 |
commit | a79b01e539a88b41b0497acf8b762d162a89bc0b (patch) | |
tree | 7c5e7b75c06e5f53d21c86017b47cb4f81f5c992 | |
parent | d6b797584fc1d9c149dcfcbc1b5db3c66e418979 (diff) | |
download | NetworkManager-lr/rfkill.tar.gz |
rfkill: use rfkill.h instead of redefining thingslr/rfkill
It's been there since forever.
-rw-r--r-- | src/devices/nm-device.c | 11 | ||||
-rw-r--r-- | src/devices/nm-device.h | 2 | ||||
-rw-r--r-- | src/devices/wifi/nm-device-olpc-mesh.c | 1 | ||||
-rw-r--r-- | src/devices/wifi/nm-device-wifi-p2p.c | 1 | ||||
-rw-r--r-- | src/devices/wifi/nm-device-wifi.c | 1 | ||||
-rw-r--r-- | src/devices/wwan/nm-device-modem.c | 2 | ||||
-rw-r--r-- | src/nm-manager.c | 62 | ||||
-rw-r--r-- | src/nm-rfkill-manager.c | 61 | ||||
-rw-r--r-- | src/nm-rfkill-manager.h | 20 |
9 files changed, 66 insertions, 95 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index 5ea94c7959..27ef6b29c1 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -21,6 +21,7 @@ #include <linux/if_arp.h> #include <linux/rtnetlink.h> #include <linux/pkt_sched.h> +#include <linux/rfkill.h> #include "nm-std-aux/unaligned.h" #include "nm-glib-aux/nm-dedup-multi.h" @@ -285,7 +286,7 @@ typedef struct _NMDevicePrivate { char * driver; char * driver_version; char * firmware_version; - RfKillType rfkill_type; + int rfkill_type; bool firmware_missing:1; bool nm_plugin_missing:1; bool hw_addr_perm_fake:1; /* whether the permanent HW address could not be read and is a fake */ @@ -2537,7 +2538,7 @@ nm_device_get_applied_setting (NMDevice *self, GType setting_type) return connection ? nm_connection_get_setting (connection, setting_type) : NULL; } -RfKillType +int nm_device_get_rfkill_type (NMDevice *self) { g_return_val_if_fail (NM_IS_DEVICE (self), FALSE); @@ -16530,7 +16531,7 @@ nm_device_init (NMDevice *self) priv->capabilities = NM_DEVICE_CAP_NM_SUPPORTED; priv->state = NM_DEVICE_STATE_UNMANAGED; priv->state_reason = NM_DEVICE_STATE_REASON_NONE; - priv->rfkill_type = RFKILL_TYPE_UNKNOWN; + priv->rfkill_type = 0; priv->unmanaged_flags = NM_UNMANAGED_PLATFORM_INIT; priv->unmanaged_mask = priv->unmanaged_flags; priv->available_connections = g_hash_table_new_full (nm_direct_hash, NULL, g_object_unref, NULL); @@ -17332,8 +17333,8 @@ nm_device_class_init (NMDeviceClass *klass) obj_properties[PROP_RFKILL_TYPE] = g_param_spec_uint (NM_DEVICE_RFKILL_TYPE, "", "", RFKILL_TYPE_WLAN, - RFKILL_TYPE_MAX, - RFKILL_TYPE_UNKNOWN, + NUM_RFKILL_TYPES, + 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); obj_properties[PROP_IFINDEX] = diff --git a/src/devices/nm-device.h b/src/devices/nm-device.h index 72c269c653..1793c450a0 100644 --- a/src/devices/nm-device.h +++ b/src/devices/nm-device.h @@ -602,7 +602,7 @@ gboolean nm_device_get_enabled (NMDevice *device); void nm_device_set_enabled (NMDevice *device, gboolean enabled); -RfKillType nm_device_get_rfkill_type (NMDevice *device); +int nm_device_get_rfkill_type (NMDevice *device); /* IPv6 prefix delegation */ diff --git a/src/devices/wifi/nm-device-olpc-mesh.c b/src/devices/wifi/nm-device-olpc-mesh.c index 8bdded8ae8..718e12b103 100644 --- a/src/devices/wifi/nm-device-olpc-mesh.c +++ b/src/devices/wifi/nm-device-olpc-mesh.c @@ -14,6 +14,7 @@ #include "nm-device-olpc-mesh.h" +#include <linux/rfkill.h> #include <netinet/in.h> #include <sys/stat.h> #include <sys/wait.h> diff --git a/src/devices/wifi/nm-device-wifi-p2p.c b/src/devices/wifi/nm-device-wifi-p2p.c index 10aad9d1c2..7e881d4eab 100644 --- a/src/devices/wifi/nm-device-wifi-p2p.c +++ b/src/devices/wifi/nm-device-wifi-p2p.c @@ -8,6 +8,7 @@ #include "nm-device-wifi-p2p.h" +#include <linux/rfkill.h> #include <sys/socket.h> #include "supplicant/nm-supplicant-manager.h" diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c index 25f3b5c701..119d711062 100644 --- a/src/devices/wifi/nm-device-wifi.c +++ b/src/devices/wifi/nm-device-wifi.c @@ -9,6 +9,7 @@ #include "nm-device-wifi.h" +#include <linux/rfkill.h> #include <netinet/in.h> #include <unistd.h> diff --git a/src/devices/wwan/nm-device-modem.c b/src/devices/wwan/nm-device-modem.c index 9a8faeff23..b94d603d1d 100644 --- a/src/devices/wwan/nm-device-modem.c +++ b/src/devices/wwan/nm-device-modem.c @@ -6,6 +6,8 @@ #include "nm-default.h" +#include <linux/rfkill.h> + #include "nm-device-modem.h" #include "nm-modem.h" diff --git a/src/nm-manager.c b/src/nm-manager.c index 6d4fb0f55d..0c9f72056a 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -9,6 +9,7 @@ #include "nm-manager.h" +#include <linux/rfkill.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> @@ -53,7 +54,7 @@ typedef struct { gboolean user_enabled; gboolean sw_enabled; gboolean hw_enabled; - RfKillType rtype; + int rtype; NMConfigRunStatePropertyType key; const char *desc; const char *prop; @@ -168,7 +169,7 @@ typedef struct { CList connection_changed_on_idle_lst; guint connection_changed_on_idle_id; - RadioState radio_states[RFKILL_TYPE_MAX]; + RadioState radio_states[NUM_RFKILL_TYPES]; NMVpnManager *vpn_manager; NMSleepMonitor *sleep_monitor; @@ -2240,7 +2241,7 @@ radio_enabled_for_rstate (RadioState *rstate, gboolean check_changeable) } static gboolean -radio_enabled_for_type (NMManager *self, RfKillType rtype, gboolean check_changeable) +radio_enabled_for_type (NMManager *self, int rtype, gboolean check_changeable) { NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self); @@ -2278,15 +2279,15 @@ static void update_rstate_from_rfkill (NMRfkillManager *rfkill_mgr, RadioState *rstate) { switch (nm_rfkill_manager_get_rfkill_state (rfkill_mgr, rstate->rtype)) { - case RFKILL_UNBLOCKED: + case RFKILL_STATE_UNBLOCKED: rstate->sw_enabled = TRUE; rstate->hw_enabled = TRUE; break; - case RFKILL_SOFT_BLOCKED: + case RFKILL_STATE_SOFT_BLOCKED: rstate->sw_enabled = FALSE; rstate->hw_enabled = TRUE; break; - case RFKILL_HARD_BLOCKED: + case RFKILL_STATE_HARD_BLOCKED: rstate->sw_enabled = FALSE; rstate->hw_enabled = FALSE; break; @@ -2299,7 +2300,7 @@ update_rstate_from_rfkill (NMRfkillManager *rfkill_mgr, RadioState *rstate) static void manager_rfkill_update_one_type (NMManager *self, RadioState *rstate, - RfKillType rtype) + int rtype) { NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self); gboolean old_enabled, new_enabled, old_rfkilled, new_rfkilled, old_hwe; @@ -2342,16 +2343,16 @@ manager_rfkill_update_one_type (NMManager *self, } static void -nm_manager_rfkill_update (NMManager *self, RfKillType rtype) +nm_manager_rfkill_update (NMManager *self, int rtype) { NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self); guint i; - if (rtype != RFKILL_TYPE_UNKNOWN) + if (rtype != RFKILL_TYPE_ALL) manager_rfkill_update_one_type (self, &priv->radio_states[rtype], rtype); else { /* Otherwise sync all radio types */ - for (i = 0; i < RFKILL_TYPE_MAX; i++) + for (i = 0; i < NUM_RFKILL_TYPES; i++) manager_rfkill_update_one_type (self, &priv->radio_states[i], i); } } @@ -3045,7 +3046,7 @@ add_device (NMManager *self, NMDevice *device, GError **error) { NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self); const char *iface, *type_desc; - RfKillType rtype; + int rtype; GSList *iter, *remove = NULL; int ifindex; const char *dbus_path; @@ -3131,7 +3132,7 @@ add_device (NMManager *self, NMDevice *device, GError **error) * global state. */ rtype = nm_device_get_rfkill_type (device); - if (rtype != RFKILL_TYPE_UNKNOWN) { + if (rtype) { nm_manager_rfkill_update (self, rtype); nm_device_set_enabled (device, radio_enabled_for_type (self, rtype, TRUE)); } @@ -3471,8 +3472,8 @@ platform_query_devices (NMManager *self) static void rfkill_manager_rfkill_changed_cb (NMRfkillManager *rfkill_mgr, - RfKillType rtype, - RfKillState udev_state, + int rtype, + int udev_state, gpointer user_data) { nm_manager_rfkill_update (NM_MANAGER (user_data), rtype); @@ -5966,7 +5967,7 @@ do_sleep_wake (NMManager *self, gboolean sleeping_changed) /* Ensure rfkill state is up-to-date since we don't respond to state * changes during sleep. */ - nm_manager_rfkill_update (self, RFKILL_TYPE_UNKNOWN); + nm_manager_rfkill_update (self, RFKILL_TYPE_ALL); /* Re-manage managed devices */ c_list_for_each_entry (device, &priv->devices_lst_head, devices_lst) { @@ -5983,7 +5984,7 @@ do_sleep_wake (NMManager *self, gboolean sleeping_changed) /* enable/disable wireless devices since that we don't respond * to killswitch changes during sleep. */ - for (i = 0; i < RFKILL_TYPE_MAX; i++) { + for (i = 0; i < NUM_RFKILL_TYPES; i++) { RadioState *rstate = &priv->radio_states[i]; gboolean enabled = radio_enabled_for_rstate (rstate, TRUE); @@ -6589,7 +6590,7 @@ nm_manager_start (NMManager *self, GError **error) nm_device_factory_manager_for_each_factory (start_factory, NULL); /* Set initial radio enabled/disabled state */ - for (i = 0; i < RFKILL_TYPE_MAX; i++) { + for (i = 0; i < NUM_RFKILL_TYPES; i++) { RadioState *rstate = &priv->radio_states[i]; gboolean enabled; @@ -7159,18 +7160,8 @@ auth_mgr_changed (NMAuthManager *auth_manager, gpointer user_data) "()"); } -#define KERN_RFKILL_OP_CHANGE_ALL 3 -#define KERN_RFKILL_TYPE_WLAN 1 -#define KERN_RFKILL_TYPE_WWAN 5 -struct rfkill_event { - __u32 idx; - __u8 type; - __u8 op; - __u8 soft, hard; -} _nm_packed; - static void -rfkill_change (NMManager *self, const char *desc, RfKillType rtype, gboolean enabled) +rfkill_change (NMManager *self, const char *desc, int rtype, gboolean enabled) { int fd; struct rfkill_event event; @@ -7194,17 +7185,8 @@ rfkill_change (NMManager *self, const char *desc, RfKillType rtype, gboolean ena } memset (&event, 0, sizeof (event)); - event.op = KERN_RFKILL_OP_CHANGE_ALL; - switch (rtype) { - case RFKILL_TYPE_WLAN: - event.type = KERN_RFKILL_TYPE_WLAN; - break; - case RFKILL_TYPE_WWAN: - event.type = KERN_RFKILL_TYPE_WWAN; - break; - default: - g_assert_not_reached (); - } + event.op = RFKILL_OP_CHANGE_ALL; + event.type = rtype; event.soft = enabled ? 0 : 1; len = write (fd, &event, sizeof (event)); @@ -7456,7 +7438,7 @@ nm_manager_init (NMManager *self) priv->radio_states[RFKILL_TYPE_WWAN].desc = "WWAN"; priv->radio_states[RFKILL_TYPE_WWAN].rtype = RFKILL_TYPE_WWAN; - for (i = 0; i < RFKILL_TYPE_MAX; i++) + for (i = 0; i < NUM_RFKILL_TYPES; i++) priv->radio_states[i].hw_enabled = TRUE; priv->sleeping = FALSE; diff --git a/src/nm-rfkill-manager.c b/src/nm-rfkill-manager.c index 2d450dd960..2984b1bab9 100644 --- a/src/nm-rfkill-manager.c +++ b/src/nm-rfkill-manager.c @@ -8,6 +8,7 @@ #include "nm-rfkill-manager.h" +#include <linux/rfkill.h> #include <libudev.h> #include "nm-udev-aux/nm-udev-utils.h" @@ -25,7 +26,7 @@ typedef struct { NMUdevClient *udev_client; /* Authoritative rfkill state (RFKILL_* enum) */ - RfKillState rfkill_states[RFKILL_TYPE_MAX]; + int rfkill_states[NUM_RFKILL_TYPES]; GSList *killswitches; } NMRfkillManagerPrivate; @@ -49,22 +50,22 @@ typedef struct { guint64 seqnum; char *path; char *driver; - RfKillType rtype; + int rtype; int state; gboolean platform; } Killswitch; -RfKillState -nm_rfkill_manager_get_rfkill_state (NMRfkillManager *self, RfKillType rtype) +int +nm_rfkill_manager_get_rfkill_state (NMRfkillManager *self, int rtype) { - g_return_val_if_fail (self != NULL, RFKILL_UNBLOCKED); - g_return_val_if_fail (rtype < RFKILL_TYPE_MAX, RFKILL_UNBLOCKED); + g_return_val_if_fail (self != NULL, RFKILL_STATE_UNBLOCKED); + g_return_val_if_fail (rtype < NUM_RFKILL_TYPES, RFKILL_STATE_UNBLOCKED); return NM_RFKILL_MANAGER_GET_PRIVATE (self)->rfkill_states[rtype]; } static const char * -rfkill_type_to_desc (RfKillType rtype) +rfkill_type_to_desc (int rtype) { if (rtype == 0) return "Wi-Fi"; @@ -76,7 +77,7 @@ rfkill_type_to_desc (RfKillType rtype) } static const char * -rfkill_state_to_desc (RfKillState rstate) +rfkill_state_to_desc (int rstate) { if (rstate == 0) return "unblocked"; @@ -88,7 +89,7 @@ rfkill_state_to_desc (RfKillState rstate) } static Killswitch * -killswitch_new (struct udev_device *device, RfKillType rtype) +killswitch_new (struct udev_device *device, int rtype) { Killswitch *ks; struct udev_device *parent = NULL, *grandparent = NULL; @@ -142,21 +143,21 @@ killswitch_destroy (Killswitch *ks) g_free (ks); } -static RfKillState +static int sysfs_state_to_nm_state (int sysfs_state) { switch (sysfs_state) { case 0: - return RFKILL_SOFT_BLOCKED; + return RFKILL_STATE_SOFT_BLOCKED; case 1: - return RFKILL_UNBLOCKED; + return RFKILL_STATE_UNBLOCKED; case 2: - return RFKILL_HARD_BLOCKED; + return RFKILL_STATE_HARD_BLOCKED; default: nm_log_warn (LOGD_RFKILL, "unhandled rfkill state %d", sysfs_state); break; } - return RFKILL_UNBLOCKED; + return RFKILL_STATE_UNBLOCKED; } static void @@ -164,15 +165,15 @@ recheck_killswitches (NMRfkillManager *self) { NMRfkillManagerPrivate *priv = NM_RFKILL_MANAGER_GET_PRIVATE (self); GSList *iter; - RfKillState poll_states[RFKILL_TYPE_MAX]; - RfKillState platform_states[RFKILL_TYPE_MAX]; - gboolean platform_checked[RFKILL_TYPE_MAX]; + int poll_states[NUM_RFKILL_TYPES]; + int platform_states[NUM_RFKILL_TYPES]; + gboolean platform_checked[NUM_RFKILL_TYPES]; int i; /* Default state is unblocked */ - for (i = 0; i < RFKILL_TYPE_MAX; i++) { - poll_states[i] = RFKILL_UNBLOCKED; - platform_states[i] = RFKILL_UNBLOCKED; + for (i = 0; i < NUM_RFKILL_TYPES; i++) { + poll_states[i] = RFKILL_STATE_UNBLOCKED; + platform_states[i] = RFKILL_STATE_UNBLOCKED; platform_checked[i] = FALSE; } @@ -180,7 +181,7 @@ recheck_killswitches (NMRfkillManager *self) for (iter = priv->killswitches; iter; iter = g_slist_next (iter)) { Killswitch *ks = iter->data; struct udev_device *device; - RfKillState dev_state; + int dev_state; int sysfs_state; device = udev_device_new_from_subsystem_sysname (nm_udev_client_get_udev (priv->udev_client), @@ -210,12 +211,12 @@ recheck_killswitches (NMRfkillManager *self) } /* Log and emit change signal for final rfkill states */ - for (i = 0; i < RFKILL_TYPE_MAX; i++) { + for (i = 0; i < NUM_RFKILL_TYPES; i++) { if (platform_checked[i] == TRUE) { /* blocked platform switch state overrides device state, otherwise * let the device state stand. (bgo #655773) */ - if (platform_states[i] != RFKILL_UNBLOCKED) + if (platform_states[i] != RFKILL_STATE_UNBLOCKED) poll_states[i] = platform_states[i]; } @@ -247,17 +248,17 @@ killswitch_find_by_name (NMRfkillManager *self, const char *name) return NULL; } -static RfKillType +static int rfkill_type_to_enum (const char *str) { - g_return_val_if_fail (str != NULL, RFKILL_TYPE_UNKNOWN); + g_return_val_if_fail (str != NULL, 0); if (!strcmp (str, "wlan")) return RFKILL_TYPE_WLAN; else if (!strcmp (str, "wwan")) return RFKILL_TYPE_WWAN; - return RFKILL_TYPE_UNKNOWN; + return 0; } static void @@ -265,12 +266,12 @@ add_one_killswitch (NMRfkillManager *self, struct udev_device *device) { NMRfkillManagerPrivate *priv = NM_RFKILL_MANAGER_GET_PRIVATE (self); const char *str_type; - RfKillType rtype; + int rtype; Killswitch *ks; str_type = udev_device_get_property_value (device, "RFKILL_TYPE"); rtype = rfkill_type_to_enum (str_type); - if (rtype == RFKILL_TYPE_UNKNOWN) + if (rtype == 0) return; ks = killswitch_new (device, rtype); @@ -359,8 +360,8 @@ nm_rfkill_manager_init (NMRfkillManager *self) struct udev_list_entry *iter; guint i; - for (i = 0; i < RFKILL_TYPE_MAX; i++) - priv->rfkill_states[i] = RFKILL_UNBLOCKED; + for (i = 0; i < NUM_RFKILL_TYPES; i++) + priv->rfkill_states[i] = RFKILL_STATE_UNBLOCKED; priv->udev_client = nm_udev_client_new ((const char *[]) { "rfkill", NULL }, handle_uevent, self); diff --git a/src/nm-rfkill-manager.h b/src/nm-rfkill-manager.h index 45dbce0b3d..b75de03346 100644 --- a/src/nm-rfkill-manager.h +++ b/src/nm-rfkill-manager.h @@ -8,24 +8,6 @@ #ifndef __NM_RFKILL_MANAGER_H__ #define __NM_RFKILL_MANAGER_H__ -typedef enum { /*< skip >*/ - RFKILL_UNBLOCKED = 0, - RFKILL_SOFT_BLOCKED = 1, - RFKILL_HARD_BLOCKED = 2 -} RfKillState; - -typedef enum { /*< skip >*/ - RFKILL_TYPE_WLAN = 0, - RFKILL_TYPE_WWAN = 1, - - /* UNKNOWN and MAX should always be 1 more than - * the last rfkill type since RFKILL_TYPE_MAX is - * used as an array size. - */ - RFKILL_TYPE_UNKNOWN, /* KEEP LAST */ - RFKILL_TYPE_MAX = RFKILL_TYPE_UNKNOWN -} RfKillType; - #define NM_TYPE_RFKILL_MANAGER (nm_rfkill_manager_get_type ()) #define NM_RFKILL_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_RFKILL_MANAGER, NMRfkillManager)) #define NM_RFKILL_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_RFKILL_MANAGER, NMRfkillManagerClass)) @@ -41,6 +23,6 @@ GType nm_rfkill_manager_get_type (void); NMRfkillManager *nm_rfkill_manager_new (void); -RfKillState nm_rfkill_manager_get_rfkill_state (NMRfkillManager *manager, RfKillType rtype); +int nm_rfkill_manager_get_rfkill_state (NMRfkillManager *manager, int rtype); #endif /* __NM_RFKILL_MANAGER_H__ */ |