diff --git a/NEWS b/NEWS index c2fa966c79..f2505251bf 100644 --- a/NEWS +++ b/NEWS @@ -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 diff --git a/src/core/devices/wwan/nm-modem-broadband.c b/src/core/devices/wwan/nm-modem-broadband.c index 018e53066c..cd03b83465 100644 --- a/src/core/devices/wwan/nm-modem-broadband.c +++ b/src/core/devices/wwan/nm-modem-broadband.c @@ -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); } diff --git a/src/core/devices/wwan/nm-modem.c b/src/core/devices/wwan/nm-modem.c index c4852ea285..9d8f61c55c 100644 --- a/src/core/devices/wwan/nm-modem.c +++ b/src/core/devices/wwan/nm-modem.c @@ -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, diff --git a/src/core/devices/wwan/nm-modem.h b/src/core/devices/wwan/nm-modem.h index 021d77b2ad..1f54b0b69a 100644 --- a/src/core/devices/wwan/nm-modem.h +++ b/src/core/devices/wwan/nm-modem.h @@ -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, diff --git a/src/core/settings/plugins/keyfile/tests/keyfiles/Test_Write_GSM b/src/core/settings/plugins/keyfile/tests/keyfiles/Test_Write_GSM index 2f6dc26c9e..eec403cbec 100644 --- a/src/core/settings/plugins/keyfile/tests/keyfiles/Test_Write_GSM +++ b/src/core/settings/plugins/keyfile/tests/keyfiles/Test_Write_GSM @@ -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 diff --git a/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c b/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c index df5dfd4021..badb40d368 100644 --- a/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c +++ b/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c @@ -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"); diff --git a/src/libnm-client-impl/libnm.ver b/src/libnm-client-impl/libnm.ver index 95f9f411e5..3c956a36e1 100644 --- a/src/libnm-client-impl/libnm.ver +++ b/src/libnm-client-impl/libnm.ver @@ -2080,4 +2080,5 @@ global: libnm_1_56_0 { global: nm_dns_server_validate; + nm_setting_gsm_get_device_uid; } libnm_1_54_0; diff --git a/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in b/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in index c764f53568..b1670dc2dc 100644 --- a/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in +++ b/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in @@ -1393,6 +1393,10 @@ dbus-type="s" gprop-type="gchararray" /> + 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", diff --git a/src/libnm-core-public/nm-setting-gsm.h b/src/libnm-core-public/nm-setting-gsm.h index c86635027e..4f71f70e4a 100644 --- a/src/libnm-core-public/nm-setting-gsm.h +++ b/src/libnm-core-public/nm-setting-gsm.h @@ -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); diff --git a/src/libnmc-setting/nm-meta-setting-desc.c b/src/libnmc-setting/nm-meta-setting-desc.c index f62830312f..c4b5b7f5b1 100644 --- a/src/libnmc-setting/nm-meta-setting-desc.c +++ b/src/libnmc-setting/nm-meta-setting-desc.c @@ -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 }; diff --git a/src/libnmc-setting/settings-docs.h.in b/src/libnmc-setting/settings-docs.h.in index c7b13d196c..a49aee827c 100644 --- a/src/libnmc-setting/settings-docs.h.in +++ b/src/libnmc-setting/settings-docs.h.in @@ -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.") diff --git a/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in b/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in index a9476e38f9..481aa4a280 100644 --- a/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in +++ b/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in @@ -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" /> + >> 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::::0:xyz.con-gsm1:::0:no::::auto:no::::0:yes:no:no:no:no:no +gsm:no::::0:xyz.con-gsm1:::0:no::::auto:no::::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::::0:xyz.con-gsm1:::0:no::::auto:no::::0:yes:no:no:no:no:no +gsm:no::::0:xyz.con-gsm1:::0:no::::auto:no::::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::::0::::0:no::::auto:no::::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::::0::::0:no::::auto:no::::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: -gsm.password-flags: 0 (none) -gsm.apn: "" -gsm.network-id: -- -gsm.pin: -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: -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: -gsm.password-flags: 0 (brak) -gsm.apn: "" -gsm.network-id: -- -gsm.pin: -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: -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::::0: :::0:no::::auto:no::::0:yes:no:no:no:no:no +gsm:no::::0::::0:no::::auto:no::::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::::0::::0:no::::auto:no::::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: +gsm.password-flags: 0 (none) +gsm.apn: "" +gsm.network-id: -- +gsm.pin: +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: +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: +gsm.password-flags: 0 (brak) +gsm.apn: "" +gsm.network-id: -- +gsm.pin: +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: +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::::0: :::0:no::::auto:no::::0:yes:no:no:no:no:no +gsm:no::::0: :::0:no::::auto:no::::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::::0: :::0:no::::auto:no::::0:yes:no:no:no:no:no: proxy:none:no:: <<<