summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2019-09-12 10:17:35 +0200
committerLubomir Rintel <lkundrak@v3.sk>2019-09-12 10:17:53 +0200
commita79b01e539a88b41b0497acf8b762d162a89bc0b (patch)
tree7c5e7b75c06e5f53d21c86017b47cb4f81f5c992
parentd6b797584fc1d9c149dcfcbc1b5db3c66e418979 (diff)
downloadNetworkManager-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.c11
-rw-r--r--src/devices/nm-device.h2
-rw-r--r--src/devices/wifi/nm-device-olpc-mesh.c1
-rw-r--r--src/devices/wifi/nm-device-wifi-p2p.c1
-rw-r--r--src/devices/wifi/nm-device-wifi.c1
-rw-r--r--src/devices/wwan/nm-device-modem.c2
-rw-r--r--src/nm-manager.c62
-rw-r--r--src/nm-rfkill-manager.c61
-rw-r--r--src/nm-rfkill-manager.h20
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__ */