wwan: add modem:ip-ifindex property

Will be used later to replace ip-iface.
This commit is contained in:
Thomas Haller
2018-01-10 16:29:26 +01:00
parent ab4578302d
commit 4fbea56b54
2 changed files with 53 additions and 2 deletions

View File

@@ -45,6 +45,7 @@
NM_GOBJECT_PROPERTIES_DEFINE (NMModem,
PROP_CONTROL_PORT,
PROP_DATA_PORT,
PROP_IP_IFINDEX,
PROP_PATH,
PROP_UID,
PROP_DRIVER,
@@ -80,6 +81,7 @@ typedef struct _NMModemPrivate {
char *control_port;
char *data_port;
char *ip_iface;
int ip_ifindex;
NMModemIPMethod ip4_method;
NMModemIPMethod ip6_method;
NMUtilsIPv6IfaceId iid;
@@ -152,6 +154,10 @@ _nmlog_prefix (char *prefix, NMModem *self)
_NM_UTILS_MACRO_REST (__VA_ARGS__)); \
} G_STMT_END
/*****************************************************************************/
static void _set_ip_ifindex (NMModem *self, int ifindex);
/*****************************************************************************/
/* State/enabled/connected */
@@ -458,6 +464,8 @@ ppp_ifindex_set (NMPPPManager *ppp_manager,
NMModem *self = NM_MODEM (user_data);
NMModemPrivate *priv = NM_MODEM_GET_PRIVATE (self);
nm_assert (ifindex >= 0);
/* Notify about the new data port to use.
*
* @iface might be %NULL. */
@@ -466,6 +474,7 @@ ppp_ifindex_set (NMPPPManager *ppp_manager,
priv->data_port = g_strdup (iface);
_notify (self, PROP_DATA_PORT);
}
_set_ip_ifindex (self, ifindex);
}
static void
@@ -1128,6 +1137,7 @@ deactivate_cleanup (NMModem *self, NMDevice *device)
priv->ip4_method = NM_MODEM_IP_METHOD_UNKNOWN;
priv->ip6_method = NM_MODEM_IP_METHOD_UNKNOWN;
_set_ip_ifindex (self, -1);
nm_clear_g_free (&priv->ip_iface);
}
@@ -1395,6 +1405,34 @@ nm_modem_get_data_port (NMModem *self)
return priv->ip_iface ?: priv->data_port;
}
int
nm_modem_get_ip_ifindex (NMModem *self)
{
NMModemPrivate *priv;
g_return_val_if_fail (NM_IS_MODEM (self), 0);
priv = NM_MODEM_GET_PRIVATE (self);
/* internally we track an unset ip_ifindex as -1.
* For the caller of nm_modem_get_ip_ifindex(), this
* shall be zero too. */
return priv->ip_ifindex != -1 ? priv->ip_ifindex : 0;
}
static void
_set_ip_ifindex (NMModem *self, int ifindex)
{
NMModemPrivate *priv = NM_MODEM_GET_PRIVATE (self);
nm_assert (ifindex >= -1);
if (priv->ip_ifindex != ifindex) {
priv->ip_ifindex = ifindex;
_notify (self, PROP_IP_IFINDEX);
}
}
gboolean
nm_modem_owns_port (NMModem *self, const char *iface)
{
@@ -1508,7 +1546,8 @@ static void
get_property (GObject *object, guint prop_id,
GValue *value, GParamSpec *pspec)
{
NMModemPrivate *priv = NM_MODEM_GET_PRIVATE ((NMModem *) object);
NMModem *self = NM_MODEM (object);
NMModemPrivate *priv = NM_MODEM_GET_PRIVATE (self);
switch (prop_id) {
case PROP_PATH:
@@ -1521,7 +1560,10 @@ get_property (GObject *object, guint prop_id,
g_value_set_string (value, priv->control_port);
break;
case PROP_DATA_PORT:
g_value_set_string (value, nm_modem_get_data_port (NM_MODEM (object)));
g_value_set_string (value, nm_modem_get_data_port (self));
break;
case PROP_IP_IFINDEX:
g_value_set_int (value, nm_modem_get_ip_ifindex (self));
break;
case PROP_UID:
g_value_set_string (value, priv->uid);
@@ -1631,6 +1673,7 @@ nm_modem_init (NMModem *self)
self->_priv = G_TYPE_INSTANCE_GET_PRIVATE (self, NM_TYPE_MODEM, NMModemPrivate);
priv = self->_priv;
priv->ip_ifindex = -1;
priv->ip4_route_table = RT_TABLE_MAIN;
priv->ip4_route_metric = 700;
priv->ip6_route_table = RT_TABLE_MAIN;
@@ -1726,6 +1769,12 @@ nm_modem_class_init (NMModemClass *klass)
G_PARAM_READWRITE | G_PARAM_CONSTRUCT |
G_PARAM_STATIC_STRINGS);
obj_properties[PROP_IP_IFINDEX] =
g_param_spec_int (NM_MODEM_IP_IFINDEX, "", "",
0, G_MAXINT, 0,
G_PARAM_READABLE |
G_PARAM_STATIC_STRINGS);
obj_properties[PROP_IP4_METHOD] =
g_param_spec_uint (NM_MODEM_IP4_METHOD, "", "",
NM_MODEM_IP_METHOD_UNKNOWN,

View File

@@ -38,6 +38,7 @@
#define NM_MODEM_DRIVER "driver"
#define NM_MODEM_CONTROL_PORT "control-port"
#define NM_MODEM_DATA_PORT "data-port"
#define NM_MODEM_IP_IFINDEX "ip-ifindex"
#define NM_MODEM_IP4_METHOD "ip4-method"
#define NM_MODEM_IP6_METHOD "ip6-method"
#define NM_MODEM_IP_TIMEOUT "ip-timeout"
@@ -168,6 +169,7 @@ const char *nm_modem_get_path (NMModem *modem);
const char *nm_modem_get_uid (NMModem *modem);
const char *nm_modem_get_control_port (NMModem *modem);
const char *nm_modem_get_data_port (NMModem *modem);
int nm_modem_get_ip_ifindex (NMModem *modem);
const char *nm_modem_get_driver (NMModem *modem);
const char *nm_modem_get_device_id (NMModem *modem);
const char *nm_modem_get_sim_id (NMModem *modem);