add gsm device-uid setting to restrict the devices the connection applies to

This commit is contained in:
Michael Mokricky 2025-04-02 15:09:09 +02:00 committed by Íñigo Huguet
parent 9e0551aefd
commit 820e56c5df
14 changed files with 455 additions and 349 deletions

1
NEWS
View file

@ -17,6 +17,7 @@ USE AT YOUR OWN RISK. NOT RECOMMENDED FOR PRODUCTION USE!
options from connections, instead of merging all together.
* Add support for a new rd.net.dhcp.client-id option in
nm-initrd-generator.
* Add gsm device-uid setting to restrict the devices the connection applies to.
=============================================
NetworkManager-1.54

View file

@ -1649,6 +1649,8 @@ nm_modem_broadband_new(GObject *object, GError **error)
driver,
NM_MODEM_OPERATOR_CODE,
operator_code,
NM_MODEM_DEVICE_UID,
mm_modem_get_device(modem_iface),
NULL);
}

View file

@ -39,7 +39,8 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMModem,
PROP_IP_TYPES,
PROP_SIM_OPERATOR_ID,
PROP_OPERATOR_CODE,
PROP_APN, );
PROP_APN,
PROP_DEVICE_UID, );
enum {
PPP_STATS,
@ -78,6 +79,7 @@ typedef struct _NMModemPrivate {
char *sim_operator_id;
char *operator_code;
char *apn;
char *device_uid;
NMPPPManager *ppp_manager;
NMPppMgr *ppp_mgr;
@ -618,6 +620,12 @@ nm_modem_get_apn(NMModem *self)
return NM_MODEM_GET_PRIVATE(self)->apn;
}
const char *
nm_modem_get_device_uid(NMModem *self)
{
return NM_MODEM_GET_PRIVATE(self)->device_uid;
}
/*****************************************************************************/
static void
@ -1121,6 +1129,22 @@ nm_modem_check_connection_compatible(NMModem *self, NMConnection *connection, GE
}
}
str = nm_setting_gsm_get_device_uid(s_gsm);
if (str) {
if (!priv->device_uid) {
nm_utils_error_set_literal(error,
NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY,
"GSM profile has device-uid, device does not");
return FALSE;
}
if (!nm_streq(str, priv->device_uid)) {
nm_utils_error_set_literal(error,
NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY,
"device has differing device-uid than GSM profile");
return FALSE;
}
}
/* SIM properties may not be available before the SIM is unlocked, so
* to ensure that autoconnect works, the connection's SIM properties
* are only compared if present on the device.
@ -1644,6 +1668,9 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
case PROP_APN:
g_value_set_string(value, priv->apn);
break;
case PROP_DEVICE_UID:
g_value_set_string(value, priv->device_uid);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
@ -1699,6 +1726,10 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
/* construct-only */
priv->operator_code = g_value_dup_string(value);
break;
case PROP_DEVICE_UID:
/* construct-only */
priv->device_uid = g_value_dup_string(value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
@ -1758,6 +1789,7 @@ finalize(GObject *object)
g_free(priv->sim_operator_id);
g_free(priv->operator_code);
g_free(priv->apn);
g_free(priv->device_uid);
G_OBJECT_CLASS(nm_modem_parent_class)->finalize(object);
}
@ -1863,6 +1895,13 @@ nm_modem_class_init(NMModemClass *klass)
obj_properties[PROP_APN] =
g_param_spec_string(NM_MODEM_APN, "", "", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
obj_properties[PROP_DEVICE_UID] =
g_param_spec_string(NM_MODEM_DEVICE_UID,
"",
"",
NULL,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
signals[PPP_STATS] = g_signal_new(NM_MODEM_PPP_STATS,

View file

@ -30,6 +30,7 @@
#define NM_MODEM_SIM_OPERATOR_ID "sim-operator-id"
#define NM_MODEM_OPERATOR_CODE "operator-code"
#define NM_MODEM_APN "apn"
#define NM_MODEM_DEVICE_UID "device-uid"
/* Signals */
#define NM_MODEM_PPP_STATS "ppp-stats"
@ -154,6 +155,7 @@ const char *nm_modem_get_sim_id(NMModem *modem);
const char *nm_modem_get_sim_operator_id(NMModem *modem);
const char *nm_modem_get_operator_code(NMModem *modem);
const char *nm_modem_get_apn(NMModem *modem);
const char *nm_modem_get_device_uid(NMModem *modem);
gboolean nm_modem_set_data_port(NMModem *self,
NMPlatform *platform,

View file

@ -8,6 +8,7 @@ timestamp=305415219
[gsm]
apn=internet2.voicestream.com
device-id=da812de91eec16620b06cd0ca5cbc7ea25245222
device-uid=MODEM1
home-only=true
network-id=254098
password=parliament2

View file

@ -1408,6 +1408,8 @@ test_write_gsm_connection(void)
"89148000000060671234",
NM_SETTING_GSM_SIM_OPERATOR_ID,
"310260",
NM_SETTING_GSM_DEVICE_UID,
"MODEM1",
NULL);
write_test_connection_and_reread(connection, TRUE, TEST_KEYFILES_DIR "/Test_Write_GSM");

View file

@ -2080,4 +2080,5 @@ global:
libnm_1_56_0 {
global:
nm_dns_server_validate;
nm_setting_gsm_get_device_uid;
} libnm_1_54_0;

View file

@ -1393,6 +1393,10 @@
dbus-type="s"
gprop-type="gchararray"
/>
<property name="device-uid"
dbus-type="s"
gprop-type="gchararray"
/>
<property name="home-only"
dbus-type="b"
gprop-type="gboolean"

View file

@ -47,7 +47,8 @@ NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_AUTO_CONFIG,
PROP_INITIAL_EPS_REFUSE_PAP,
PROP_INITIAL_EPS_REFUSE_CHAP,
PROP_INITIAL_EPS_REFUSE_MSCHAP,
PROP_INITIAL_EPS_REFUSE_MSCHAPV2, );
PROP_INITIAL_EPS_REFUSE_MSCHAPV2,
PROP_DEVICE_UID, );
typedef struct {
char *number;
@ -75,6 +76,7 @@ typedef struct {
bool auto_config;
bool home_only;
bool initial_eps_config;
char *device_uid;
} NMSettingGsmPrivate;
/**
@ -465,6 +467,22 @@ nm_setting_gsm_get_initial_eps_refuse_mschapv2(NMSettingGsm *setting)
return NM_SETTING_GSM_GET_PRIVATE(setting)->initial_eps_refuse_mschapv2;
}
/**
* nm_setting_gsm_get_device_uid:
* @setting: the #NMSettingGsm
*
* Returns: the #NMSettingGsm:device-uid property of the setting
*
* Since: 1.56
**/
const char *
nm_setting_gsm_get_device_uid(NMSettingGsm *setting)
{
g_return_val_if_fail(NM_IS_SETTING_GSM(setting), NULL);
return NM_SETTING_GSM_GET_PRIVATE(setting)->device_uid;
}
static gboolean
_verify_apn(const char *apn, gboolean allow_empty, const char *property_name, GError **error)
{
@ -1149,6 +1167,26 @@ nm_setting_gsm_class_init(NMSettingGsmClass *klass)
NMSettingGsmPrivate,
initial_eps_refuse_mschapv2);
/**
* NMSettingGsm:device-uid:
*
* The device UID (as given by the WWAN management service) which this
* connection applies to. In contrast to #NMSettingGsm:device-id, which is
* an inherent property of the connected device, this setting refers to
* a property set by a UDEV-rule. Refer to the "Common udev tags" ->
* "ID_MM_PHYSDEV_UID" documentation of ModemManager. If given, the
* connection will only apply to the specified device.
*
* Since: 1.56
**/
_nm_setting_property_define_direct_string(properties_override,
obj_properties,
NM_SETTING_GSM_DEVICE_UID,
PROP_DEVICE_UID,
NM_SETTING_PARAM_NONE,
NMSettingGsmPrivate,
device_uid);
/* Ignore incoming deprecated properties */
_nm_properties_override_dbus(properties_override,
"allowed-bands",

View file

@ -50,6 +50,7 @@ G_BEGIN_DECLS
#define NM_SETTING_GSM_INITIAL_EPS_BEARER_REFUSE_CHAP "initial-eps-bearer-refuse-chap"
#define NM_SETTING_GSM_INITIAL_EPS_BEARER_REFUSE_MSCHAP "initial-eps-bearer-refuse-mschap"
#define NM_SETTING_GSM_INITIAL_EPS_BEARER_REFUSE_MSCHAPV2 "initial-eps-bearer-refuse-mschapv2"
#define NM_SETTING_GSM_DEVICE_UID "device-uid"
/* Deprecated */
#define NM_SETTING_GSM_NUMBER "number"
@ -99,6 +100,8 @@ gboolean nm_setting_gsm_get_initial_eps_refuse_mschap(NMSettingGsm *setting);
NM_AVAILABLE_IN_1_52
gboolean nm_setting_gsm_get_initial_eps_refuse_mschapv2(NMSettingGsm *setting);
const char *nm_setting_gsm_get_device_uid(NMSettingGsm *setting);
NM_DEPRECATED_IN_1_16
const char *nm_setting_gsm_get_number(NMSettingGsm *setting);

View file

@ -6213,6 +6213,9 @@ static const NMMetaPropertyInfo *const property_infos_GSM[] = {
PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_INITIAL_EPS_BEARER_REFUSE_MSCHAPV2,
.property_type = &_pt_gobject_bool,
),
PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_DEVICE_UID,
.property_type = &_pt_gobject_string,
),
NULL
};

View file

@ -149,6 +149,7 @@
#define DESCRIBE_DOC_NM_SETTING_GSM_APN N_("The GPRS Access Point Name specifying the APN used when establishing a data session with the GSM-based network. The APN often determines how the user will be billed for their network usage and whether the user has access to the Internet or just a provider-specific walled-garden, so it is important to use the correct APN for the user's mobile broadband plan. The APN may only be composed of the characters a-z, 0-9, ., and - per GSM 03.60 Section 14.9. If the APN is unset (the default) then it may be detected based on \"auto-config\" setting. The property can be explicitly set to the empty string to prevent that and use no APN.")
#define DESCRIBE_DOC_NM_SETTING_GSM_AUTO_CONFIG N_("When TRUE, the settings such as APN, username, or password will default to values that match the network the modem will register to in the Mobile Broadband Provider database.")
#define DESCRIBE_DOC_NM_SETTING_GSM_DEVICE_ID N_("The device unique identifier (as given by the WWAN management service) which this connection applies to. If given, the connection will only apply to the specified device.")
#define DESCRIBE_DOC_NM_SETTING_GSM_DEVICE_UID N_("The device UID (as given by the WWAN management service) which this connection applies to. In contrast to \"device-id\", which is an inherent property of the connected device, this setting refers to a property set by a UDEV-rule. Refer to the \"Common udev tags\" -> \"ID_MM_PHYSDEV_UID\" documentation of ModemManager. If given, the connection will only apply to the specified device.")
#define DESCRIBE_DOC_NM_SETTING_GSM_HOME_ONLY N_("When TRUE, only connections to the home network will be allowed. Connections to roaming networks will not be made.")
#define DESCRIBE_DOC_NM_SETTING_GSM_INITIAL_EPS_BEARER_APN N_("For LTE modems, this sets the APN for the initial EPS bearer that is set up when attaching to the network. Setting this parameter implies initial-eps-bearer-configure to be TRUE.")
#define DESCRIBE_DOC_NM_SETTING_GSM_INITIAL_EPS_BEARER_CONFIGURE N_("For LTE modems, this setting determines whether the initial EPS bearer shall be configured when bringing up the connection. It is inferred TRUE if initial-eps-bearer-apn is set.")

View file

@ -1198,6 +1198,9 @@
nmcli-description="For LTE modems, this disables MSCHAPV2 authentication method for the initial EPS bearer that is set up when attaching to the network."
format="boolean"
values="true/yes/on, false/no/off" />
<property name="device-uid"
nmcli-description="The device UID (as given by the WWAN management service) which this connection applies to. In contrast to &quot;device-id&quot;, which is an inherent property of the connected device, this setting refers to a property set by a UDEV-rule. Refer to the &quot;Common udev tags&quot; -&gt; &quot;ID_MM_PHYSDEV_UID&quot; documentation of ModemManager. If given, the connection will only apply to the specified device."
format="string" />
</setting>
<setting name="hostname" >
<property name="priority"

View file

@ -182,12 +182,12 @@ id
path
uuid
<<<
size: 6579
size: 6622
location: src/tests/client/test-client.py:test_003()/14
cmd: $NMCLI con s con-gsm1
lang: C
returncode: 0
stdout: 6446 bytes
stdout: 6489 bytes
>>>
connection.id: con-gsm1
connection.uuid: UUID-con-gsm1-REPLACED-REPLACED-REPL
@ -324,18 +324,19 @@ gsm.initial-eps-bearer-refuse-pap: no
gsm.initial-eps-bearer-refuse-chap: no
gsm.initial-eps-bearer-refuse-mschap: no
gsm.initial-eps-bearer-refuse-mschapv2: no
gsm.device-uid: --
proxy.method: none
proxy.browser-only: no
proxy.pac-url: --
proxy.pac-script: --
<<<
size: 6622
size: 6665
location: src/tests/client/test-client.py:test_003()/15
cmd: $NMCLI con s con-gsm1
lang: pl_PL.UTF-8
returncode: 0
stdout: 6479 bytes
stdout: 6522 bytes
>>>
connection.id: con-gsm1
connection.uuid: UUID-con-gsm1-REPLACED-REPLACED-REPL
@ -472,48 +473,49 @@ gsm.initial-eps-bearer-refuse-pap: nie
gsm.initial-eps-bearer-refuse-chap: nie
gsm.initial-eps-bearer-refuse-mschap: nie
gsm.initial-eps-bearer-refuse-mschapv2: nie
gsm.device-uid: --
proxy.method: none
proxy.browser-only: nie
proxy.pac-url: --
proxy.pac-script: --
<<<
size: 584
size: 585
location: src/tests/client/test-client.py:test_003()/16
cmd: $NMCLI -g all con s con-gsm1
lang: C
returncode: 0
stdout: 445 bytes
stdout: 446 bytes
>>>
connection:con-gsm1:UUID-con-gsm1-REPLACED-REPLACED-REPL::gsm::no:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
serial:5:8:even:1:100
gsm:no:::<hidden>:0:xyz.con-gsm1::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no
gsm:no:::<hidden>:0:xyz.con-gsm1::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no:
proxy:none:no::
<<<
size: 594
size: 595
location: src/tests/client/test-client.py:test_003()/17
cmd: $NMCLI -g all con s con-gsm1
lang: pl_PL.UTF-8
returncode: 0
stdout: 445 bytes
stdout: 446 bytes
>>>
connection:con-gsm1:UUID-con-gsm1-REPLACED-REPLACED-REPL::gsm::no:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
serial:5:8:even:1:100
gsm:no:::<hidden>:0:xyz.con-gsm1::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no
gsm:no:::<hidden>:0:xyz.con-gsm1::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no:
proxy:none:no::
<<<
size: 6567
size: 6610
location: src/tests/client/test-client.py:test_003()/18
cmd: $NMCLI con s con-gsm2
lang: C
returncode: 0
stdout: 6434 bytes
stdout: 6477 bytes
>>>
connection.id: con-gsm2
connection.uuid: UUID-con-gsm2-REPLACED-REPLACED-REPL
@ -650,18 +652,19 @@ gsm.initial-eps-bearer-refuse-pap: no
gsm.initial-eps-bearer-refuse-chap: no
gsm.initial-eps-bearer-refuse-mschap: no
gsm.initial-eps-bearer-refuse-mschapv2: no
gsm.device-uid: --
proxy.method: none
proxy.browser-only: no
proxy.pac-url: --
proxy.pac-script: --
<<<
size: 6610
size: 6653
location: src/tests/client/test-client.py:test_003()/19
cmd: $NMCLI con s con-gsm2
lang: pl_PL.UTF-8
returncode: 0
stdout: 6467 bytes
stdout: 6510 bytes
>>>
connection.id: con-gsm2
connection.uuid: UUID-con-gsm2-REPLACED-REPLACED-REPL
@ -798,332 +801,7 @@ gsm.initial-eps-bearer-refuse-pap: nie
gsm.initial-eps-bearer-refuse-chap: nie
gsm.initial-eps-bearer-refuse-mschap: nie
gsm.initial-eps-bearer-refuse-mschapv2: nie
proxy.method: none
proxy.browser-only: nie
proxy.pac-url: --
proxy.pac-script: --
<<<
size: 572
location: src/tests/client/test-client.py:test_003()/20
cmd: $NMCLI -g all con s con-gsm2
lang: C
returncode: 0
stdout: 433 bytes
>>>
connection:con-gsm2:UUID-con-gsm2-REPLACED-REPLACED-REPL::gsm::no:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
serial:5:8:even:1:100
gsm:no:::<hidden>:0:::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no
proxy:none:no::
<<<
size: 582
location: src/tests/client/test-client.py:test_003()/21
cmd: $NMCLI -g all con s con-gsm2
lang: pl_PL.UTF-8
returncode: 0
stdout: 433 bytes
>>>
connection:con-gsm2:UUID-con-gsm2-REPLACED-REPLACED-REPL::gsm::no:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
serial:5:8:even:1:100
gsm:no:::<hidden>:0:::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no
proxy:none:no::
<<<
size: 6567
location: src/tests/client/test-client.py:test_003()/22
cmd: $NMCLI con s con-gsm3
lang: C
returncode: 0
stdout: 6434 bytes
>>>
connection.id: con-gsm3
connection.uuid: UUID-con-gsm3-REPLACED-REPLACED-REPL
connection.stable-id: --
connection.type: gsm
connection.interface-name: --
connection.autoconnect: no
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0 (default)
connection.auth-retries: -1
connection.timestamp: 0
connection.permissions: --
connection.zone: --
connection.controller: --
connection.master: --
connection.slave-type: --
connection.port-type: --
connection.autoconnect-slaves: -1 (default)
connection.autoconnect-ports: -1 (default)
connection.down-on-poweroff: -1 (default)
connection.secondaries: --
connection.gateway-ping-timeout: 0
connection.ip-ping-timeout: 0
connection.ip-ping-addresses: --
connection.ip-ping-addresses-require-all:-1 (default)
connection.metered: unknown
connection.lldp: default
connection.mdns: -1 (default)
connection.llmnr: -1 (default)
connection.dns-over-tls: -1 (default)
connection.mptcp-flags: 0x0 (default)
connection.wait-device-timeout: -1
connection.wait-activation-delay: -1
ipv4.method: auto
ipv4.dns: --
ipv4.dns-search: --
ipv4.dns-options: ""
ipv4.dns-priority: 0
ipv4.addresses: --
ipv4.gateway: --
ipv4.routes: --
ipv4.route-metric: -1
ipv4.route-table: 0 (unspec)
ipv4.routing-rules: --
ipv4.replace-local-rule: -1 (default)
ipv4.dhcp-send-release: -1 (default)
ipv4.routed-dns: -1 (default)
ipv4.ignore-auto-routes: no
ipv4.ignore-auto-dns: no
ipv4.dhcp-client-id: --
ipv4.dhcp-iaid: --
ipv4.dhcp-dscp: --
ipv4.dhcp-timeout: 0 (default)
ipv4.dhcp-send-hostname-deprecated: yes
ipv4.dhcp-send-hostname: -1 (default)
ipv4.forwarding: -1 (default)
ipv4.dhcp-hostname: --
ipv4.dhcp-fqdn: --
ipv4.dhcp-hostname-flags: 0x0 (none)
ipv4.never-default: no
ipv4.may-fail: yes
ipv4.required-timeout: -1 (default)
ipv4.dad-timeout: -1 (default)
ipv4.dhcp-vendor-class-identifier: --
ipv4.dhcp-ipv6-only-preferred: -1 (default)
ipv4.link-local: 0 (default)
ipv4.dhcp-reject-servers: --
ipv4.auto-route-ext-gw: -1 (default)
ipv4.shared-dhcp-range: --
ipv4.shared-dhcp-lease-time: 0 (default)
ipv6.method: auto
ipv6.dns: --
ipv6.dns-search: --
ipv6.dns-options: --
ipv6.dns-priority: 0
ipv6.addresses: --
ipv6.gateway: --
ipv6.routes: --
ipv6.route-metric: -1
ipv6.route-table: 0 (unspec)
ipv6.routing-rules: --
ipv6.replace-local-rule: -1 (default)
ipv6.dhcp-send-release: -1 (default)
ipv6.routed-dns: -1 (default)
ipv6.ignore-auto-routes: no
ipv6.ignore-auto-dns: no
ipv6.never-default: no
ipv6.may-fail: yes
ipv6.required-timeout: -1 (default)
ipv6.ip6-privacy: -1 (default)
ipv6.temp-valid-lifetime: 0 (default)
ipv6.temp-preferred-lifetime: 0 (default)
ipv6.addr-gen-mode: default
ipv6.ra-timeout: 0 (default)
ipv6.mtu: auto
ipv6.dhcp-pd-hint: --
ipv6.dhcp-duid: --
ipv6.dhcp-iaid: --
ipv6.dhcp-timeout: 0 (default)
ipv6.dhcp-send-hostname-deprecated: yes
ipv6.dhcp-send-hostname: -1 (default)
ipv6.dhcp-hostname: --
ipv6.dhcp-hostname-flags: 0x0 (none)
ipv6.auto-route-ext-gw: -1 (default)
ipv6.token: --
serial.baud: 5
serial.bits: 8
serial.parity: even
serial.stopbits: 1
serial.send-delay: 100
gsm.auto-config: no
gsm.number: --
gsm.username: --
gsm.password: <hidden>
gsm.password-flags: 0 (none)
gsm.apn: ""
gsm.network-id: --
gsm.pin: <hidden>
gsm.pin-flags: 0 (none)
gsm.home-only: no
gsm.device-id: --
gsm.sim-id: --
gsm.sim-operator-id: --
gsm.mtu: auto
gsm.initial-eps-bearer-configure: no
gsm.initial-eps-bearer-apn: --
gsm.initial-eps-bearer-username: --
gsm.initial-eps-bearer-password: <hidden>
gsm.initial-eps-bearer-password-flags: 0 (none)
gsm.initial-eps-bearer-noauth: yes
gsm.initial-eps-bearer-refuse-eap: no
gsm.initial-eps-bearer-refuse-pap: no
gsm.initial-eps-bearer-refuse-chap: no
gsm.initial-eps-bearer-refuse-mschap: no
gsm.initial-eps-bearer-refuse-mschapv2: no
proxy.method: none
proxy.browser-only: no
proxy.pac-url: --
proxy.pac-script: --
<<<
size: 6610
location: src/tests/client/test-client.py:test_003()/23
cmd: $NMCLI con s con-gsm3
lang: pl_PL.UTF-8
returncode: 0
stdout: 6467 bytes
>>>
connection.id: con-gsm3
connection.uuid: UUID-con-gsm3-REPLACED-REPLACED-REPL
connection.stable-id: --
connection.type: gsm
connection.interface-name: --
connection.autoconnect: nie
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0 (default)
connection.auth-retries: -1
connection.timestamp: 0
connection.permissions: --
connection.zone: --
connection.controller: --
connection.master: --
connection.slave-type: --
connection.port-type: --
connection.autoconnect-slaves: -1 (default)
connection.autoconnect-ports: -1 (default)
connection.down-on-poweroff: -1 (default)
connection.secondaries: --
connection.gateway-ping-timeout: 0
connection.ip-ping-timeout: 0
connection.ip-ping-addresses: --
connection.ip-ping-addresses-require-all:-1 (default)
connection.metered: nieznane
connection.lldp: default
connection.mdns: -1 (default)
connection.llmnr: -1 (default)
connection.dns-over-tls: -1 (default)
connection.mptcp-flags: 0x0 (default)
connection.wait-device-timeout: -1
connection.wait-activation-delay: -1
ipv4.method: auto
ipv4.dns: --
ipv4.dns-search: --
ipv4.dns-options: ""
ipv4.dns-priority: 0
ipv4.addresses: --
ipv4.gateway: --
ipv4.routes: --
ipv4.route-metric: -1
ipv4.route-table: 0 (unspec)
ipv4.routing-rules: --
ipv4.replace-local-rule: -1 (default)
ipv4.dhcp-send-release: -1 (default)
ipv4.routed-dns: -1 (default)
ipv4.ignore-auto-routes: nie
ipv4.ignore-auto-dns: nie
ipv4.dhcp-client-id: --
ipv4.dhcp-iaid: --
ipv4.dhcp-dscp: --
ipv4.dhcp-timeout: 0 (default)
ipv4.dhcp-send-hostname-deprecated: tak
ipv4.dhcp-send-hostname: -1 (default)
ipv4.forwarding: -1 (default)
ipv4.dhcp-hostname: --
ipv4.dhcp-fqdn: --
ipv4.dhcp-hostname-flags: 0x0 (none)
ipv4.never-default: nie
ipv4.may-fail: tak
ipv4.required-timeout: -1 (default)
ipv4.dad-timeout: -1 (default)
ipv4.dhcp-vendor-class-identifier: --
ipv4.dhcp-ipv6-only-preferred: -1 (default)
ipv4.link-local: 0 (default)
ipv4.dhcp-reject-servers: --
ipv4.auto-route-ext-gw: -1 (default)
ipv4.shared-dhcp-range: --
ipv4.shared-dhcp-lease-time: 0 (default)
ipv6.method: auto
ipv6.dns: --
ipv6.dns-search: --
ipv6.dns-options: --
ipv6.dns-priority: 0
ipv6.addresses: --
ipv6.gateway: --
ipv6.routes: --
ipv6.route-metric: -1
ipv6.route-table: 0 (unspec)
ipv6.routing-rules: --
ipv6.replace-local-rule: -1 (default)
ipv6.dhcp-send-release: -1 (default)
ipv6.routed-dns: -1 (default)
ipv6.ignore-auto-routes: nie
ipv6.ignore-auto-dns: nie
ipv6.never-default: nie
ipv6.may-fail: tak
ipv6.required-timeout: -1 (default)
ipv6.ip6-privacy: -1 (default)
ipv6.temp-valid-lifetime: 0 (default)
ipv6.temp-preferred-lifetime: 0 (default)
ipv6.addr-gen-mode: default
ipv6.ra-timeout: 0 (default)
ipv6.mtu: automatyczne
ipv6.dhcp-pd-hint: --
ipv6.dhcp-duid: --
ipv6.dhcp-iaid: --
ipv6.dhcp-timeout: 0 (default)
ipv6.dhcp-send-hostname-deprecated: tak
ipv6.dhcp-send-hostname: -1 (default)
ipv6.dhcp-hostname: --
ipv6.dhcp-hostname-flags: 0x0 (none)
ipv6.auto-route-ext-gw: -1 (default)
ipv6.token: --
serial.baud: 5
serial.bits: 8
serial.parity: even
serial.stopbits: 1
serial.send-delay: 100
gsm.auto-config: nie
gsm.number: --
gsm.username: --
gsm.password: <hidden>
gsm.password-flags: 0 (brak)
gsm.apn: ""
gsm.network-id: --
gsm.pin: <hidden>
gsm.pin-flags: 0 (brak)
gsm.home-only: nie
gsm.device-id: --
gsm.sim-id: --
gsm.sim-operator-id: --
gsm.mtu: automatyczne
gsm.initial-eps-bearer-configure: nie
gsm.initial-eps-bearer-apn: --
gsm.initial-eps-bearer-username: --
gsm.initial-eps-bearer-password: <hidden>
gsm.initial-eps-bearer-password-flags: 0 (brak)
gsm.initial-eps-bearer-noauth: tak
gsm.initial-eps-bearer-refuse-eap: nie
gsm.initial-eps-bearer-refuse-pap: nie
gsm.initial-eps-bearer-refuse-chap: nie
gsm.initial-eps-bearer-refuse-mschap: nie
gsm.initial-eps-bearer-refuse-mschapv2: nie
gsm.device-uid: --
proxy.method: none
proxy.browser-only: nie
proxy.pac-url: --
@ -1131,32 +809,360 @@ proxy.pac-script: --
<<<
size: 573
location: src/tests/client/test-client.py:test_003()/24
cmd: $NMCLI -g all con s con-gsm3
location: src/tests/client/test-client.py:test_003()/20
cmd: $NMCLI -g all con s con-gsm2
lang: C
returncode: 0
stdout: 434 bytes
>>>
connection:con-gsm3:UUID-con-gsm3-REPLACED-REPLACED-REPL::gsm::no:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
connection:con-gsm2:UUID-con-gsm2-REPLACED-REPLACED-REPL::gsm::no:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
serial:5:8:even:1:100
gsm:no:::<hidden>:0: ::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no
gsm:no:::<hidden>:0:::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no:
proxy:none:no::
<<<
size: 583
location: src/tests/client/test-client.py:test_003()/25
cmd: $NMCLI -g all con s con-gsm3
location: src/tests/client/test-client.py:test_003()/21
cmd: $NMCLI -g all con s con-gsm2
lang: pl_PL.UTF-8
returncode: 0
stdout: 434 bytes
>>>
connection:con-gsm2:UUID-con-gsm2-REPLACED-REPLACED-REPL::gsm::no:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
serial:5:8:even:1:100
gsm:no:::<hidden>:0:::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no:
proxy:none:no::
<<<
size: 6610
location: src/tests/client/test-client.py:test_003()/22
cmd: $NMCLI con s con-gsm3
lang: C
returncode: 0
stdout: 6477 bytes
>>>
connection.id: con-gsm3
connection.uuid: UUID-con-gsm3-REPLACED-REPLACED-REPL
connection.stable-id: --
connection.type: gsm
connection.interface-name: --
connection.autoconnect: no
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0 (default)
connection.auth-retries: -1
connection.timestamp: 0
connection.permissions: --
connection.zone: --
connection.controller: --
connection.master: --
connection.slave-type: --
connection.port-type: --
connection.autoconnect-slaves: -1 (default)
connection.autoconnect-ports: -1 (default)
connection.down-on-poweroff: -1 (default)
connection.secondaries: --
connection.gateway-ping-timeout: 0
connection.ip-ping-timeout: 0
connection.ip-ping-addresses: --
connection.ip-ping-addresses-require-all:-1 (default)
connection.metered: unknown
connection.lldp: default
connection.mdns: -1 (default)
connection.llmnr: -1 (default)
connection.dns-over-tls: -1 (default)
connection.mptcp-flags: 0x0 (default)
connection.wait-device-timeout: -1
connection.wait-activation-delay: -1
ipv4.method: auto
ipv4.dns: --
ipv4.dns-search: --
ipv4.dns-options: ""
ipv4.dns-priority: 0
ipv4.addresses: --
ipv4.gateway: --
ipv4.routes: --
ipv4.route-metric: -1
ipv4.route-table: 0 (unspec)
ipv4.routing-rules: --
ipv4.replace-local-rule: -1 (default)
ipv4.dhcp-send-release: -1 (default)
ipv4.routed-dns: -1 (default)
ipv4.ignore-auto-routes: no
ipv4.ignore-auto-dns: no
ipv4.dhcp-client-id: --
ipv4.dhcp-iaid: --
ipv4.dhcp-dscp: --
ipv4.dhcp-timeout: 0 (default)
ipv4.dhcp-send-hostname-deprecated: yes
ipv4.dhcp-send-hostname: -1 (default)
ipv4.forwarding: -1 (default)
ipv4.dhcp-hostname: --
ipv4.dhcp-fqdn: --
ipv4.dhcp-hostname-flags: 0x0 (none)
ipv4.never-default: no
ipv4.may-fail: yes
ipv4.required-timeout: -1 (default)
ipv4.dad-timeout: -1 (default)
ipv4.dhcp-vendor-class-identifier: --
ipv4.dhcp-ipv6-only-preferred: -1 (default)
ipv4.link-local: 0 (default)
ipv4.dhcp-reject-servers: --
ipv4.auto-route-ext-gw: -1 (default)
ipv4.shared-dhcp-range: --
ipv4.shared-dhcp-lease-time: 0 (default)
ipv6.method: auto
ipv6.dns: --
ipv6.dns-search: --
ipv6.dns-options: --
ipv6.dns-priority: 0
ipv6.addresses: --
ipv6.gateway: --
ipv6.routes: --
ipv6.route-metric: -1
ipv6.route-table: 0 (unspec)
ipv6.routing-rules: --
ipv6.replace-local-rule: -1 (default)
ipv6.dhcp-send-release: -1 (default)
ipv6.routed-dns: -1 (default)
ipv6.ignore-auto-routes: no
ipv6.ignore-auto-dns: no
ipv6.never-default: no
ipv6.may-fail: yes
ipv6.required-timeout: -1 (default)
ipv6.ip6-privacy: -1 (default)
ipv6.temp-valid-lifetime: 0 (default)
ipv6.temp-preferred-lifetime: 0 (default)
ipv6.addr-gen-mode: default
ipv6.ra-timeout: 0 (default)
ipv6.mtu: auto
ipv6.dhcp-pd-hint: --
ipv6.dhcp-duid: --
ipv6.dhcp-iaid: --
ipv6.dhcp-timeout: 0 (default)
ipv6.dhcp-send-hostname-deprecated: yes
ipv6.dhcp-send-hostname: -1 (default)
ipv6.dhcp-hostname: --
ipv6.dhcp-hostname-flags: 0x0 (none)
ipv6.auto-route-ext-gw: -1 (default)
ipv6.token: --
serial.baud: 5
serial.bits: 8
serial.parity: even
serial.stopbits: 1
serial.send-delay: 100
gsm.auto-config: no
gsm.number: --
gsm.username: --
gsm.password: <hidden>
gsm.password-flags: 0 (none)
gsm.apn: ""
gsm.network-id: --
gsm.pin: <hidden>
gsm.pin-flags: 0 (none)
gsm.home-only: no
gsm.device-id: --
gsm.sim-id: --
gsm.sim-operator-id: --
gsm.mtu: auto
gsm.initial-eps-bearer-configure: no
gsm.initial-eps-bearer-apn: --
gsm.initial-eps-bearer-username: --
gsm.initial-eps-bearer-password: <hidden>
gsm.initial-eps-bearer-password-flags: 0 (none)
gsm.initial-eps-bearer-noauth: yes
gsm.initial-eps-bearer-refuse-eap: no
gsm.initial-eps-bearer-refuse-pap: no
gsm.initial-eps-bearer-refuse-chap: no
gsm.initial-eps-bearer-refuse-mschap: no
gsm.initial-eps-bearer-refuse-mschapv2: no
gsm.device-uid: --
proxy.method: none
proxy.browser-only: no
proxy.pac-url: --
proxy.pac-script: --
<<<
size: 6653
location: src/tests/client/test-client.py:test_003()/23
cmd: $NMCLI con s con-gsm3
lang: pl_PL.UTF-8
returncode: 0
stdout: 6510 bytes
>>>
connection.id: con-gsm3
connection.uuid: UUID-con-gsm3-REPLACED-REPLACED-REPL
connection.stable-id: --
connection.type: gsm
connection.interface-name: --
connection.autoconnect: nie
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0 (default)
connection.auth-retries: -1
connection.timestamp: 0
connection.permissions: --
connection.zone: --
connection.controller: --
connection.master: --
connection.slave-type: --
connection.port-type: --
connection.autoconnect-slaves: -1 (default)
connection.autoconnect-ports: -1 (default)
connection.down-on-poweroff: -1 (default)
connection.secondaries: --
connection.gateway-ping-timeout: 0
connection.ip-ping-timeout: 0
connection.ip-ping-addresses: --
connection.ip-ping-addresses-require-all:-1 (default)
connection.metered: nieznane
connection.lldp: default
connection.mdns: -1 (default)
connection.llmnr: -1 (default)
connection.dns-over-tls: -1 (default)
connection.mptcp-flags: 0x0 (default)
connection.wait-device-timeout: -1
connection.wait-activation-delay: -1
ipv4.method: auto
ipv4.dns: --
ipv4.dns-search: --
ipv4.dns-options: ""
ipv4.dns-priority: 0
ipv4.addresses: --
ipv4.gateway: --
ipv4.routes: --
ipv4.route-metric: -1
ipv4.route-table: 0 (unspec)
ipv4.routing-rules: --
ipv4.replace-local-rule: -1 (default)
ipv4.dhcp-send-release: -1 (default)
ipv4.routed-dns: -1 (default)
ipv4.ignore-auto-routes: nie
ipv4.ignore-auto-dns: nie
ipv4.dhcp-client-id: --
ipv4.dhcp-iaid: --
ipv4.dhcp-dscp: --
ipv4.dhcp-timeout: 0 (default)
ipv4.dhcp-send-hostname-deprecated: tak
ipv4.dhcp-send-hostname: -1 (default)
ipv4.forwarding: -1 (default)
ipv4.dhcp-hostname: --
ipv4.dhcp-fqdn: --
ipv4.dhcp-hostname-flags: 0x0 (none)
ipv4.never-default: nie
ipv4.may-fail: tak
ipv4.required-timeout: -1 (default)
ipv4.dad-timeout: -1 (default)
ipv4.dhcp-vendor-class-identifier: --
ipv4.dhcp-ipv6-only-preferred: -1 (default)
ipv4.link-local: 0 (default)
ipv4.dhcp-reject-servers: --
ipv4.auto-route-ext-gw: -1 (default)
ipv4.shared-dhcp-range: --
ipv4.shared-dhcp-lease-time: 0 (default)
ipv6.method: auto
ipv6.dns: --
ipv6.dns-search: --
ipv6.dns-options: --
ipv6.dns-priority: 0
ipv6.addresses: --
ipv6.gateway: --
ipv6.routes: --
ipv6.route-metric: -1
ipv6.route-table: 0 (unspec)
ipv6.routing-rules: --
ipv6.replace-local-rule: -1 (default)
ipv6.dhcp-send-release: -1 (default)
ipv6.routed-dns: -1 (default)
ipv6.ignore-auto-routes: nie
ipv6.ignore-auto-dns: nie
ipv6.never-default: nie
ipv6.may-fail: tak
ipv6.required-timeout: -1 (default)
ipv6.ip6-privacy: -1 (default)
ipv6.temp-valid-lifetime: 0 (default)
ipv6.temp-preferred-lifetime: 0 (default)
ipv6.addr-gen-mode: default
ipv6.ra-timeout: 0 (default)
ipv6.mtu: automatyczne
ipv6.dhcp-pd-hint: --
ipv6.dhcp-duid: --
ipv6.dhcp-iaid: --
ipv6.dhcp-timeout: 0 (default)
ipv6.dhcp-send-hostname-deprecated: tak
ipv6.dhcp-send-hostname: -1 (default)
ipv6.dhcp-hostname: --
ipv6.dhcp-hostname-flags: 0x0 (none)
ipv6.auto-route-ext-gw: -1 (default)
ipv6.token: --
serial.baud: 5
serial.bits: 8
serial.parity: even
serial.stopbits: 1
serial.send-delay: 100
gsm.auto-config: nie
gsm.number: --
gsm.username: --
gsm.password: <hidden>
gsm.password-flags: 0 (brak)
gsm.apn: ""
gsm.network-id: --
gsm.pin: <hidden>
gsm.pin-flags: 0 (brak)
gsm.home-only: nie
gsm.device-id: --
gsm.sim-id: --
gsm.sim-operator-id: --
gsm.mtu: automatyczne
gsm.initial-eps-bearer-configure: nie
gsm.initial-eps-bearer-apn: --
gsm.initial-eps-bearer-username: --
gsm.initial-eps-bearer-password: <hidden>
gsm.initial-eps-bearer-password-flags: 0 (brak)
gsm.initial-eps-bearer-noauth: tak
gsm.initial-eps-bearer-refuse-eap: nie
gsm.initial-eps-bearer-refuse-pap: nie
gsm.initial-eps-bearer-refuse-chap: nie
gsm.initial-eps-bearer-refuse-mschap: nie
gsm.initial-eps-bearer-refuse-mschapv2: nie
gsm.device-uid: --
proxy.method: none
proxy.browser-only: nie
proxy.pac-url: --
proxy.pac-script: --
<<<
size: 574
location: src/tests/client/test-client.py:test_003()/24
cmd: $NMCLI -g all con s con-gsm3
lang: C
returncode: 0
stdout: 435 bytes
>>>
connection:con-gsm3:UUID-con-gsm3-REPLACED-REPLACED-REPL::gsm::no:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
serial:5:8:even:1:100
gsm:no:::<hidden>:0: ::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no
gsm:no:::<hidden>:0: ::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no:
proxy:none:no::
<<<
size: 584
location: src/tests/client/test-client.py:test_003()/25
cmd: $NMCLI -g all con s con-gsm3
lang: pl_PL.UTF-8
returncode: 0
stdout: 435 bytes
>>>
connection:con-gsm3:UUID-con-gsm3-REPLACED-REPLACED-REPL::gsm::no:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
serial:5:8:even:1:100
gsm:no:::<hidden>:0: ::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no:
proxy:none:no::
<<<