mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-01 13:55:36 +00:00
wwan: expose the APN on the D-Bus
This is going to be useful for UIs to know which plan we're actually using.
This commit is contained in:
parent
0b3dd18c2b
commit
b5b8b23c4b
|
@ -49,6 +49,15 @@
|
|||
-->
|
||||
<property name="OperatorCode" type="s" access="read" />
|
||||
|
||||
<!--
|
||||
Apn:
|
||||
|
||||
The access point name the modem is connected to. Blank if disconnected.
|
||||
|
||||
Since: 1.20
|
||||
-->
|
||||
<property name="Apn" type="s" access="read" />
|
||||
|
||||
<!--
|
||||
PropertiesChanged:
|
||||
@properties: A dictionary mapping property names to variant boxed values
|
||||
|
|
|
@ -7,6 +7,7 @@ global:
|
|||
nm_modem_deactivate;
|
||||
nm_modem_deactivate_async;
|
||||
nm_modem_device_state_changed;
|
||||
nm_modem_get_apn;
|
||||
nm_modem_get_capabilities;
|
||||
nm_modem_get_configured_mtu;
|
||||
nm_modem_get_control_port;
|
||||
|
|
|
@ -42,6 +42,7 @@ NM_GOBJECT_PROPERTIES_DEFINE (NMDeviceModem,
|
|||
PROP_CURRENT_CAPABILITIES,
|
||||
PROP_DEVICE_ID,
|
||||
PROP_OPERATOR_CODE,
|
||||
PROP_APN,
|
||||
);
|
||||
|
||||
typedef struct {
|
||||
|
@ -51,6 +52,7 @@ typedef struct {
|
|||
gboolean rf_enabled;
|
||||
char *device_id;
|
||||
char *operator_code;
|
||||
char *apn;
|
||||
} NMDeviceModemPrivate;
|
||||
|
||||
struct _NMDeviceModem {
|
||||
|
@ -325,6 +327,20 @@ operator_code_changed_cb (NMModem *modem, GParamSpec *pspec, gpointer user_data)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
apn_changed_cb (NMModem *modem, GParamSpec *pspec, gpointer user_data)
|
||||
{
|
||||
NMDeviceModem *self = NM_DEVICE_MODEM (user_data);
|
||||
NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (self);
|
||||
const char *apn = nm_modem_get_apn (modem);
|
||||
|
||||
if (g_strcmp0 (priv->apn, apn) != 0) {
|
||||
g_free (priv->apn);
|
||||
priv->apn = g_strdup (apn);
|
||||
_notify (self, PROP_APN);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
ids_changed_cb (NMModem *modem, GParamSpec *pspec, gpointer user_data)
|
||||
{
|
||||
|
@ -711,6 +727,7 @@ set_modem (NMDeviceModem *self, NMModem *modem)
|
|||
g_signal_connect (modem, "notify::" NM_MODEM_SIM_ID, G_CALLBACK (ids_changed_cb), self);
|
||||
g_signal_connect (modem, "notify::" NM_MODEM_SIM_OPERATOR_ID, G_CALLBACK (ids_changed_cb), self);
|
||||
g_signal_connect (modem, "notify::" NM_MODEM_OPERATOR_CODE, G_CALLBACK (operator_code_changed_cb), self);
|
||||
g_signal_connect (modem, "notify::" NM_MODEM_APN, G_CALLBACK (apn_changed_cb), self);
|
||||
}
|
||||
|
||||
static guint32
|
||||
|
@ -747,6 +764,9 @@ get_property (GObject *object, guint prop_id,
|
|||
case PROP_OPERATOR_CODE:
|
||||
g_value_set_string (value, priv->operator_code);
|
||||
break;
|
||||
case PROP_APN:
|
||||
g_value_set_string (value, priv->apn);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
@ -824,6 +844,7 @@ dispose (GObject *object)
|
|||
|
||||
g_clear_pointer (&priv->device_id, g_free);
|
||||
g_clear_pointer (&priv->operator_code, g_free);
|
||||
g_clear_pointer (&priv->apn, g_free);
|
||||
|
||||
G_OBJECT_CLASS (nm_device_modem_parent_class)->dispose (object);
|
||||
}
|
||||
|
@ -839,6 +860,7 @@ static const NMDBusInterfaceInfoExtended interface_info_device_modem = {
|
|||
NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("CurrentCapabilities", "u", NM_DEVICE_MODEM_CURRENT_CAPABILITIES),
|
||||
NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE ("DeviceId", "s", NM_DEVICE_MODEM_DEVICE_ID),
|
||||
NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE ("OperatorCode", "s", NM_DEVICE_MODEM_OPERATOR_CODE),
|
||||
NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE ("Apn", "s", NM_DEVICE_MODEM_APN),
|
||||
),
|
||||
),
|
||||
.legacy_property_changed = TRUE,
|
||||
|
@ -905,6 +927,13 @@ nm_device_modem_class_init (NMDeviceModemClass *klass)
|
|||
obj_properties[PROP_OPERATOR_CODE] =
|
||||
g_param_spec_string (NM_DEVICE_MODEM_OPERATOR_CODE, "", "",
|
||||
NULL,
|
||||
G_PARAM_READABLE |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
|
||||
obj_properties[PROP_APN] =
|
||||
g_param_spec_string (NM_DEVICE_MODEM_APN, "", "",
|
||||
NULL,
|
||||
G_PARAM_READABLE |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
|
||||
g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties);
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#define NM_DEVICE_MODEM_CURRENT_CAPABILITIES "current-capabilities"
|
||||
#define NM_DEVICE_MODEM_DEVICE_ID "device-id"
|
||||
#define NM_DEVICE_MODEM_OPERATOR_CODE "operator-code"
|
||||
#define NM_DEVICE_MODEM_APN "apn"
|
||||
|
||||
typedef struct _NMDeviceModem NMDeviceModem;
|
||||
typedef struct _NMDeviceModemClass NMDeviceModemClass;
|
||||
|
|
|
@ -549,6 +549,8 @@ connect_context_step (NMModemBroadband *self)
|
|||
else
|
||||
g_assert_not_reached ();
|
||||
|
||||
_nm_modem_set_apn (NM_MODEM (self), mm_simple_connect_properties_get_apn (ctx->connect_properties));
|
||||
|
||||
_LOGD ("launching connection with ip type '%s' (try %d)",
|
||||
nm_modem_ip_type_to_string (current),
|
||||
ctx->ip_type_tries + 1);
|
||||
|
@ -1159,6 +1161,7 @@ disconnect (NMModem *modem,
|
|||
DisconnectContext *ctx;
|
||||
|
||||
connect_context_clear (self);
|
||||
_nm_modem_set_apn (NM_MODEM (self), NULL);
|
||||
|
||||
ctx = g_slice_new0 (DisconnectContext);
|
||||
ctx->self = g_object_ref (self);
|
||||
|
|
|
@ -53,6 +53,7 @@ NM_GOBJECT_PROPERTIES_DEFINE (NMModem,
|
|||
PROP_IP_TYPES,
|
||||
PROP_SIM_OPERATOR_ID,
|
||||
PROP_OPERATOR_CODE,
|
||||
PROP_APN,
|
||||
);
|
||||
|
||||
enum {
|
||||
|
@ -92,6 +93,7 @@ typedef struct _NMModemPrivate {
|
|||
NMModemIPType ip_types;
|
||||
char *sim_operator_id;
|
||||
char *operator_code;
|
||||
char *apn;
|
||||
|
||||
NMPPPManager *ppp_manager;
|
||||
|
||||
|
@ -444,6 +446,12 @@ nm_modem_get_operator_code (NMModem *self)
|
|||
return NM_MODEM_GET_PRIVATE (self)->operator_code;
|
||||
}
|
||||
|
||||
const char *
|
||||
nm_modem_get_apn (NMModem *self)
|
||||
{
|
||||
return NM_MODEM_GET_PRIVATE (self)->apn;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/* IP method PPP */
|
||||
|
||||
|
@ -1597,6 +1605,18 @@ _nm_modem_set_operator_code (NMModem *self, const char *operator_code)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
_nm_modem_set_apn (NMModem *self, const char *apn)
|
||||
{
|
||||
NMModemPrivate *priv = NM_MODEM_GET_PRIVATE (self);
|
||||
|
||||
if (g_strcmp0 (priv->apn, apn) != 0) {
|
||||
g_free (priv->apn);
|
||||
priv->apn = g_strdup (apn);
|
||||
_notify (self, PROP_APN);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
get_property (GObject *object, guint prop_id,
|
||||
GValue *value, GParamSpec *pspec)
|
||||
|
@ -1638,6 +1658,9 @@ get_property (GObject *object, guint prop_id,
|
|||
case PROP_OPERATOR_CODE:
|
||||
g_value_set_string (value, priv->operator_code);
|
||||
break;
|
||||
case PROP_APN:
|
||||
g_value_set_string (value, priv->apn);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
@ -1693,6 +1716,9 @@ set_property (GObject *object, guint prop_id,
|
|||
case PROP_OPERATOR_CODE:
|
||||
_nm_modem_set_operator_code (NM_MODEM (object), g_value_get_string (value));
|
||||
break;
|
||||
case PROP_APN:
|
||||
_nm_modem_set_apn (NM_MODEM (object), g_value_get_string (value));
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
@ -1755,6 +1781,7 @@ finalize (GObject *object)
|
|||
g_free (priv->sim_id);
|
||||
g_free (priv->sim_operator_id);
|
||||
g_free (priv->operator_code);
|
||||
g_free (priv->apn);
|
||||
|
||||
G_OBJECT_CLASS (nm_modem_parent_class)->finalize (object);
|
||||
}
|
||||
|
@ -1841,6 +1868,13 @@ nm_modem_class_init (NMModemClass *klass)
|
|||
obj_properties[PROP_OPERATOR_CODE] =
|
||||
g_param_spec_string (NM_MODEM_OPERATOR_CODE, "", "",
|
||||
NULL,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
|
||||
obj_properties[PROP_APN] =
|
||||
g_param_spec_string (NM_MODEM_APN, "", "",
|
||||
NULL,
|
||||
G_PARAM_READABLE |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
|
||||
g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties);
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
#define NM_MODEM_IP_TYPES "ip-types" /* Supported IP types */
|
||||
#define NM_MODEM_SIM_OPERATOR_ID "sim-operator-id"
|
||||
#define NM_MODEM_OPERATOR_CODE "operator-code"
|
||||
#define NM_MODEM_APN "apn"
|
||||
|
||||
/* Signals */
|
||||
#define NM_MODEM_PPP_STATS "ppp-stats"
|
||||
|
@ -177,6 +178,7 @@ const char *nm_modem_get_sim_id (NMModem *modem);
|
|||
const char *nm_modem_get_sim_operator_id (NMModem *modem);
|
||||
gboolean nm_modem_get_iid (NMModem *modem, NMUtilsIPv6IfaceId *out_iid);
|
||||
const char *nm_modem_get_operator_code (NMModem *modem);
|
||||
const char *nm_modem_get_apn (NMModem *modem);
|
||||
|
||||
gboolean nm_modem_set_data_port (NMModem *self,
|
||||
NMPlatform *platform,
|
||||
|
@ -289,5 +291,6 @@ const char *nm_modem_ip_type_to_string (NMModemIPType ip_type);
|
|||
guint32 nm_modem_get_configured_mtu (NMDevice *self, NMDeviceMtuSource *out_source);
|
||||
|
||||
void _nm_modem_set_operator_code (NMModem *self, const char *operator_code);
|
||||
void _nm_modem_set_apn (NMModem *self, const char *apn);
|
||||
|
||||
#endif /* __NETWORKMANAGER_MODEM_H__ */
|
||||
|
|
Loading…
Reference in a new issue