about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am7
-rw-r--r--Makefile.in617
-rw-r--r--NEWS52
-rwxr-xr-xautogen.sh2
-rw-r--r--clients/cli/common.c21
-rw-r--r--clients/cli/connections.c1264
-rw-r--r--clients/cli/connections.h4
-rw-r--r--clients/cli/devices.c437
-rw-r--r--clients/cli/general.c3
-rw-r--r--clients/cli/nmcli.c4
-rw-r--r--clients/cli/nmcli.h8
-rw-r--r--clients/cli/utils.c40
-rw-r--r--clients/cli/utils.h31
-rw-r--r--clients/common/nm-meta-setting-desc.c20
-rw-r--r--clients/common/settings-docs.h13
-rw-r--r--clients/common/settings-docs.h.in13
-rw-r--r--clients/tests/test-client.check-on-disk/Makefile.am245
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-001.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-002.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-003.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-004.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-005.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-006.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-007.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-008.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-009.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-010.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-011.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-012.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-013.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-014.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-015.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-016.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-017.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-018.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-019.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-020.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-021.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-022.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-023.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-024.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-025.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_001-026.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-001.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-002.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-003.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-004.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-005.expected12
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-006.expected12
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-007.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-008.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-009.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-010.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-011.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-012.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-013.expected8
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-014.expected8
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-015.expected8
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-016.expected8
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-017.expected8
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-018.expected8
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-019.expected10
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-020.expected10
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-021.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-022.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-023.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_002-024.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-001.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-002.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-003.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-004.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-005.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-006.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-007.expected12
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-008.expected12
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-009.expected5
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-010.expected5
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-011.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-012.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-013.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-014.expected12
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-015.expected12
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-016.expected86
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-017.expected86
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-018.expected98
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-019.expected98
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-020.expected17
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-021.expected17
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-022.expected115
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-023.expected115
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-024.expected8
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-025.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-026.expected103
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-027.expected103
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-028.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-029.expected95
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-030.expected141
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-031.expected166
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-032.expected166
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-033.expected72
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-034.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-035.expected41
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-036.expected41
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-037.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-038.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-039.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-040.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-041.expected15
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-042.expected15
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-043.expected14
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-044.expected14
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-045.expected97
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-046.expected97
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-047.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-048.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-049.expected113
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-050.expected113
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-051.expected23
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-052.expected23
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-053.expected164
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-054.expected164
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-055.expected67
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-056.expected67
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-057.expected17
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-058.expected17
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-059.expected16
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-060.expected16
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-061.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-062.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-063.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-064.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-065.expected24
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-066.expected24
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-067.expected16
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-068.expected16
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-069.expected15
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-070.expected15
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-071.expected20
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-072.expected20
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-073.expected116
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-074.expected116
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-075.expected103
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-076.expected103
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-077.expected67
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-078.expected67
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-079.expected17
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-080.expected17
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-081.expected15
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-082.expected15
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-083.expected16
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-084.expected16
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-085.expected16
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-086.expected16
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-087.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-088.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-089.expected15
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-090.expected15
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-091.expected14
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-092.expected14
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-093.expected19
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-094.expected19
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-095.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-096.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-097.expected24
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-098.expected24
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-099.expected67
-rw-r--r--clients/tests/test-client.check-on-disk/test_003-100.expected67
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-001.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-002.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-003.expected9
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-004.expected7
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-005.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-006.expected2
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-007.expected12
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-008.expected94
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-009.expected94
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-010.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-011.expected16
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-012.expected16
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-013.expected83
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-014.expected83
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-015.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-016.expected16
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-017.expected16
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-018.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-019.expected16
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-020.expected16
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-021.expected103
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-022.expected103
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-023.expected103
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-024.expected103
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-025.expected103
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-026.expected103
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-027.expected83
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-028.expected83
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-029.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-030.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-031.expected24
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-032.expected24
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-033.expected36
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-034.expected36
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-035.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-036.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-037.expected46
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-038.expected46
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-039.expected46
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-040.expected46
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-041.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-042.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-043.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-044.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-045.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-046.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-047.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-048.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-049.expected14
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-050.expected14
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-051.expected14
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-052.expected14
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-053.expected14
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-054.expected14
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-055.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-056.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-057.expected36
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-058.expected36
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-059.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-060.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-061.expected33
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-062.expected33
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-063.expected33
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-064.expected33
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-065.expected33
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-066.expected33
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-067.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-068.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-069.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-070.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-071.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-072.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-073.expected115
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-074.expected115
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-075.expected48
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-076.expected48
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-077.expected115
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-078.expected115
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-079.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-080.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-081.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-082.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-083.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-084.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-085.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-086.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-087.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-088.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-089.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-090.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-091.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-092.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-093.expected36
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-094.expected36
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-095.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-096.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-097.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-098.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-099.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-100.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-101.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-102.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-103.expected14
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-104.expected14
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-105.expected14
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-106.expected14
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-107.expected14
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-108.expected14
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-109.expected40
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-110.expected40
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-111.expected38
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-112.expected38
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-113.expected40
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-114.expected40
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-115.expected33
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-116.expected33
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-117.expected33
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-118.expected33
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-119.expected33
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-120.expected33
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-121.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-122.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-123.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-124.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-125.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-126.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-127.expected52
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-128.expected52
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-129.expected50
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-130.expected50
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-131.expected52
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-132.expected52
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-133.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-134.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-135.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-136.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-137.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-138.expected18
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-139.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-140.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-141.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-142.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-143.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-144.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-145.expected23
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-146.expected23
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-147.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-148.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-149.expected23
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-150.expected23
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-151.expected82
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-152.expected82
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-153.expected46
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-154.expected46
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-155.expected82
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-156.expected82
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-157.expected29
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-158.expected29
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-159.expected20
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-160.expected20
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-161.expected29
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-162.expected29
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-163.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-164.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-165.expected36
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-166.expected36
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-167.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-168.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-169.expected95
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-170.expected95
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-171.expected59
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-172.expected59
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-173.expected95
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-174.expected95
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-175.expected33
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-176.expected33
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-177.expected24
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-178.expected24
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-179.expected33
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-180.expected33
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-181.expected115
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-182.expected115
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-183.expected48
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-184.expected48
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-185.expected115
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-186.expected115
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-187.expected82
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-188.expected82
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-189.expected46
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-190.expected46
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-191.expected82
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-192.expected82
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-193.expected29
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-194.expected29
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-195.expected20
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-196.expected20
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-197.expected29
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-198.expected29
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-199.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-200.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-201.expected36
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-202.expected36
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-203.expected101
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-204.expected101
-rwxr-xr-xclients/tests/test-client.py320
-rwxr-xr-xconfigure36
-rw-r--r--configure.ac14
-rw-r--r--docs/api/dbus-org.freedesktop.NetworkManager.Device.Wireless.xml12
-rw-r--r--docs/api/dbus-org.freedesktop.NetworkManager.Settings.Connection.xml15
-rw-r--r--docs/api/html/NetworkManager.conf.html39
-rw-r--r--docs/api/html/NetworkManager.devhelp22
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html13
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.Connection.html16
-rw-r--r--docs/api/html/index.html2
-rw-r--r--docs/api/html/ix01.html1360
-rw-r--r--docs/api/html/nm-settings-ifcfg-rh.html9
-rw-r--r--docs/api/html/nm-settings.html31
-rw-r--r--docs/api/html/nmcli.html11
-rw-r--r--docs/api/html/settings-802-11-wireless.html6
-rw-r--r--docs/api/html/settings-802-3-ethernet.html6
-rw-r--r--docs/api/html/settings-connection.html2
-rw-r--r--docs/api/html/settings-ipv6.html6
-rw-r--r--docs/api/html/settings-macsec.html6
-rw-r--r--docs/api/html/settings-team.html2
-rw-r--r--docs/api/settings-spec.xml13
-rw-r--r--docs/api/version.xml2
-rw-r--r--docs/libnm-glib/html/index.html2
-rw-r--r--docs/libnm-glib/version.xml2
-rw-r--r--docs/libnm-util/html/index.html2
-rw-r--r--docs/libnm-util/version.xml2
-rw-r--r--docs/libnm/html/NMDeviceWifi.html65
-rw-r--r--docs/libnm/html/NMRemoteConnection.html59
-rw-r--r--docs/libnm/html/NMSettingConnection.html3
-rw-r--r--docs/libnm/html/NMSettingIP6Config.html84
-rw-r--r--docs/libnm/html/NMSettingMacsec.html59
-rw-r--r--docs/libnm/html/NMSettingTeam.html2
-rw-r--r--docs/libnm/html/NMSettingWired.html35
-rw-r--r--docs/libnm/html/NMSettingWireless.html199
-rw-r--r--docs/libnm/html/api-index-full.html70
-rw-r--r--docs/libnm/html/index.html2
-rw-r--r--docs/libnm/html/libnm-nm-utils.html14
-rw-r--r--docs/libnm/html/libnm.devhelp232
-rw-r--r--docs/libnm/html/object-tree.html1
-rw-r--r--docs/libnm/html/usage.html2
-rw-r--r--docs/libnm/libnm-sections.txt14
-rw-r--r--docs/libnm/libnm.types1
-rw-r--r--docs/libnm/version.xml2
-rw-r--r--examples/nm-conf.d/30-anon.conf37
-rw-r--r--introspection/org.freedesktop.NetworkManager.Device.Wireless.xml10
-rw-r--r--introspection/org.freedesktop.NetworkManager.Settings.Connection.xml9
-rw-r--r--libnm-core/nm-connection.c6
-rw-r--r--libnm-core/nm-core-internal.h3
-rw-r--r--libnm-core/nm-setting-connection.c3
-rw-r--r--libnm-core/nm-setting-ip6-config.c93
-rw-r--r--libnm-core/nm-setting-ip6-config.h4
-rw-r--r--libnm-core/nm-setting-macsec.c40
-rw-r--r--libnm-core/nm-setting-macsec.h3
-rw-r--r--libnm-core/nm-setting-team.c2
-rw-r--r--libnm-core/nm-setting-wired.c71
-rw-r--r--libnm-core/nm-setting-wireless.c72
-rw-r--r--libnm-core/nm-setting-wireless.h46
-rw-r--r--libnm-core/nm-utils.c75
-rw-r--r--libnm-core/nm-utils.h5
-rw-r--r--libnm/libnm.ver7
-rw-r--r--libnm/nm-checkpoint.c6
-rw-r--r--libnm/nm-device-wifi.c45
-rw-r--r--libnm/nm-device-wifi.h4
-rw-r--r--libnm/nm-object.c4
-rw-r--r--libnm/nm-property-docs.xml13
-rw-r--r--libnm/nm-remote-connection.c37
-rw-r--r--libnm/nm-remote-connection.h4
-rw-r--r--libnm/nm-settings-docs.xml13
-rw-r--r--libnm/nm-settings-ifcfg-rh-docs.xml4
-rw-r--r--libnm/nm-vpn-connection.c9
-rw-r--r--man/NetworkManager.86
-rw-r--r--man/NetworkManager.conf.534
-rw-r--r--man/NetworkManager.conf.xml40
-rw-r--r--man/nm-online.16
-rw-r--r--man/nm-openvswitch.76
-rw-r--r--man/nm-settings-ifcfg-rh.518
-rw-r--r--man/nm-settings-ifcfg-rh.xml6
-rw-r--r--man/nm-settings-keyfile.56
-rw-r--r--man/nm-settings-keyfile.xml2
-rw-r--r--man/nm-settings.546
-rw-r--r--man/nm-settings.xml15
-rw-r--r--man/nmcli-examples.76
-rw-r--r--man/nmcli.114
-rw-r--r--man/nmcli.xml10
-rw-r--r--man/nmtui.16
-rw-r--r--meson.build2
-rw-r--r--meson_options.txt2
-rw-r--r--shared/nm-utils/nm-enum-utils.c9
-rw-r--r--shared/nm-utils/nm-macros-internal.h22
-rw-r--r--shared/nm-utils/nm-shared-utils.h5
-rw-r--r--shared/nm-utils/unaligned.h4
-rw-r--r--shared/nm-version-macros.h2
-rw-r--r--src/devices/bluetooth/nm-device-bt.c7
-rw-r--r--src/devices/nm-device-ethernet.c36
-rw-r--r--src/devices/nm-device-macsec.c1
-rw-r--r--src/devices/nm-device-private.h2
-rw-r--r--src/devices/nm-device.c427
-rw-r--r--src/devices/ovs/nm-device-ovs-interface.c2
-rw-r--r--src/devices/wifi/nm-device-iwd.c15
-rw-r--r--src/devices/wifi/nm-device-iwd.h1
-rw-r--r--src/devices/wifi/nm-device-wifi.c91
-rw-r--r--src/devices/wifi/nm-device-wifi.h1
-rw-r--r--src/devices/wifi/nm-wifi-common.c1
-rw-r--r--src/devices/wwan/nm-device-modem.c2
-rw-r--r--src/devices/wwan/nm-modem.c13
-rw-r--r--src/devices/wwan/nm-modem.h2
-rw-r--r--src/dhcp/nm-dhcp-client.c76
-rw-r--r--src/dhcp/nm-dhcp-client.h7
-rw-r--r--src/dhcp/nm-dhcp-dhclient-utils.c41
-rw-r--r--src/dhcp/nm-dhcp-dhclient.c7
-rw-r--r--src/dhcp/nm-dhcp-manager.c11
-rw-r--r--src/dhcp/nm-dhcp-manager.h2
-rw-r--r--src/dhcp/nm-dhcp-utils.h6
-rw-r--r--src/dhcp/tests/test-dhcp-dhclient.c47
-rw-r--r--src/dns/nm-dns-manager.c19
-rw-r--r--src/nm-core-utils.c22
-rw-r--r--src/nm-core-utils.h1
-rw-r--r--src/nm-manager.c33
-rw-r--r--src/nm-policy.c6
-rw-r--r--src/platform/nm-linux-platform.c9
-rw-r--r--src/platform/nm-netlink.h3
-rw-r--r--src/platform/nm-platform-utils.c62
-rw-r--r--src/platform/nm-platform.c17
-rw-r--r--src/platform/nm-platform.h4
-rw-r--r--src/platform/wifi/wifi-utils-nl80211.c42
-rw-r--r--src/platform/wifi/wifi-utils-private.h3
-rw-r--r--src/platform/wifi/wifi-utils.c9
-rw-r--r--src/platform/wifi/wifi-utils.h3
-rw-r--r--src/settings/nm-settings-connection.c5
-rw-r--r--src/settings/nm-settings-connection.h4
-rw-r--r--src/settings/nm-settings.c17
-rw-r--r--src/settings/plugins/ifcfg-rh/nm-ifdown3
-rw-r--r--src/settings/plugins/ifcfg-rh/nm-ifup3
-rw-r--r--src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c151
-rw-r--r--src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c25
-rw-r--r--src/supplicant/nm-supplicant-interface.c16
-rw-r--r--src/supplicant/nm-supplicant-interface.h2
-rw-r--r--src/systemd/sd-adapt/copy.h3
-rw-r--r--src/systemd/src/basic/alloc-util.c5
-rw-r--r--src/systemd/src/basic/alloc-util.h6
-rw-r--r--src/systemd/src/basic/async.h6
-rw-r--r--src/systemd/src/basic/escape.c11
-rw-r--r--src/systemd/src/basic/escape.h8
-rw-r--r--src/systemd/src/basic/ether-addr-util.c4
-rw-r--r--src/systemd/src/basic/ether-addr-util.h4
-rw-r--r--src/systemd/src/basic/extract-word.c5
-rw-r--r--src/systemd/src/basic/extract-word.h6
-rw-r--r--src/systemd/src/basic/fd-util.c227
-rw-r--r--src/systemd/src/basic/fd-util.h10
-rw-r--r--src/systemd/src/basic/fileio.c114
-rw-r--r--src/systemd/src/basic/fileio.h23
-rw-r--r--src/systemd/src/basic/fs-util.c44
-rw-r--r--src/systemd/src/basic/fs-util.h22
-rw-r--r--src/systemd/src/basic/hash-funcs.c5
-rw-r--r--src/systemd/src/basic/hash-funcs.h5
-rw-r--r--src/systemd/src/basic/hashmap.c5
-rw-r--r--src/systemd/src/basic/hashmap.h5
-rw-r--r--src/systemd/src/basic/hexdecoct.c5
-rw-r--r--src/systemd/src/basic/hexdecoct.h6
-rw-r--r--src/systemd/src/basic/hostname-util.c5
-rw-r--r--src/systemd/src/basic/hostname-util.h6
-rw-r--r--src/systemd/src/basic/in-addr-util.c5
-rw-r--r--src/systemd/src/basic/in-addr-util.h6
-rw-r--r--src/systemd/src/basic/io-util.c5
-rw-r--r--src/systemd/src/basic/io-util.h6
-rw-r--r--src/systemd/src/basic/list.h6
-rw-r--r--src/systemd/src/basic/log.h10
-rw-r--r--src/systemd/src/basic/macro.h8
-rw-r--r--src/systemd/src/basic/mempool.c5
-rw-r--r--src/systemd/src/basic/mempool.h6
-rw-r--r--src/systemd/src/basic/parse-util.c57
-rw-r--r--src/systemd/src/basic/parse-util.h9
-rw-r--r--src/systemd/src/basic/path-util.c212
-rw-r--r--src/systemd/src/basic/path-util.h24
-rw-r--r--src/systemd/src/basic/prioq.c5
-rw-r--r--src/systemd/src/basic/prioq.h6
-rw-r--r--src/systemd/src/basic/process-util.c59
-rw-r--r--src/systemd/src/basic/process-util.h27
-rw-r--r--src/systemd/src/basic/random-util.c9
-rw-r--r--src/systemd/src/basic/random-util.h6
-rw-r--r--src/systemd/src/basic/refcnt.h6
-rw-r--r--src/systemd/src/basic/set.h6
-rw-r--r--src/systemd/src/basic/signal-util.h6
-rw-r--r--src/systemd/src/basic/socket-util.c7
-rw-r--r--src/systemd/src/basic/socket-util.h8
-rw-r--r--src/systemd/src/basic/stat-util.c31
-rw-r--r--src/systemd/src/basic/stat-util.h7
-rw-r--r--src/systemd/src/basic/stdio-util.h6
-rw-r--r--src/systemd/src/basic/string-table.c5
-rw-r--r--src/systemd/src/basic/string-table.h22
-rw-r--r--src/systemd/src/basic/string-util.c183
-rw-r--r--src/systemd/src/basic/string-util.h33
-rw-r--r--src/systemd/src/basic/strv.c5
-rw-r--r--src/systemd/src/basic/strv.h6
-rw-r--r--src/systemd/src/basic/time-util.c41
-rw-r--r--src/systemd/src/basic/time-util.h10
-rw-r--r--src/systemd/src/basic/umask-util.h6
-rw-r--r--src/systemd/src/basic/utf8.c23
-rw-r--r--src/systemd/src/basic/utf8.h7
-rw-r--r--src/systemd/src/basic/util.c61
-rw-r--r--src/systemd/src/basic/util.h6
-rw-r--r--src/systemd/src/libsystemd-network/arp-util.c6
-rw-r--r--src/systemd/src/libsystemd-network/arp-util.h4
-rw-r--r--src/systemd/src/libsystemd-network/dhcp-identifier.c4
-rw-r--r--src/systemd/src/libsystemd-network/dhcp-identifier.h4
-rw-r--r--src/systemd/src/libsystemd-network/dhcp-internal.h6
-rw-r--r--src/systemd/src/libsystemd-network/dhcp-lease-internal.h6
-rw-r--r--src/systemd/src/libsystemd-network/dhcp-network.c4
-rw-r--r--src/systemd/src/libsystemd-network/dhcp-option.c4
-rw-r--r--src/systemd/src/libsystemd-network/dhcp-packet.c6
-rw-r--r--src/systemd/src/libsystemd-network/dhcp-protocol.h4
-rw-r--r--src/systemd/src/libsystemd-network/dhcp6-internal.h4
-rw-r--r--src/systemd/src/libsystemd-network/dhcp6-lease-internal.h6
-rw-r--r--src/systemd/src/libsystemd-network/dhcp6-network.c4
-rw-r--r--src/systemd/src/libsystemd-network/dhcp6-option.c6
-rw-r--r--src/systemd/src/libsystemd-network/dhcp6-protocol.h4
-rw-r--r--src/systemd/src/libsystemd-network/lldp-internal.h6
-rw-r--r--src/systemd/src/libsystemd-network/lldp-neighbor.c5
-rw-r--r--src/systemd/src/libsystemd-network/lldp-neighbor.h6
-rw-r--r--src/systemd/src/libsystemd-network/lldp-network.c6
-rw-r--r--src/systemd/src/libsystemd-network/lldp-network.h6
-rw-r--r--src/systemd/src/libsystemd-network/network-internal.c4
-rw-r--r--src/systemd/src/libsystemd-network/network-internal.h41
-rw-r--r--src/systemd/src/libsystemd-network/sd-dhcp-client.c4
-rw-r--r--src/systemd/src/libsystemd-network/sd-dhcp-lease.c8
-rw-r--r--src/systemd/src/libsystemd-network/sd-dhcp6-client.c4
-rw-r--r--src/systemd/src/libsystemd-network/sd-dhcp6-lease.c6
-rw-r--r--src/systemd/src/libsystemd-network/sd-ipv4acd.c6
-rw-r--r--src/systemd/src/libsystemd-network/sd-ipv4ll.c6
-rw-r--r--src/systemd/src/libsystemd-network/sd-lldp.c6
-rw-r--r--src/systemd/src/libsystemd/sd-event/sd-event.c970
-rw-r--r--src/systemd/src/libsystemd/sd-id128/id128-util.c3
-rw-r--r--src/systemd/src/libsystemd/sd-id128/id128-util.h3
-rw-r--r--src/systemd/src/libsystemd/sd-id128/sd-id128.c5
-rw-r--r--src/systemd/src/shared/dns-domain.c8
-rw-r--r--src/systemd/src/shared/dns-domain.h5
-rw-r--r--src/systemd/src/systemd/_sd-common.h3
-rw-r--r--src/systemd/src/systemd/sd-dhcp-client.h4
-rw-r--r--src/systemd/src/systemd/sd-dhcp-lease.h6
-rw-r--r--src/systemd/src/systemd/sd-dhcp6-client.h4
-rw-r--r--src/systemd/src/systemd/sd-dhcp6-lease.h6
-rw-r--r--src/systemd/src/systemd/sd-event.h10
-rw-r--r--src/systemd/src/systemd/sd-id128.h3
-rw-r--r--src/systemd/src/systemd/sd-ipv4acd.h6
-rw-r--r--src/systemd/src/systemd/sd-ipv4ll.h4
-rw-r--r--src/systemd/src/systemd/sd-lldp.h6
-rw-r--r--src/systemd/src/systemd/sd-ndisc.h4
-rwxr-xr-xtools/test-networkmanager-service.py1268
619 files changed, 19990 insertions, 4692 deletions
diff --git a/Makefile.am b/Makefile.am
index 79b04628..7eef51d3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -19,6 +19,7 @@ noinst_DATA =
 sbin_PROGRAMS =
 bin_PROGRAMS =
 libexec_PROGRAMS =
+dist_libexec_SCRIPTS =
 lib_LTLIBRARIES =
 plugin_LTLIBRARIES =
 core_plugins =
@@ -127,6 +128,7 @@ check_so_symbols = \
 DISTCHECK_CONFIGURE_FLAGS = \
 	--enable-tests=yes \
 	--with-valgrind=no \
+	--with-libnm-glib=yes \
 	--enable-gtk-doc \
 	--enable-more-warnings=error \
 	--with-udev-dir=$$dc_install_base/lib/udev \
@@ -1302,6 +1304,7 @@ src_libsystemd_nm_la_SOURCES = \
 	src/systemd/sd-adapt/cgroup-util.h \
 	src/systemd/sd-adapt/condition.h \
 	src/systemd/sd-adapt/conf-parser.h \
+	src/systemd/sd-adapt/copy.h \
 	src/systemd/sd-adapt/def.h \
 	src/systemd/sd-adapt/device-nodes.h \
 	src/systemd/sd-adapt/dirent-util.h \
@@ -2201,6 +2204,10 @@ src_settings_plugins_ifcfg_rh_tests_test_ifcfg_rh_LDADD = \
 
 $(src_settings_plugins_ifcfg_rh_tests_test_ifcfg_rh_OBJECTS): $(libnm_core_lib_h_pub_mkenums)
 
+dist_libexec_SCRIPTS += \
+	src/settings/plugins/ifcfg-rh/nm-ifup \
+	src/settings/plugins/ifcfg-rh/nm-ifdown
+
 endif
 
 EXTRA_DIST += \
diff --git a/Makefile.in b/Makefile.in
index 4d43c159..2d2c8b32 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -53,6 +53,7 @@
 #       The files which should be used to generate the VAPI.
 
 # generated with `NM_TEST_REGENERATE=1 make check`
+# See howto in "clients/tests/test-client.py"
 
 ###############################################################################
 # examples/C/glib
@@ -62,6 +63,7 @@
 
 
 
+
 VPATH = @srcdir@
 am__is_gnu_make = { \
   if test -z '$(MAKELEVEL)'; then \
@@ -228,108 +230,112 @@ TESTS = $(am__EXEEXT_15)
 # src/settings/plugins/ifcfg-rh/tests
 ###############################################################################
 @CONFIG_PLUGIN_IFCFG_RH_TRUE@am__append_35 = src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh
+@CONFIG_PLUGIN_IFCFG_RH_TRUE@am__append_36 = \
+@CONFIG_PLUGIN_IFCFG_RH_TRUE@	src/settings/plugins/ifcfg-rh/nm-ifup \
+@CONFIG_PLUGIN_IFCFG_RH_TRUE@	src/settings/plugins/ifcfg-rh/nm-ifdown
+
 
 ###############################################################################
-@CONFIG_PLUGIN_IFCFG_RH_TRUE@am__append_36 = src/settings/plugins/ifcfg-rh/nm-ifcfg-rh.conf
+@CONFIG_PLUGIN_IFCFG_RH_TRUE@am__append_37 = src/settings/plugins/ifcfg-rh/nm-ifcfg-rh.conf
 
 ###############################################################################
 # src/settings/plugins/ifupdown
 ###############################################################################
-@CONFIG_PLUGIN_IFUPDOWN_TRUE@am__append_37 = src/settings/plugins/ifupdown/libnm-settings-plugin-ifupdown.la
-@CONFIG_PLUGIN_IFUPDOWN_TRUE@am__append_38 = src/settings/plugins/ifupdown/libnms-ifupdown-core.la
-@CONFIG_PLUGIN_IFUPDOWN_TRUE@am__append_39 = check-local-symbols-settings-ifupdown
+@CONFIG_PLUGIN_IFUPDOWN_TRUE@am__append_38 = src/settings/plugins/ifupdown/libnm-settings-plugin-ifupdown.la
+@CONFIG_PLUGIN_IFUPDOWN_TRUE@am__append_39 = src/settings/plugins/ifupdown/libnms-ifupdown-core.la
+@CONFIG_PLUGIN_IFUPDOWN_TRUE@am__append_40 = check-local-symbols-settings-ifupdown
 
 ###############################################################################
-@CONFIG_PLUGIN_IFUPDOWN_TRUE@am__append_40 = src/settings/plugins/ifupdown/tests/test-ifupdown
+@CONFIG_PLUGIN_IFUPDOWN_TRUE@am__append_41 = src/settings/plugins/ifupdown/tests/test-ifupdown
 
 ###############################################################################
 # src/devices/bluetooth
 ###############################################################################
-@WITH_MODEM_MANAGER_1_TRUE@am__append_41 =  \
+@WITH_MODEM_MANAGER_1_TRUE@am__append_42 =  \
 @WITH_MODEM_MANAGER_1_TRUE@	src/devices/wwan/libnm-wwan.la \
 @WITH_MODEM_MANAGER_1_TRUE@	src/devices/wwan/libnm-device-plugin-wwan.la \
 @WITH_MODEM_MANAGER_1_TRUE@	src/devices/bluetooth/libnm-device-plugin-bluetooth.la
-@WITH_MODEM_MANAGER_1_TRUE@@WITH_OFONO_TRUE@am__append_42 = \
+@WITH_MODEM_MANAGER_1_TRUE@@WITH_OFONO_TRUE@am__append_43 = \
 @WITH_MODEM_MANAGER_1_TRUE@@WITH_OFONO_TRUE@	src/devices/wwan/nm-modem-ofono.c \
 @WITH_MODEM_MANAGER_1_TRUE@@WITH_OFONO_TRUE@	src/devices/wwan/nm-modem-ofono.h
 
-@WITH_MODEM_MANAGER_1_TRUE@am__append_43 = check-local-devices-wwan \
+@WITH_MODEM_MANAGER_1_TRUE@am__append_44 = check-local-devices-wwan \
 @WITH_MODEM_MANAGER_1_TRUE@	check-local-devices-bluetooth
-@WITH_BLUEZ5_DUN_TRUE@@WITH_MODEM_MANAGER_1_TRUE@am__append_44 = $(BLUEZ5_CFLAGS)
-@WITH_BLUEZ5_DUN_TRUE@@WITH_MODEM_MANAGER_1_TRUE@am__append_45 = \
+@WITH_BLUEZ5_DUN_TRUE@@WITH_MODEM_MANAGER_1_TRUE@am__append_45 = $(BLUEZ5_CFLAGS)
+@WITH_BLUEZ5_DUN_TRUE@@WITH_MODEM_MANAGER_1_TRUE@am__append_46 = \
 @WITH_BLUEZ5_DUN_TRUE@@WITH_MODEM_MANAGER_1_TRUE@	src/devices/bluetooth/nm-bluez5-dun.c \
 @WITH_BLUEZ5_DUN_TRUE@@WITH_MODEM_MANAGER_1_TRUE@	src/devices/bluetooth/nm-bluez5-dun.h
 
-@WITH_BLUEZ5_DUN_TRUE@@WITH_MODEM_MANAGER_1_TRUE@am__append_46 = $(BLUEZ5_LIBS)
+@WITH_BLUEZ5_DUN_TRUE@@WITH_MODEM_MANAGER_1_TRUE@am__append_47 = $(BLUEZ5_LIBS)
 
 ###############################################################################
 # src/devices/wifi
 ###############################################################################
-@WITH_WIFI_TRUE@am__append_47 = src/devices/wifi/libnm-device-plugin-wifi.la
-@WITH_IWD_TRUE@@WITH_WIFI_TRUE@am__append_48 = \
+@WITH_WIFI_TRUE@am__append_48 = src/devices/wifi/libnm-device-plugin-wifi.la
+@WITH_IWD_TRUE@@WITH_WIFI_TRUE@am__append_49 = \
 @WITH_IWD_TRUE@@WITH_WIFI_TRUE@	src/devices/wifi/nm-device-iwd.c \
 @WITH_IWD_TRUE@@WITH_WIFI_TRUE@	src/devices/wifi/nm-device-iwd.h \
 @WITH_IWD_TRUE@@WITH_WIFI_TRUE@	src/devices/wifi/nm-iwd-manager.c \
 @WITH_IWD_TRUE@@WITH_WIFI_TRUE@	src/devices/wifi/nm-iwd-manager.h
 
-@WITH_WIFI_TRUE@am__append_49 = check-local-devices-wifi
-@WITH_WIFI_TRUE@am__append_50 = src/devices/wifi/tests/test-general
+@WITH_WIFI_TRUE@am__append_50 = check-local-devices-wifi
+@WITH_WIFI_TRUE@am__append_51 = src/devices/wifi/tests/test-general
 
 ###############################################################################
 # src/devices/team
 ###############################################################################
-@WITH_TEAMDCTL_TRUE@am__append_51 = src/devices/team/libnm-device-plugin-team.la
-@WITH_TEAMDCTL_TRUE@am__append_52 = check-local-devices-team
-@WITH_OPENVSWITCH_TRUE@am__append_53 = src/devices/ovs/libnm-device-plugin-ovs.la
-@HAVE_INTROSPECTION_TRUE@am__append_54 = $(clients_common_settings_doc_h)
-@HAVE_INTROSPECTION_TRUE@am__append_55 = check-local-settings-docs
-@HAVE_INTROSPECTION_TRUE@am__append_56 = clients/common/libnmc.la
-@HAVE_INTROSPECTION_FALSE@am__append_57 = clients/common/libnmc.la
-@HAVE_INTROSPECTION_TRUE@am__append_58 = clients/common/tests/test-general
-@BUILD_NMCLI_TRUE@@HAVE_INTROSPECTION_FALSE@am__append_59 = clients/common/tests/test-general
+@WITH_TEAMDCTL_TRUE@am__append_52 = src/devices/team/libnm-device-plugin-team.la
+@WITH_TEAMDCTL_TRUE@am__append_53 = check-local-devices-team
+@WITH_OPENVSWITCH_TRUE@am__append_54 = src/devices/ovs/libnm-device-plugin-ovs.la
+@HAVE_INTROSPECTION_TRUE@am__append_55 = $(clients_common_settings_doc_h)
+@HAVE_INTROSPECTION_TRUE@am__append_56 = check-local-settings-docs
+@HAVE_INTROSPECTION_TRUE@am__append_57 = clients/common/libnmc.la
+@HAVE_INTROSPECTION_FALSE@am__append_58 = clients/common/libnmc.la
+@HAVE_INTROSPECTION_TRUE@am__append_59 = clients/common/tests/test-general
+@BUILD_NMCLI_TRUE@@HAVE_INTROSPECTION_FALSE@am__append_60 = clients/common/tests/test-general
 
 ###############################################################################
 # clients/cli
 ###############################################################################
-@BUILD_NMCLI_TRUE@am__append_60 = clients/cli/nmcli
-@BUILD_NMCLI_TRUE@@WITH_POLKIT_AGENT_TRUE@am__append_61 = $(POLKIT_CFLAGS)
-@BUILD_NMCLI_TRUE@@WITH_POLKIT_AGENT_TRUE@am__append_62 = \
+@BUILD_NMCLI_TRUE@am__append_61 = clients/cli/nmcli
+@BUILD_NMCLI_TRUE@@WITH_POLKIT_AGENT_TRUE@am__append_62 = $(POLKIT_CFLAGS)
+@BUILD_NMCLI_TRUE@@WITH_POLKIT_AGENT_TRUE@am__append_63 = \
 @BUILD_NMCLI_TRUE@@WITH_POLKIT_AGENT_TRUE@	clients/common/nm-polkit-listener.c \
 @BUILD_NMCLI_TRUE@@WITH_POLKIT_AGENT_TRUE@	clients/common/nm-polkit-listener.h
 
-@BUILD_NMCLI_TRUE@@WITH_POLKIT_AGENT_TRUE@am__append_63 = $(POLKIT_LIBS)
-@BUILD_NMCLI_TRUE@am__append_64 = install-data-hook-nmcli
-@BUILD_NMCLI_TRUE@am__append_65 = uninstall-hook-nmcli
+@BUILD_NMCLI_TRUE@@WITH_POLKIT_AGENT_TRUE@am__append_64 = $(POLKIT_LIBS)
+@BUILD_NMCLI_TRUE@am__append_65 = install-data-hook-nmcli
+@BUILD_NMCLI_TRUE@am__append_66 = uninstall-hook-nmcli
 
 ###############################################################################
 # clients/tui
 ###############################################################################
-@BUILD_NMTUI_TRUE@am__append_66 = clients/tui/newt/libnmt-newt.a
-@BUILD_NMTUI_TRUE@am__append_67 = clients/tui/nmtui
-@BUILD_NMTUI_TRUE@am__append_68 = install-exec-hook-nmtui
-@BUILD_NMTUI_TRUE@am__append_69 = uninstall-hook-nmtui
-@HAVE_SYSTEMD_TRUE@am__append_70 = data/org.freedesktop.NetworkManager.service
+@BUILD_NMTUI_TRUE@am__append_67 = clients/tui/newt/libnmt-newt.a
+@BUILD_NMTUI_TRUE@am__append_68 = clients/tui/nmtui
+@BUILD_NMTUI_TRUE@am__append_69 = install-exec-hook-nmtui
+@BUILD_NMTUI_TRUE@am__append_70 = uninstall-hook-nmtui
+@HAVE_SYSTEMD_TRUE@am__append_71 = data/org.freedesktop.NetworkManager.service
 
 ###############################################################################
 # libnm-util
 ###############################################################################
-@WITH_LEGACY_LIBRARIES_TRUE@am__append_71 = libnm-util/libnm-util.la \
+@WITH_LEGACY_LIBRARIES_TRUE@am__append_72 = libnm-util/libnm-util.la \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-glib/libnm-glib.la \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-glib/libnm-glib-vpn.la
-@WITH_LEGACY_LIBRARIES_TRUE@am__append_72 =  \
+@WITH_LEGACY_LIBRARIES_TRUE@am__append_73 =  \
 @WITH_LEGACY_LIBRARIES_TRUE@	$(libnm_util_lib_h_pub_mkenums) \
 @WITH_LEGACY_LIBRARIES_TRUE@	$(libnm_util_lib_c_mkenums) \
 @WITH_LEGACY_LIBRARIES_TRUE@	$(libnm_glib_lib_h_pub_mkenums) \
 @WITH_LEGACY_LIBRARIES_TRUE@	$(libnm_glib_lib_c_mkenums) \
 @WITH_LEGACY_LIBRARIES_TRUE@	$(libnm_glib_vpn_h_mkenums) \
 @WITH_LEGACY_LIBRARIES_TRUE@	$(libnm_glib_vpn_c_mkenums)
-@WITH_GNUTLS_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_73 = $(GNUTLS_CFLAGS)
-@WITH_GNUTLS_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_74 = libnm-util/crypto_gnutls.c
-@WITH_GNUTLS_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_75 = $(GNUTLS_LIBS)
-@WITH_LEGACY_LIBRARIES_TRUE@@WITH_NSS_TRUE@am__append_76 = $(NSS_CFLAGS)
-@WITH_LEGACY_LIBRARIES_TRUE@@WITH_NSS_TRUE@am__append_77 = libnm-util/crypto_nss.c
-@WITH_LEGACY_LIBRARIES_TRUE@@WITH_NSS_TRUE@am__append_78 = $(NSS_LIBS)
-@WITH_LEGACY_LIBRARIES_TRUE@am__append_79 =  \
+@WITH_GNUTLS_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_74 = $(GNUTLS_CFLAGS)
+@WITH_GNUTLS_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_75 = libnm-util/crypto_gnutls.c
+@WITH_GNUTLS_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_76 = $(GNUTLS_LIBS)
+@WITH_LEGACY_LIBRARIES_TRUE@@WITH_NSS_TRUE@am__append_77 = $(NSS_CFLAGS)
+@WITH_LEGACY_LIBRARIES_TRUE@@WITH_NSS_TRUE@am__append_78 = libnm-util/crypto_nss.c
+@WITH_LEGACY_LIBRARIES_TRUE@@WITH_NSS_TRUE@am__append_79 = $(NSS_LIBS)
+@WITH_LEGACY_LIBRARIES_TRUE@am__append_80 =  \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-util/crypto_gnutls.c \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-util/crypto_nss.c \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-util/COPYING \
@@ -348,26 +354,26 @@ TESTS = $(am__EXEEXT_15)
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-glib/nm-glib-enum-types.c.template \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-glib/nm-glib-enum-types.h.template \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-glib/meson.build
-@WITH_LEGACY_LIBRARIES_TRUE@am__append_80 = libnm-util/libtest-crypto.la
-@WITH_GNUTLS_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_81 = libnm-util/crypto_gnutls.c
-@WITH_GNUTLS_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_82 = $(GNUTLS_LIBS)
-@WITH_LEGACY_LIBRARIES_TRUE@@WITH_NSS_TRUE@am__append_83 = libnm-util/crypto_nss.c
-@WITH_LEGACY_LIBRARIES_TRUE@@WITH_NSS_TRUE@am__append_84 = $(NSS_LIBS)
-@WITH_LEGACY_LIBRARIES_TRUE@am__append_85 = libnm-util/libnm-util.pc \
+@WITH_LEGACY_LIBRARIES_TRUE@am__append_81 = libnm-util/libtest-crypto.la
+@WITH_GNUTLS_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_82 = libnm-util/crypto_gnutls.c
+@WITH_GNUTLS_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_83 = $(GNUTLS_LIBS)
+@WITH_LEGACY_LIBRARIES_TRUE@@WITH_NSS_TRUE@am__append_84 = libnm-util/crypto_nss.c
+@WITH_LEGACY_LIBRARIES_TRUE@@WITH_NSS_TRUE@am__append_85 = $(NSS_LIBS)
+@WITH_LEGACY_LIBRARIES_TRUE@am__append_86 = libnm-util/libnm-util.pc \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-glib/libnm-glib.pc \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-glib/libnm-glib-vpn.pc
-@WITH_LEGACY_LIBRARIES_TRUE@am__append_86 = libnm-util/libnm-util.pc \
+@WITH_LEGACY_LIBRARIES_TRUE@am__append_87 = libnm-util/libnm-util.pc \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-glib/libnm-glib.pc \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-glib/libnm-glib.pc
-@HAVE_INTROSPECTION_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_87 = libnm-util/NetworkManager-1.0.gir \
+@HAVE_INTROSPECTION_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_88 = libnm-util/NetworkManager-1.0.gir \
 @HAVE_INTROSPECTION_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@	libnm-glib/NMClient-1.0.gir
-@WITH_LEGACY_LIBRARIES_TRUE@am__append_88 =  \
+@WITH_LEGACY_LIBRARIES_TRUE@am__append_89 =  \
 @WITH_LEGACY_LIBRARIES_TRUE@	check-local-exports-libnm-util \
 @WITH_LEGACY_LIBRARIES_TRUE@	check-local-exports-libnm-glib
-@WITH_LEGACY_LIBRARIES_TRUE@am__append_89 = libnm-util/libnm-util.la \
+@WITH_LEGACY_LIBRARIES_TRUE@am__append_90 = libnm-util/libnm-util.la \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-glib/libnm-glib.la \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-glib/libnm-glib-vpn.la
-@WITH_LEGACY_LIBRARIES_TRUE@am__append_90 = \
+@WITH_LEGACY_LIBRARIES_TRUE@am__append_91 = \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-util/tests/test-settings-defaults \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-util/tests/test-crypto \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-util/tests/test-secrets \
@@ -375,55 +381,55 @@ TESTS = $(am__EXEEXT_15)
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-util/tests/test-setting-8021x \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-util/tests/test-setting-dcb
 
-@WITH_LEGACY_LIBRARIES_TRUE@am__append_91 = libnm-util/tests/test-libnm-linking \
+@WITH_LEGACY_LIBRARIES_TRUE@am__append_92 = libnm-util/tests/test-libnm-linking \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-glib/libnm-glib-test
-@WITH_LEGACY_LIBRARIES_TRUE@am__append_92 = libnm-glib/libdeprecated-nm-glib.la
-@WITH_LEGACY_LIBRARIES_TRUE@am__append_93 = \
+@WITH_LEGACY_LIBRARIES_TRUE@am__append_93 = libnm-glib/libdeprecated-nm-glib.la
+@WITH_LEGACY_LIBRARIES_TRUE@am__append_94 = \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-glib/nm-vpn-plugin-glue.h \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-glib/nm-secret-agent-glue.h
 
-@HAVE_INTROSPECTION_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_94 = $(libnm_glib_tests_programs_req_introspection)
-@HAVE_INTROSPECTION_FALSE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_95 = $(libnm_glib_tests_programs_req_introspection)
-@HAVE_INTROSPECTION_TRUE@am__append_96 = $(man_nm_settings_xml)
-@WITH_OPENVSWITCH_TRUE@am__append_97 = man/nm-openvswitch.7
-@WITH_OPENVSWITCH_FALSE@am__append_98 = man/nm-openvswitch.7
+@HAVE_INTROSPECTION_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_95 = $(libnm_glib_tests_programs_req_introspection)
+@HAVE_INTROSPECTION_FALSE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_96 = $(libnm_glib_tests_programs_req_introspection)
+@HAVE_INTROSPECTION_TRUE@am__append_97 = $(man_nm_settings_xml)
+@WITH_OPENVSWITCH_TRUE@am__append_98 = man/nm-openvswitch.7
 @WITH_OPENVSWITCH_FALSE@am__append_99 = man/nm-openvswitch.7
-@CONFIG_PLUGIN_IFCFG_RH_TRUE@am__append_100 = man/nm-settings-ifcfg-rh.5
-@CONFIG_PLUGIN_IFCFG_RH_FALSE@am__append_101 = man/nm-settings-ifcfg-rh.5
+@WITH_OPENVSWITCH_FALSE@am__append_100 = man/nm-openvswitch.7
+@CONFIG_PLUGIN_IFCFG_RH_TRUE@am__append_101 = man/nm-settings-ifcfg-rh.5
 @CONFIG_PLUGIN_IFCFG_RH_FALSE@am__append_102 = man/nm-settings-ifcfg-rh.5
-@HAVE_DOCS_TRUE@am__append_103 = install-data-hook-man
-@HAVE_DOCS_TRUE@am__append_104 = uninstall-hook-man
-@HAVE_DOCS_TRUE@am__append_105 = $(man_pages) $(man_pages_autogen)
-@BUILD_DOCS_TRUE@am__append_106 = $(man_pages) $(man_pages_autogen)
+@CONFIG_PLUGIN_IFCFG_RH_FALSE@am__append_103 = man/nm-settings-ifcfg-rh.5
+@HAVE_DOCS_TRUE@am__append_104 = install-data-hook-man
+@HAVE_DOCS_TRUE@am__append_105 = uninstall-hook-man
+@HAVE_DOCS_TRUE@am__append_106 = $(man_pages) $(man_pages_autogen)
+@BUILD_DOCS_TRUE@am__append_107 = $(man_pages) $(man_pages_autogen)
 
 ###############################################################################
 # vapi
 ###############################################################################
-@ENABLE_VAPIGEN_TRUE@am__append_107 = \
+@ENABLE_VAPIGEN_TRUE@am__append_108 = \
 @ENABLE_VAPIGEN_TRUE@	vapi/libnm.vapi
 
-@ENABLE_VAPIGEN_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_108 = \
+@ENABLE_VAPIGEN_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@am__append_109 = \
 @ENABLE_VAPIGEN_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@	vapi/libnm-util.vapi \
 @ENABLE_VAPIGEN_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@	vapi/libnm-glib.vapi
 
-@ENABLE_VAPIGEN_TRUE@am__append_109 = \
+@ENABLE_VAPIGEN_TRUE@am__append_110 = \
 @ENABLE_VAPIGEN_TRUE@	$(VAPIGEN_VAPIS) \
 @ENABLE_VAPIGEN_TRUE@	$(VAPIGEN_VAPIS:.vapi=.deps)
 
-@ENABLE_VAPIGEN_TRUE@am__append_110 = $(VAPIGEN_VAPIS)
+@ENABLE_VAPIGEN_TRUE@am__append_111 = $(VAPIGEN_VAPIS)
 
 ###############################################################################
-@ENABLE_TESTS_TRUE@am__append_111 = $(check_programs) $(check_programs_norun)
-@ENABLE_TESTS_TRUE@am__append_112 = $(check_ltlibraries)
-@ENABLE_TESTS_FALSE@am__append_113 = $(check_programs) $(check_programs_norun)
-@ENABLE_TESTS_FALSE@am__append_114 = $(check_ltlibraries)
-@WITH_QT_TRUE@am__append_115 = \
+@ENABLE_TESTS_TRUE@am__append_112 = $(check_programs) $(check_programs_norun)
+@ENABLE_TESTS_TRUE@am__append_113 = $(check_ltlibraries)
+@ENABLE_TESTS_FALSE@am__append_114 = $(check_programs) $(check_programs_norun)
+@ENABLE_TESTS_FALSE@am__append_115 = $(check_ltlibraries)
+@WITH_QT_TRUE@am__append_116 = \
 @WITH_QT_TRUE@	examples/C/qt/add-connection-wired \
 @WITH_QT_TRUE@	examples/C/qt/list-connections \
 @WITH_QT_TRUE@	examples/C/qt/change-ipv4-addresses \
 @WITH_QT_TRUE@	examples/C/qt/monitor-nm-running
 
-@WITH_QT_TRUE@am__append_116 = \
+@WITH_QT_TRUE@am__append_117 = \
 @WITH_QT_TRUE@	examples/C/qt/monitor-nm-running.moc
 
 subdir = .
@@ -445,7 +451,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/attributes.m4 \
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
-	$(am__configure_deps) $(am__libdeprecated_HEADERS_DIST) \
+	$(am__configure_deps) $(am__dist_libexec_SCRIPTS_DIST) \
+	$(am__libdeprecated_HEADERS_DIST) \
 	$(am__libnm_glib_libnminclude_HEADERS_DIST) \
 	$(am__libnm_glib_libnmvpn_HEADERS_DIST) \
 	$(am__libnm_util_libnm_util_include_HEADERS_DIST) \
@@ -563,9 +570,9 @@ am__uninstall_files_from_dir = { \
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(plugindir)" \
 	"$(DESTDIR)$(pppd_plugindir)" "$(DESTDIR)$(bindir)" \
 	"$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(sbindir)" \
-	"$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" \
-	"$(DESTDIR)$(man7dir)" "$(DESTDIR)$(man8dir)" \
-	"$(DESTDIR)$(dbusactivationdir)" \
+	"$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(man1dir)" \
+	"$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man7dir)" \
+	"$(DESTDIR)$(man8dir)" "$(DESTDIR)$(dbusactivationdir)" \
 	"$(DESTDIR)$(dbusinterfacesdir)" "$(DESTDIR)$(dbusservicedir)" \
 	"$(DESTDIR)$(examplesdir)" "$(DESTDIR)$(girdir)" \
 	"$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(polkit_policydir)" \
@@ -2531,6 +2538,9 @@ src_tests_test_wired_defname_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(AM_CFLAGS) $(CFLAGS) $(src_tests_test_wired_defname_LDFLAGS) \
 	$(LDFLAGS) -o $@
+am__dist_libexec_SCRIPTS_DIST = src/settings/plugins/ifcfg-rh/nm-ifup \
+	src/settings/plugins/ifcfg-rh/nm-ifdown
+SCRIPTS = $(dist_libexec_SCRIPTS)
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -3448,26 +3458,27 @@ noinst_LTLIBRARIES = introspection/libnmdbus.la \
 	libnm-core/libnm-core.la libnm/libnm-utils.la \
 	src/libNetworkManagerBase.la src/libNetworkManager.la \
 	src/libsystemd-nm.la shared/libcsiphash.la shared/libnacd.la \
-	$(am__append_27) $(am__append_32) $(am__append_38) \
-	dispatcher/libnm-dispatcher-core.la $(am__append_92) \
-	$(am__append_112)
-check_LTLIBRARIES = $(am__append_114)
-noinst_LIBRARIES = $(am__append_66)
+	$(am__append_27) $(am__append_32) $(am__append_39) \
+	dispatcher/libnm-dispatcher-core.la $(am__append_93) \
+	$(am__append_113)
+check_LTLIBRARIES = $(am__append_115)
+noinst_LIBRARIES = $(am__append_67)
 noinst_DATA = $(am__append_18)
+dist_libexec_SCRIPTS = $(am__append_36)
 
 ###############################################################################
-lib_LTLIBRARIES = libnm/libnm.la $(am__append_71)
+lib_LTLIBRARIES = libnm/libnm.la $(am__append_72)
 plugin_LTLIBRARIES = $(core_plugins)
 
 ###############################################################################
 # src/devices/adsl
 ###############################################################################
 core_plugins = $(am__append_24) $(am__append_26) $(am__append_31) \
-	$(am__append_37) src/devices/adsl/libnm-device-plugin-adsl.la \
-	$(am__append_41) $(am__append_47) $(am__append_51) \
-	$(am__append_53)
-service_DATA = $(am__append_70)
-man_MANS = $(am__append_105)
+	$(am__append_38) src/devices/adsl/libnm-device-plugin-adsl.la \
+	$(am__append_42) $(am__append_48) $(am__append_52) \
+	$(am__append_54)
+service_DATA = $(am__append_71)
+man_MANS = $(am__append_106)
 examples_DATA = data/server.conf
 CLEANFILES = $(introspection_sources) $(DBUS_INTERFACE_DOCS) \
 	$(am__append_17) src/NetworkManager.ver $(am__append_33) \
@@ -3477,13 +3488,13 @@ CLEANFILES = $(introspection_sources) $(DBUS_INTERFACE_DOCS) \
 	data/NetworkManager-wait-online.service \
 	data/NetworkManager-dispatcher.service \
 	data/org.freedesktop.NetworkManager.service data/server.conf \
-	$(am__append_93) $(am__append_96) man/common.ent \
-	$(am__append_106) $(am__append_110) $(GLIB_GENERATED) \
+	$(am__append_94) $(am__append_97) man/common.ent \
+	$(am__append_107) $(am__append_111) $(GLIB_GENERATED) \
 	$(INTROSPECTION_GIRS) $(typelib_DATA) cscope.in.out cscope.out \
-	cscope.po.out $(NULL) $(am__append_116)
+	cscope.po.out $(NULL) $(am__append_117)
 DISTCLEANFILES = intltool-extract intltool-merge intltool-update \
-	$(polkit_policy_DATA) libnm/libnm.pc $(am__append_54) \
-	$(am__append_86)
+	$(polkit_policy_DATA) libnm/libnm.pc $(am__append_55) \
+	$(am__append_87)
 
 # test-cert.p12 created with:
 #
@@ -3844,8 +3855,8 @@ EXTRA_DIST = $(dbusinterfaces_DATA) introspection/meson.build \
 	data/org.freedesktop.NetworkManager.service.in \
 	data/84-nm-drivers.rules data/85-nm-unmanaged.rules \
 	data/90-nm-thunderbolt.rules data/server.conf.in \
-	data/meson.build $(am__append_79) libnm-glib/tests/meson.build \
-	$(am__append_98) $(am__append_101) man/common.ent.in \
+	data/meson.build $(am__append_80) libnm-glib/tests/meson.build \
+	$(am__append_99) $(am__append_102) man/common.ent.in \
 	$(man_nm_settings_xml) $(addsuffix .xsl,$(basename \
 	$(man_nm_settings_xml))) $(man_pages) $(addsuffix \
 	.xml,$(basename $(man_pages))) $(man_pages_autogen) \
@@ -3933,16 +3944,17 @@ EXTRA_DIST = $(dbusinterfaces_DATA) introspection/meson.build \
 	examples/shell/get-hostname.sh examples/shell/list-devices.sh \
 	examples/shell/disconnect-device.sh \
 	examples/shell/active-wifi.sh $(NULL)
-EXTRA_LTLIBRARIES = $(am__append_57)
+EXTRA_LTLIBRARIES = $(am__append_58)
 dist_hook = dist-hook-settings-ifcfg-rh-alias-files
 dist_dependencies = libnm-core/nm-vpn-dbus-types.xml \
-	libnm-core/nm-dbus-types.xml $(am__append_89) $(am__append_99) \
-	$(am__append_102) $(man_pages) $(man_pages_autogen)
+	libnm-core/nm-dbus-types.xml $(am__append_90) \
+	$(am__append_100) $(am__append_103) $(man_pages) \
+	$(man_pages_autogen)
 dist_configure_check = $(am__append_3) $(am__append_4)
-install_data_hook = install-data-hook-dispatcher $(am__append_64) \
-	$(am__append_103)
-install_exec_hook = $(am__append_68)
-uninstall_hook = $(am__append_65) $(am__append_69) $(am__append_104)
+install_data_hook = install-data-hook-dispatcher $(am__append_65) \
+	$(am__append_104)
+install_exec_hook = $(am__append_69)
+uninstall_hook = $(am__append_66) $(am__append_70) $(am__append_105)
 BUILT_SOURCES = libnm-core/nm-vpn-dbus-types.xml \
 	libnm-core/nm-dbus-types.xml $(gir_DATA) $(typelib_DATA)
 GLIB_GENERATED = $(libnm_core_lib_h_pub_mkenums) \
@@ -3950,12 +3962,12 @@ GLIB_GENERATED = $(libnm_core_lib_h_pub_mkenums) \
 	libnm-core/tests/nm-core-tests-enum-types.h \
 	libnm-core/tests/nm-core-tests-enum-types.c \
 	$(libnm_lib_h_pub_mkenums) $(libnm_lib_c_mkenums) \
-	$(am__append_72)
+	$(am__append_73)
 man_pages = man/NetworkManager.8 man/NetworkManager.conf.5 \
 	man/nm-online.1 man/nmcli-examples.7 man/nmcli.1 man/nmtui.1 \
-	$(am__append_97)
+	$(am__append_98)
 man_pages_autogen = man/nm-settings-keyfile.5 man/nm-settings.5 \
-	$(am__append_100)
+	$(am__append_101)
 
 ###############################################################################
 
@@ -3987,8 +3999,8 @@ check_programs = libnm-core/tests/test-compare \
 	src/dhcp/tests/test-dhcp-dhclient \
 	src/dhcp/tests/test-dhcp-utils \
 	src/settings/plugins/keyfile/tests/test-keyfile \
-	$(am__append_28) $(am__append_35) $(am__append_40) \
-	$(am__append_50) src/dnsmasq/tests/test-dnsmasq-utils \
+	$(am__append_28) $(am__append_35) $(am__append_41) \
+	$(am__append_51) src/dnsmasq/tests/test-dnsmasq-utils \
 	src/platform/tests/test-link-fake \
 	src/platform/tests/test-link-linux \
 	src/platform/tests/test-address-fake \
@@ -4007,18 +4019,18 @@ check_programs = libnm-core/tests/test-compare \
 	src/tests/test-ip6-config src/tests/test-dcb \
 	src/tests/test-systemd src/tests/test-wired-defname \
 	src/tests/test-utils dispatcher/tests/test-dispatcher-envp \
-	$(am__append_58) $(am__append_59) $(am__append_90) \
-	$(am__append_94)
+	$(am__append_59) $(am__append_60) $(am__append_91) \
+	$(am__append_95)
 check_programs_norun = $(am__append_21) src/platform/tests/monitor \
-	src/ndisc/tests/test-ndisc-linux $(am__append_91) \
-	$(am__append_95) examples/C/glib/add-connection-gdbus \
+	src/ndisc/tests/test-ndisc-linux $(am__append_92) \
+	$(am__append_96) examples/C/glib/add-connection-gdbus \
 	examples/C/glib/add-connection-libnm \
 	examples/C/glib/get-active-connections-gdbus \
 	examples/C/glib/get-ap-info-libnm \
 	examples/C/glib/list-connections-gdbus \
 	examples/C/glib/list-connections-libnm \
 	examples/C/glib/monitor-nm-running-gdbus \
-	examples/C/glib/monitor-nm-state-gdbus $(am__append_115)
+	examples/C/glib/monitor-nm-state-gdbus $(am__append_116)
 
 ###############################################################################
 
@@ -4027,18 +4039,18 @@ check_programs_norun = $(am__append_21) src/platform/tests/monitor \
 ###############################################################################
 check_ltlibraries = libnm/tests/libnm-vpn-plugin-utils-test.la \
 	src/libNetworkManagerTest.la clients/common/libnmc-base.la \
-	$(am__append_56) $(am__append_80)
+	$(am__append_57) $(am__append_81)
 check_local = check-local-exports-libnm $(am__append_30) \
-	$(am__append_34) $(am__append_39) check-local-devices-adsl \
-	$(am__append_43) $(am__append_49) $(am__append_52) \
-	$(am__append_55) check-local-clients-tests-test-client \
-	$(am__append_88)
-VAPIGEN_VAPIS = $(am__append_107) $(am__append_108)
-dbusservice_DATA = $(am__append_36) dispatcher/nm-dispatcher.conf \
+	$(am__append_34) $(am__append_40) check-local-devices-adsl \
+	$(am__append_44) $(am__append_50) $(am__append_53) \
+	$(am__append_56) check-local-clients-tests-test-client \
+	$(am__append_89)
+VAPIGEN_VAPIS = $(am__append_108) $(am__append_109)
+dbusservice_DATA = $(am__append_37) dispatcher/nm-dispatcher.conf \
 	src/org.freedesktop.NetworkManager.conf
 dbusactivation_DATA =  \
 	dispatcher/org.freedesktop.nm_dispatcher.service
-INTROSPECTION_GIRS = $(am__append_16) $(am__append_87)
+INTROSPECTION_GIRS = $(am__append_16) $(am__append_88)
 INTROSPECTION_SCANNER_ARGS = 
 INTROSPECTION_COMPILER_ARGS = 
 # Pass SANITIZER_ENV where a command that uses built libraries is
@@ -4050,11 +4062,11 @@ libnminclude_HEADERS = $(libnm_core_lib_h_pub_real) \
 nodist_libnminclude_HEADERS = $(libnm_core_lib_h_pub_mkenums) \
 	$(libnm_lib_h_pub_mkenums)
 pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = $(am__append_5) libnm/libnm.pc $(am__append_85)
+pkgconfig_DATA = $(am__append_5) libnm/libnm.pc $(am__append_86)
 pppd_plugindir = $(PPPD_PLUGIN_DIR)
 pppd_plugin_LTLIBRARIES = $(am__append_25)
 vapidir = $(datadir)/vala/vapi
-vapi_DATA = $(am__append_109)
+vapi_DATA = $(am__append_110)
 examplesdir = $(docdir)/examples
 rundir = $(runstatedir)/NetworkManager
 statedir = $(localstatedir)/lib/NetworkManager
@@ -4089,6 +4101,7 @@ check_so_symbols = \
 DISTCHECK_CONFIGURE_FLAGS = \
 	--enable-tests=yes \
 	--with-valgrind=no \
+	--with-libnm-glib=yes \
 	--enable-gtk-doc \
 	--enable-more-warnings=error \
 	--with-udev-dir=$$dc_install_base/lib/udev \
@@ -4868,6 +4881,7 @@ src_libsystemd_nm_la_SOURCES = \
 	src/systemd/sd-adapt/cgroup-util.h \
 	src/systemd/sd-adapt/condition.h \
 	src/systemd/sd-adapt/conf-parser.h \
+	src/systemd/sd-adapt/copy.h \
 	src/systemd/sd-adapt/def.h \
 	src/systemd/sd-adapt/device-nodes.h \
 	src/systemd/sd-adapt/dirent-util.h \
@@ -5618,7 +5632,7 @@ src_devices_adsl_libnm_device_plugin_adsl_la_LIBADD = \
 @WITH_MODEM_MANAGER_1_TRUE@	src/devices/wwan/nm-modem-manager.h \
 @WITH_MODEM_MANAGER_1_TRUE@	src/devices/wwan/nm-modem.c \
 @WITH_MODEM_MANAGER_1_TRUE@	src/devices/wwan/nm-modem.h \
-@WITH_MODEM_MANAGER_1_TRUE@	$(am__append_42)
+@WITH_MODEM_MANAGER_1_TRUE@	$(am__append_43)
 @WITH_MODEM_MANAGER_1_TRUE@src_devices_wwan_libnm_wwan_la_CPPFLAGS = $(src_devices_wwan_cppflags)
 @WITH_MODEM_MANAGER_1_TRUE@src_devices_wwan_libnm_wwan_la_LDFLAGS = \
 @WITH_MODEM_MANAGER_1_TRUE@	-avoid-version \
@@ -5660,7 +5674,7 @@ src_devices_adsl_libnm_device_plugin_adsl_la_LIBADD = \
 @WITH_MODEM_MANAGER_1_TRUE@	src/devices/bluetooth/nm-bt-error.c \
 @WITH_MODEM_MANAGER_1_TRUE@	src/devices/bluetooth/nm-device-bt.c \
 @WITH_MODEM_MANAGER_1_TRUE@	src/devices/bluetooth/nm-device-bt.h \
-@WITH_MODEM_MANAGER_1_TRUE@	$(am__append_45)
+@WITH_MODEM_MANAGER_1_TRUE@	$(am__append_46)
 @WITH_MODEM_MANAGER_1_TRUE@src_devices_bluetooth_libnm_device_plugin_bluetooth_la_CPPFLAGS =  \
 @WITH_MODEM_MANAGER_1_TRUE@	-I$(srcdir)/src -I$(builddir)/src \
 @WITH_MODEM_MANAGER_1_TRUE@	-I$(srcdir)/shared \
@@ -5668,14 +5682,14 @@ src_devices_adsl_libnm_device_plugin_adsl_la_LIBADD = \
 @WITH_MODEM_MANAGER_1_TRUE@	-I$(builddir)/libnm-core \
 @WITH_MODEM_MANAGER_1_TRUE@	-I$(srcdir)/libnm-core \
 @WITH_MODEM_MANAGER_1_TRUE@	-DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_DAEMON \
-@WITH_MODEM_MANAGER_1_TRUE@	$(GLIB_CFLAGS) $(am__append_44)
+@WITH_MODEM_MANAGER_1_TRUE@	$(GLIB_CFLAGS) $(am__append_45)
 @WITH_MODEM_MANAGER_1_TRUE@src_devices_bluetooth_libnm_device_plugin_bluetooth_la_LDFLAGS = \
 @WITH_MODEM_MANAGER_1_TRUE@	-module -avoid-version \
 @WITH_MODEM_MANAGER_1_TRUE@	-Wl,--version-script="$(srcdir)/linker-script-devices.ver"
 
 @WITH_MODEM_MANAGER_1_TRUE@src_devices_bluetooth_libnm_device_plugin_bluetooth_la_LIBADD =  \
 @WITH_MODEM_MANAGER_1_TRUE@	src/devices/wwan/libnm-wwan.la \
-@WITH_MODEM_MANAGER_1_TRUE@	$(GLIB_LIBS) $(am__append_46)
+@WITH_MODEM_MANAGER_1_TRUE@	$(GLIB_LIBS) $(am__append_47)
 @WITH_WIFI_TRUE@src_devices_wifi_libnm_device_plugin_wifi_la_SOURCES =  \
 @WITH_WIFI_TRUE@	src/devices/wifi/nm-wifi-factory.c \
 @WITH_WIFI_TRUE@	src/devices/wifi/nm-device-wifi.c \
@@ -5688,7 +5702,7 @@ src_devices_adsl_libnm_device_plugin_adsl_la_LIBADD = \
 @WITH_WIFI_TRUE@	src/devices/wifi/nm-wifi-common.h \
 @WITH_WIFI_TRUE@	src/devices/wifi/nm-device-olpc-mesh.c \
 @WITH_WIFI_TRUE@	src/devices/wifi/nm-device-olpc-mesh.h \
-@WITH_WIFI_TRUE@	$(am__append_48)
+@WITH_WIFI_TRUE@	$(am__append_49)
 @WITH_WIFI_TRUE@src_devices_wifi_libnm_device_plugin_wifi_la_CPPFLAGS = \
 @WITH_WIFI_TRUE@	-I$(srcdir)/src \
 @WITH_WIFI_TRUE@	-I$(builddir)/src \
@@ -6148,7 +6162,7 @@ clients_common_tests_test_general_LDADD = \
 @BUILD_NMCLI_TRUE@	clients/cli/nmcli.h \
 @BUILD_NMCLI_TRUE@	clients/cli/polkit-agent.c \
 @BUILD_NMCLI_TRUE@	clients/cli/polkit-agent.h $(NULL) \
-@BUILD_NMCLI_TRUE@	$(am__append_62)
+@BUILD_NMCLI_TRUE@	$(am__append_63)
 @BUILD_NMCLI_TRUE@clients_cli_nmcli_CPPFLAGS =  \
 @BUILD_NMCLI_TRUE@	-I$(srcdir)/clients/cli $(clients_cppflags) \
 @BUILD_NMCLI_TRUE@	$(SANITIZER_EXEC_CFLAGS) \
@@ -6156,11 +6170,11 @@ clients_common_tests_test_general_LDADD = \
 @BUILD_NMCLI_TRUE@	-DG_LOG_DOMAIN=\""nmcli"\" \
 @BUILD_NMCLI_TRUE@	-DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_CLIENT \
 @BUILD_NMCLI_TRUE@	-DNMLOCALEDIR=\"$(nmlocaledir)\" \
-@BUILD_NMCLI_TRUE@	$(am__append_61)
+@BUILD_NMCLI_TRUE@	$(am__append_62)
 @BUILD_NMCLI_TRUE@clients_cli_nmcli_LDADD = libnm/libnm.la \
 @BUILD_NMCLI_TRUE@	clients/common/libnmc-base.la \
 @BUILD_NMCLI_TRUE@	clients/common/libnmc.la $(GLIB_LIBS) \
-@BUILD_NMCLI_TRUE@	$(READLINE_LIBS) $(am__append_63)
+@BUILD_NMCLI_TRUE@	$(READLINE_LIBS) $(am__append_64)
 @BUILD_NMCLI_TRUE@clients_cli_nmcli_LDFLAGS = \
 @BUILD_NMCLI_TRUE@	-Wl,--version-script="$(srcdir)/linker-script-binary.ver" \
 @BUILD_NMCLI_TRUE@	$(SANITIZER_EXEC_LDFLAGS)
@@ -6435,12 +6449,256 @@ clients_tests_expected_files = \
 	clients/tests/test-client.check-on-disk/test_003-052.expected \
 	clients/tests/test-client.check-on-disk/test_003-053.expected \
 	clients/tests/test-client.check-on-disk/test_003-054.expected \
+	clients/tests/test-client.check-on-disk/test_003-055.expected \
+	clients/tests/test-client.check-on-disk/test_003-056.expected \
+	clients/tests/test-client.check-on-disk/test_003-057.expected \
+	clients/tests/test-client.check-on-disk/test_003-058.expected \
+	clients/tests/test-client.check-on-disk/test_003-059.expected \
+	clients/tests/test-client.check-on-disk/test_003-060.expected \
+	clients/tests/test-client.check-on-disk/test_003-061.expected \
+	clients/tests/test-client.check-on-disk/test_003-062.expected \
+	clients/tests/test-client.check-on-disk/test_003-063.expected \
+	clients/tests/test-client.check-on-disk/test_003-064.expected \
+	clients/tests/test-client.check-on-disk/test_003-065.expected \
+	clients/tests/test-client.check-on-disk/test_003-066.expected \
+	clients/tests/test-client.check-on-disk/test_003-067.expected \
+	clients/tests/test-client.check-on-disk/test_003-068.expected \
+	clients/tests/test-client.check-on-disk/test_003-069.expected \
+	clients/tests/test-client.check-on-disk/test_003-070.expected \
+	clients/tests/test-client.check-on-disk/test_003-071.expected \
+	clients/tests/test-client.check-on-disk/test_003-072.expected \
+	clients/tests/test-client.check-on-disk/test_003-073.expected \
+	clients/tests/test-client.check-on-disk/test_003-074.expected \
+	clients/tests/test-client.check-on-disk/test_003-075.expected \
+	clients/tests/test-client.check-on-disk/test_003-076.expected \
+	clients/tests/test-client.check-on-disk/test_003-077.expected \
+	clients/tests/test-client.check-on-disk/test_003-078.expected \
+	clients/tests/test-client.check-on-disk/test_003-079.expected \
+	clients/tests/test-client.check-on-disk/test_003-080.expected \
+	clients/tests/test-client.check-on-disk/test_003-081.expected \
+	clients/tests/test-client.check-on-disk/test_003-082.expected \
+	clients/tests/test-client.check-on-disk/test_003-083.expected \
+	clients/tests/test-client.check-on-disk/test_003-084.expected \
+	clients/tests/test-client.check-on-disk/test_003-085.expected \
+	clients/tests/test-client.check-on-disk/test_003-086.expected \
+	clients/tests/test-client.check-on-disk/test_003-087.expected \
+	clients/tests/test-client.check-on-disk/test_003-088.expected \
+	clients/tests/test-client.check-on-disk/test_003-089.expected \
+	clients/tests/test-client.check-on-disk/test_003-090.expected \
+	clients/tests/test-client.check-on-disk/test_003-091.expected \
+	clients/tests/test-client.check-on-disk/test_003-092.expected \
+	clients/tests/test-client.check-on-disk/test_003-093.expected \
+	clients/tests/test-client.check-on-disk/test_003-094.expected \
+	clients/tests/test-client.check-on-disk/test_003-095.expected \
+	clients/tests/test-client.check-on-disk/test_003-096.expected \
+	clients/tests/test-client.check-on-disk/test_003-097.expected \
+	clients/tests/test-client.check-on-disk/test_003-098.expected \
+	clients/tests/test-client.check-on-disk/test_003-099.expected \
+	clients/tests/test-client.check-on-disk/test_003-100.expected \
 	clients/tests/test-client.check-on-disk/test_004-001.expected \
 	clients/tests/test-client.check-on-disk/test_004-002.expected \
 	clients/tests/test-client.check-on-disk/test_004-003.expected \
 	clients/tests/test-client.check-on-disk/test_004-004.expected \
 	clients/tests/test-client.check-on-disk/test_004-005.expected \
 	clients/tests/test-client.check-on-disk/test_004-006.expected \
+	clients/tests/test-client.check-on-disk/test_004-007.expected \
+	clients/tests/test-client.check-on-disk/test_004-008.expected \
+	clients/tests/test-client.check-on-disk/test_004-009.expected \
+	clients/tests/test-client.check-on-disk/test_004-010.expected \
+	clients/tests/test-client.check-on-disk/test_004-011.expected \
+	clients/tests/test-client.check-on-disk/test_004-012.expected \
+	clients/tests/test-client.check-on-disk/test_004-013.expected \
+	clients/tests/test-client.check-on-disk/test_004-014.expected \
+	clients/tests/test-client.check-on-disk/test_004-015.expected \
+	clients/tests/test-client.check-on-disk/test_004-016.expected \
+	clients/tests/test-client.check-on-disk/test_004-017.expected \
+	clients/tests/test-client.check-on-disk/test_004-018.expected \
+	clients/tests/test-client.check-on-disk/test_004-019.expected \
+	clients/tests/test-client.check-on-disk/test_004-020.expected \
+	clients/tests/test-client.check-on-disk/test_004-021.expected \
+	clients/tests/test-client.check-on-disk/test_004-022.expected \
+	clients/tests/test-client.check-on-disk/test_004-023.expected \
+	clients/tests/test-client.check-on-disk/test_004-024.expected \
+	clients/tests/test-client.check-on-disk/test_004-025.expected \
+	clients/tests/test-client.check-on-disk/test_004-026.expected \
+	clients/tests/test-client.check-on-disk/test_004-027.expected \
+	clients/tests/test-client.check-on-disk/test_004-028.expected \
+	clients/tests/test-client.check-on-disk/test_004-029.expected \
+	clients/tests/test-client.check-on-disk/test_004-030.expected \
+	clients/tests/test-client.check-on-disk/test_004-031.expected \
+	clients/tests/test-client.check-on-disk/test_004-032.expected \
+	clients/tests/test-client.check-on-disk/test_004-033.expected \
+	clients/tests/test-client.check-on-disk/test_004-034.expected \
+	clients/tests/test-client.check-on-disk/test_004-035.expected \
+	clients/tests/test-client.check-on-disk/test_004-036.expected \
+	clients/tests/test-client.check-on-disk/test_004-037.expected \
+	clients/tests/test-client.check-on-disk/test_004-038.expected \
+	clients/tests/test-client.check-on-disk/test_004-039.expected \
+	clients/tests/test-client.check-on-disk/test_004-040.expected \
+	clients/tests/test-client.check-on-disk/test_004-041.expected \
+	clients/tests/test-client.check-on-disk/test_004-042.expected \
+	clients/tests/test-client.check-on-disk/test_004-043.expected \
+	clients/tests/test-client.check-on-disk/test_004-044.expected \
+	clients/tests/test-client.check-on-disk/test_004-045.expected \
+	clients/tests/test-client.check-on-disk/test_004-046.expected \
+	clients/tests/test-client.check-on-disk/test_004-047.expected \
+	clients/tests/test-client.check-on-disk/test_004-048.expected \
+	clients/tests/test-client.check-on-disk/test_004-049.expected \
+	clients/tests/test-client.check-on-disk/test_004-050.expected \
+	clients/tests/test-client.check-on-disk/test_004-051.expected \
+	clients/tests/test-client.check-on-disk/test_004-052.expected \
+	clients/tests/test-client.check-on-disk/test_004-053.expected \
+	clients/tests/test-client.check-on-disk/test_004-054.expected \
+	clients/tests/test-client.check-on-disk/test_004-055.expected \
+	clients/tests/test-client.check-on-disk/test_004-056.expected \
+	clients/tests/test-client.check-on-disk/test_004-057.expected \
+	clients/tests/test-client.check-on-disk/test_004-058.expected \
+	clients/tests/test-client.check-on-disk/test_004-059.expected \
+	clients/tests/test-client.check-on-disk/test_004-060.expected \
+	clients/tests/test-client.check-on-disk/test_004-061.expected \
+	clients/tests/test-client.check-on-disk/test_004-062.expected \
+	clients/tests/test-client.check-on-disk/test_004-063.expected \
+	clients/tests/test-client.check-on-disk/test_004-064.expected \
+	clients/tests/test-client.check-on-disk/test_004-065.expected \
+	clients/tests/test-client.check-on-disk/test_004-066.expected \
+	clients/tests/test-client.check-on-disk/test_004-067.expected \
+	clients/tests/test-client.check-on-disk/test_004-068.expected \
+	clients/tests/test-client.check-on-disk/test_004-069.expected \
+	clients/tests/test-client.check-on-disk/test_004-070.expected \
+	clients/tests/test-client.check-on-disk/test_004-071.expected \
+	clients/tests/test-client.check-on-disk/test_004-072.expected \
+	clients/tests/test-client.check-on-disk/test_004-073.expected \
+	clients/tests/test-client.check-on-disk/test_004-074.expected \
+	clients/tests/test-client.check-on-disk/test_004-075.expected \
+	clients/tests/test-client.check-on-disk/test_004-076.expected \
+	clients/tests/test-client.check-on-disk/test_004-077.expected \
+	clients/tests/test-client.check-on-disk/test_004-078.expected \
+	clients/tests/test-client.check-on-disk/test_004-079.expected \
+	clients/tests/test-client.check-on-disk/test_004-080.expected \
+	clients/tests/test-client.check-on-disk/test_004-081.expected \
+	clients/tests/test-client.check-on-disk/test_004-082.expected \
+	clients/tests/test-client.check-on-disk/test_004-083.expected \
+	clients/tests/test-client.check-on-disk/test_004-084.expected \
+	clients/tests/test-client.check-on-disk/test_004-085.expected \
+	clients/tests/test-client.check-on-disk/test_004-086.expected \
+	clients/tests/test-client.check-on-disk/test_004-087.expected \
+	clients/tests/test-client.check-on-disk/test_004-088.expected \
+	clients/tests/test-client.check-on-disk/test_004-089.expected \
+	clients/tests/test-client.check-on-disk/test_004-090.expected \
+	clients/tests/test-client.check-on-disk/test_004-091.expected \
+	clients/tests/test-client.check-on-disk/test_004-092.expected \
+	clients/tests/test-client.check-on-disk/test_004-093.expected \
+	clients/tests/test-client.check-on-disk/test_004-094.expected \
+	clients/tests/test-client.check-on-disk/test_004-095.expected \
+	clients/tests/test-client.check-on-disk/test_004-096.expected \
+	clients/tests/test-client.check-on-disk/test_004-097.expected \
+	clients/tests/test-client.check-on-disk/test_004-098.expected \
+	clients/tests/test-client.check-on-disk/test_004-099.expected \
+	clients/tests/test-client.check-on-disk/test_004-100.expected \
+	clients/tests/test-client.check-on-disk/test_004-101.expected \
+	clients/tests/test-client.check-on-disk/test_004-102.expected \
+	clients/tests/test-client.check-on-disk/test_004-103.expected \
+	clients/tests/test-client.check-on-disk/test_004-104.expected \
+	clients/tests/test-client.check-on-disk/test_004-105.expected \
+	clients/tests/test-client.check-on-disk/test_004-106.expected \
+	clients/tests/test-client.check-on-disk/test_004-107.expected \
+	clients/tests/test-client.check-on-disk/test_004-108.expected \
+	clients/tests/test-client.check-on-disk/test_004-109.expected \
+	clients/tests/test-client.check-on-disk/test_004-110.expected \
+	clients/tests/test-client.check-on-disk/test_004-111.expected \
+	clients/tests/test-client.check-on-disk/test_004-112.expected \
+	clients/tests/test-client.check-on-disk/test_004-113.expected \
+	clients/tests/test-client.check-on-disk/test_004-114.expected \
+	clients/tests/test-client.check-on-disk/test_004-115.expected \
+	clients/tests/test-client.check-on-disk/test_004-116.expected \
+	clients/tests/test-client.check-on-disk/test_004-117.expected \
+	clients/tests/test-client.check-on-disk/test_004-118.expected \
+	clients/tests/test-client.check-on-disk/test_004-119.expected \
+	clients/tests/test-client.check-on-disk/test_004-120.expected \
+	clients/tests/test-client.check-on-disk/test_004-121.expected \
+	clients/tests/test-client.check-on-disk/test_004-122.expected \
+	clients/tests/test-client.check-on-disk/test_004-123.expected \
+	clients/tests/test-client.check-on-disk/test_004-124.expected \
+	clients/tests/test-client.check-on-disk/test_004-125.expected \
+	clients/tests/test-client.check-on-disk/test_004-126.expected \
+	clients/tests/test-client.check-on-disk/test_004-127.expected \
+	clients/tests/test-client.check-on-disk/test_004-128.expected \
+	clients/tests/test-client.check-on-disk/test_004-129.expected \
+	clients/tests/test-client.check-on-disk/test_004-130.expected \
+	clients/tests/test-client.check-on-disk/test_004-131.expected \
+	clients/tests/test-client.check-on-disk/test_004-132.expected \
+	clients/tests/test-client.check-on-disk/test_004-133.expected \
+	clients/tests/test-client.check-on-disk/test_004-134.expected \
+	clients/tests/test-client.check-on-disk/test_004-135.expected \
+	clients/tests/test-client.check-on-disk/test_004-136.expected \
+	clients/tests/test-client.check-on-disk/test_004-137.expected \
+	clients/tests/test-client.check-on-disk/test_004-138.expected \
+	clients/tests/test-client.check-on-disk/test_004-139.expected \
+	clients/tests/test-client.check-on-disk/test_004-140.expected \
+	clients/tests/test-client.check-on-disk/test_004-141.expected \
+	clients/tests/test-client.check-on-disk/test_004-142.expected \
+	clients/tests/test-client.check-on-disk/test_004-143.expected \
+	clients/tests/test-client.check-on-disk/test_004-144.expected \
+	clients/tests/test-client.check-on-disk/test_004-145.expected \
+	clients/tests/test-client.check-on-disk/test_004-146.expected \
+	clients/tests/test-client.check-on-disk/test_004-147.expected \
+	clients/tests/test-client.check-on-disk/test_004-148.expected \
+	clients/tests/test-client.check-on-disk/test_004-149.expected \
+	clients/tests/test-client.check-on-disk/test_004-150.expected \
+	clients/tests/test-client.check-on-disk/test_004-151.expected \
+	clients/tests/test-client.check-on-disk/test_004-152.expected \
+	clients/tests/test-client.check-on-disk/test_004-153.expected \
+	clients/tests/test-client.check-on-disk/test_004-154.expected \
+	clients/tests/test-client.check-on-disk/test_004-155.expected \
+	clients/tests/test-client.check-on-disk/test_004-156.expected \
+	clients/tests/test-client.check-on-disk/test_004-157.expected \
+	clients/tests/test-client.check-on-disk/test_004-158.expected \
+	clients/tests/test-client.check-on-disk/test_004-159.expected \
+	clients/tests/test-client.check-on-disk/test_004-160.expected \
+	clients/tests/test-client.check-on-disk/test_004-161.expected \
+	clients/tests/test-client.check-on-disk/test_004-162.expected \
+	clients/tests/test-client.check-on-disk/test_004-163.expected \
+	clients/tests/test-client.check-on-disk/test_004-164.expected \
+	clients/tests/test-client.check-on-disk/test_004-165.expected \
+	clients/tests/test-client.check-on-disk/test_004-166.expected \
+	clients/tests/test-client.check-on-disk/test_004-167.expected \
+	clients/tests/test-client.check-on-disk/test_004-168.expected \
+	clients/tests/test-client.check-on-disk/test_004-169.expected \
+	clients/tests/test-client.check-on-disk/test_004-170.expected \
+	clients/tests/test-client.check-on-disk/test_004-171.expected \
+	clients/tests/test-client.check-on-disk/test_004-172.expected \
+	clients/tests/test-client.check-on-disk/test_004-173.expected \
+	clients/tests/test-client.check-on-disk/test_004-174.expected \
+	clients/tests/test-client.check-on-disk/test_004-175.expected \
+	clients/tests/test-client.check-on-disk/test_004-176.expected \
+	clients/tests/test-client.check-on-disk/test_004-177.expected \
+	clients/tests/test-client.check-on-disk/test_004-178.expected \
+	clients/tests/test-client.check-on-disk/test_004-179.expected \
+	clients/tests/test-client.check-on-disk/test_004-180.expected \
+	clients/tests/test-client.check-on-disk/test_004-181.expected \
+	clients/tests/test-client.check-on-disk/test_004-182.expected \
+	clients/tests/test-client.check-on-disk/test_004-183.expected \
+	clients/tests/test-client.check-on-disk/test_004-184.expected \
+	clients/tests/test-client.check-on-disk/test_004-185.expected \
+	clients/tests/test-client.check-on-disk/test_004-186.expected \
+	clients/tests/test-client.check-on-disk/test_004-187.expected \
+	clients/tests/test-client.check-on-disk/test_004-188.expected \
+	clients/tests/test-client.check-on-disk/test_004-189.expected \
+	clients/tests/test-client.check-on-disk/test_004-190.expected \
+	clients/tests/test-client.check-on-disk/test_004-191.expected \
+	clients/tests/test-client.check-on-disk/test_004-192.expected \
+	clients/tests/test-client.check-on-disk/test_004-193.expected \
+	clients/tests/test-client.check-on-disk/test_004-194.expected \
+	clients/tests/test-client.check-on-disk/test_004-195.expected \
+	clients/tests/test-client.check-on-disk/test_004-196.expected \
+	clients/tests/test-client.check-on-disk/test_004-197.expected \
+	clients/tests/test-client.check-on-disk/test_004-198.expected \
+	clients/tests/test-client.check-on-disk/test_004-199.expected \
+	clients/tests/test-client.check-on-disk/test_004-200.expected \
+	clients/tests/test-client.check-on-disk/test_004-201.expected \
+	clients/tests/test-client.check-on-disk/test_004-202.expected \
+	clients/tests/test-client.check-on-disk/test_004-203.expected \
+	clients/tests/test-client.check-on-disk/test_004-204.expected \
 	$(NULL)
 
 
@@ -6483,8 +6741,8 @@ data_edit = sed \
 @WITH_LEGACY_LIBRARIES_TRUE@	-DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_LIBNM_UTIL \
 @WITH_LEGACY_LIBRARIES_TRUE@	-DNMLOCALEDIR=\"$(nmlocaledir)\" \
 @WITH_LEGACY_LIBRARIES_TRUE@	$(GLIB_CFLAGS) $(DBUS_CFLAGS) \
-@WITH_LEGACY_LIBRARIES_TRUE@	$(UUID_CFLAGS) $(am__append_73) \
-@WITH_LEGACY_LIBRARIES_TRUE@	$(am__append_76)
+@WITH_LEGACY_LIBRARIES_TRUE@	$(UUID_CFLAGS) $(am__append_74) \
+@WITH_LEGACY_LIBRARIES_TRUE@	$(am__append_77)
 @WITH_LEGACY_LIBRARIES_TRUE@libnm_util_lib_h_pub_real = \
 @WITH_LEGACY_LIBRARIES_TRUE@	shared/nm-version-macros.h \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-util/NetworkManager.h \
@@ -6572,7 +6830,7 @@ data_edit = sed \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-util/nm-setting-vpn.c \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-util/nm-utils.c \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-util/nm-value-transforms.c \
-@WITH_LEGACY_LIBRARIES_TRUE@	$(am__append_74) $(am__append_77)
+@WITH_LEGACY_LIBRARIES_TRUE@	$(am__append_75) $(am__append_78)
 @WITH_LEGACY_LIBRARIES_TRUE@libnm_util_lib_c_mkenums = \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-util/nm-utils-enum-types.c
 
@@ -6589,19 +6847,19 @@ data_edit = sed \
 @WITH_LEGACY_LIBRARIES_TRUE@nm_utils_enum_types_sources = $(filter-out libnm-util/NetworkManager%,$(libnm_util_lib_h_pub_real))
 @WITH_LEGACY_LIBRARIES_TRUE@libnm_util_libnm_util_la_LIBADD =  \
 @WITH_LEGACY_LIBRARIES_TRUE@	$(GLIB_LIBS) $(DBUS_LIBS) \
-@WITH_LEGACY_LIBRARIES_TRUE@	$(UUID_LIBS) $(am__append_75) \
-@WITH_LEGACY_LIBRARIES_TRUE@	$(am__append_78)
+@WITH_LEGACY_LIBRARIES_TRUE@	$(UUID_LIBS) $(am__append_76) \
+@WITH_LEGACY_LIBRARIES_TRUE@	$(am__append_79)
 @WITH_LEGACY_LIBRARIES_TRUE@libnm_util_libnm_util_la_LDFLAGS = \
 @WITH_LEGACY_LIBRARIES_TRUE@	-Wl,--version-script=$(srcdir)/libnm-util/libnm-util.ver \
 @WITH_LEGACY_LIBRARIES_TRUE@	-version-info "9:0:7"
 
 @WITH_LEGACY_LIBRARIES_TRUE@libnm_util_libtest_crypto_la_SOURCES =  \
 @WITH_LEGACY_LIBRARIES_TRUE@	libnm-util/crypto.c \
-@WITH_LEGACY_LIBRARIES_TRUE@	$(am__append_81) $(am__append_83)
+@WITH_LEGACY_LIBRARIES_TRUE@	$(am__append_82) $(am__append_84)
 @WITH_LEGACY_LIBRARIES_TRUE@libnm_util_libtest_crypto_la_CPPFLAGS = $(libnm_util_cppflags)
 @WITH_LEGACY_LIBRARIES_TRUE@libnm_util_libtest_crypto_la_LIBADD =  \
-@WITH_LEGACY_LIBRARIES_TRUE@	$(GLIB_LIBS) $(am__append_82) \
-@WITH_LEGACY_LIBRARIES_TRUE@	$(am__append_84)
+@WITH_LEGACY_LIBRARIES_TRUE@	$(GLIB_LIBS) $(am__append_83) \
+@WITH_LEGACY_LIBRARIES_TRUE@	$(am__append_85)
 @HAVE_INTROSPECTION_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@libnm_util_NetworkManager_1_0_gir_INCLUDES = GObject-2.0 DBusGLib-1.0
 @HAVE_INTROSPECTION_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@libnm_util_NetworkManager_1_0_gir_PACKAGES = gobject-2.0 dbus-glib-1
 @HAVE_INTROSPECTION_TRUE@@WITH_LEGACY_LIBRARIES_TRUE@libnm_util_NetworkManager_1_0_gir_EXPORT_PACKAGES = libnm-util
@@ -9883,6 +10141,41 @@ src/tests/src_tests_test_wired_defname-test-wired-defname.$(OBJEXT):  \
 src/tests/test-wired-defname$(EXEEXT): $(src_tests_test_wired_defname_OBJECTS) $(src_tests_test_wired_defname_DEPENDENCIES) $(EXTRA_src_tests_test_wired_defname_DEPENDENCIES) src/tests/$(am__dirstamp)
 	@rm -f src/tests/test-wired-defname$(EXEEXT)
 	$(AM_V_CCLD)$(src_tests_test_wired_defname_LINK) $(src_tests_test_wired_defname_OBJECTS) $(src_tests_test_wired_defname_LDADD) $(LIBS)
+install-dist_libexecSCRIPTS: $(dist_libexec_SCRIPTS)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_libexec_SCRIPTS)'; test -n "$(libexecdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \
+	     } \
+	; done
+
+uninstall-dist_libexecSCRIPTS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_libexec_SCRIPTS)'; test -n "$(libexecdir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	dir='$(DESTDIR)$(libexecdir)'; $(am__uninstall_files_from_dir)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -17427,13 +17720,13 @@ check-am: all-am
 	$(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local
 check: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) check-recursive
-all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(PROGRAMS) $(MANS) \
-		$(DATA) $(HEADERS) config.h
+all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) \
+		$(MANS) $(DATA) $(HEADERS) config.h
 install-binPROGRAMS: install-libLTLIBRARIES
 
 installdirs: installdirs-recursive
 installdirs-am:
-	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(plugindir)" "$(DESTDIR)$(pppd_plugindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man7dir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(dbusactivationdir)" "$(DESTDIR)$(dbusinterfacesdir)" "$(DESTDIR)$(dbusservicedir)" "$(DESTDIR)$(examplesdir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(polkit_policydir)" "$(DESTDIR)$(servicedir)" "$(DESTDIR)$(systemdnmunitdir)" "$(DESTDIR)$(systemdsystemunitdir)" "$(DESTDIR)$(typelibdir)" "$(DESTDIR)$(udevrulesdir)" "$(DESTDIR)$(vapidir)" "$(DESTDIR)$(libdeprecateddir)" "$(DESTDIR)$(libnm_glib_libnmincludedir)" "$(DESTDIR)$(libnm_glib_libnmvpndir)" "$(DESTDIR)$(libnm_util_libnm_util_includedir)" "$(DESTDIR)$(libnmincludedir)" "$(DESTDIR)$(libnm_glib_libnmincludedir)" "$(DESTDIR)$(libnm_glib_libnmvpndir)" "$(DESTDIR)$(libnm_util_libnm_util_includedir)" "$(DESTDIR)$(libnmincludedir)"; do \
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(plugindir)" "$(DESTDIR)$(pppd_plugindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man7dir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(dbusactivationdir)" "$(DESTDIR)$(dbusinterfacesdir)" "$(DESTDIR)$(dbusservicedir)" "$(DESTDIR)$(examplesdir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(polkit_policydir)" "$(DESTDIR)$(servicedir)" "$(DESTDIR)$(systemdnmunitdir)" "$(DESTDIR)$(systemdsystemunitdir)" "$(DESTDIR)$(typelibdir)" "$(DESTDIR)$(udevrulesdir)" "$(DESTDIR)$(vapidir)" "$(DESTDIR)$(libdeprecateddir)" "$(DESTDIR)$(libnm_glib_libnmincludedir)" "$(DESTDIR)$(libnm_glib_libnmvpndir)" "$(DESTDIR)$(libnm_util_libnm_util_includedir)" "$(DESTDIR)$(libnmincludedir)" "$(DESTDIR)$(libnm_glib_libnmincludedir)" "$(DESTDIR)$(libnm_glib_libnmvpndir)" "$(DESTDIR)$(libnm_util_libnm_util_includedir)" "$(DESTDIR)$(libnmincludedir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: $(BUILT_SOURCES)
@@ -17653,8 +17946,9 @@ install-dvi: install-dvi-recursive
 
 install-dvi-am:
 
-install-exec-am: install-binPROGRAMS install-libLTLIBRARIES \
-	install-libexecPROGRAMS install-sbinPROGRAMS
+install-exec-am: install-binPROGRAMS install-dist_libexecSCRIPTS \
+	install-libLTLIBRARIES install-libexecPROGRAMS \
+	install-sbinPROGRAMS
 	@$(NORMAL_INSTALL)
 	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
 install-html: install-html-recursive
@@ -17699,9 +17993,9 @@ ps-am:
 
 uninstall-am: uninstall-binPROGRAMS uninstall-dbusactivationDATA \
 	uninstall-dbusinterfacesDATA uninstall-dbusserviceDATA \
-	uninstall-examplesDATA uninstall-girDATA \
-	uninstall-libLTLIBRARIES uninstall-libdeprecatedHEADERS \
-	uninstall-libexecPROGRAMS \
+	uninstall-dist_libexecSCRIPTS uninstall-examplesDATA \
+	uninstall-girDATA uninstall-libLTLIBRARIES \
+	uninstall-libdeprecatedHEADERS uninstall-libexecPROGRAMS \
 	uninstall-libnm_glib_libnmincludeHEADERS \
 	uninstall-libnm_glib_libnmvpnHEADERS \
 	uninstall-libnm_util_libnm_util_includeHEADERS \
@@ -17738,12 +18032,13 @@ uninstall-man: uninstall-man1 uninstall-man5 uninstall-man7 \
 	distuninstallcheck dvi dvi-am html html-am info info-am \
 	install install-am install-binPROGRAMS install-data \
 	install-data-am install-data-hook install-dbusactivationDATA \
-	install-dbusinterfacesDATA install-dbusserviceDATA install-dvi \
-	install-dvi-am install-examplesDATA install-exec \
-	install-exec-am install-exec-hook install-girDATA install-html \
-	install-html-am install-info install-info-am \
-	install-libLTLIBRARIES install-libdeprecatedHEADERS \
-	install-libexecPROGRAMS install-libnm_glib_libnmincludeHEADERS \
+	install-dbusinterfacesDATA install-dbusserviceDATA \
+	install-dist_libexecSCRIPTS install-dvi install-dvi-am \
+	install-examplesDATA install-exec install-exec-am \
+	install-exec-hook install-girDATA install-html install-html-am \
+	install-info install-info-am install-libLTLIBRARIES \
+	install-libdeprecatedHEADERS install-libexecPROGRAMS \
+	install-libnm_glib_libnmincludeHEADERS \
 	install-libnm_glib_libnmvpnHEADERS \
 	install-libnm_util_libnm_util_includeHEADERS \
 	install-libnmincludeHEADERS install-man install-man1 \
@@ -17764,9 +18059,9 @@ uninstall-man: uninstall-man1 uninstall-man5 uninstall-man7 \
 	recheck tags tags-am uninstall uninstall-am \
 	uninstall-binPROGRAMS uninstall-dbusactivationDATA \
 	uninstall-dbusinterfacesDATA uninstall-dbusserviceDATA \
-	uninstall-examplesDATA uninstall-girDATA uninstall-hook \
-	uninstall-libLTLIBRARIES uninstall-libdeprecatedHEADERS \
-	uninstall-libexecPROGRAMS \
+	uninstall-dist_libexecSCRIPTS uninstall-examplesDATA \
+	uninstall-girDATA uninstall-hook uninstall-libLTLIBRARIES \
+	uninstall-libdeprecatedHEADERS uninstall-libexecPROGRAMS \
 	uninstall-libnm_glib_libnmincludeHEADERS \
 	uninstall-libnm_glib_libnmvpnHEADERS \
 	uninstall-libnm_util_libnm_util_includeHEADERS \
diff --git a/NEWS b/NEWS
index 533b46a1..16d40889 100644
--- a/NEWS
+++ b/NEWS
@@ -1,50 +1,64 @@
 =============================================
-NetworkManager-1.?? (not released yet)
+NetworkManager-1.11.90 (1.12-rc1)
 Overview of changes since NetworkManager-1.10
 =============================================
 
-This is a snapshot of NetworkManager 1.10 development series.
+This is a release candidate of NetworkManager 1.12.0.
 USE AT YOUR OWN RISK.  NOT RECOMMENDED FOR PRODUCTION USE!
 
-Notable changes included in this snapshot so far include:
+Notable changes include:
 
 * Improved support for configuration checkpoint, including support in libnm.
 * Added capability to set IP Tunnel configuration flags.
 * The systemd-resolved DNS plugins now supports MDNS.
 * systemd-resolved and dnsmasq DNS plugins now honor the DNS priority setting.
 * Wi-Fi devices now support FILS for speedier roaming support.
-* Add support for "onlink" routes
+* Drop dependency on libnl3 library.
+* Add support for "onlink" routes.
 * More robust connectivity checking.
-* Dropped the obsolete "ifnet" settings plugin
+* Dropped the obsolete "ifnet" settings plugin,
 * Try harder to generate reasonable human-readable names for devices even if
   the hwdb contains garbage.
 * Add an "overview" option to hide default values in nmcli, resulting in more
   concise output.
 * Reworked the inner workings of D-Bus interface for better resource efficiency.
 * Add support for configuring nmcli coloring via terminal-colors.d(5).
-* Added experimental support for Meson build system
-* Added initial IWD Wi-Fi daemon support
+* Added experimental support for Meson build system,
+* Added initial IWD Wi-Fi daemon support.
 * A non-hexadecimal DHCPv4 client-id is now properly passed to
   dhclient with the first byte (type) set to zero, as stated in the
   documentation. This represents a change in behavior since previous
   versions where the first character of the string was used as
   type. The internal client is not affected by the change.
+* DNS setting rc-manager=file now always follows dangling symlinks
+  instead of replacing /etc/resolv.conf with a plain file.
+* Added wake_on_wlan connection setting to configure
+  wake-on-wireless-lan (WoWLAN).
+* The libnm-glib library, deprecated in favor of libnm since NetworkManager 1.0,
+  is now not built by default. While it can still be enabled, the distributions
+  should have a good plan for removing it if they need to keep shipping it at
+  this point.
+* nmcli now scans for Wi-Fi networks before displaying them, if the last scan
+  was too long ago.
+* Added the ipv6.dhcp-duid property to allow configuring the DHCPv6 DUID
+* Extended ipv6.dhcp-client-id property to support DHCP client identifers
+  depending on the MAC address and the stable ID.
 
 The following features were backported to 1.10.x releases from 1.10.0 to
 1.10.8 are also present in NetworkManager-1.12:
 
-* Fix connectivity timeout handling (bgo #794464)
-* Retry activating devices when the parent becomes managed (rh #1553595)
-* Correctly set the rp_filter value (rh #1565529)
-* A fix to ensure teamd is respawned after daemon restart (rh #1551958)
-* Better handle DHCP expiry (bgo #783391)
-* Fix configuration of IPv6 over master interfaces (rh #1575944)
-* ovs: fix compilation issue of OVS plugin and various fixes
-* team: add support for team runner "random"
-* core: cleanup activation of device (rh #1537160)
-* dhcp: retry indefinitely to renew the lease (rh #1503587)
-* core: fix blocking autoconnect for no-secrets (rh #794014)
-* libnm: mark async results as cancelled (bgo #794088)
+* Fix connectivity timeout handling (bgo #794464),
+* Retry activating devices when the parent becomes managed (rh #1553595),
+* Correctly set the rp_filter value (rh #1565529).
+* A fix to ensure teamd is respawned after daemon restart (rh #1551958).
+* Better handle DHCP expiry (bgo #783391).
+* Fix configuration of IPv6 over master interfaces (rh #1575944).
+* ovs: fix compilation issue of OVS plugin and various fixes.
+* team: add support for team runner "random".
+* core: cleanup activation of device (rh #1537160).
+* dhcp: retry indefinitely to renew the lease (rh #1503587).
+* core: fix blocking autoconnect for no-secrets (rh #794014).
+* libnm: mark async results as cancelled (bgo #794088).
 * Load jansson at runtime. This solves a clash with json-glib that caused
     a gnome-control-center crash, but also gets rid of a hard dependency.
 * Correct nmcli exit values after receiving a signal.
diff --git a/autogen.sh b/autogen.sh
index 9bb02948..836bb603 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -28,5 +28,5 @@ AUTOPOINT='intltoolize --automake --copy' autoreconf --force --install --verbose
 
 cd $olddir
 if test -z "$NOCONFIGURE"; then
-	exec $srcdir/configure --enable-maintainer-mode --enable-more-warnings=error --enable-gtk-doc --enable-introspection "$@"
+	exec $srcdir/configure --enable-maintainer-mode --enable-more-warnings=error --enable-gtk-doc --enable-introspection --with-libnm-glib "$@"
 fi
diff --git a/clients/cli/common.c b/clients/cli/common.c
index e566de47..09c86334 100644
--- a/clients/cli/common.c
+++ b/clients/cli/common.c
@@ -49,6 +49,9 @@ _ip_config_get_routes (NMIPConfig *cfg)
 	if (!ptr_array)
 		return NULL;
 
+	if (ptr_array->len == 0)
+		return NULL;
+
 	arr = g_new (char *, ptr_array->len + 1);
 	for (i = 0; i < ptr_array->len; i++) {
 		NMIPRoute *route = g_ptr_array_index (ptr_array, i);
@@ -384,7 +387,7 @@ print_dhcp_config (NMDhcpConfig *dhcp,
 /*
  * nmc_find_connection:
  * @connections: array of NMConnections to search in
- * @filter_type: "id", "uuid", "path" or %NULL
+ * @filter_type: "id", "uuid", "path", "filename", or %NULL
  * @filter_val: connection to find (connection name, UUID or path)
  * @out_result: if not NULL, attach all matching connection to this
  *   list. If necessary, a new array will be allocated. If the array
@@ -452,6 +455,14 @@ nmc_find_connection (const GPtrArray *connections,
 				goto found;
 		}
 
+		if (NM_IN_STRSET (filter_type, NULL, "filename")) {
+			v = nm_remote_connection_get_filename (NM_REMOTE_CONNECTION (connections->pdata[i]));
+			if (complete && (filter_type || *filter_val))
+				nmc_complete_strings (filter_val, v, NULL);
+			if (nm_streq0 (filter_val, v))
+				goto found;
+		}
+
 		continue;
 found:
 		if (!out_result)
@@ -523,6 +534,14 @@ nmc_find_active_connection (const GPtrArray *active_cons,
 				goto found;
 		}
 
+		if (NM_IN_STRSET (filter_type, NULL, "filename")) {
+			v = nm_remote_connection_get_filename (con);
+			if (complete && (filter_type || *filter_val))
+				nmc_complete_strings (filter_val, v, NULL);
+			if (nm_streq0 (filter_val, v))
+				goto found;
+		}
+
 		if (NM_IN_STRSET (filter_type, NULL, "apath")) {
 			v = nm_object_get_path (NM_OBJECT (candidate));
 			v_num = nm_utils_dbus_path_get_last_component (v);
diff --git a/clients/cli/connections.c b/clients/cli/connections.c
index a4f129b6..1563178d 100644
--- a/clients/cli/connections.c
+++ b/clients/cli/connections.c
@@ -101,27 +101,57 @@ NM_UTILS_LOOKUP_STR_DEFINE_STATIC (vpn_connection_state_to_string, NMVpnConnecti
  * prefers an alias instead of the settings name when in pretty print mode.
  * That is so that we print "wifi" instead of "802-11-wireless" in "nmcli c". */
 static const char *
-connection_type_pretty (const char *type, NMCPrintOutput print_output)
+connection_type_to_display (const char *type, NMMetaAccessorGetType get_type)
 {
 	const NMMetaSettingInfoEditor *editor;
 	int i;
 
-	if (print_output == NMC_PRINT_TERSE)
+	nm_assert (NM_IN_SET (get_type, NM_META_ACCESSOR_GET_TYPE_PRETTY, NM_META_ACCESSOR_GET_TYPE_PARSABLE));
+
+	if (!type)
+		return NULL;
+
+	if (get_type != NM_META_ACCESSOR_GET_TYPE_PRETTY)
 		return type;
 
 	for (i = 0; i < _NM_META_SETTING_TYPE_NUM; i++) {
 		editor = &nm_meta_setting_infos_editor[i];
-		if (strcmp (type, editor->general->setting_name) == 0) {
-			if (editor->alias)
-				return editor->alias;
-			break;
-		}
+		if (nm_streq (type, editor->general->setting_name))
+			return editor->alias ?: type;
 	}
-
 	return type;
 }
 
-/* Caller has to free the returned string */
+static int
+active_connection_get_state_ord (NMActiveConnection *active)
+{
+	/* returns an integer related to @active's state, that can be used for sorting
+	 * active connections based on their activation state. */
+	if (!active)
+		return -2;
+
+	switch (nm_active_connection_get_state (active)) {
+	case NM_ACTIVE_CONNECTION_STATE_UNKNOWN:      return 0;
+	case NM_ACTIVE_CONNECTION_STATE_DEACTIVATED:  return 1;
+	case NM_ACTIVE_CONNECTION_STATE_DEACTIVATING: return 2;
+	case NM_ACTIVE_CONNECTION_STATE_ACTIVATING:   return 3;
+	case NM_ACTIVE_CONNECTION_STATE_ACTIVATED:    return 4;
+	}
+	return -1;
+}
+
+static int
+active_connection_cmp (NMActiveConnection *ac_a, NMActiveConnection *ac_b)
+{
+	NM_CMP_SELF (ac_a, ac_b);
+	NM_CMP_DIRECT (active_connection_get_state_ord (ac_b),
+	               active_connection_get_state_ord (ac_a));
+	NM_CMP_DIRECT_STRCMP0 (nm_active_connection_get_id (ac_a), nm_active_connection_get_id (ac_b));
+	NM_CMP_DIRECT_STRCMP0 (nm_active_connection_get_connection_type (ac_a), nm_active_connection_get_connection_type (ac_b));
+	NM_CMP_DIRECT_STRCMP0 (nm_object_get_path (NM_OBJECT (ac_a)), nm_object_get_path (NM_OBJECT (ac_b)));
+	return 0;
+}
+
 static char *
 get_ac_device_string (NMActiveConnection *active)
 {
@@ -152,41 +182,451 @@ get_ac_device_string (NMActiveConnection *active)
 
 /*****************************************************************************/
 
-const NmcMetaGenericInfo *const nmc_fields_con_show[] = {
-	NMC_META_GENERIC ("NAME"),                  /* 0 */
-	NMC_META_GENERIC ("UUID"),                  /* 1 */
-	NMC_META_GENERIC ("TYPE"),                  /* 2 */
-	NMC_META_GENERIC ("TIMESTAMP"),             /* 3 */
-	NMC_META_GENERIC ("TIMESTAMP-REAL"),        /* 4 */
-	NMC_META_GENERIC ("AUTOCONNECT"),           /* 5 */
-	NMC_META_GENERIC ("AUTOCONNECT-PRIORITY"),  /* 6 */
-	NMC_META_GENERIC ("READONLY"),              /* 7 */
-	NMC_META_GENERIC ("DBUS-PATH"),             /* 8 */
-	NMC_META_GENERIC ("ACTIVE"),                /* 9 */
-	NMC_META_GENERIC ("DEVICE"),                /* 10 */
-	NMC_META_GENERIC ("STATE"),                 /* 11 */
-	NMC_META_GENERIC ("ACTIVE-PATH"),           /* 12 */
-	NMC_META_GENERIC ("SLAVE"),                 /* 13 */
-	NULL,
+/* FIXME: The same or similar code for VPN info appears also in nm-applet (applet-dialogs.c),
+ * and in gnome-control-center as well. It could probably be shared somehow. */
+
+static char *
+get_vpn_connection_type (NMConnection *connection)
+{
+	const char *type, *p;
+
+	/* The service type is in form of "org.freedesktop.NetworkManager.vpnc".
+	 * Extract end part after last dot, e.g. "vpnc"
+	 */
+	type = nm_setting_vpn_get_service_type (nm_connection_get_setting_vpn (connection));
+	p = strrchr (type, '.');
+	return g_strdup (p ? p + 1 : type);
+}
+
+/* VPN parameters can be found at:
+ * http://git.gnome.org/browse/network-manager-openvpn/tree/src/nm-openvpn-service.h
+ * http://git.gnome.org/browse/network-manager-vpnc/tree/src/nm-vpnc-service.h
+ * http://git.gnome.org/browse/network-manager-pptp/tree/src/nm-pptp-service.h
+ * http://git.gnome.org/browse/network-manager-openconnect/tree/src/nm-openconnect-service.h
+ * http://git.gnome.org/browse/network-manager-openswan/tree/src/nm-openswan-service.h
+ * See also 'properties' directory in these plugins.
+ */
+static const gchar *
+find_vpn_gateway_key (const char *vpn_type)
+{
+	if (g_strcmp0 (vpn_type, "openvpn") == 0)     return "remote";
+	if (g_strcmp0 (vpn_type, "vpnc") == 0)        return "IPSec gateway";
+	if (g_strcmp0 (vpn_type, "pptp") == 0)        return "gateway";
+	if (g_strcmp0 (vpn_type, "openconnect") == 0) return "gateway";
+	if (g_strcmp0 (vpn_type, "openswan") == 0)    return "right";
+	if (g_strcmp0 (vpn_type, "libreswan") == 0)   return "right";
+	if (g_strcmp0 (vpn_type, "ssh") == 0)         return "remote";
+	if (g_strcmp0 (vpn_type, "l2tp") == 0)        return "gateway";
+	return "";
+}
+
+static const gchar *
+find_vpn_username_key (const char *vpn_type)
+{
+	if (g_strcmp0 (vpn_type, "openvpn") == 0)     return "username";
+	if (g_strcmp0 (vpn_type, "vpnc") == 0)        return "Xauth username";
+	if (g_strcmp0 (vpn_type, "pptp") == 0)        return "user";
+	if (g_strcmp0 (vpn_type, "openconnect") == 0) return "username";
+	if (g_strcmp0 (vpn_type, "openswan") == 0)    return "leftxauthusername";
+	if (g_strcmp0 (vpn_type, "libreswan") == 0)   return "leftxauthusername";
+	if (g_strcmp0 (vpn_type, "l2tp") == 0)        return "user";
+	return "";
+}
+
+enum VpnDataItem {
+	VPN_DATA_ITEM_GATEWAY,
+	VPN_DATA_ITEM_USERNAME
+};
+
+static const gchar *
+get_vpn_data_item (NMConnection *connection, enum VpnDataItem vpn_data_item)
+{
+	const char *key;
+	gs_free char *type = NULL;
+
+	type = get_vpn_connection_type (connection);
+
+	switch (vpn_data_item) {
+	case VPN_DATA_ITEM_GATEWAY:
+		key = find_vpn_gateway_key (type);
+		break;
+	case VPN_DATA_ITEM_USERNAME:
+		key = find_vpn_username_key (type);
+		break;
+	default:
+		key = "";
+		break;
+	}
+
+	return nm_setting_vpn_get_data_item (nm_connection_get_setting_vpn (connection), key);
+}
+
+/*****************************************************************************/
+
+typedef struct {
+	NMConnection *connection;
+	NMActiveConnection *primary_active;
+	GPtrArray *all_active;
+	bool show_active_fields;
+} MetagenConShowRowData;
+
+static MetagenConShowRowData *
+_metagen_con_show_row_data_new_for_connection (NMRemoteConnection *connection, gboolean show_active_fields)
+{
+	MetagenConShowRowData *row_data;
+
+	row_data = g_slice_new0 (MetagenConShowRowData);
+	row_data->connection = g_object_ref (NM_CONNECTION (connection));
+	row_data->show_active_fields = show_active_fields;
+	return row_data;
+}
+
+static MetagenConShowRowData *
+_metagen_con_show_row_data_new_for_active_connection (NMRemoteConnection *connection, NMActiveConnection *active, gboolean show_active_fields)
+{
+	MetagenConShowRowData *row_data;
+
+	row_data = g_slice_new0 (MetagenConShowRowData);
+	if (connection)
+		row_data->connection = g_object_ref (NM_CONNECTION (connection));
+	row_data->primary_active = g_object_ref (active);
+	row_data->show_active_fields = show_active_fields;
+	return row_data;
+}
+
+static void
+_metagen_con_show_row_data_add_active_connection (MetagenConShowRowData *row_data, NMActiveConnection *active)
+{
+	if (!row_data->primary_active) {
+		row_data->primary_active = g_object_ref (active);
+		return;
+	}
+	if (!row_data->all_active) {
+		row_data->all_active = g_ptr_array_new_with_free_func (g_object_unref);
+		g_ptr_array_add (row_data->all_active, g_object_ref (row_data->primary_active));
+	}
+	g_ptr_array_add (row_data->all_active, g_object_ref (active));
+}
+
+static void
+_metagen_con_show_row_data_init_primary_active (MetagenConShowRowData *row_data)
+{
+	NMActiveConnection *ac, *best_ac;
+	guint i;
+
+	if (!row_data->all_active)
+		return;
+
+	best_ac = row_data->all_active->pdata[0];
+	for (i = 1; i < row_data->all_active->len; i++) {
+		ac = row_data->all_active->pdata[i];
+
+		if (active_connection_get_state_ord (ac) > active_connection_get_state_ord (best_ac))
+			best_ac = ac;
+	}
+
+	if (row_data->primary_active != best_ac) {
+		g_object_unref (row_data->primary_active);
+		row_data->primary_active = g_object_ref (best_ac);
+	}
+	g_clear_pointer (&row_data->all_active, g_ptr_array_unref);
+}
+
+static void
+_metagen_con_show_row_data_destroy (gpointer data)
+{
+	MetagenConShowRowData *row_data = data;
+
+	if (!row_data)
+		return;
+
+	g_clear_object (&row_data->connection);
+	g_clear_object (&row_data->primary_active);
+	g_clear_pointer (&row_data->all_active, g_ptr_array_unref);
+	g_slice_free (MetagenConShowRowData, row_data);
+}
+
+static const char *
+_con_show_fcn_get_id (NMConnection *c, NMActiveConnection *ac)
+{
+	NMSettingConnection *s_con = NULL;
+	const char *s;
+
+	if (c)
+		s_con = nm_connection_get_setting_connection (c);
+
+	s = s_con ? nm_setting_connection_get_id (s_con) : NULL;
+	if (!s && ac) {
+		/* note that if we have no s_con, that usually means that the user has no permissions
+		 * to see the connection. We still fall to get the ID from the active-connection,
+		 * which exposes it despite the user having no permissions.
+		 *
+		 * That might be unexpected, because the user is shown an ID, which he later
+		 * is unable to resolve in other operations. */
+		s = nm_active_connection_get_id (ac);
+	}
+	return s;
+}
+
+static const char *
+_con_show_fcn_get_type (NMConnection *c, NMActiveConnection *ac, NMMetaAccessorGetType get_type)
+{
+	NMSettingConnection *s_con = NULL;
+	const char *s;
+
+	if (c)
+		s_con = nm_connection_get_setting_connection (c);
+
+	s = s_con ? nm_setting_connection_get_connection_type (s_con) : NULL;
+	if (!s && ac) {
+		/* see _con_show_fcn_get_id() for why we fallback to get the value
+		 * from @ac. */
+		s = nm_active_connection_get_connection_type (ac);
+	}
+	return connection_type_to_display (s, get_type);
+}
+
+static gconstpointer
+_metagen_con_show_get_fcn (NMC_META_GENERIC_INFO_GET_FCN_ARGS)
+{
+	const MetagenConShowRowData *row_data = target;
+	NMConnection *c = row_data->connection;
+	NMActiveConnection *ac = row_data->primary_active;
+	NMSettingConnection *s_con = NULL;
+	const char *s;
+	char *s_mut;
+
+	NMC_HANDLE_COLOR (  ac
+	                  ? nmc_active_connection_state_to_color (nm_active_connection_get_state (ac))
+	                  : NM_META_COLOR_CONNECTION_UNKNOWN);
+
+	if (c)
+		s_con = nm_connection_get_setting_connection (c);
+
+	if (!row_data->show_active_fields) {
+		/* we are not supposed to show any fields of the active connection.
+		 * We only tracked the primary_active to get the coloring right.
+		 * From now on, there is no active connection. */
+		ac = NULL;
+
+		/* in this mode, we expect that we are called only with connections that
+		 * have a [connection] setting and a UUID. Otherwise, the connection is
+		 * effectively invisible to the user, and should be hidden.
+		 *
+		 * But in that case, we expect that the caller pre-filtered this row out.
+		 * So assert(). */
+		nm_assert (s_con);
+		nm_assert (nm_setting_connection_get_uuid (s_con));
+	}
+
+	nm_assert (NM_IN_SET (get_type, NM_META_ACCESSOR_GET_TYPE_PRETTY, NM_META_ACCESSOR_GET_TYPE_PARSABLE));
+
+	switch (info->info_type) {
+	case NMC_GENERIC_INFO_TYPE_CON_SHOW_NAME:
+		return _con_show_fcn_get_id (c, ac);
+	case NMC_GENERIC_INFO_TYPE_CON_SHOW_UUID:
+		s = s_con ? nm_setting_connection_get_uuid (s_con) : NULL;
+		if (!s && ac) {
+			/* see _con_show_fcn_get_id() for why we fallback to get the value
+			 * from @ac. */
+			s = nm_active_connection_get_uuid (ac);
+		}
+		return s;
+	case NMC_GENERIC_INFO_TYPE_CON_SHOW_TYPE:
+		return _con_show_fcn_get_type (c, ac, get_type);
+	case NMC_GENERIC_INFO_TYPE_CON_SHOW_TIMESTAMP:
+	case NMC_GENERIC_INFO_TYPE_CON_SHOW_TIMESTAMP_REAL:
+		if (!s_con)
+			return NULL;
+		{
+			guint64 timestamp;
+			time_t timestamp_real;
+
+			timestamp = nm_setting_connection_get_timestamp (s_con);
+
+			if (info->info_type == NMC_GENERIC_INFO_TYPE_CON_SHOW_TIMESTAMP)
+				return (*out_to_free = g_strdup_printf ("%" G_GUINT64_FORMAT, timestamp));
+			else {
+				if (!timestamp) {
+					if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY)
+						return _("never");
+					return "never";
+				}
+				timestamp_real = timestamp;
+				s_mut = g_malloc0 (128);
+				strftime (s_mut, 64, "%c", localtime (&timestamp_real));
+				return (*out_to_free = s_mut);
+			}
+		}
+	case NMC_GENERIC_INFO_TYPE_CON_SHOW_AUTOCONNECT:
+		if (!s_con)
+			return NULL;
+		return nmc_meta_generic_get_bool (nm_setting_connection_get_autoconnect (s_con), get_type);
+	case NMC_GENERIC_INFO_TYPE_CON_SHOW_AUTOCONNECT_PRIORITY:
+		if (!s_con)
+			return NULL;
+		return (*out_to_free = g_strdup_printf ("%d", nm_setting_connection_get_autoconnect_priority (s_con)));
+	case NMC_GENERIC_INFO_TYPE_CON_SHOW_READONLY:
+		if (!s_con)
+			return NULL;
+		return nmc_meta_generic_get_bool (nm_setting_connection_get_read_only (s_con), get_type);
+	case NMC_GENERIC_INFO_TYPE_CON_SHOW_DBUS_PATH:
+		if (!c)
+			return NULL;
+		return nm_connection_get_path (c);
+	case NMC_GENERIC_INFO_TYPE_CON_SHOW_ACTIVE:
+		return nmc_meta_generic_get_bool (!!ac, get_type);
+	case NMC_GENERIC_INFO_TYPE_CON_SHOW_DEVICE:
+		if (ac)
+			return (*out_to_free = get_ac_device_string (ac));
+		return NULL;
+	case NMC_GENERIC_INFO_TYPE_CON_SHOW_STATE:
+		return nmc_meta_generic_get_str_i18n (ac
+		                                        ? active_connection_state_to_string (nm_active_connection_get_state (ac))
+		                                        : NULL,
+		                                      get_type);
+	case NMC_GENERIC_INFO_TYPE_CON_SHOW_ACTIVE_PATH:
+		if (ac)
+			return nm_object_get_path (NM_OBJECT (ac));
+		return NULL;
+	case NMC_GENERIC_INFO_TYPE_CON_SHOW_SLAVE:
+		if (!s_con)
+			return NULL;
+		return nm_setting_connection_get_slave_type (s_con);
+	case NMC_GENERIC_INFO_TYPE_CON_SHOW_FILENAME:
+		if (!NM_IS_REMOTE_CONNECTION (c))
+			return NULL;
+		return nm_remote_connection_get_filename (NM_REMOTE_CONNECTION (c));
+	default:
+		break;
+	}
+
+	g_return_val_if_reached (NULL);
+}
+
+const NmcMetaGenericInfo *const metagen_con_show[_NMC_GENERIC_INFO_TYPE_CON_SHOW_NUM + 1] = {
+#define _METAGEN_CON_SHOW(type, name) \
+	[type] = NMC_META_GENERIC(name, .info_type = type, .get_fcn = _metagen_con_show_get_fcn)
+	_METAGEN_CON_SHOW (NMC_GENERIC_INFO_TYPE_CON_SHOW_NAME,                 "NAME"),
+	_METAGEN_CON_SHOW (NMC_GENERIC_INFO_TYPE_CON_SHOW_UUID,                 "UUID"),
+	_METAGEN_CON_SHOW (NMC_GENERIC_INFO_TYPE_CON_SHOW_TYPE,                 "TYPE"),
+	_METAGEN_CON_SHOW (NMC_GENERIC_INFO_TYPE_CON_SHOW_TIMESTAMP,            "TIMESTAMP"),
+	_METAGEN_CON_SHOW (NMC_GENERIC_INFO_TYPE_CON_SHOW_TIMESTAMP_REAL,       "TIMESTAMP-REAL"),
+	_METAGEN_CON_SHOW (NMC_GENERIC_INFO_TYPE_CON_SHOW_AUTOCONNECT,          "AUTOCONNECT"),
+	_METAGEN_CON_SHOW (NMC_GENERIC_INFO_TYPE_CON_SHOW_AUTOCONNECT_PRIORITY, "AUTOCONNECT-PRIORITY"),
+	_METAGEN_CON_SHOW (NMC_GENERIC_INFO_TYPE_CON_SHOW_READONLY,             "READONLY"),
+	_METAGEN_CON_SHOW (NMC_GENERIC_INFO_TYPE_CON_SHOW_DBUS_PATH,            "DBUS-PATH"),
+	_METAGEN_CON_SHOW (NMC_GENERIC_INFO_TYPE_CON_SHOW_ACTIVE,               "ACTIVE"),
+	_METAGEN_CON_SHOW (NMC_GENERIC_INFO_TYPE_CON_SHOW_DEVICE,               "DEVICE"),
+	_METAGEN_CON_SHOW (NMC_GENERIC_INFO_TYPE_CON_SHOW_STATE,                "STATE"),
+	_METAGEN_CON_SHOW (NMC_GENERIC_INFO_TYPE_CON_SHOW_ACTIVE_PATH,          "ACTIVE-PATH"),
+	_METAGEN_CON_SHOW (NMC_GENERIC_INFO_TYPE_CON_SHOW_SLAVE,                "SLAVE"),
+	_METAGEN_CON_SHOW (NMC_GENERIC_INFO_TYPE_CON_SHOW_FILENAME,             "FILENAME"),
 };
 #define NMC_FIELDS_CON_SHOW_COMMON  "NAME,UUID,TYPE,DEVICE"
 
-const NmcMetaGenericInfo *const nmc_fields_con_active_details_general[] = {
-	NMC_META_GENERIC ("GROUP"),        /* 0 */
-	NMC_META_GENERIC ("NAME"),         /* 1 */
-	NMC_META_GENERIC ("UUID"),         /* 2 */
-	NMC_META_GENERIC ("DEVICES"),      /* 3 */
-	NMC_META_GENERIC ("STATE"),        /* 4 */
-	NMC_META_GENERIC ("DEFAULT"),      /* 5 */
-	NMC_META_GENERIC ("DEFAULT6"),     /* 6 */
-	NMC_META_GENERIC ("SPEC-OBJECT"),  /* 7 */
-	NMC_META_GENERIC ("VPN"),          /* 8 */
-	NMC_META_GENERIC ("DBUS-PATH"),    /* 9 */
-	NMC_META_GENERIC ("CON-PATH"),     /* 10 */
-	NMC_META_GENERIC ("ZONE"),         /* 11 */
-	NMC_META_GENERIC ("MASTER-PATH"),  /* 12 */
-	NULL,
+/*****************************************************************************/
+
+static gconstpointer
+_metagen_con_active_general_get_fcn (NMC_META_GENERIC_INFO_GET_FCN_ARGS)
+{
+	NMActiveConnection *ac = target;
+	NMConnection *c;
+	NMSettingConnection *s_con = NULL;
+	NMDevice *dev;
+	guint i;
+	const char *s;
+
+	NMC_HANDLE_COLOR (NM_META_COLOR_NONE);
+
+	nm_assert (NM_IN_SET (get_type, NM_META_ACCESSOR_GET_TYPE_PRETTY, NM_META_ACCESSOR_GET_TYPE_PARSABLE));
+
+	c = NM_CONNECTION (nm_active_connection_get_connection (ac));
+	if (c)
+		s_con = nm_connection_get_setting_connection (c);
+
+	switch (info->info_type) {
+	case NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_NAME:
+		return nm_active_connection_get_id (ac);
+	case NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_UUID:
+		return nm_active_connection_get_uuid (ac);
+	case NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_DEVICES:
+		{
+			GString *str = NULL;
+			const GPtrArray *devices;
+
+			s = NULL;
+			devices = nm_active_connection_get_devices (ac);
+			if (devices) {
+				for (i = 0; i < devices->len; i++) {
+					NMDevice *device = devices->pdata[i];
+					const char *iface;
+
+					iface = nm_device_get_iface (device);
+					if (!iface)
+						continue;
+					if (!s) {
+						s = iface;
+						continue;
+					}
+					if (!str)
+						str = g_string_new (s);
+					g_string_append_c (str, ',');
+					g_string_append (str, iface);
+				}
+			}
+			if (str)
+				return (*out_to_free = g_string_free (str, FALSE));
+			return s;
+		}
+	case NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_STATE:
+		return nmc_meta_generic_get_str_i18n (active_connection_state_to_string (nm_active_connection_get_state (ac)),
+		                                      get_type);
+	case NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_DEFAULT:
+		return nmc_meta_generic_get_bool (nm_active_connection_get_default (ac), get_type);
+	case NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_DEFAULT6:
+		return nmc_meta_generic_get_bool (nm_active_connection_get_default6 (ac), get_type);
+	case NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_SPEC_OBJECT:
+		return nm_active_connection_get_specific_object_path (ac);
+	case NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_VPN:
+		return nmc_meta_generic_get_bool (NM_IS_VPN_CONNECTION (ac), get_type);
+	case NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_DBUS_PATH:
+		return nm_object_get_path (NM_OBJECT (ac));
+	case NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_CON_PATH:
+		return c ? nm_connection_get_path (c) : NULL;
+	case NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_ZONE:
+		/* this is really ugly, because the zone is not a property of the active-connection,
+		 * but the settings-connection profile. There is no guarantee, that they agree. */
+		return s_con ? nm_setting_connection_get_zone (s_con) : NULL;
+	case NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_MASTER_PATH:
+		dev = nm_active_connection_get_master (ac);
+		return dev ? nm_object_get_path (NM_OBJECT (dev)) : NULL;
+	default:
+		break;
+	}
+
+	g_return_val_if_reached (NULL);
+}
+
+const NmcMetaGenericInfo *const metagen_con_active_general[_NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_NUM + 1] = {
+#define _METAGEN_CON_ACTIVE_GENERAL(type, name) \
+	[type] = NMC_META_GENERIC(name, .info_type = type, .get_fcn = _metagen_con_active_general_get_fcn)
+	_METAGEN_CON_ACTIVE_GENERAL (NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_NAME,        "NAME"),
+	_METAGEN_CON_ACTIVE_GENERAL (NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_UUID,        "UUID"),
+	_METAGEN_CON_ACTIVE_GENERAL (NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_DEVICES,     "DEVICES"),
+	_METAGEN_CON_ACTIVE_GENERAL (NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_STATE,       "STATE"),
+	_METAGEN_CON_ACTIVE_GENERAL (NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_DEFAULT,     "DEFAULT"),
+	_METAGEN_CON_ACTIVE_GENERAL (NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_DEFAULT6,    "DEFAULT6"),
+	_METAGEN_CON_ACTIVE_GENERAL (NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_SPEC_OBJECT, "SPEC-OBJECT"),
+	_METAGEN_CON_ACTIVE_GENERAL (NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_VPN,         "VPN"),
+	_METAGEN_CON_ACTIVE_GENERAL (NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_DBUS_PATH,   "DBUS-PATH"),
+	_METAGEN_CON_ACTIVE_GENERAL (NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_CON_PATH,    "CON-PATH"),
+	_METAGEN_CON_ACTIVE_GENERAL (NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_ZONE,        "ZONE"),
+	_METAGEN_CON_ACTIVE_GENERAL (NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_MASTER_PATH, "MASTER-PATH"),
 };
+
+/*****************************************************************************/
+
 #define NMC_FIELDS_SETTINGS_NAMES_ALL    NM_SETTING_CONNECTION_SETTING_NAME","\
                                          NM_SETTING_WIRED_SETTING_NAME","\
                                          NM_SETTING_802_1X_SETTING_NAME","\
@@ -237,7 +677,7 @@ const NmcMetaGenericInfo *const nmc_fields_con_active_details_vpn[] = {
 };
 
 const NmcMetaGenericInfo *const nmc_fields_con_active_details_groups[] = {
-	NMC_META_GENERIC_WITH_NESTED ("GENERAL", nmc_fields_con_active_details_general + 1), /* 0 */
+	NMC_META_GENERIC_WITH_NESTED ("GENERAL", metagen_con_active_general),                /* 0 */
 	NMC_META_GENERIC_WITH_NESTED ("IP4",     metagen_ip4_config),                        /* 1 */
 	NMC_META_GENERIC_WITH_NESTED ("DHCP4",   nmc_fields_dhcp_config + 1),                /* 2 */
 	NMC_META_GENERIC_WITH_NESTED ("IP6",     nmc_fields_ip6_config + 1),                 /* 3 */
@@ -595,36 +1035,42 @@ construct_header_name (const char *base, const char *spec)
 	return g_strdup_printf ("%s (%s)", base, spec);
 }
 
+static int
+get_ac_for_connection_cmp (gconstpointer pa, gconstpointer pb, gpointer user_data)
+{
+	NMActiveConnection *ac_a = *((NMActiveConnection *const*) pa);
+	NMActiveConnection *ac_b = *((NMActiveConnection *const*) pb);
+
+	return active_connection_cmp (ac_a, ac_b);
+}
+
 static NMActiveConnection *
 get_ac_for_connection (const GPtrArray *active_cons, NMConnection *connection, GPtrArray **out_result)
 {
-	const char *con_path, *ac_con_path;
 	guint i;
 	NMActiveConnection *best_candidate = NULL;
 	GPtrArray *result = out_result ? *out_result : NULL;
 
-	con_path = nm_connection_get_path (connection);
 	for (i = 0; i < active_cons->len; i++) {
 		NMActiveConnection *candidate = g_ptr_array_index (active_cons, i);
 		NMRemoteConnection *con;
 
 		con = nm_active_connection_get_connection (candidate);
-		if (NM_CONNECTION (con) != connection) {
-			/* also compare the D-Bus paths. Why? I don't know. */
-			ac_con_path = con ? nm_connection_get_path (NM_CONNECTION (con)) : NULL;
-			if (!nm_streq0 (ac_con_path, con_path))
-				continue;
-		}
+		if (NM_CONNECTION (con) != connection)
+			continue;
 
 		if (!out_result)
 			return candidate;
-		if (!best_candidate)
-			best_candidate = candidate;
 		if (!result)
 			result = g_ptr_array_new_with_free_func (g_object_unref);
 		g_ptr_array_add (result, g_object_ref (candidate));
 	}
 
+	if (result) {
+		g_ptr_array_sort_with_data (result, get_ac_for_connection_cmp, NULL);
+		best_candidate = result->pdata[0];
+	}
+
 	NM_SET_OUT (out_result, result);
 	return best_candidate;
 }
@@ -767,178 +1213,6 @@ nmc_active_connection_state_to_color (NMActiveConnectionState state)
 		return NM_META_COLOR_CONNECTION_UNKNOWN;
 }
 
-static void
-fill_output_connection (NMConnection *connection, NMClient *client, NMCPrintOutput print_output,
-                        GPtrArray *output_data, gboolean active_only)
-{
-	NMSettingConnection *s_con;
-	guint64 timestamp;
-	time_t timestamp_real;
-	char *timestamp_str;
-	char *timestamp_real_str = "";
-	char *prio_str;
-	NmcOutputField *arr;
-	NMActiveConnection *ac = NULL;
-	const char *ac_path = NULL;
-	const char *ac_state = NULL;
-	NMActiveConnectionState ac_state_int = NM_ACTIVE_CONNECTION_STATE_UNKNOWN;
-	char *ac_dev = NULL;
-	NMMetaColor color;
-
-	s_con = nm_connection_get_setting_connection (connection);
-	g_assert (s_con);
-
-	ac = get_ac_for_connection (nm_client_get_active_connections (client), connection, NULL);
-	if (active_only && !ac)
-		return;
-
-	if (ac) {
-		ac_path = nm_object_get_path (NM_OBJECT (ac));
-		ac_state_int = nm_active_connection_get_state (ac);
-		ac_state = gettext (active_connection_state_to_string (ac_state_int));
-		ac_dev = get_ac_device_string (ac);
-	}
-
-	/* Obtain field values */
-	timestamp = nm_setting_connection_get_timestamp (s_con);
-	timestamp_str = g_strdup_printf ("%" G_GUINT64_FORMAT, timestamp);
-	if (timestamp) {
-		timestamp_real = timestamp;
-		timestamp_real_str = g_malloc0 (64);
-		strftime (timestamp_real_str, 64, "%c", localtime (&timestamp_real));
-	}
-	prio_str = g_strdup_printf ("%u", nm_setting_connection_get_autoconnect_priority (s_con));
-
-	arr = nmc_dup_fields_array ((const NMMetaAbstractInfo *const*) nmc_fields_con_show, 0);
-
-	/* Show active connections in color */
-	color = nmc_active_connection_state_to_color (ac_state_int);
-	set_val_color_all (arr, color);
-
-	set_val_strc (arr, 0, nm_setting_connection_get_id (s_con));
-	set_val_strc (arr, 1, nm_setting_connection_get_uuid (s_con));
-	set_val_strc (arr, 2, connection_type_pretty (nm_setting_connection_get_connection_type (s_con), print_output));
-	set_val_str  (arr, 3, timestamp_str);
-	set_val_str  (arr, 4, timestamp ? timestamp_real_str : g_strdup (_("never")));
-	set_val_strc (arr, 5, nm_setting_connection_get_autoconnect (s_con) ? _("yes") : _("no"));
-	set_val_str  (arr, 6, prio_str);
-	set_val_strc (arr, 7, nm_setting_connection_get_read_only (s_con) ? _("yes") : _("no"));
-	set_val_strc (arr, 8, nm_connection_get_path (connection));
-	set_val_strc (arr, 9, ac ? _("yes") : _("no"));
-	set_val_str  (arr, 10, ac_dev);
-	set_val_strc (arr, 11, ac_state);
-	set_val_strc (arr, 12, ac_path);
-	set_val_strc (arr, 13, nm_setting_connection_get_slave_type (s_con));
-
-	g_ptr_array_add (output_data, arr);
-}
-
-static void
-fill_output_connection_for_invisible (NMActiveConnection *ac, NMCPrintOutput print_output, GPtrArray *output_data)
-{
-	NmcOutputField *arr;
-	const char *ac_path = NULL;
-	const char *ac_state = NULL;
-	char *name, *ac_dev = NULL;
-
-	name = g_strdup_printf ("<invisible> %s", nm_active_connection_get_id (ac));
-	ac_path = nm_object_get_path (NM_OBJECT (ac));
-	ac_state = active_connection_state_to_string (nm_active_connection_get_state (ac));
-	ac_dev = get_ac_device_string (ac);
-
-	arr = nmc_dup_fields_array ((const NMMetaAbstractInfo *const*) nmc_fields_con_show, 0);
-
-	set_val_str  (arr, 0, name);
-	set_val_strc (arr, 1, nm_active_connection_get_uuid (ac));
-	set_val_strc (arr, 2, connection_type_pretty (nm_active_connection_get_connection_type (ac), print_output));
-	set_val_strc (arr, 3, NULL);
-	set_val_strc (arr, 4, NULL);
-	set_val_strc (arr, 5, NULL);
-	set_val_strc (arr, 6, NULL);
-	set_val_strc (arr, 7, NULL);
-	set_val_strc (arr, 8, NULL);
-	set_val_strc (arr, 9, _("yes"));
-	set_val_str  (arr, 10, ac_dev);
-	set_val_strc (arr, 11, ac_state);
-	set_val_strc (arr, 12, ac_path);
-	set_val_strc (arr, 13, NULL);
-
-	set_val_color_all (arr, NM_META_COLOR_CONNECTION_INVISIBLE);
-
-	g_ptr_array_add (output_data, arr);
-}
-
-static void
-fill_output_active_connection (NMActiveConnection *active,
-                               GPtrArray *output_data,
-                               gboolean with_group,
-                               guint32 o_flags)
-{
-	NMRemoteConnection *con;
-	NMSettingConnection *s_con = NULL;
-	const GPtrArray *devices;
-	GString *dev_str;
-	NMActiveConnectionState state;
-	NMDevice *master;
-	const char *con_path = NULL, *con_zone = NULL;
-	int i;
-	const NMMetaAbstractInfo *const*tmpl;
-	NmcOutputField *arr;
-	int idx_start = with_group ? 0 : 1;
-
-	con = nm_active_connection_get_connection (active);
-	if (con) {
-		con_path = nm_connection_get_path (NM_CONNECTION (con));
-		s_con = nm_connection_get_setting_connection (NM_CONNECTION (con));
-		g_assert (s_con);
-		con_zone = nm_setting_connection_get_zone (s_con);
-	}
-
-	state = nm_active_connection_get_state (active);
-	master = nm_active_connection_get_master (active);
-
-	/* Get devices of the active connection */
-	dev_str = g_string_new (NULL);
-	devices = nm_active_connection_get_devices (active);
-	for (i = 0; i < devices->len; i++) {
-		NMDevice *device = g_ptr_array_index (devices, i);
-		const char *dev_iface = nm_device_get_iface (device);
-
-		if (dev_iface) {
-			g_string_append (dev_str, dev_iface);
-			g_string_append_c (dev_str, ',');
-		}
-	}
-	if (dev_str->len > 0)
-		g_string_truncate (dev_str, dev_str->len - 1);  /* Cut off last ',' */
-
-	tmpl = (const NMMetaAbstractInfo *const*) nmc_fields_con_active_details_general;
-	if (!with_group)
-		tmpl++;
-
-	/* Fill field values */
-	arr = nmc_dup_fields_array (tmpl, o_flags);
-	if (with_group)
-		set_val_strc (arr, 0, nmc_fields_con_active_details_groups[0]->name);
-	set_val_strc (arr, 1-idx_start, nm_active_connection_get_id (active));
-	set_val_strc (arr, 2-idx_start, nm_active_connection_get_uuid (active));
-	set_val_str  (arr, 3-idx_start, dev_str->str);
-	set_val_strc (arr, 4-idx_start, active_connection_state_to_string (state));
-	set_val_strc (arr, 5-idx_start, nm_active_connection_get_default (active) ? _("yes") : _("no"));
-	set_val_strc (arr, 6-idx_start, nm_active_connection_get_default6 (active) ? _("yes") : _("no"));
-	set_val_strc (arr, 7-idx_start, nm_active_connection_get_specific_object_path (active));
-	set_val_strc (arr, 8-idx_start, NM_IS_VPN_CONNECTION (active) ? _("yes") : _("no"));
-	set_val_strc (arr, 9-idx_start, nm_object_get_path (NM_OBJECT (active)));
-	set_val_strc (arr, 10-idx_start, con_path);
-	set_val_strc (arr, 11-idx_start, con_zone);
-	set_val_strc (arr, 12-idx_start, master ? nm_object_get_path (NM_OBJECT (master)) : NULL);
-	set_val_strc (arr, 13-idx_start, s_con ? nm_setting_connection_get_slave_type (s_con) : NULL);
-
-	g_ptr_array_add (output_data, arr);
-
-	g_string_free (dev_str, FALSE);
-}
-
 typedef struct {
 	char **array;
 	guint32 idx;
@@ -952,85 +1226,6 @@ fill_vpn_data_item (const char *key, const char *value, gpointer user_data)
 	info->array[info->idx++] = g_strdup_printf ("%s = %s", key, value);
 }
 
-// FIXME: The same or similar code for VPN info appears also in nm-applet (applet-dialogs.c),
-// and in gnome-control-center as well. It could probably be shared somehow.
-static char *
-get_vpn_connection_type (NMConnection *connection)
-{
-	const char *type, *p;
-
-	/* The service type is in form of "org.freedesktop.NetworkManager.vpnc".
-	 * Extract end part after last dot, e.g. "vpnc"
-	 */
-	type = nm_setting_vpn_get_service_type (nm_connection_get_setting_vpn (connection));
-	p = strrchr (type, '.');
-	return g_strdup (p ? p + 1 : type);
-}
-
-/* VPN parameters can be found at:
- * http://git.gnome.org/browse/network-manager-openvpn/tree/src/nm-openvpn-service.h
- * http://git.gnome.org/browse/network-manager-vpnc/tree/src/nm-vpnc-service.h
- * http://git.gnome.org/browse/network-manager-pptp/tree/src/nm-pptp-service.h
- * http://git.gnome.org/browse/network-manager-openconnect/tree/src/nm-openconnect-service.h
- * http://git.gnome.org/browse/network-manager-openswan/tree/src/nm-openswan-service.h
- * See also 'properties' directory in these plugins.
- */
-static const gchar *
-find_vpn_gateway_key (const char *vpn_type)
-{
-	if (g_strcmp0 (vpn_type, "openvpn") == 0)     return "remote";
-	if (g_strcmp0 (vpn_type, "vpnc") == 0)        return "IPSec gateway";
-	if (g_strcmp0 (vpn_type, "pptp") == 0)        return "gateway";
-	if (g_strcmp0 (vpn_type, "openconnect") == 0) return "gateway";
-	if (g_strcmp0 (vpn_type, "openswan") == 0)    return "right";
-	if (g_strcmp0 (vpn_type, "libreswan") == 0)   return "right";
-	if (g_strcmp0 (vpn_type, "ssh") == 0)         return "remote";
-	if (g_strcmp0 (vpn_type, "l2tp") == 0)        return "gateway";
-	return "";
-}
-
-static const gchar *
-find_vpn_username_key (const char *vpn_type)
-{
-	if (g_strcmp0 (vpn_type, "openvpn") == 0)     return "username";
-	if (g_strcmp0 (vpn_type, "vpnc") == 0)        return "Xauth username";
-	if (g_strcmp0 (vpn_type, "pptp") == 0)        return "user";
-	if (g_strcmp0 (vpn_type, "openconnect") == 0) return "username";
-	if (g_strcmp0 (vpn_type, "openswan") == 0)    return "leftxauthusername";
-	if (g_strcmp0 (vpn_type, "libreswan") == 0)   return "leftxauthusername";
-	if (g_strcmp0 (vpn_type, "l2tp") == 0)        return "user";
-	return "";
-}
-
-enum VpnDataItem {
-	VPN_DATA_ITEM_GATEWAY,
-	VPN_DATA_ITEM_USERNAME
-};
-
-static const gchar *
-get_vpn_data_item (NMConnection *connection, enum VpnDataItem vpn_data_item)
-{
-	const char *key;
-	gs_free char *type = NULL;
-
-	type = get_vpn_connection_type (connection);
-
-	switch (vpn_data_item) {
-	case VPN_DATA_ITEM_GATEWAY:
-		key = find_vpn_gateway_key (type);
-		break;
-	case VPN_DATA_ITEM_USERNAME:
-		key = find_vpn_username_key (type);
-		break;
-	default:
-		key = "";
-		break;
-	}
-
-	return nm_setting_vpn_get_data_item (nm_connection_get_setting_vpn (connection), key);
-}
-/* FIXME end */
-
 static gboolean
 nmc_active_connection_details (NMActiveConnection *acon, NmCli *nmc)
 {
@@ -1083,29 +1278,27 @@ nmc_active_connection_details (NMActiveConnection *acon, NmCli *nmc)
 		int group_idx = g_array_index (print_groups, int, i);
 		char *group_fld = (char *) g_ptr_array_index (group_fields, i);
 
-		if (nmc->nmc_config.print_output != NMC_PRINT_TERSE && !nmc->nmc_config.multiline_output && was_output)
-			g_print ("\n"); /* Empty line */
+		if (   nmc->nmc_config.print_output != NMC_PRINT_TERSE
+		    && !nmc->nmc_config.multiline_output
+		    && was_output)
+			g_print ("\n");
 
 		was_output = FALSE;
 
-		/* GENERAL */
-		if (strcasecmp (nmc_fields_con_active_details_groups[group_idx]->name, nmc_fields_con_active_details_groups[0]->name) == 0) {
-			NMC_OUTPUT_DATA_DEFINE_SCOPED (out);
-
-			/* Add field names */
-			tmpl = (const NMMetaAbstractInfo *const*) nmc_fields_con_active_details_general;
-			out_indices = parse_output_fields (group_fld,
-			                                   tmpl, FALSE, NULL, NULL);
-			arr = nmc_dup_fields_array (tmpl, NMC_OF_FLAG_FIELD_NAMES);
-			g_ptr_array_add (out.output_data, arr);
-
-			/* Fill in values */
-			fill_output_active_connection (acon, out.output_data, TRUE, NMC_OF_FLAG_SECTION_PREFIX);
+		if (nmc_fields_con_active_details_groups[group_idx]->nested == metagen_con_active_general) {
+			gs_free char *f = NULL;
 
-			print_data_prepare_width (out.output_data);
-			print_data (&nmc->nmc_config, out_indices, NULL, 0, &out);
+			if (group_fld)
+				f = g_strdup_printf ("GENERAL.%s", group_fld);
 
+			nmc_print (&nmc->nmc_config,
+			           (gpointer[]) { acon, NULL },
+			           NULL,
+			           NMC_META_GENERIC_GROUP ("GENERAL", metagen_con_active_general, N_("GROUP")),
+			           f,
+			           NULL);
 			was_output = TRUE;
+			continue;
 		}
 
 		/* IP4 */
@@ -1347,154 +1540,220 @@ typedef enum {
 typedef struct {
 	NmCli *nmc;
 	const GArray *order;
-} NmcSortInfo;
+	gboolean show_active_fields;
+} ConShowSortInfo;
 
 static int
-compare_connections (gconstpointer a, gconstpointer b, gpointer user_data)
-{
-	NMConnection *ca = *(NMConnection **) a;
-	NMConnection *cb = *(NMConnection **) b;
-	const NmcSortInfo *info = user_data;
-	NMActiveConnection *aca, *acb;
-	const NmcSortOrder *order_arr;
-	guint i, order_len;
-	const char *tmp1, *tmp2;
-	unsigned long tmp1_int, tmp2_int;
-
-	if (info->order) {
-		order_arr = &g_array_index (info->order, NmcSortOrder, 0);
-		order_len = info->order->len;
-	} else {
-		static const NmcSortOrder def[] = { NMC_SORT_ACTIVE, NMC_SORT_NAME, NMC_SORT_PATH };
+con_show_get_items_cmp (gconstpointer pa, gconstpointer pb, gpointer user_data)
+{
+	const ConShowSortInfo *sort_info = user_data;
+	const MetagenConShowRowData *row_data_a = *((const MetagenConShowRowData *const*) pa);
+	const MetagenConShowRowData *row_data_b = *((const MetagenConShowRowData *const*) pb);
+	NMConnection *c_a = row_data_a->connection;
+	NMConnection *c_b = row_data_b->connection;
+	NMActiveConnection *ac_a = row_data_a->primary_active;
+	NMActiveConnection *ac_b = row_data_b->primary_active;
+	NMActiveConnection *ac_a_effective = sort_info->show_active_fields ? ac_a : NULL;
+	NMActiveConnection *ac_b_effective = sort_info->show_active_fields ? ac_b : NULL;
+
+	/* first sort active-connections which are invisible, i.e. that have no connection */
+	if (!c_a && c_b)
+		return -1;
+	if (!c_b && c_a)
+		return 1;
+
+	/* we have two connections... */
+	if (c_a && c_b && c_a != c_b) {
+		const NmcSortOrder *order_arr;
+		guint i, order_len;
+		NMMetaAccessorGetType get_type = nmc_print_output_to_accessor_get_type (sort_info->nmc->nmc_config.print_output);
+
+		if (sort_info->order) {
+			order_arr = &g_array_index (sort_info->order, NmcSortOrder, 0);
+			order_len = sort_info->order->len;
+		} else {
+			static const NmcSortOrder def[] = { NMC_SORT_ACTIVE, NMC_SORT_NAME, NMC_SORT_PATH };
 
-		order_arr = def;
-		order_len = G_N_ELEMENTS (def);
-	}
+			/* Note: the default order does not consider whether a column is shown.
+			 *       That means, the selection of the output fields, does not affect the
+			 *       order (although there could be an argument that it should). */
+			order_arr = def;
+			order_len = G_N_ELEMENTS (def);
+		}
 
-	for (i = 0; i < order_len; i++) {
-		NmcSortOrder item = order_arr[i];
-		int cmp = 0;
+		for (i = 0; i < order_len; i++) {
+			NmcSortOrder item = order_arr[i];
 
-		switch (item) {
-		case NMC_SORT_ACTIVE:
-		case NMC_SORT_ACTIVE_INV:
-			aca = get_ac_for_connection (nm_client_get_active_connections (info->nmc->client), ca, NULL);
-			acb = get_ac_for_connection (nm_client_get_active_connections (info->nmc->client), cb, NULL);
-			cmp = (aca && !acb) ? -1 : (!aca && acb) ? 1 : 0;
-			if (item == NMC_SORT_ACTIVE_INV)
-				cmp = -(cmp);
-			break;
-		case NMC_SORT_TYPE:
-		case NMC_SORT_TYPE_INV:
-			cmp = g_strcmp0 (nm_connection_get_connection_type (ca),
-			                 nm_connection_get_connection_type (cb));
-			if (item == NMC_SORT_TYPE_INV)
-				cmp = -(cmp);
-			break;
-		case NMC_SORT_NAME:
-		case NMC_SORT_NAME_INV:
-			cmp = g_strcmp0 (nm_connection_get_id (ca),
-			                 nm_connection_get_id (cb));
-			if (item == NMC_SORT_NAME_INV)
-				cmp = -(cmp);
-			break;
-		case NMC_SORT_PATH:
-		case NMC_SORT_PATH_INV:
-			tmp1 = nm_connection_get_path (ca);
-			tmp2 = nm_connection_get_path (cb);
-			tmp1 = tmp1 ? strrchr (tmp1, '/') : "0";
-			tmp2 = tmp2 ? strrchr (tmp2, '/') : "0";
-			nmc_string_to_uint (tmp1 ? tmp1+1 : "0", FALSE, 0, 0, &tmp1_int);
-			nmc_string_to_uint (tmp2 ? tmp2+1 : "0", FALSE, 0, 0, &tmp2_int);
-			cmp = (int) tmp1_int - tmp2_int;
-			if (item == NMC_SORT_PATH_INV)
-				cmp = -(cmp);
-			break;
-		default:
-			cmp = 0;
-			break;
-		}
-		if (cmp != 0)
-			return cmp;
-	}
+			switch (item) {
 
-	return 0;
-}
+			case NMC_SORT_ACTIVE:
+				NM_CMP_DIRECT (active_connection_get_state_ord (ac_b),
+				               active_connection_get_state_ord (ac_a));
+				break;
+			case NMC_SORT_ACTIVE_INV:
+				NM_CMP_DIRECT (active_connection_get_state_ord (ac_a),
+				               active_connection_get_state_ord (ac_b));
+				break;
 
-static GPtrArray *
-sort_connections (const GPtrArray *cons, NmCli *nmc, const GArray *order)
-{
-	GPtrArray *sorted;
-	int i;
-	NmcSortInfo compare_info;
+			case NMC_SORT_TYPE:
+				NM_CMP_DIRECT_STRCMP0 (_con_show_fcn_get_type (c_a, ac_a_effective, get_type),
+				                       _con_show_fcn_get_type (c_b, ac_b_effective, get_type));
+				break;
+			case NMC_SORT_TYPE_INV:
+				NM_CMP_DIRECT_STRCMP0 (_con_show_fcn_get_type (c_b, ac_b_effective, get_type),
+				                       _con_show_fcn_get_type (c_a, ac_a_effective, get_type));
+				break;
 
-	if (!cons)
-		return NULL;
+			case NMC_SORT_NAME:
+				NM_CMP_RETURN (nm_utf8_collate0 (_con_show_fcn_get_id (c_a, ac_a_effective),
+				                                 _con_show_fcn_get_id (c_b, ac_b_effective)));
+				break;
+			case NMC_SORT_NAME_INV:
+				NM_CMP_RETURN (nm_utf8_collate0 (_con_show_fcn_get_id (c_b, ac_b_effective),
+				                                 _con_show_fcn_get_id (c_a, ac_a_effective)));
+				break;
 
-	compare_info.nmc = nmc;
-	compare_info.order = order;
+			case NMC_SORT_PATH:
+				NM_CMP_RETURN (nm_utils_dbus_path_cmp (nm_connection_get_path (c_a), nm_connection_get_path (c_b)));
+				break;
 
-	sorted = g_ptr_array_sized_new (cons->len);
-	for (i = 0; i < cons->len; i++)
-		g_ptr_array_add (sorted, cons->pdata[i]);
-	g_ptr_array_sort_with_data (sorted, compare_connections, &compare_info);
-	return sorted;
-}
+			case NMC_SORT_PATH_INV:
+				NM_CMP_RETURN (nm_utils_dbus_path_cmp (nm_connection_get_path (c_b), nm_connection_get_path (c_a)));
+				break;
 
-static int
-compare_ac_connections (gconstpointer a, gconstpointer b, gpointer user_data)
-{
-	NMActiveConnection *ca = *(NMActiveConnection **)a;
-	NMActiveConnection *cb = *(NMActiveConnection **)b;
-	int cmp;
+			default:
+				nm_assert_not_reached ();
+				break;
+			}
+		}
 
-	/* Sort states first */
-	cmp = nm_active_connection_get_state (cb) - nm_active_connection_get_state (ca);
-	if (cmp != 0)
-		return cmp;
+		NM_CMP_DIRECT_STRCMP0 (nm_connection_get_uuid (c_a),
+		                       nm_connection_get_uuid (c_b));
+		NM_CMP_DIRECT_STRCMP0 (nm_connection_get_path (c_a),
+		                       nm_connection_get_path (c_b));
 
-	cmp = g_strcmp0 (nm_active_connection_get_id (ca),
-	                 nm_active_connection_get_id (cb));
-	if (cmp != 0)
-		return cmp;
+		/* This line is not expected to be reached, because there shouldn't be two
+		 * different connections with the same path. Anyway, fall-through and compare by
+		 * active connections... */
+	}
 
-	return g_strcmp0 (nm_active_connection_get_connection_type (ca),
-	                  nm_active_connection_get_connection_type (cb));
+	return active_connection_cmp (ac_a, ac_b);
 }
 
 static GPtrArray *
-get_invisible_active_connections (NmCli *nmc)
-{
-	const GPtrArray *acons;
-	const GPtrArray *connections;
-	GPtrArray *invisibles;
-	int a, c;
+con_show_get_items (NmCli *nmc, gboolean active_only, gboolean show_active_fields, GArray *order)
+{
+	gs_unref_hashtable GHashTable *row_hash = NULL;
+	GHashTableIter hiter;
+	GPtrArray *result;
+	const GPtrArray *arr;
+	NMRemoteConnection *c;
+	MetagenConShowRowData *row_data;
+	guint i;
+	const ConShowSortInfo sort_info = {
+		.nmc = nmc,
+		.order = order,
+		.show_active_fields = show_active_fields,
+	};
 
-	g_return_val_if_fail (nmc, NULL);
+	row_hash = g_hash_table_new (nm_direct_hash, NULL);
+
+	arr = nm_client_get_connections (nmc->client);
+	for (i = 0; i < arr->len; i++) {
+		/* Note: libnm will not expose connection that are invisible
+		 * to the user but currently inactive.
+		 *
+		 * That differs from get-active-connection(). If an invisible connection
+		 * is active, we can get its NMActiveConnection. We can even obtain
+		 * the corresponding NMRemoteConnection (although, of course it has
+		 * no visible settings).
+		 *
+		 * I think this inconsistency is a bug in libnm. Anyway, the result is,
+		 * that we print invisible connections if they are active, but otherwise
+		 * we exclude them. */
+		c = arr->pdata[i];
+		g_hash_table_insert (row_hash,
+		                     c,
+		                     _metagen_con_show_row_data_new_for_connection (c,
+		                                                                    show_active_fields));
+	}
+
+	arr = nm_client_get_active_connections (nmc->client);
+	for (i = 0; i < arr->len; i++) {
+		NMActiveConnection *ac = arr->pdata[i];
+
+		c = nm_active_connection_get_connection (ac);
+		if (!show_active_fields && !c) {
+			/* the active connection has no connection, and we don't show
+			 * any active fields. Skip this row. */
+			continue;
+		}
 
-	invisibles = g_ptr_array_new ();
-	acons = nm_client_get_active_connections (nmc->client);
-	connections = nm_client_get_connections (nmc->client);
-	for (a = 0; a < acons->len; a++) {
-		gboolean found = FALSE;
-		NMActiveConnection *acon = g_ptr_array_index (acons, a);
-		const char *a_uuid = nm_active_connection_get_uuid (acon);
+		row_data =   c
+		           ? g_hash_table_lookup (row_hash, c)
+		           : NULL;
+
+		if (show_active_fields || !c) {
+			/* the active connection either has no connection (in which we create a
+			 * connection-less row), or we are interested in showing each active
+			 * connection in its own row. Add a row. */
+			if (row_data) {
+				/* we create a rowdata for this connection earlier. We drop it, because this
+				 * connection is tracked via the rowdata of the active connection. */
+				g_hash_table_remove (row_hash, c);
+				_metagen_con_show_row_data_destroy (row_data);
+			}
+			row_data = _metagen_con_show_row_data_new_for_active_connection (c, ac, show_active_fields);
+			g_hash_table_insert (row_hash, ac, row_data);
+			continue;
+		}
 
-		for (c = 0; c < connections->len; c++) {
-			NMConnection *con = g_ptr_array_index (connections, c);
-			const char *c_uuid = nm_connection_get_uuid (con);
+		/* we add the active connection to the row for the referenced
+		 * connection. We need to group them this way, to print the proper
+		 * color (activated or not) based on primary_active. */
+		if (!row_data) {
+			/* this is unexpected. The active connection references a connection that
+			 * seemingly no longer exists. It's a bug in libnm. Add a row nontheless. */
+			row_data = _metagen_con_show_row_data_new_for_connection (c, show_active_fields);
+			g_hash_table_insert (row_hash, c, row_data);
+		}
+		_metagen_con_show_row_data_add_active_connection (row_data, ac);
+	}
 
-			if (strcmp (a_uuid, c_uuid) == 0) {
-				found = TRUE;
-				break;
-			}
+	result = g_ptr_array_new_with_free_func (_metagen_con_show_row_data_destroy);
+
+	g_hash_table_iter_init (&hiter, row_hash);
+	while (g_hash_table_iter_next (&hiter, NULL, (gpointer *) &row_data)) {
+		if (   active_only
+		    && !row_data->primary_active) {
+			/* We only print connections that are active. Skip this row. */
+			_metagen_con_show_row_data_destroy (row_data);
+			continue;
 		}
-		/* Active connection is not in connections array, add it to  */
-		if (!found)
-			g_ptr_array_add (invisibles, acon);
+		if (!show_active_fields) {
+			NMSettingConnection *s_con;
+
+			nm_assert (NM_IS_REMOTE_CONNECTION (row_data->connection));
+			s_con = nm_connection_get_setting_connection (row_data->connection);
+			if (   !s_con
+			    || !nm_setting_connection_get_uuid (s_con)) {
+				/* we are in a mode, where we only print rows for connection.
+				 * For that we require that all rows are visible to the user,
+				 * meaning: the have a [connection] setting and a UUID.
+				 *
+				 * Otherwise, this connection is likely invisible to the user.
+				 * Skip it. */
+				_metagen_con_show_row_data_destroy (row_data);
+				continue;
+			}
+			_metagen_con_show_row_data_init_primary_active (row_data);
+		} else
+			nm_assert (!row_data->all_active);
+		g_ptr_array_add (result, row_data);
 	}
-	g_ptr_array_sort_with_data (invisibles, compare_ac_connections, NULL);
-	return invisibles;
+
+	g_ptr_array_sort_with_data (result, con_show_get_items_cmp, (gpointer) &sort_info);
+	return result;
 }
 
 static GArray *
@@ -1579,9 +1838,9 @@ get_connection (NmCli *nmc,
 	}
 
 	if (*argc == 1 && nmc->complete)
-		nmc_complete_strings (**argv, "id", "uuid", "path", NULL);
+		nmc_complete_strings (**argv, "id", "uuid", "path", "filename", NULL);
 
-	if (NM_IN_STRSET (**argv, "id", "uuid", "path")) {
+	if (NM_IN_STRSET (**argv, "id", "uuid", "path", "filename")) {
 		if (*argc == 1) {
 			if (!nmc->complete) {
 				g_set_error (error, NMCLI_ERROR, NMC_RESULT_ERROR_USER_INPUT,
@@ -1616,10 +1875,9 @@ do_connections_show (NmCli *nmc, int argc, char **argv)
 	gs_free_error GError *err = NULL;
 	gs_free char *profile_flds = NULL;
 	gs_free char *active_flds = NULL;
-	GPtrArray *invisibles, *sorted_cons;
 	gboolean active_only = FALSE;
 	gs_unref_array GArray *order = NULL;
-	guint i, j;
+	guint i;
 	int option;
 
 	/* check connection show options [--active] [--order <order spec>] */
@@ -1647,50 +1905,59 @@ do_connections_show (NmCli *nmc, int argc, char **argv)
 	}
 
 	if (argc == 0) {
-		const GPtrArray *connections;
 		const char *fields_str = NULL;
-		char *fields_common = NMC_FIELDS_CON_SHOW_COMMON;
-		const NMMetaAbstractInfo *const*tmpl;
-		NmcOutputField *arr;
-		NMC_OUTPUT_DATA_DEFINE_SCOPED (out);
+		gs_unref_ptrarray GPtrArray *items = NULL;
+		gs_free NMMetaSelectionResultList *selection = NULL;
+		gboolean show_active_fields = TRUE;
 
 		if (nmc->complete)
 			goto finish;
 
 		if (!nmc->required_fields || strcasecmp (nmc->required_fields, "common") == 0)
-			fields_str = fields_common;
+			fields_str = NMC_FIELDS_CON_SHOW_COMMON;
 		else if (!nmc->required_fields || strcasecmp (nmc->required_fields, "all") == 0) {
 		} else
 			fields_str = nmc->required_fields;
 
-		tmpl = (const NMMetaAbstractInfo *const*) nmc_fields_con_show;
-		out_indices = parse_output_fields (fields_str, tmpl, FALSE, NULL, &err);
-		if (err)
-			goto finish;
-
-		/* Add headers */
-		arr = nmc_dup_fields_array (tmpl, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES);
-		g_ptr_array_add (out.output_data, arr);
-
-		/* There might be active connections not present in connection list
-		 * (e.g. private connections of a different user). Show them as well. */
-		invisibles = get_invisible_active_connections (nmc);
-		for (i = 0; i < invisibles->len; i++)
-			fill_output_connection_for_invisible (invisibles->pdata[i], nmc->nmc_config.print_output, out.output_data);
-		g_ptr_array_free (invisibles, TRUE);
+		/* determine whether the user wants to see any fields that are related to active-connections
+		 * (e.g. the apath, the current state, or the device where the profile is active).
+		 *
+		 * If that's the case, then we will show one line for each active connection. In case
+		 * a profile has multiple active connections, it will be listed multiple times.
+		 * If that's not the case, we filter out these duplicate lines. */
+		selection = nm_meta_selection_create_parse_list ((const NMMetaAbstractInfo *const*) metagen_con_show,
+		                                                 NULL,
+		                                                 fields_str,
+		                                                 FALSE,
+		                                                 NULL);
+		if (selection && selection->num > 0) {
+			show_active_fields = FALSE;
+			for (i = 0; i < selection->num; i++) {
+				const NmcMetaGenericInfo *info = (const NmcMetaGenericInfo *) selection->items[i].info;
+
+				if (NM_IN_SET (info->info_type, NMC_GENERIC_INFO_TYPE_CON_SHOW_DEVICE,
+				                                NMC_GENERIC_INFO_TYPE_CON_SHOW_STATE,
+				                                NMC_GENERIC_INFO_TYPE_CON_SHOW_ACTIVE_PATH)) {
+					show_active_fields = TRUE;
+					break;
+				}
+			}
+		}
 
-		/* Sort the connections and fill the output data */
-		connections = nm_client_get_connections (nmc->client);
-		sorted_cons = sort_connections (connections, nmc, order);
-		for (i = 0; i < sorted_cons->len; i++)
-			fill_output_connection (sorted_cons->pdata[i], nmc->client, nmc->nmc_config.print_output, out.output_data, active_only);
-		g_ptr_array_free (sorted_cons, TRUE);
-
-		print_data_prepare_width (out.output_data);
-		print_data (&nmc->nmc_config, out_indices,
-		            active_only ? _("NetworkManager active profiles")
-		                        : _("NetworkManager connection profiles"),
-		            0, &out);
+		/* Optionally start paging the output. */
+		nmc_terminal_spawn_pager (&nmc->nmc_config);
+
+		items = con_show_get_items (nmc, active_only, show_active_fields, order);
+		g_ptr_array_add (items, NULL);
+		if (!nmc_print (&nmc->nmc_config,
+		                items->pdata,
+		                active_only
+		                  ? _("NetworkManager active profiles")
+		                  : _("NetworkManager connection profiles"),
+		               (const NMMetaAbstractInfo *const*) metagen_con_show,
+		                fields_str,
+		                &err))
+			goto finish;
 	} else {
 		gboolean new_line = FALSE;
 		gboolean without_fields = (nmc->required_fields == NULL);
@@ -1713,7 +1980,7 @@ do_connections_show (NmCli *nmc, int argc, char **argv)
 			char **argv_cp = argv;
 
 			do {
-				if (NM_IN_STRSET (*argv_cp, "id", "uuid", "path", "apath")) {
+				if (NM_IN_STRSET (*argv_cp, "id", "uuid", "path", "filename", "apath")) {
 					argc_cp--;
 					argv_cp++;
 				}
@@ -1731,9 +1998,9 @@ do_connections_show (NmCli *nmc, int argc, char **argv)
 			guint i_found_cons;
 
 			if (argc == 1 && nmc->complete)
-				nmc_complete_strings (*argv, "id", "uuid", "path", "apath", NULL);
+				nmc_complete_strings (*argv, "id", "uuid", "path", "filename", "apath", NULL);
 
-			if (NM_IN_STRSET (*argv, "id", "uuid", "path", "apath")) {
+			if (NM_IN_STRSET (*argv, "id", "uuid", "path", "filename", "apath")) {
 				selector = *argv;
 				argc--;
 				argv++;
@@ -1827,10 +2094,10 @@ do_connections_show (NmCli *nmc, int argc, char **argv)
 				if (without_fields || active_flds) {
 					guint l = explicit_acon ? 1 : (found_acons ? found_acons->len : 0);
 
-					for (j = 0; j < l; j++) {
+					for (i = 0; i < l; i++) {
 						NMActiveConnection *acon;
 
-						if (j > 0) {
+						if (i > 0) {
 							/* if there are multiple active connections, separate them with newline.
 							 * that is a bit odd, because we already separate connections with newlines,
 							 * and commonly don't separate the connection from the first active connection. */
@@ -1840,7 +2107,7 @@ do_connections_show (NmCli *nmc, int argc, char **argv)
 						if (explicit_acon)
 							acon = explicit_acon;
 						else
-							acon = found_acons->pdata[j];
+							acon = found_acons->pdata[i];
 
 						nmc->required_fields = active_flds;
 						res = nmc_active_connection_details (acon, nmc);
@@ -2579,7 +2846,7 @@ connection_cb_info_finish (ConnectionCbInfo *info, gpointer obj)
 	} else {
 		while (info->obj_list->len > 0) {
 			obj = info->obj_list->pdata[info->obj_list->len - 1];
-			g_ptr_array_remove_index (info->obj_list, info->obj_list->len);
+			g_ptr_array_remove_index (info->obj_list, info->obj_list->len - 1);
 			connection_cb_info_obj_list_destroy (info, obj);
 		}
 	}
@@ -2680,9 +2947,9 @@ do_connection_down (NmCli *nmc, int argc, char **argv)
 		const char *selector = NULL;
 
 		if (arg_num == 1 && nmc->complete)
-			nmc_complete_strings (*arg_ptr, "id", "uuid", "path", "apath", NULL);
+			nmc_complete_strings (*arg_ptr, "id", "uuid", "path",  "filename", "apath", NULL);
 
-		if (NM_IN_STRSET (*arg_ptr, "id", "uuid", "path", "apath")) {
+		if (NM_IN_STRSET (*arg_ptr, "id", "uuid", "path",  "filename", "apath")) {
 			selector = *arg_ptr;
 			arg_num--;
 			arg_ptr++;
@@ -7681,6 +7948,7 @@ do_connection_edit (NmCli *nmc, int argc, char **argv)
 	const char *con_id = NULL;
 	const char *con_uuid = NULL;
 	const char *con_path = NULL;
+	const char *con_filename = NULL;
 	const char *selector = NULL;
 	gs_free_error GError *error = NULL;
 	GError *err1 = NULL;
@@ -7689,11 +7957,12 @@ do_connection_edit (NmCli *nmc, int argc, char **argv)
 	                         { "id",       TRUE, &con_id,   FALSE },
 	                         { "uuid",     TRUE, &con_uuid, FALSE },
 	                         { "path",     TRUE, &con_path, FALSE },
+	                         { "filename", TRUE, &con_filename, FALSE },
 	                         { NULL } };
 
 	next_arg (nmc, &argc, &argv, NULL);
 	if (argc == 1 && nmc->complete)
-		nmc_complete_strings (*argv, "type", "con-name", "id", "uuid", "path", NULL);
+		nmc_complete_strings (*argv, "type", "con-name", "id", "uuid", "path",  "filename", NULL);
 
 	nmc->return_value = NMC_RESULT_SUCCESS;
 
@@ -7715,20 +7984,23 @@ do_connection_edit (NmCli *nmc, int argc, char **argv)
 	connections = nm_client_get_connections (nmc->client);
 
 	if (!con) {
-		if (con_id && !con_uuid && !con_path) {
+		if (con_id && !con_uuid && !con_path && !con_filename) {
 			con = con_id;
 			selector = "id";
-		} else if (con_uuid && !con_id && !con_path) {
+		} else if (con_uuid && !con_id && !con_path && !con_filename) {
 			con = con_uuid;
 			selector = "uuid";
-		} else if (con_path && !con_id && !con_uuid) {
+		} else if (con_path && !con_id && !con_uuid && !con_filename) {
 			con = con_path;
 			selector = "path";
-		} else if (!con_path && !con_id && !con_uuid) {
+		} else if (con_filename && !con_path && !con_id && !con_uuid) {
+			con = con_filename;
+			selector = "filename";
+		} else if (!con_path && !con_id && !con_uuid && !con_filename) {
 			/* no-op */
 		} else {
 			g_string_printf (nmc->return_text,
-			                 _("Error: only one of 'id', uuid, or 'path' can be provided."));
+			                 _("Error: only one of 'id', 'filename', uuid, or 'path' can be provided."));
 			NMC_RETURN (nmc, NMC_RESULT_ERROR_USER_INPUT);
 		}
 	}
diff --git a/clients/cli/connections.h b/clients/cli/connections.h
index 591e9cda..43cd97f6 100644
--- a/clients/cli/connections.h
+++ b/clients/cli/connections.h
@@ -35,8 +35,8 @@ nmc_read_connection_properties (NmCli *nmc,
 
 NMMetaColor nmc_active_connection_state_to_color (NMActiveConnectionState state);
 
-extern const NmcMetaGenericInfo *const nmc_fields_con_show[];
-extern const NmcMetaGenericInfo *const nmc_fields_con_active_details_general[];
+extern const NmcMetaGenericInfo *const metagen_con_show[];
+extern const NmcMetaGenericInfo *const metagen_con_active_general[];
 extern const NmcMetaGenericInfo *const nmc_fields_con_active_details_vpn[];
 extern const NmcMetaGenericInfo *const nmc_fields_con_active_details_groups[];
 
diff --git a/clients/cli/devices.c b/clients/cli/devices.c
index b99e606a..58102ed3 100644
--- a/clients/cli/devices.c
+++ b/clients/cli/devices.c
@@ -1725,7 +1725,7 @@ add_and_activate_cb (GObject *client,
 			if (state == NM_ACTIVE_CONNECTION_STATE_ACTIVATED) {
 				if (nmc->nmc_config.print_output == NMC_PRINT_PRETTY)
 					nmc_terminal_erase_line ();
-				if (info->hotspot)
+				if (!info->hotspot)
 					g_print (_("Connection with UUID '%s' created and activated on device '%s'\n"),
 					         nm_active_connection_get_uuid (active), nm_device_get_iface (device));
 				else
@@ -2488,41 +2488,6 @@ do_devices_monitor (NmCli *nmc, int argc, char **argv)
 	return nmc->return_value;
 }
 
-static void
-show_access_point_info (NMDevice *device, NmCli *nmc, NmcOutputData *out)
-{
-	NMAccessPoint *active_ap = NULL;
-	const char *active_bssid = NULL;
-	GPtrArray *aps;
-	NmcOutputField *arr;
-
-	if (nm_device_get_state (device) == NM_DEVICE_STATE_ACTIVATED) {
-		active_ap = nm_device_wifi_get_active_access_point (NM_DEVICE_WIFI (device));
-		active_bssid = active_ap ? nm_access_point_get_bssid (active_ap) : NULL;
-	}
-
-	arr = nmc_dup_fields_array ((const NMMetaAbstractInfo *const*) nmc_fields_dev_wifi_list,
-	                            NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES);
-	g_ptr_array_add (out->output_data, arr);
-
-	{
-		APInfo info = {
-			.nmc = nmc,
-			.index = 1,
-			.output_flags = 0,
-			.active_bssid = active_bssid,
-			.device = nm_device_get_iface (device),
-			.output_data = out->output_data,
-		};
-
-		aps = sort_access_points (nm_device_wifi_get_access_points (NM_DEVICE_WIFI (device)));
-		g_ptr_array_foreach (aps, fill_output_access_point, &info);
-		g_ptr_array_free (aps, FALSE);
-	}
-
-	print_data_prepare_width (out->output_data);
-}
-
 /*
  * Find a Wi-Fi device with 'iface' in 'devices' array. If 'iface' is NULL,
  * the first Wi-Fi device is returned. 'idx' parameter is updated to the point
@@ -2616,6 +2581,217 @@ find_ap_on_device (NMDevice *device, const char *bssid, const char *ssid, gboole
 }
 
 static void
+show_access_point_info (NMDeviceWifi *wifi, NmCli *nmc, NmcOutputData *out)
+{
+	NMAccessPoint *active_ap = NULL;
+	const char *active_bssid = NULL;
+	GPtrArray *aps;
+	NmcOutputField *arr;
+
+	if (nm_device_get_state (NM_DEVICE (wifi)) == NM_DEVICE_STATE_ACTIVATED) {
+		active_ap = nm_device_wifi_get_active_access_point (wifi);
+		active_bssid = active_ap ? nm_access_point_get_bssid (active_ap) : NULL;
+	}
+
+	arr = nmc_dup_fields_array ((const NMMetaAbstractInfo *const*) nmc_fields_dev_wifi_list,
+	                            NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES);
+	g_ptr_array_add (out->output_data, arr);
+
+	{
+		APInfo info = {
+			.nmc = nmc,
+			.index = 1,
+			.output_flags = 0,
+			.active_bssid = active_bssid,
+			.device = nm_device_get_iface (NM_DEVICE (wifi)),
+			.output_data = out->output_data,
+		};
+
+		aps = sort_access_points (nm_device_wifi_get_access_points (wifi));
+		g_ptr_array_foreach (aps, fill_output_access_point, &info);
+		g_ptr_array_free (aps, FALSE);
+	}
+
+	print_data_prepare_width (out->output_data);
+}
+
+static void
+wifi_print_aps (NMDeviceWifi *wifi,
+                NmCli *nmc,
+                GArray *_out_indices,
+                const NMMetaAbstractInfo *const*tmpl,
+                const char *bssid_user)
+{
+	NMAccessPoint *ap = NULL;
+	const GPtrArray *aps;
+	APInfo *info;
+	guint i;
+	NmcOutputField *arr;
+	const char *base_hdr = _("Wi-Fi scan list");
+	NMC_OUTPUT_DATA_DEFINE_SCOPED (out);
+	gs_free char *header_name = NULL;
+	static gboolean empty_line = FALSE;
+
+	if (empty_line)
+		g_print ("\n"); /* Empty line between devices' APs */
+
+	/* Main header name */
+	header_name = construct_header_name (base_hdr, nm_device_get_iface (NM_DEVICE (wifi)));
+
+	out_indices = g_array_ref (_out_indices);
+
+	if (bssid_user) {
+		/* Specific AP requested - list only that */
+		aps = nm_device_wifi_get_access_points (wifi);
+		for (i = 0; i < aps->len; i++) {
+			char *bssid_up;
+			NMAccessPoint *candidate_ap = g_ptr_array_index (aps, i);
+			const char *candidate_bssid = nm_access_point_get_bssid (candidate_ap);
+
+			bssid_up = g_ascii_strup (bssid_user, -1);
+			if (!strcmp (bssid_up, candidate_bssid))
+				ap = candidate_ap;
+			g_free (bssid_up);
+		}
+		if (ap) {
+			/* Add headers (field names) */
+			arr = nmc_dup_fields_array (tmpl, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES);
+			g_ptr_array_add (out.output_data, arr);
+
+			info = g_malloc0 (sizeof (APInfo));
+			info->nmc = nmc;
+			info->index = 1;
+			info->output_flags = 0;
+			info->active_bssid = NULL;
+			info->device = nm_device_get_iface (NM_DEVICE (wifi));
+			info->output_data = out.output_data;
+
+			fill_output_access_point (ap, info);
+
+			print_data_prepare_width (out.output_data);
+			print_data (&nmc->nmc_config, out_indices, header_name, 0, &out);
+			g_free (info);
+
+			nmc->return_value = NMC_RESULT_SUCCESS;
+			empty_line = TRUE;
+		}
+	} else {
+		show_access_point_info (wifi, nmc, &out);
+		print_data (&nmc->nmc_config, out_indices, header_name, 0, &out);
+		empty_line = TRUE;
+	}
+}
+
+typedef struct {
+	NmCli *nmc;
+	NMDeviceWifi *wifi;
+	const NMMetaAbstractInfo *const*tmpl;
+
+	const char *bssid_user;
+	gulong last_scan_id;
+	guint  timeout_id;
+	GCancellable *scan_cancellable;
+	GArray *out_indices;
+} WifiListData;
+
+static void
+wifi_list_finish (WifiListData *data)
+{
+	NmCli *nmc = data->nmc;
+
+	wifi_print_aps (data->wifi, data->nmc, data->out_indices,
+	                data->tmpl, data->bssid_user);
+
+	if (--nmc->should_wait == 0) {
+		if (nmc->return_value == NMC_RESULT_ERROR_NOT_FOUND) {
+			g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."),
+			                 data->bssid_user);
+		}
+		g_main_loop_quit (loop);
+	}
+
+	g_signal_handler_disconnect (data->wifi, data->last_scan_id);
+	nm_clear_g_source (&data->timeout_id);
+	nm_clear_g_cancellable (&data->scan_cancellable);
+	g_array_unref (data->out_indices);
+	g_object_unref (data->wifi);
+	g_slice_free (WifiListData, data);
+}
+
+static void
+wifi_last_scan_updated (GObject *gobject, GParamSpec *pspec, gpointer user_data)
+{
+	WifiListData *data = user_data;
+
+	wifi_list_finish (data);
+}
+
+static void
+wifi_list_rescan_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
+{
+	NMDeviceWifi *wifi = NM_DEVICE_WIFI (source_object);
+	WifiListData *data = user_data;
+	gs_free_error GError *error = NULL;
+
+	if (!nm_device_wifi_request_scan_finish (wifi, res, &error)) {
+		if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+			return;
+
+		if (g_error_matches (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_NOT_ALLOWED)) {
+			/* This likely means that scanning is already in progress. There's
+			 * a good chance we'll get updated results soon; wait for them. */
+			return;
+		}
+
+		/* Scanning could not be initiated for unknown reason,
+		 * no point in waiting for results. */
+		wifi_list_finish (data);
+	}
+}
+
+static gboolean
+wifi_list_scan_timeout (gpointer user_data)
+{
+	WifiListData *data = user_data;
+
+	wifi_list_finish (data);
+
+	return G_SOURCE_REMOVE;
+}
+
+static void
+wifi_list_aps (NMDeviceWifi *wifi,
+               NmCli *nmc,
+               GArray *out_indices,
+               const NMMetaAbstractInfo *const*tmpl,
+               const char *bssid_user,
+               gint64 rescan_cutoff)
+{
+	gboolean needs_rescan;
+	WifiListData *data;
+
+	needs_rescan = rescan_cutoff < 0 || (rescan_cutoff > 0 && nm_device_wifi_get_last_scan (wifi) < rescan_cutoff);
+
+	if (needs_rescan) {
+		data = g_slice_new0 (WifiListData);
+		data->nmc = nmc;
+		data->wifi = g_object_ref (wifi);
+		data->tmpl = tmpl;
+		data->out_indices = g_array_ref (out_indices);;
+		data->bssid_user = bssid_user;
+		data->last_scan_id = g_signal_connect (wifi, "notify::" NM_DEVICE_WIFI_LAST_SCAN,
+		                                       G_CALLBACK (wifi_last_scan_updated), data);
+		data->scan_cancellable = g_cancellable_new ();
+		data->timeout_id = g_timeout_add_seconds (15, wifi_list_scan_timeout, data);
+		nm_device_wifi_request_scan_async (wifi, data->scan_cancellable, wifi_list_rescan_cb, data);
+
+		nmc->should_wait++;
+	} else {
+		wifi_print_aps (wifi, nmc, out_indices, tmpl, bssid_user);
+	}
+}
+
+static void
 complete_aps (NMDevice **devices, const char *ifname,
               const char *bssid_prefix, const char *ssid_prefix)
 {
@@ -2640,28 +2816,22 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
 {
 	GError *error = NULL;
 	NMDevice *device = NULL;
-	NMAccessPoint *ap = NULL;
 	const char *ifname = NULL;
 	const char *bssid_user = NULL;
+	const char *rescan = NULL;
 	gs_free NMDevice **devices = NULL;
-	const GPtrArray *aps;
-	APInfo *info;
-	int i, j;
+	guint i;
 	const char *fields_str = NULL;
 	const NMMetaAbstractInfo *const*tmpl;
-	NmcOutputField *arr;
-	const char *base_hdr = _("Wi-Fi scan list");
-	NMC_OUTPUT_DATA_DEFINE_SCOPED (out);
-	gs_free char *header_name = NULL;
+	gs_unref_array GArray *out_indices = NULL;
+	int option;
+	guint64 rescan_cutoff;
 
 	devices = nmc_get_devices_sorted (nmc->client);
 
-	next_arg (nmc, &argc, &argv, NULL);
-	while (argc > 0) {
-		if (argc == 1 && nmc->complete)
-			nmc_complete_strings (*argv, "ifname", "bssid", NULL);
-
-		if (strcmp (*argv, "ifname") == 0) {
+	while ((option = next_arg (nmc, &argc, &argv, "ifname", "hwaddr", "bssid", "--rescan", NULL)) > 0) {
+		switch (option) {
+		case 1: /* ifname */
 			argc--;
 			argv++;
 			if (!argc) {
@@ -2671,8 +2841,9 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
 			ifname = *argv;
 			if (argc == 1 && nmc->complete)
 				complete_device (devices, ifname, TRUE);
-		} else if (strcmp (*argv, "bssid") == 0 || strcmp (*argv, "hwaddr") == 0) {
-			/* hwaddr is deprecated and will be removed later */
+			break;
+		case 2: /* hwaddr is deprecated and will be removed later */
+		case 3: /* bssid */
 			argc--;
 			argv++;
 			if (!argc) {
@@ -2682,11 +2853,24 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
 			bssid_user = *argv;
 			if (argc == 1 && nmc->complete)
 				complete_aps (devices, NULL, bssid_user, NULL);
-		} else if (!nmc->complete) {
-			g_printerr (_("Unknown parameter: %s\n"), *argv);
+			/* We'll switch this to NMC_RESULT_SUCCESS if we find an access point. */
+			nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
+			break;
+		case 4: /* --rescan */
+			argc--;
+			argv++;
+			if (!argc) {
+				g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
+				return NMC_RESULT_ERROR_USER_INPUT;
+			}
+			rescan = *argv;
+			if (argc == 1 && nmc->complete)
+				nmc_complete_strings (rescan, "auto", "no", "yes", NULL);
+			break;
+		default:
+			g_assert_not_reached();
+			break;
 		}
-
-		next_arg (nmc, &argc, &argv, NULL);
 	}
 
 	if (!nmc->required_fields || strcasecmp (nmc->required_fields, "common") == 0)
@@ -2707,55 +2891,29 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
 	if (nmc->complete)
 		return nmc->return_value;
 
-	if (ifname) {
+	if (argc)
+		g_printerr (_("Unknown parameter: %s\n"), *argv);
+
+	if (rescan == NULL || strcmp (rescan, "auto") == 0) {
+		rescan_cutoff = NM_MAX (nm_utils_get_timestamp_msec () - 30 * NM_UTILS_MSEC_PER_SECOND, 0);
+	} else if (strcmp (rescan, "no") == 0) {
+		rescan_cutoff = 0;
+	} else if (strcmp (rescan, "yes") == 0) {
+		rescan_cutoff = -1;
+	} else {
+		g_string_printf (nmc->return_text, _("Error: invalid rescan argument: '%s' not among [auto, no, yes]"), rescan);
+		return NMC_RESULT_ERROR_USER_INPUT;
+	}
 
+	if (ifname) {
 		device = find_wifi_device_by_iface (devices, ifname, NULL);
 		if (!device) {
 			g_string_printf (nmc->return_text, _("Error: Device '%s' not found."), ifname);
 			return NMC_RESULT_ERROR_NOT_FOUND;
 		}
-		/* Main header name */
-		header_name = construct_header_name (base_hdr, ifname);
 
 		if (NM_IS_DEVICE_WIFI (device)) {
-			if (bssid_user) {
-				/* Specific AP requested - list only that */
-				aps = nm_device_wifi_get_access_points (NM_DEVICE_WIFI (device));
-				for (j = 0; j < aps->len; j++) {
-					char *bssid_up;
-					NMAccessPoint *candidate_ap = g_ptr_array_index (aps, j);
-					const char *candidate_bssid = nm_access_point_get_bssid (candidate_ap);
-
-					bssid_up = g_ascii_strup (bssid_user, -1);
-					if (!strcmp (bssid_up, candidate_bssid))
-						ap = candidate_ap;
-					g_free (bssid_up);
-				}
-				if (!ap) {
-					g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."),
-					                 bssid_user);
-					return NMC_RESULT_ERROR_NOT_FOUND;
-				}
-				/* Add headers (field names) */
-				arr = nmc_dup_fields_array (tmpl, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES);
-				g_ptr_array_add (out.output_data, arr);
-
-				info = g_malloc0 (sizeof (APInfo));
-				info->nmc = nmc;
-				info->index = 1;
-				info->output_flags = 0;
-				info->active_bssid = NULL;
-				info->device = nm_device_get_iface (device);
-
-				fill_output_access_point (ap, info);
-
-				print_data_prepare_width (out.output_data);
-				print_data (&nmc->nmc_config, out_indices, header_name, 0, &out);
-				g_free (info);
-			} else {
-				show_access_point_info (device, nmc, &out);
-				print_data (&nmc->nmc_config, out_indices, NULL, 0, &out);
-			}
+			wifi_list_aps (NM_DEVICE_WIFI (device), nmc, out_indices, tmpl, bssid_user, rescan_cutoff);
 		} else {
 			if (   nm_device_get_device_type (device) == NM_DEVICE_TYPE_GENERIC
 			    && g_strcmp0 (nm_device_get_type_description (device), "wifi") == 0) {
@@ -2770,76 +2928,11 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
 			return NMC_RESULT_ERROR_UNKNOWN;
 		}
 	} else {
-		gboolean empty_line = FALSE;
-
-		/* List APs for all devices */
-		if (bssid_user) {
-			/* Specific AP requested - list only that */
-			for (i = 0; devices[i]; i++) {
-				NMDevice *dev = devices[i];
-				NMC_OUTPUT_DATA_DEFINE_SCOPED (out2);
-				gs_free char *header_name2 = NULL;
-
-				if (!NM_IS_DEVICE_WIFI (dev))
-					continue;
-
-				/* Main header name */
-				header_name2 = construct_header_name (base_hdr, nm_device_get_iface (dev));
-				out2_indices = parse_output_fields (fields_str, tmpl, FALSE, NULL, NULL);
-
-				arr = nmc_dup_fields_array (tmpl, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES);
-				g_ptr_array_add (out2.output_data, arr);
-
-				aps = nm_device_wifi_get_access_points (NM_DEVICE_WIFI (dev));
-				for (j = 0; j < aps->len; j++) {
-					char *bssid_up;
-					NMAccessPoint *candidate_ap = g_ptr_array_index (aps, j);
-					const char *candidate_bssid = nm_access_point_get_bssid (candidate_ap);
-
-					bssid_up = g_ascii_strup (bssid_user, -1);
-					if (!strcmp (bssid_up, candidate_bssid)) {
-						ap = candidate_ap;
-
-						info = g_malloc0 (sizeof (APInfo));
-						info->nmc = nmc;
-						info->index = 1;
-						info->output_flags = 0;
-						info->active_bssid = NULL;
-						info->device = nm_device_get_iface (dev);
-						fill_output_access_point (ap, info);
-						g_free (info);
-					}
-					g_free (bssid_up);
-				}
-				if (empty_line)
-					g_print ("\n"); /* Empty line between devices' APs */
-				print_data_prepare_width (out2.output_data);
-				print_data (&nmc->nmc_config, out2_indices, header_name2, 0, &out2);
-				empty_line = TRUE;
-			}
-			if (!ap) {
-				g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."),
-				                 bssid_user);
-				return NMC_RESULT_ERROR_NOT_FOUND;
-			}
-		} else {
-			for (i = 0; devices[i]; i++) {
-				NMDevice *dev = devices[i];
-				NMC_OUTPUT_DATA_DEFINE_SCOPED (out2);
-				gs_free char *header_name2 = NULL;
-
-				/* Main header name */
-				header_name2 = construct_header_name (base_hdr,
-				                                      nm_device_get_iface (dev));
-				out2_indices = parse_output_fields (fields_str, tmpl, FALSE, NULL, NULL);
-
-				if (NM_IS_DEVICE_WIFI (dev)) {
-					if (empty_line)
-						g_print ("\n"); /* Empty line between devices' APs */
-					show_access_point_info (dev, nmc, &out2);
-					print_data (&nmc->nmc_config, out2_indices, header_name2, 0, &out2);
-					empty_line = TRUE;
-				}
+		for (i = 0; devices[i]; i++) {
+			NMDevice *dev = devices[i];
+
+			if (NM_IS_DEVICE_WIFI (dev)) {
+				wifi_list_aps (NM_DEVICE_WIFI (dev), nmc, out_indices, tmpl, bssid_user, rescan_cutoff);
 			}
 		}
 	}
@@ -2852,9 +2945,9 @@ do_device_wifi_connect_network (NmCli *nmc, int argc, char **argv)
 {
 	NMDevice *device = NULL;
 	NMAccessPoint *ap = NULL;
-	NM80211ApFlags ap_flags = NM_802_11_AP_FLAGS_NONE;
-	NM80211ApSecurityFlags ap_wpa_flags = NM_802_11_AP_SEC_NONE;
-	NM80211ApSecurityFlags ap_rsn_flags = NM_802_11_AP_SEC_NONE;
+	NM80211ApFlags ap_flags;
+	NM80211ApSecurityFlags ap_wpa_flags;
+	NM80211ApSecurityFlags ap_rsn_flags;
 	NMConnection *connection = NULL;
 	NMSettingConnection *s_con;
 	NMSettingWireless *s_wifi;
@@ -3151,7 +3244,9 @@ do_device_wifi_connect_network (NmCli *nmc, int argc, char **argv)
 	ap_rsn_flags = nm_access_point_get_rsn_flags (ap);
 
 	/* Set password for WEP or WPA-PSK. */
-	if (ap_flags & NM_802_11_AP_FLAGS_PRIVACY) {
+	if (   (ap_flags & NM_802_11_AP_FLAGS_PRIVACY)
+	    || ap_wpa_flags != NM_802_11_AP_SEC_NONE
+	    || ap_rsn_flags != NM_802_11_AP_SEC_NONE) {
 		/* Ask for missing password when one is expected and '--ask' is used */
 		if (!password && nmc->ask)
 			password = passwd_ask = nmc_readline_echo (nmc->nmc_config.show_secrets, _("Password: "));
diff --git a/clients/cli/general.c b/clients/cli/general.c
index 841df8bd..de743970 100644
--- a/clients/cli/general.c
+++ b/clients/cli/general.c
@@ -560,6 +560,9 @@ print_permissions (void *user_data)
 		permissions[i++] = GINT_TO_POINTER (perm);
 	permissions[i++] = NULL;
 
+	/* Optionally start paging the output. */
+	nmc_terminal_spawn_pager (&nmc->nmc_config);
+
 	if (!nmc_print (&nmc->nmc_config,
 	                permissions,
 	                _("NetworkManager permissions"),
diff --git a/clients/cli/nmcli.c b/clients/cli/nmcli.c
index e9752952..6407f50b 100644
--- a/clients/cli/nmcli.c
+++ b/clients/cli/nmcli.c
@@ -188,8 +188,8 @@ complete_fields (const char *option, const char *prefix)
 	complete_field (h, metagen_ip4_config);
 	complete_field (h, nmc_fields_dhcp_config);
 	complete_field (h, nmc_fields_ip6_config);
-	complete_field (h, nmc_fields_con_show);
-	complete_field (h, nmc_fields_con_active_details_general);
+	complete_field (h, metagen_con_show);
+	complete_field (h, metagen_con_active_general);
 	complete_field (h, nmc_fields_con_active_details_vpn);
 	complete_field (h, nmc_fields_con_active_details_groups);
 	complete_field (h, nmc_fields_dev_status);
diff --git a/clients/cli/nmcli.h b/clients/cli/nmcli.h
index 61bf86de..bcf1c01b 100644
--- a/clients/cli/nmcli.h
+++ b/clients/cli/nmcli.h
@@ -72,6 +72,14 @@ typedef enum {
 	NMC_PRINT_PRETTY = 2
 } NMCPrintOutput;
 
+static inline NMMetaAccessorGetType
+nmc_print_output_to_accessor_get_type (NMCPrintOutput print_output)
+{
+	return   (print_output != NMC_PRINT_TERSE)
+	       ? NM_META_ACCESSOR_GET_TYPE_PRETTY
+	       : NM_META_ACCESSOR_GET_TYPE_PARSABLE;
+}
+
 /* === Output fields === */
 
 typedef enum {
diff --git a/clients/cli/utils.c b/clients/cli/utils.c
index 32c44e39..365a0303 100644
--- a/clients/cli/utils.c
+++ b/clients/cli/utils.c
@@ -199,10 +199,18 @@ next_arg (NmCli *nmc, int *argc, char ***argv, ...)
 
 		/* Check command dependent options first */
 		while ((cmd_option = va_arg (args, const char *))) {
-			/* strip heading "--" form cmd_option */
-			if (nmc_arg_is_option (**argv, cmd_option + 2)) {
-				va_end (args);
-				return cmd_option_pos;
+			if (cmd_option[0] == '-' && cmd_option[1] == '-') {
+				/* Match as an option (leading "--" stripped) */
+				if (nmc_arg_is_option (**argv, cmd_option + 2)) {
+					va_end (args);
+					return cmd_option_pos;
+				}
+			} else {
+				/* Match literally. */
+				if (strcmp (**argv, cmd_option) == 0) {
+					va_end (args);
+					return cmd_option_pos;
+				}
 			}
 			cmd_option_pos++;
 		}
@@ -1004,9 +1012,7 @@ _print_fill (const NmcConfig *nmc_config,
 	g_array_set_clear_func (cells, _print_data_cell_clear);
 	g_array_set_size (cells, targets_len * header_row->len);
 
-	text_get_type = pretty
-	                ? NM_META_ACCESSOR_GET_TYPE_PRETTY
-	                : NM_META_ACCESSOR_GET_TYPE_PARSABLE;
+	text_get_type = nmc_print_output_to_accessor_get_type (nmc_config->print_output);
 	text_get_flags = NM_META_ACCESSOR_GET_FLAGS_ACCEPT_STRV;
 	if (nmc_config->show_secrets)
 		text_get_flags |= NM_META_ACCESSOR_GET_FLAGS_SHOW_SECRETS;
@@ -1040,20 +1046,22 @@ _print_fill (const NmcConfig *nmc_config,
 			                                   &is_default,
 			                                   (gpointer *) &to_free);
 
+			nm_assert (!to_free || value == to_free);
+
 			header_cell->skip = nmc_config->overview && is_default;
 
 			if (NM_FLAGS_HAS (text_out_flags, NM_META_ACCESSOR_GET_OUT_FLAGS_STRV)) {
-				if (value) {
-					if (nmc_config->multiline_output) {
-						cell->text_format = PRINT_DATA_CELL_FORMAT_TYPE_STRV;
-						cell->text.strv = value;
-						cell->text_to_free = !!to_free;
-					} else {
+				if (nmc_config->multiline_output) {
+					cell->text_format = PRINT_DATA_CELL_FORMAT_TYPE_STRV;
+					cell->text.strv = value;
+					cell->text_to_free = !!to_free;
+				} else {
+					if (value && ((const char *const*) value)[0]) {
 						cell->text.plain = g_strjoinv (" | ", (char **) value);
 						cell->text_to_free = TRUE;
-						if (to_free)
-							g_strfreev ((char **) to_free);
 					}
+					if (to_free)
+						g_strfreev ((char **) to_free);
 				}
 			} else {
 				cell->text.plain = value;
@@ -1165,7 +1173,7 @@ _print_do (const NmcConfig *nmc_config,
 	guint i_row, i_col;
 	nm_auto_free_gstring GString *str = NULL;
 
-	g_assert (col_len && row_len);
+	g_assert (col_len);
 
 	/* Main header */
 	if (pretty && header_name_no_l10n) {
diff --git a/clients/cli/utils.h b/clients/cli/utils.h
index dc0ce083..19694d11 100644
--- a/clients/cli/utils.h
+++ b/clients/cli/utils.h
@@ -121,6 +121,37 @@ typedef enum {
 	NMC_GENERIC_INFO_TYPE_IP6_CONFIG_DOMAIN,
 	_NMC_GENERIC_INFO_TYPE_IP6_CONFIG_NUM,
 
+	NMC_GENERIC_INFO_TYPE_CON_SHOW_NAME = 0,
+	NMC_GENERIC_INFO_TYPE_CON_SHOW_UUID,
+	NMC_GENERIC_INFO_TYPE_CON_SHOW_TYPE,
+	NMC_GENERIC_INFO_TYPE_CON_SHOW_TIMESTAMP,
+	NMC_GENERIC_INFO_TYPE_CON_SHOW_TIMESTAMP_REAL,
+	NMC_GENERIC_INFO_TYPE_CON_SHOW_AUTOCONNECT,
+	NMC_GENERIC_INFO_TYPE_CON_SHOW_AUTOCONNECT_PRIORITY,
+	NMC_GENERIC_INFO_TYPE_CON_SHOW_READONLY,
+	NMC_GENERIC_INFO_TYPE_CON_SHOW_DBUS_PATH,
+	NMC_GENERIC_INFO_TYPE_CON_SHOW_ACTIVE,
+	NMC_GENERIC_INFO_TYPE_CON_SHOW_DEVICE,
+	NMC_GENERIC_INFO_TYPE_CON_SHOW_STATE,
+	NMC_GENERIC_INFO_TYPE_CON_SHOW_ACTIVE_PATH,
+	NMC_GENERIC_INFO_TYPE_CON_SHOW_SLAVE,
+	NMC_GENERIC_INFO_TYPE_CON_SHOW_FILENAME,
+	_NMC_GENERIC_INFO_TYPE_CON_SHOW_NUM,
+
+	NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_NAME = 0,
+	NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_UUID,
+	NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_DEVICES,
+	NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_STATE,
+	NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_DEFAULT,
+	NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_DEFAULT6,
+	NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_SPEC_OBJECT,
+	NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_VPN,
+	NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_DBUS_PATH,
+	NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_CON_PATH,
+	NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_ZONE,
+	NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_MASTER_PATH,
+	_NMC_GENERIC_INFO_TYPE_CON_ACTIVE_GENERAL_NUM,
+
 } NmcGenericInfoType;
 
 #define NMC_HANDLE_COLOR(color) \
diff --git a/clients/common/nm-meta-setting-desc.c b/clients/common/nm-meta-setting-desc.c
index 2988b084..3e4bd1bb 100644
--- a/clients/common/nm-meta-setting-desc.c
+++ b/clients/common/nm-meta-setting-desc.c
@@ -6073,6 +6073,9 @@ static const NMMetaPropertyInfo *const property_infos_IP6_CONFIG[] = {
 			                            | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
 		),
 	),
+	PROPERTY_INFO (NM_SETTING_IP6_CONFIG_DHCP_DUID, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_DUID,
+		.property_type =                &_pt_gobject_string,
+	),
 	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_SEND_HOSTNAME,
 		.property_type =                &_pt_gobject_bool,
 	),
@@ -6221,6 +6224,9 @@ static const NMMetaPropertyInfo *const property_infos_MACSEC[] = {
 			                            | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
 		),
 	),
+	PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_SEND_SCI,
+		.property_type =                &_pt_gobject_bool,
+	),
 	NULL
 };
 
@@ -7252,6 +7258,20 @@ static const NMMetaPropertyInfo *const property_infos_WIRELESS[] = {
 			.typ_flags =                NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT,
 		),
 	),
+	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_WAKE_ON_WLAN,
+		.property_type =                &_pt_gobject_enum,
+		.property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+			PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+				.get_gtype =            nm_setting_wireless_wake_on_wlan_get_type,
+				.value_infos =          ENUM_VALUE_INFOS (
+					{
+						.value = NM_SETTING_WIRELESS_WAKE_ON_WLAN_NONE,
+						.nick = "disabled",
+					}
+				),
+			),
+		),
+	),
 	NULL
 };
 
diff --git a/clients/common/settings-docs.h b/clients/common/settings-docs.h
index 06f96a4e..5e5151b0 100644
--- a/clients/common/settings-docs.h
+++ b/clients/common/settings-docs.h
@@ -21,6 +21,7 @@
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_SEEN_BSSIDS N_("A list of BSSIDs (each BSSID formatted as a MAC address like \"00:11:22:33:44:55\") that have been detected as part of the Wi-Fi network.  NetworkManager internally tracks previously seen BSSIDs. The property is only meant for reading and reflects the BSSID list of NetworkManager. The changes you make to this property will not be preserved.")
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_SSID N_("SSID of the Wi-Fi network. Must be specified.")
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_TX_POWER N_("If non-zero, directs the device to use the specified transmit power. Units are dBm.  This property is highly driver dependent and not all devices support setting a static transmit power.")
+#define DESCRIBE_DOC_NM_SETTING_WIRELESS_WAKE_ON_WLAN N_("The NMSettingWirelessWakeOnWLan options to enable. Not all devices support all options. May be any combination of NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY (0x2), NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT (0x4), NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC (0x8), NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE (0x10), NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST (0x20), NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE (0x40), NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE (0x80), NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP (0x100) or the special values NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE (0x8000) (to disable management of Wake-on-LAN in NetworkManager).")
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_AUTH_ALG N_("When WEP is used (ie, key-mgmt = \"none\" or \"ieee8021x\") indicate the 802.11 authentication algorithm required by the AP here.  One of \"open\" for Open System, \"shared\" for Shared Key, or \"leap\" for Cisco LEAP.  When using Cisco LEAP (ie, key-mgmt = \"ieee8021x\" and auth-alg = \"leap\") the \"leap-username\" and \"leap-password\" properties must be specified.")
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_FILS N_("Indicates whether Fast Initial Link Setup (802.11ai) must be enabled for the connection.  One of NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT (0) (use global default value), NM_SETTING_WIRELESS_SECURITY_FILS_DISABLE (1) (disable FILS), NM_SETTING_WIRELESS_SECURITY_FILS_OPTIONAL (2) (enable FILS if the supplicant and the access point support it) or NM_SETTING_WIRELESS_SECURITY_FILS_REQUIRED (3) (enable FILS and fail if not supported).  When set to NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT (0) and no global default is set, FILS will be optionally enabled.")
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_GROUP N_("A list of group/broadcast encryption algorithms which prevents connections to Wi-Fi networks that do not utilize one of the algorithms in the list.  For maximum compatibility leave this property empty.  Each list element may be one of \"wep40\", \"wep104\", \"tkip\", or \"ccmp\".")
@@ -87,9 +88,9 @@
 #define DESCRIBE_DOC_NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD_FLAGS N_("Flags indicating how to handle the \"private-key-password\" property.")
 #define DESCRIBE_DOC_NM_SETTING_802_1X_SUBJECT_MATCH N_("Substring to be matched against the subject of the certificate presented by the authentication server. When unset, no verification of the authentication server certificate's subject is performed.  This property provides little security, if any, and its use is deprecated in favor of NMSetting8021x:domain-suffix-match.")
 #define DESCRIBE_DOC_NM_SETTING_802_1X_SYSTEM_CA_CERTS N_("When TRUE, overrides the \"ca-path\" and \"phase2-ca-path\" properties using the system CA directory specified at configure time with the --system-ca-path switch.  The certificates in this directory are added to the verification chain in addition to any certificates specified by the \"ca-cert\" and \"phase2-ca-cert\" properties. If the path provided with --system-ca-path is rather a file name (bundle of trusted CA certificates), it overrides \"ca-cert\" and \"phase2-ca-cert\" properties instead (sets ca_cert/ca_cert2 options for wpa_supplicant).")
-#define DESCRIBE_DOC_NM_SETTING_WIRED_AUTO_NEGOTIATE N_("If TRUE, enforce auto-negotiation of port speed and duplex mode.  If FALSE, \"speed\" and \"duplex\" properties should be both set or link configuration will be skipped.")
+#define DESCRIBE_DOC_NM_SETTING_WIRED_AUTO_NEGOTIATE N_("When TRUE, enforce auto-negotiation of speed and duplex mode. If \"speed\" and \"duplex\" properties are both specified, only that single mode will be advertised and accepted during the link auto-negotiation process: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. When FALSE, \"speed\" and \"duplex\" properties should be both set or link configuration will be skipped.")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_CLONED_MAC_ADDRESS N_("If specified, request that the device use this MAC address instead. This is known as MAC cloning or spoofing. Beside explicitly specifying a MAC address, the special values \"preserve\", \"permanent\", \"random\" and \"stable\" are supported. \"preserve\" means not to touch the MAC address on activation. \"permanent\" means to use the permanent hardware address if the device has one (otherwise this is treated as \"preserve\"). \"random\" creates a random MAC address on each connect. \"stable\" creates a hashed MAC address based on connection.stable-id and a machine dependent key. If unspecified, the value can be overwritten via global defaults, see manual of NetworkManager.conf. If still unspecified, it defaults to \"preserve\" (older versions of NetworkManager may use a different default value). On D-Bus, this field is expressed as \"assigned-mac-address\" or the deprecated \"cloned-mac-address\".")
-#define DESCRIBE_DOC_NM_SETTING_WIRED_DUPLEX N_("Can be specified only when \"auto-negotiate\" is \"off\". In that case, statically configures the device to use that specified duplex mode, either \"half\" or \"full\". Must be set together with the \"speed\" property if specified. Before specifying a duplex mode be sure your device supports it.")
+#define DESCRIBE_DOC_NM_SETTING_WIRED_DUPLEX N_("When a value is set, either \"half\" or \"full\", configures the device to use the specified duplex mode. If \"auto-negotiate\" is \"yes\" the specified duplex mode will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. If the value is unset (the default), the link configuration will be either skipped (if \"auto-negotiate\" is \"no\", the default) or will be auto-negotiated (if \"auto-negotiate\" is \"yes\") and the local device will advertise all the supported duplex modes. Must be set together with the \"speed\" property if specified. Before specifying a duplex mode be sure your device supports it.")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK N_("With \"cloned-mac-address\" setting \"random\" or \"stable\", by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting \"FE:FF:FF:00:00:00\" means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the \"random\" or \"stable\" algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of \"FE:FF:FF:00:00:00 68:F7:28:00:00:00\" will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of \"02:00:00:00:00:00 00:00:00:00:00:00\" will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, \"02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00\" will create a fully scrambled MAC address, randomly locally or globally administered.")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_MAC_ADDRESS N_("If specified, this connection will only apply to the Ethernet device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing).")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST N_("If specified, this connection will never apply to the Ethernet device whose permanent MAC address matches an address in the list.  Each MAC address is in the standard hex-digits-and-colons notation (00:11:22:33:44:55).")
@@ -99,7 +100,7 @@
 #define DESCRIBE_DOC_NM_SETTING_WIRED_S390_NETTYPE N_("s390 network device type; one of \"qeth\", \"lcs\", or \"ctc\", representing the different types of virtual network devices available on s390 systems.")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_S390_OPTIONS N_("Dictionary of key/value pairs of s390-specific device options.  Both keys and values must be strings.  Allowed keys include \"portno\", \"layer2\", \"portname\", \"protocol\", among others.  Key names must contain only alphanumeric characters (ie, [a-zA-Z0-9]).")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_S390_SUBCHANNELS N_("Identifies specific subchannels that this network device uses for communication with z/VM or s390 host.  Like the \"mac-address\" property for non-z/VM devices, this property can be used to ensure this connection only applies to the network device that uses these subchannels.  The list should contain exactly 3 strings, and each string may only be composed of hexadecimal characters and the period (.) character.")
-#define DESCRIBE_DOC_NM_SETTING_WIRED_SPEED N_("Can be set to a value greater than zero only when \"auto-negotiate\" is \"off\". In that case, statically configures the device to use that specified speed. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the \"duplex\" property when non-zero. Before specifying a speed value be sure your device supports it.")
+#define DESCRIBE_DOC_NM_SETTING_WIRED_SPEED N_("When a value grater than 0 is set, configures the device to use the specified speed. If \"auto-negotiate\" is \"yes\" the specified speed will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabit speeds, as in this case link negotiation is mandatory. If the value is unset (0, the default), the link configuration will be either skipped (if \"auto-negotiate\" is \"no\", the default) or will be auto-negotiated (if \"auto-negotiate\" is \"yes\") and the local device will advertise all the supported speeds. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the \"duplex\" property when non-zero. Before specifying a speed value be sure your device supports it.")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_WAKE_ON_LAN N_("The NMSettingWiredWakeOnLan options to enable. Not all devices support all options. May be any combination of NM_SETTING_WIRED_WAKE_ON_LAN_PHY (0x2), NM_SETTING_WIRED_WAKE_ON_LAN_UNICAST (0x4), NM_SETTING_WIRED_WAKE_ON_LAN_MULTICAST (0x8), NM_SETTING_WIRED_WAKE_ON_LAN_BROADCAST (0x10), NM_SETTING_WIRED_WAKE_ON_LAN_ARP (0x20), NM_SETTING_WIRED_WAKE_ON_LAN_MAGIC (0x40) or the special values NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE (0x8000) (to disable management of Wake-on-LAN in NetworkManager).")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_WAKE_ON_LAN_PASSWORD N_("If specified, the password used with magic-packet-based Wake-on-LAN, represented as an Ethernet MAC address.  If NULL, no password will be required.")
 #define DESCRIBE_DOC_NM_SETTING_ADSL_ENCAPSULATION N_("Encapsulation of ADSL connection.  Can be \"vcmux\" or \"llc\".")
@@ -152,7 +153,7 @@
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_READ_ONLY N_("FALSE if the connection can be modified using the provided settings service's D-Bus interface with the right privileges, or TRUE if the connection is read-only and cannot be modified.")
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_SECONDARIES N_("List of connection UUIDs that should be activated when the base connection itself is activated. Currently only VPN connections are supported.")
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_SLAVE_TYPE N_("Setting name of the device type of this slave's master connection (eg, \"bond\"), or NULL if this connection is not a slave.")
-#define DESCRIBE_DOC_NM_SETTING_CONNECTION_STABLE_ID N_("This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The '$' character is treated special to perform dynamic substitutions at runtime. Currently supported are \"${CONNECTION}\", \"${DEVICE}\", \"${BOOT}\", \"${RANDOM}\". These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that \"${DEVICE}\" corresponds the the interface name of the device. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as \"$$\". For example, set it to \"${CONNECTION}-${BOOT}-${DEVICE}\" to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to \"${CONNECTION}\" and uses a unique, fixed ID for the connection.")
+#define DESCRIBE_DOC_NM_SETTING_CONNECTION_STABLE_ID N_("This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable and to derive the DHCP DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid]. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The '$' character is treated special to perform dynamic substitutions at runtime. Currently supported are \"${CONNECTION}\", \"${DEVICE}\", \"${BOOT}\", \"${RANDOM}\". These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that \"${DEVICE}\" corresponds the the interface name of the device. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as \"$$\". For example, set it to \"${CONNECTION}-${BOOT}-${DEVICE}\" to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to \"${CONNECTION}\" and uses a unique, fixed ID for the connection.")
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_TIMESTAMP N_("The time, in seconds since the Unix Epoch, that the connection was last _successfully_ fully activated. NetworkManager updates the connection timestamp periodically when the connection is active to ensure that an active connection has the latest timestamp. The property is only meant for reading (changes to this property will not be preserved).")
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_TYPE N_("Base type of the connection. For hardware-dependent connections, should contain the setting name of the hardware-type specific setting (ie, \"802-3-ethernet\" or \"802-11-wireless\" or \"bluetooth\", etc), and for non-hardware dependent connections like VPN or otherwise, should contain the setting name of that setting type (ie, \"vpn\" or \"bridge\", etc).")
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_UUID N_("A universally unique identifier for the connection, for example generated with libuuid.  It should be assigned when the connection is created, and never changed as long as the connection still applies to the same network.  For example, it should not be changed when the \"id\" property or NMSettingIP4Config changes, but might need to be re-created when the Wi-Fi SSID, mobile broadband network provider, or \"type\" property changes. The UUID must be in the format \"2815492f-7e56-435e-b2e9-246bd7cdc664\" (ie, contains only hexadecimal characters and \"-\").")
@@ -233,6 +234,7 @@
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE N_("Configure method for creating the address for use with RFC4862 IPv6 Stateless Address Autoconfiguration. The permitted values are: NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_EUI64 (0) or NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_STABLE_PRIVACY (1). If the property is set to EUI64, the addresses will be generated using the interface tokens derived from hardware address. This makes the host part of the address to stay constant, making it possible to track host's presence when it changes networks. The address changes when the interface hardware is replaced. The value of stable-privacy enables use of cryptographically secure hash of a secret host-specific key along with the connection's stable-id and the network address as specified by RFC7217. This makes it impossible to use the address track host's presence, and makes the address stable when the network interface hardware is replaced. On D-Bus, the absence of an addr-gen-mode setting equals enabling stable-privacy. For keyfile plugin, the absence of the setting on disk means EUI64 so that the property doesn't change on upgrade from older versions. Note that this setting is distinct from the Privacy Extensions as configured by \"ip6-privacy\" property and it does not affect the temporary addresses configured with this option.")
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ADDRESSES N_("Array of IP addresses.")
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DAD_TIMEOUT N_("Timeout in milliseconds used to check for the presence of duplicate IP addresses on the network.  If an address conflict is detected, the activation will fail.  A zero value means that no duplicate address detection is performed, -1 means the default value (either configuration ipvx.dad-timeout override or zero).  A value greater than zero is a timeout in milliseconds. The property is currently implemented only for IPv4.")
+#define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_DUID N_("A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp client to identify itself to DHCPv6 servers (RFC 3315). The DUID is carried in the Client Identifier option. If the property is a hex string ('aa:bb:cc') it is interpreted as a binary DUID and filled as an opaque value in the Client Identifier option. The special value \"lease\" will retrieve the DUID previously used from the lease file belonging to the connection. If no DUID is found and \"dhclient\" is the configured dhcp client, the DUID is searched in the system-wide dhclient lease file. If still no DUID is found, or another dhcp client is used, a global and permanent DUID-UUID (RFC 6355) will be generated based on the machine-id. The special values \"llt\" and \"ll\" will generate a DUID of type LLT or LL (see RFC 3315) based on the current MAC address of the device. In order to try providing a stable DUID-LLT, the time field will contain a constant timestamp that is used globally (for all profiles) and persisted to disk. The special values \"stable-llt\", \"stable-ll\" and \"stable-uuid\" will generate a DUID of the corresponding type, derived from the connection's stable-id and a per-host unique key. So, the link-layer address of \"stable-ll\" and \"stable-llt\" will be a generated address derived from the stable id. The DUID-LLT time value in the \"stable-llt\" option will be picked among a static timespan of three years (the upper bound of the interval is the same constant timestamp used in \"llt\"). When the property is unset, the global value provided for \"ipv6.dhcp-duid\" is used. If no global value is provided, the default \"lease\" value is assumed.")
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_HOSTNAME N_("If the \"dhcp-send-hostname\" property is TRUE, then the specified name will be sent to the DHCP server when acquiring a lease. This property and \"dhcp-fqdn\" are mutually exclusive and cannot be set at the same time.")
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_SEND_HOSTNAME N_("If TRUE, a hostname is sent to the DHCP server when acquiring a lease. Some DHCP servers use this hostname to update DNS databases, essentially providing a static hostname for the computer.  If the \"dhcp-hostname\" property is NULL and this property is TRUE, the current persistent hostname of the computer is sent.")
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_TIMEOUT N_("A timeout for a DHCP transaction in seconds.")
@@ -260,6 +262,7 @@
 #define DESCRIBE_DOC_NM_SETTING_MACSEC_NAME N_("The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example \"ppp\" or \"wireless\" or \"wired\".")
 #define DESCRIBE_DOC_NM_SETTING_MACSEC_PARENT N_("If given, specifies the parent interface name or parent connection UUID from which this MACSEC interface should be created.  If this property is not specified, the connection must contain an \"802-3-ethernet\" setting with a \"mac-address\" property.")
 #define DESCRIBE_DOC_NM_SETTING_MACSEC_PORT N_("The port component of the SCI (Secure Channel Identifier), between 1 and 65534.")
+#define DESCRIBE_DOC_NM_SETTING_MACSEC_SEND_SCI N_("Specifies whether the SCI (Secure Channel Identifier) is included in every packet.")
 #define DESCRIBE_DOC_NM_SETTING_MACSEC_VALIDATION N_("Specifies the validation mode for incoming frames.")
 #define DESCRIBE_DOC_NM_SETTING_MACVLAN_MODE N_("The macvlan mode, which specifies the communication mechanism between multiple macvlans on the same lower device.")
 #define DESCRIBE_DOC_NM_SETTING_MACVLAN_NAME N_("The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example \"ppp\" or \"wireless\" or \"wired\".")
@@ -328,7 +331,7 @@
 #define DESCRIBE_DOC_NM_SETTING_TEAM_NAME N_("The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example \"ppp\" or \"wireless\" or \"wired\".")
 #define DESCRIBE_DOC_NM_SETTING_TEAM_NOTIFY_PEERS_COUNT N_("Corresponds to the teamd notify_peers.count.")
 #define DESCRIBE_DOC_NM_SETTING_TEAM_NOTIFY_PEERS_INTERVAL N_("Corresponds to the teamd notify_peers.interval.")
-#define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER N_("Corresponds to the teamd runner.name. Permitted values are: \"roundrobin\", \"broadcast\", \"activebackup\", \"loadbalance\", \"lacp\". When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value).")
+#define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER N_("Corresponds to the teamd runner.name. Permitted values are: \"roundrobin\", \"broadcast\", \"activebackup\", \"loadbalance\", \"lacp\", \"random\". When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value).")
 #define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_ACTIVE N_("Corresponds to the teamd runner.active.")
 #define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY N_("Corresponds to the teamd runner.agg_select_policy.")
 #define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_FAST_RATE N_("Corresponds to the teamd runner.fast_rate.")
diff --git a/clients/common/settings-docs.h.in b/clients/common/settings-docs.h.in
index 06f96a4e..5e5151b0 100644
--- a/clients/common/settings-docs.h.in
+++ b/clients/common/settings-docs.h.in
@@ -21,6 +21,7 @@
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_SEEN_BSSIDS N_("A list of BSSIDs (each BSSID formatted as a MAC address like \"00:11:22:33:44:55\") that have been detected as part of the Wi-Fi network.  NetworkManager internally tracks previously seen BSSIDs. The property is only meant for reading and reflects the BSSID list of NetworkManager. The changes you make to this property will not be preserved.")
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_SSID N_("SSID of the Wi-Fi network. Must be specified.")
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_TX_POWER N_("If non-zero, directs the device to use the specified transmit power. Units are dBm.  This property is highly driver dependent and not all devices support setting a static transmit power.")
+#define DESCRIBE_DOC_NM_SETTING_WIRELESS_WAKE_ON_WLAN N_("The NMSettingWirelessWakeOnWLan options to enable. Not all devices support all options. May be any combination of NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY (0x2), NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT (0x4), NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC (0x8), NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE (0x10), NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST (0x20), NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE (0x40), NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE (0x80), NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP (0x100) or the special values NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE (0x8000) (to disable management of Wake-on-LAN in NetworkManager).")
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_AUTH_ALG N_("When WEP is used (ie, key-mgmt = \"none\" or \"ieee8021x\") indicate the 802.11 authentication algorithm required by the AP here.  One of \"open\" for Open System, \"shared\" for Shared Key, or \"leap\" for Cisco LEAP.  When using Cisco LEAP (ie, key-mgmt = \"ieee8021x\" and auth-alg = \"leap\") the \"leap-username\" and \"leap-password\" properties must be specified.")
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_FILS N_("Indicates whether Fast Initial Link Setup (802.11ai) must be enabled for the connection.  One of NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT (0) (use global default value), NM_SETTING_WIRELESS_SECURITY_FILS_DISABLE (1) (disable FILS), NM_SETTING_WIRELESS_SECURITY_FILS_OPTIONAL (2) (enable FILS if the supplicant and the access point support it) or NM_SETTING_WIRELESS_SECURITY_FILS_REQUIRED (3) (enable FILS and fail if not supported).  When set to NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT (0) and no global default is set, FILS will be optionally enabled.")
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_GROUP N_("A list of group/broadcast encryption algorithms which prevents connections to Wi-Fi networks that do not utilize one of the algorithms in the list.  For maximum compatibility leave this property empty.  Each list element may be one of \"wep40\", \"wep104\", \"tkip\", or \"ccmp\".")
@@ -87,9 +88,9 @@
 #define DESCRIBE_DOC_NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD_FLAGS N_("Flags indicating how to handle the \"private-key-password\" property.")
 #define DESCRIBE_DOC_NM_SETTING_802_1X_SUBJECT_MATCH N_("Substring to be matched against the subject of the certificate presented by the authentication server. When unset, no verification of the authentication server certificate's subject is performed.  This property provides little security, if any, and its use is deprecated in favor of NMSetting8021x:domain-suffix-match.")
 #define DESCRIBE_DOC_NM_SETTING_802_1X_SYSTEM_CA_CERTS N_("When TRUE, overrides the \"ca-path\" and \"phase2-ca-path\" properties using the system CA directory specified at configure time with the --system-ca-path switch.  The certificates in this directory are added to the verification chain in addition to any certificates specified by the \"ca-cert\" and \"phase2-ca-cert\" properties. If the path provided with --system-ca-path is rather a file name (bundle of trusted CA certificates), it overrides \"ca-cert\" and \"phase2-ca-cert\" properties instead (sets ca_cert/ca_cert2 options for wpa_supplicant).")
-#define DESCRIBE_DOC_NM_SETTING_WIRED_AUTO_NEGOTIATE N_("If TRUE, enforce auto-negotiation of port speed and duplex mode.  If FALSE, \"speed\" and \"duplex\" properties should be both set or link configuration will be skipped.")
+#define DESCRIBE_DOC_NM_SETTING_WIRED_AUTO_NEGOTIATE N_("When TRUE, enforce auto-negotiation of speed and duplex mode. If \"speed\" and \"duplex\" properties are both specified, only that single mode will be advertised and accepted during the link auto-negotiation process: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. When FALSE, \"speed\" and \"duplex\" properties should be both set or link configuration will be skipped.")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_CLONED_MAC_ADDRESS N_("If specified, request that the device use this MAC address instead. This is known as MAC cloning or spoofing. Beside explicitly specifying a MAC address, the special values \"preserve\", \"permanent\", \"random\" and \"stable\" are supported. \"preserve\" means not to touch the MAC address on activation. \"permanent\" means to use the permanent hardware address if the device has one (otherwise this is treated as \"preserve\"). \"random\" creates a random MAC address on each connect. \"stable\" creates a hashed MAC address based on connection.stable-id and a machine dependent key. If unspecified, the value can be overwritten via global defaults, see manual of NetworkManager.conf. If still unspecified, it defaults to \"preserve\" (older versions of NetworkManager may use a different default value). On D-Bus, this field is expressed as \"assigned-mac-address\" or the deprecated \"cloned-mac-address\".")
-#define DESCRIBE_DOC_NM_SETTING_WIRED_DUPLEX N_("Can be specified only when \"auto-negotiate\" is \"off\". In that case, statically configures the device to use that specified duplex mode, either \"half\" or \"full\". Must be set together with the \"speed\" property if specified. Before specifying a duplex mode be sure your device supports it.")
+#define DESCRIBE_DOC_NM_SETTING_WIRED_DUPLEX N_("When a value is set, either \"half\" or \"full\", configures the device to use the specified duplex mode. If \"auto-negotiate\" is \"yes\" the specified duplex mode will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. If the value is unset (the default), the link configuration will be either skipped (if \"auto-negotiate\" is \"no\", the default) or will be auto-negotiated (if \"auto-negotiate\" is \"yes\") and the local device will advertise all the supported duplex modes. Must be set together with the \"speed\" property if specified. Before specifying a duplex mode be sure your device supports it.")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK N_("With \"cloned-mac-address\" setting \"random\" or \"stable\", by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting \"FE:FF:FF:00:00:00\" means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the \"random\" or \"stable\" algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of \"FE:FF:FF:00:00:00 68:F7:28:00:00:00\" will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of \"02:00:00:00:00:00 00:00:00:00:00:00\" will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, \"02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00\" will create a fully scrambled MAC address, randomly locally or globally administered.")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_MAC_ADDRESS N_("If specified, this connection will only apply to the Ethernet device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing).")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST N_("If specified, this connection will never apply to the Ethernet device whose permanent MAC address matches an address in the list.  Each MAC address is in the standard hex-digits-and-colons notation (00:11:22:33:44:55).")
@@ -99,7 +100,7 @@
 #define DESCRIBE_DOC_NM_SETTING_WIRED_S390_NETTYPE N_("s390 network device type; one of \"qeth\", \"lcs\", or \"ctc\", representing the different types of virtual network devices available on s390 systems.")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_S390_OPTIONS N_("Dictionary of key/value pairs of s390-specific device options.  Both keys and values must be strings.  Allowed keys include \"portno\", \"layer2\", \"portname\", \"protocol\", among others.  Key names must contain only alphanumeric characters (ie, [a-zA-Z0-9]).")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_S390_SUBCHANNELS N_("Identifies specific subchannels that this network device uses for communication with z/VM or s390 host.  Like the \"mac-address\" property for non-z/VM devices, this property can be used to ensure this connection only applies to the network device that uses these subchannels.  The list should contain exactly 3 strings, and each string may only be composed of hexadecimal characters and the period (.) character.")
-#define DESCRIBE_DOC_NM_SETTING_WIRED_SPEED N_("Can be set to a value greater than zero only when \"auto-negotiate\" is \"off\". In that case, statically configures the device to use that specified speed. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the \"duplex\" property when non-zero. Before specifying a speed value be sure your device supports it.")
+#define DESCRIBE_DOC_NM_SETTING_WIRED_SPEED N_("When a value grater than 0 is set, configures the device to use the specified speed. If \"auto-negotiate\" is \"yes\" the specified speed will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabit speeds, as in this case link negotiation is mandatory. If the value is unset (0, the default), the link configuration will be either skipped (if \"auto-negotiate\" is \"no\", the default) or will be auto-negotiated (if \"auto-negotiate\" is \"yes\") and the local device will advertise all the supported speeds. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the \"duplex\" property when non-zero. Before specifying a speed value be sure your device supports it.")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_WAKE_ON_LAN N_("The NMSettingWiredWakeOnLan options to enable. Not all devices support all options. May be any combination of NM_SETTING_WIRED_WAKE_ON_LAN_PHY (0x2), NM_SETTING_WIRED_WAKE_ON_LAN_UNICAST (0x4), NM_SETTING_WIRED_WAKE_ON_LAN_MULTICAST (0x8), NM_SETTING_WIRED_WAKE_ON_LAN_BROADCAST (0x10), NM_SETTING_WIRED_WAKE_ON_LAN_ARP (0x20), NM_SETTING_WIRED_WAKE_ON_LAN_MAGIC (0x40) or the special values NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE (0x8000) (to disable management of Wake-on-LAN in NetworkManager).")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_WAKE_ON_LAN_PASSWORD N_("If specified, the password used with magic-packet-based Wake-on-LAN, represented as an Ethernet MAC address.  If NULL, no password will be required.")
 #define DESCRIBE_DOC_NM_SETTING_ADSL_ENCAPSULATION N_("Encapsulation of ADSL connection.  Can be \"vcmux\" or \"llc\".")
@@ -152,7 +153,7 @@
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_READ_ONLY N_("FALSE if the connection can be modified using the provided settings service's D-Bus interface with the right privileges, or TRUE if the connection is read-only and cannot be modified.")
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_SECONDARIES N_("List of connection UUIDs that should be activated when the base connection itself is activated. Currently only VPN connections are supported.")
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_SLAVE_TYPE N_("Setting name of the device type of this slave's master connection (eg, \"bond\"), or NULL if this connection is not a slave.")
-#define DESCRIBE_DOC_NM_SETTING_CONNECTION_STABLE_ID N_("This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The '$' character is treated special to perform dynamic substitutions at runtime. Currently supported are \"${CONNECTION}\", \"${DEVICE}\", \"${BOOT}\", \"${RANDOM}\". These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that \"${DEVICE}\" corresponds the the interface name of the device. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as \"$$\". For example, set it to \"${CONNECTION}-${BOOT}-${DEVICE}\" to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to \"${CONNECTION}\" and uses a unique, fixed ID for the connection.")
+#define DESCRIBE_DOC_NM_SETTING_CONNECTION_STABLE_ID N_("This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable and to derive the DHCP DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid]. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The '$' character is treated special to perform dynamic substitutions at runtime. Currently supported are \"${CONNECTION}\", \"${DEVICE}\", \"${BOOT}\", \"${RANDOM}\". These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that \"${DEVICE}\" corresponds the the interface name of the device. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as \"$$\". For example, set it to \"${CONNECTION}-${BOOT}-${DEVICE}\" to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to \"${CONNECTION}\" and uses a unique, fixed ID for the connection.")
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_TIMESTAMP N_("The time, in seconds since the Unix Epoch, that the connection was last _successfully_ fully activated. NetworkManager updates the connection timestamp periodically when the connection is active to ensure that an active connection has the latest timestamp. The property is only meant for reading (changes to this property will not be preserved).")
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_TYPE N_("Base type of the connection. For hardware-dependent connections, should contain the setting name of the hardware-type specific setting (ie, \"802-3-ethernet\" or \"802-11-wireless\" or \"bluetooth\", etc), and for non-hardware dependent connections like VPN or otherwise, should contain the setting name of that setting type (ie, \"vpn\" or \"bridge\", etc).")
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_UUID N_("A universally unique identifier for the connection, for example generated with libuuid.  It should be assigned when the connection is created, and never changed as long as the connection still applies to the same network.  For example, it should not be changed when the \"id\" property or NMSettingIP4Config changes, but might need to be re-created when the Wi-Fi SSID, mobile broadband network provider, or \"type\" property changes. The UUID must be in the format \"2815492f-7e56-435e-b2e9-246bd7cdc664\" (ie, contains only hexadecimal characters and \"-\").")
@@ -233,6 +234,7 @@
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE N_("Configure method for creating the address for use with RFC4862 IPv6 Stateless Address Autoconfiguration. The permitted values are: NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_EUI64 (0) or NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_STABLE_PRIVACY (1). If the property is set to EUI64, the addresses will be generated using the interface tokens derived from hardware address. This makes the host part of the address to stay constant, making it possible to track host's presence when it changes networks. The address changes when the interface hardware is replaced. The value of stable-privacy enables use of cryptographically secure hash of a secret host-specific key along with the connection's stable-id and the network address as specified by RFC7217. This makes it impossible to use the address track host's presence, and makes the address stable when the network interface hardware is replaced. On D-Bus, the absence of an addr-gen-mode setting equals enabling stable-privacy. For keyfile plugin, the absence of the setting on disk means EUI64 so that the property doesn't change on upgrade from older versions. Note that this setting is distinct from the Privacy Extensions as configured by \"ip6-privacy\" property and it does not affect the temporary addresses configured with this option.")
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ADDRESSES N_("Array of IP addresses.")
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DAD_TIMEOUT N_("Timeout in milliseconds used to check for the presence of duplicate IP addresses on the network.  If an address conflict is detected, the activation will fail.  A zero value means that no duplicate address detection is performed, -1 means the default value (either configuration ipvx.dad-timeout override or zero).  A value greater than zero is a timeout in milliseconds. The property is currently implemented only for IPv4.")
+#define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_DUID N_("A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp client to identify itself to DHCPv6 servers (RFC 3315). The DUID is carried in the Client Identifier option. If the property is a hex string ('aa:bb:cc') it is interpreted as a binary DUID and filled as an opaque value in the Client Identifier option. The special value \"lease\" will retrieve the DUID previously used from the lease file belonging to the connection. If no DUID is found and \"dhclient\" is the configured dhcp client, the DUID is searched in the system-wide dhclient lease file. If still no DUID is found, or another dhcp client is used, a global and permanent DUID-UUID (RFC 6355) will be generated based on the machine-id. The special values \"llt\" and \"ll\" will generate a DUID of type LLT or LL (see RFC 3315) based on the current MAC address of the device. In order to try providing a stable DUID-LLT, the time field will contain a constant timestamp that is used globally (for all profiles) and persisted to disk. The special values \"stable-llt\", \"stable-ll\" and \"stable-uuid\" will generate a DUID of the corresponding type, derived from the connection's stable-id and a per-host unique key. So, the link-layer address of \"stable-ll\" and \"stable-llt\" will be a generated address derived from the stable id. The DUID-LLT time value in the \"stable-llt\" option will be picked among a static timespan of three years (the upper bound of the interval is the same constant timestamp used in \"llt\"). When the property is unset, the global value provided for \"ipv6.dhcp-duid\" is used. If no global value is provided, the default \"lease\" value is assumed.")
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_HOSTNAME N_("If the \"dhcp-send-hostname\" property is TRUE, then the specified name will be sent to the DHCP server when acquiring a lease. This property and \"dhcp-fqdn\" are mutually exclusive and cannot be set at the same time.")
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_SEND_HOSTNAME N_("If TRUE, a hostname is sent to the DHCP server when acquiring a lease. Some DHCP servers use this hostname to update DNS databases, essentially providing a static hostname for the computer.  If the \"dhcp-hostname\" property is NULL and this property is TRUE, the current persistent hostname of the computer is sent.")
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_TIMEOUT N_("A timeout for a DHCP transaction in seconds.")
@@ -260,6 +262,7 @@
 #define DESCRIBE_DOC_NM_SETTING_MACSEC_NAME N_("The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example \"ppp\" or \"wireless\" or \"wired\".")
 #define DESCRIBE_DOC_NM_SETTING_MACSEC_PARENT N_("If given, specifies the parent interface name or parent connection UUID from which this MACSEC interface should be created.  If this property is not specified, the connection must contain an \"802-3-ethernet\" setting with a \"mac-address\" property.")
 #define DESCRIBE_DOC_NM_SETTING_MACSEC_PORT N_("The port component of the SCI (Secure Channel Identifier), between 1 and 65534.")
+#define DESCRIBE_DOC_NM_SETTING_MACSEC_SEND_SCI N_("Specifies whether the SCI (Secure Channel Identifier) is included in every packet.")
 #define DESCRIBE_DOC_NM_SETTING_MACSEC_VALIDATION N_("Specifies the validation mode for incoming frames.")
 #define DESCRIBE_DOC_NM_SETTING_MACVLAN_MODE N_("The macvlan mode, which specifies the communication mechanism between multiple macvlans on the same lower device.")
 #define DESCRIBE_DOC_NM_SETTING_MACVLAN_NAME N_("The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example \"ppp\" or \"wireless\" or \"wired\".")
@@ -328,7 +331,7 @@
 #define DESCRIBE_DOC_NM_SETTING_TEAM_NAME N_("The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example \"ppp\" or \"wireless\" or \"wired\".")
 #define DESCRIBE_DOC_NM_SETTING_TEAM_NOTIFY_PEERS_COUNT N_("Corresponds to the teamd notify_peers.count.")
 #define DESCRIBE_DOC_NM_SETTING_TEAM_NOTIFY_PEERS_INTERVAL N_("Corresponds to the teamd notify_peers.interval.")
-#define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER N_("Corresponds to the teamd runner.name. Permitted values are: \"roundrobin\", \"broadcast\", \"activebackup\", \"loadbalance\", \"lacp\". When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value).")
+#define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER N_("Corresponds to the teamd runner.name. Permitted values are: \"roundrobin\", \"broadcast\", \"activebackup\", \"loadbalance\", \"lacp\", \"random\". When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value).")
 #define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_ACTIVE N_("Corresponds to the teamd runner.active.")
 #define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY N_("Corresponds to the teamd runner.agg_select_policy.")
 #define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_FAST_RATE N_("Corresponds to the teamd runner.fast_rate.")
diff --git a/clients/tests/test-client.check-on-disk/Makefile.am b/clients/tests/test-client.check-on-disk/Makefile.am
index aa49eda6..298ca689 100644
--- a/clients/tests/test-client.check-on-disk/Makefile.am
+++ b/clients/tests/test-client.check-on-disk/Makefile.am
@@ -1,4 +1,5 @@
 # generated with `NM_TEST_REGENERATE=1 make check`
+# See howto in "clients/tests/test-client.py"
 
 clients_tests_expected_files = \
 	clients/tests/test-client.check-on-disk/test_001-001.expected \
@@ -105,10 +106,254 @@ clients_tests_expected_files = \
 	clients/tests/test-client.check-on-disk/test_003-052.expected \
 	clients/tests/test-client.check-on-disk/test_003-053.expected \
 	clients/tests/test-client.check-on-disk/test_003-054.expected \
+	clients/tests/test-client.check-on-disk/test_003-055.expected \
+	clients/tests/test-client.check-on-disk/test_003-056.expected \
+	clients/tests/test-client.check-on-disk/test_003-057.expected \
+	clients/tests/test-client.check-on-disk/test_003-058.expected \
+	clients/tests/test-client.check-on-disk/test_003-059.expected \
+	clients/tests/test-client.check-on-disk/test_003-060.expected \
+	clients/tests/test-client.check-on-disk/test_003-061.expected \
+	clients/tests/test-client.check-on-disk/test_003-062.expected \
+	clients/tests/test-client.check-on-disk/test_003-063.expected \
+	clients/tests/test-client.check-on-disk/test_003-064.expected \
+	clients/tests/test-client.check-on-disk/test_003-065.expected \
+	clients/tests/test-client.check-on-disk/test_003-066.expected \
+	clients/tests/test-client.check-on-disk/test_003-067.expected \
+	clients/tests/test-client.check-on-disk/test_003-068.expected \
+	clients/tests/test-client.check-on-disk/test_003-069.expected \
+	clients/tests/test-client.check-on-disk/test_003-070.expected \
+	clients/tests/test-client.check-on-disk/test_003-071.expected \
+	clients/tests/test-client.check-on-disk/test_003-072.expected \
+	clients/tests/test-client.check-on-disk/test_003-073.expected \
+	clients/tests/test-client.check-on-disk/test_003-074.expected \
+	clients/tests/test-client.check-on-disk/test_003-075.expected \
+	clients/tests/test-client.check-on-disk/test_003-076.expected \
+	clients/tests/test-client.check-on-disk/test_003-077.expected \
+	clients/tests/test-client.check-on-disk/test_003-078.expected \
+	clients/tests/test-client.check-on-disk/test_003-079.expected \
+	clients/tests/test-client.check-on-disk/test_003-080.expected \
+	clients/tests/test-client.check-on-disk/test_003-081.expected \
+	clients/tests/test-client.check-on-disk/test_003-082.expected \
+	clients/tests/test-client.check-on-disk/test_003-083.expected \
+	clients/tests/test-client.check-on-disk/test_003-084.expected \
+	clients/tests/test-client.check-on-disk/test_003-085.expected \
+	clients/tests/test-client.check-on-disk/test_003-086.expected \
+	clients/tests/test-client.check-on-disk/test_003-087.expected \
+	clients/tests/test-client.check-on-disk/test_003-088.expected \
+	clients/tests/test-client.check-on-disk/test_003-089.expected \
+	clients/tests/test-client.check-on-disk/test_003-090.expected \
+	clients/tests/test-client.check-on-disk/test_003-091.expected \
+	clients/tests/test-client.check-on-disk/test_003-092.expected \
+	clients/tests/test-client.check-on-disk/test_003-093.expected \
+	clients/tests/test-client.check-on-disk/test_003-094.expected \
+	clients/tests/test-client.check-on-disk/test_003-095.expected \
+	clients/tests/test-client.check-on-disk/test_003-096.expected \
+	clients/tests/test-client.check-on-disk/test_003-097.expected \
+	clients/tests/test-client.check-on-disk/test_003-098.expected \
+	clients/tests/test-client.check-on-disk/test_003-099.expected \
+	clients/tests/test-client.check-on-disk/test_003-100.expected \
 	clients/tests/test-client.check-on-disk/test_004-001.expected \
 	clients/tests/test-client.check-on-disk/test_004-002.expected \
 	clients/tests/test-client.check-on-disk/test_004-003.expected \
 	clients/tests/test-client.check-on-disk/test_004-004.expected \
 	clients/tests/test-client.check-on-disk/test_004-005.expected \
 	clients/tests/test-client.check-on-disk/test_004-006.expected \
+	clients/tests/test-client.check-on-disk/test_004-007.expected \
+	clients/tests/test-client.check-on-disk/test_004-008.expected \
+	clients/tests/test-client.check-on-disk/test_004-009.expected \
+	clients/tests/test-client.check-on-disk/test_004-010.expected \
+	clients/tests/test-client.check-on-disk/test_004-011.expected \
+	clients/tests/test-client.check-on-disk/test_004-012.expected \
+	clients/tests/test-client.check-on-disk/test_004-013.expected \
+	clients/tests/test-client.check-on-disk/test_004-014.expected \
+	clients/tests/test-client.check-on-disk/test_004-015.expected \
+	clients/tests/test-client.check-on-disk/test_004-016.expected \
+	clients/tests/test-client.check-on-disk/test_004-017.expected \
+	clients/tests/test-client.check-on-disk/test_004-018.expected \
+	clients/tests/test-client.check-on-disk/test_004-019.expected \
+	clients/tests/test-client.check-on-disk/test_004-020.expected \
+	clients/tests/test-client.check-on-disk/test_004-021.expected \
+	clients/tests/test-client.check-on-disk/test_004-022.expected \
+	clients/tests/test-client.check-on-disk/test_004-023.expected \
+	clients/tests/test-client.check-on-disk/test_004-024.expected \
+	clients/tests/test-client.check-on-disk/test_004-025.expected \
+	clients/tests/test-client.check-on-disk/test_004-026.expected \
+	clients/tests/test-client.check-on-disk/test_004-027.expected \
+	clients/tests/test-client.check-on-disk/test_004-028.expected \
+	clients/tests/test-client.check-on-disk/test_004-029.expected \
+	clients/tests/test-client.check-on-disk/test_004-030.expected \
+	clients/tests/test-client.check-on-disk/test_004-031.expected \
+	clients/tests/test-client.check-on-disk/test_004-032.expected \
+	clients/tests/test-client.check-on-disk/test_004-033.expected \
+	clients/tests/test-client.check-on-disk/test_004-034.expected \
+	clients/tests/test-client.check-on-disk/test_004-035.expected \
+	clients/tests/test-client.check-on-disk/test_004-036.expected \
+	clients/tests/test-client.check-on-disk/test_004-037.expected \
+	clients/tests/test-client.check-on-disk/test_004-038.expected \
+	clients/tests/test-client.check-on-disk/test_004-039.expected \
+	clients/tests/test-client.check-on-disk/test_004-040.expected \
+	clients/tests/test-client.check-on-disk/test_004-041.expected \
+	clients/tests/test-client.check-on-disk/test_004-042.expected \
+	clients/tests/test-client.check-on-disk/test_004-043.expected \
+	clients/tests/test-client.check-on-disk/test_004-044.expected \
+	clients/tests/test-client.check-on-disk/test_004-045.expected \
+	clients/tests/test-client.check-on-disk/test_004-046.expected \
+	clients/tests/test-client.check-on-disk/test_004-047.expected \
+	clients/tests/test-client.check-on-disk/test_004-048.expected \
+	clients/tests/test-client.check-on-disk/test_004-049.expected \
+	clients/tests/test-client.check-on-disk/test_004-050.expected \
+	clients/tests/test-client.check-on-disk/test_004-051.expected \
+	clients/tests/test-client.check-on-disk/test_004-052.expected \
+	clients/tests/test-client.check-on-disk/test_004-053.expected \
+	clients/tests/test-client.check-on-disk/test_004-054.expected \
+	clients/tests/test-client.check-on-disk/test_004-055.expected \
+	clients/tests/test-client.check-on-disk/test_004-056.expected \
+	clients/tests/test-client.check-on-disk/test_004-057.expected \
+	clients/tests/test-client.check-on-disk/test_004-058.expected \
+	clients/tests/test-client.check-on-disk/test_004-059.expected \
+	clients/tests/test-client.check-on-disk/test_004-060.expected \
+	clients/tests/test-client.check-on-disk/test_004-061.expected \
+	clients/tests/test-client.check-on-disk/test_004-062.expected \
+	clients/tests/test-client.check-on-disk/test_004-063.expected \
+	clients/tests/test-client.check-on-disk/test_004-064.expected \
+	clients/tests/test-client.check-on-disk/test_004-065.expected \
+	clients/tests/test-client.check-on-disk/test_004-066.expected \
+	clients/tests/test-client.check-on-disk/test_004-067.expected \
+	clients/tests/test-client.check-on-disk/test_004-068.expected \
+	clients/tests/test-client.check-on-disk/test_004-069.expected \
+	clients/tests/test-client.check-on-disk/test_004-070.expected \
+	clients/tests/test-client.check-on-disk/test_004-071.expected \
+	clients/tests/test-client.check-on-disk/test_004-072.expected \
+	clients/tests/test-client.check-on-disk/test_004-073.expected \
+	clients/tests/test-client.check-on-disk/test_004-074.expected \
+	clients/tests/test-client.check-on-disk/test_004-075.expected \
+	clients/tests/test-client.check-on-disk/test_004-076.expected \
+	clients/tests/test-client.check-on-disk/test_004-077.expected \
+	clients/tests/test-client.check-on-disk/test_004-078.expected \
+	clients/tests/test-client.check-on-disk/test_004-079.expected \
+	clients/tests/test-client.check-on-disk/test_004-080.expected \
+	clients/tests/test-client.check-on-disk/test_004-081.expected \
+	clients/tests/test-client.check-on-disk/test_004-082.expected \
+	clients/tests/test-client.check-on-disk/test_004-083.expected \
+	clients/tests/test-client.check-on-disk/test_004-084.expected \
+	clients/tests/test-client.check-on-disk/test_004-085.expected \
+	clients/tests/test-client.check-on-disk/test_004-086.expected \
+	clients/tests/test-client.check-on-disk/test_004-087.expected \
+	clients/tests/test-client.check-on-disk/test_004-088.expected \
+	clients/tests/test-client.check-on-disk/test_004-089.expected \
+	clients/tests/test-client.check-on-disk/test_004-090.expected \
+	clients/tests/test-client.check-on-disk/test_004-091.expected \
+	clients/tests/test-client.check-on-disk/test_004-092.expected \
+	clients/tests/test-client.check-on-disk/test_004-093.expected \
+	clients/tests/test-client.check-on-disk/test_004-094.expected \
+	clients/tests/test-client.check-on-disk/test_004-095.expected \
+	clients/tests/test-client.check-on-disk/test_004-096.expected \
+	clients/tests/test-client.check-on-disk/test_004-097.expected \
+	clients/tests/test-client.check-on-disk/test_004-098.expected \
+	clients/tests/test-client.check-on-disk/test_004-099.expected \
+	clients/tests/test-client.check-on-disk/test_004-100.expected \
+	clients/tests/test-client.check-on-disk/test_004-101.expected \
+	clients/tests/test-client.check-on-disk/test_004-102.expected \
+	clients/tests/test-client.check-on-disk/test_004-103.expected \
+	clients/tests/test-client.check-on-disk/test_004-104.expected \
+	clients/tests/test-client.check-on-disk/test_004-105.expected \
+	clients/tests/test-client.check-on-disk/test_004-106.expected \
+	clients/tests/test-client.check-on-disk/test_004-107.expected \
+	clients/tests/test-client.check-on-disk/test_004-108.expected \
+	clients/tests/test-client.check-on-disk/test_004-109.expected \
+	clients/tests/test-client.check-on-disk/test_004-110.expected \
+	clients/tests/test-client.check-on-disk/test_004-111.expected \
+	clients/tests/test-client.check-on-disk/test_004-112.expected \
+	clients/tests/test-client.check-on-disk/test_004-113.expected \
+	clients/tests/test-client.check-on-disk/test_004-114.expected \
+	clients/tests/test-client.check-on-disk/test_004-115.expected \
+	clients/tests/test-client.check-on-disk/test_004-116.expected \
+	clients/tests/test-client.check-on-disk/test_004-117.expected \
+	clients/tests/test-client.check-on-disk/test_004-118.expected \
+	clients/tests/test-client.check-on-disk/test_004-119.expected \
+	clients/tests/test-client.check-on-disk/test_004-120.expected \
+	clients/tests/test-client.check-on-disk/test_004-121.expected \
+	clients/tests/test-client.check-on-disk/test_004-122.expected \
+	clients/tests/test-client.check-on-disk/test_004-123.expected \
+	clients/tests/test-client.check-on-disk/test_004-124.expected \
+	clients/tests/test-client.check-on-disk/test_004-125.expected \
+	clients/tests/test-client.check-on-disk/test_004-126.expected \
+	clients/tests/test-client.check-on-disk/test_004-127.expected \
+	clients/tests/test-client.check-on-disk/test_004-128.expected \
+	clients/tests/test-client.check-on-disk/test_004-129.expected \
+	clients/tests/test-client.check-on-disk/test_004-130.expected \
+	clients/tests/test-client.check-on-disk/test_004-131.expected \
+	clients/tests/test-client.check-on-disk/test_004-132.expected \
+	clients/tests/test-client.check-on-disk/test_004-133.expected \
+	clients/tests/test-client.check-on-disk/test_004-134.expected \
+	clients/tests/test-client.check-on-disk/test_004-135.expected \
+	clients/tests/test-client.check-on-disk/test_004-136.expected \
+	clients/tests/test-client.check-on-disk/test_004-137.expected \
+	clients/tests/test-client.check-on-disk/test_004-138.expected \
+	clients/tests/test-client.check-on-disk/test_004-139.expected \
+	clients/tests/test-client.check-on-disk/test_004-140.expected \
+	clients/tests/test-client.check-on-disk/test_004-141.expected \
+	clients/tests/test-client.check-on-disk/test_004-142.expected \
+	clients/tests/test-client.check-on-disk/test_004-143.expected \
+	clients/tests/test-client.check-on-disk/test_004-144.expected \
+	clients/tests/test-client.check-on-disk/test_004-145.expected \
+	clients/tests/test-client.check-on-disk/test_004-146.expected \
+	clients/tests/test-client.check-on-disk/test_004-147.expected \
+	clients/tests/test-client.check-on-disk/test_004-148.expected \
+	clients/tests/test-client.check-on-disk/test_004-149.expected \
+	clients/tests/test-client.check-on-disk/test_004-150.expected \
+	clients/tests/test-client.check-on-disk/test_004-151.expected \
+	clients/tests/test-client.check-on-disk/test_004-152.expected \
+	clients/tests/test-client.check-on-disk/test_004-153.expected \
+	clients/tests/test-client.check-on-disk/test_004-154.expected \
+	clients/tests/test-client.check-on-disk/test_004-155.expected \
+	clients/tests/test-client.check-on-disk/test_004-156.expected \
+	clients/tests/test-client.check-on-disk/test_004-157.expected \
+	clients/tests/test-client.check-on-disk/test_004-158.expected \
+	clients/tests/test-client.check-on-disk/test_004-159.expected \
+	clients/tests/test-client.check-on-disk/test_004-160.expected \
+	clients/tests/test-client.check-on-disk/test_004-161.expected \
+	clients/tests/test-client.check-on-disk/test_004-162.expected \
+	clients/tests/test-client.check-on-disk/test_004-163.expected \
+	clients/tests/test-client.check-on-disk/test_004-164.expected \
+	clients/tests/test-client.check-on-disk/test_004-165.expected \
+	clients/tests/test-client.check-on-disk/test_004-166.expected \
+	clients/tests/test-client.check-on-disk/test_004-167.expected \
+	clients/tests/test-client.check-on-disk/test_004-168.expected \
+	clients/tests/test-client.check-on-disk/test_004-169.expected \
+	clients/tests/test-client.check-on-disk/test_004-170.expected \
+	clients/tests/test-client.check-on-disk/test_004-171.expected \
+	clients/tests/test-client.check-on-disk/test_004-172.expected \
+	clients/tests/test-client.check-on-disk/test_004-173.expected \
+	clients/tests/test-client.check-on-disk/test_004-174.expected \
+	clients/tests/test-client.check-on-disk/test_004-175.expected \
+	clients/tests/test-client.check-on-disk/test_004-176.expected \
+	clients/tests/test-client.check-on-disk/test_004-177.expected \
+	clients/tests/test-client.check-on-disk/test_004-178.expected \
+	clients/tests/test-client.check-on-disk/test_004-179.expected \
+	clients/tests/test-client.check-on-disk/test_004-180.expected \
+	clients/tests/test-client.check-on-disk/test_004-181.expected \
+	clients/tests/test-client.check-on-disk/test_004-182.expected \
+	clients/tests/test-client.check-on-disk/test_004-183.expected \
+	clients/tests/test-client.check-on-disk/test_004-184.expected \
+	clients/tests/test-client.check-on-disk/test_004-185.expected \
+	clients/tests/test-client.check-on-disk/test_004-186.expected \
+	clients/tests/test-client.check-on-disk/test_004-187.expected \
+	clients/tests/test-client.check-on-disk/test_004-188.expected \
+	clients/tests/test-client.check-on-disk/test_004-189.expected \
+	clients/tests/test-client.check-on-disk/test_004-190.expected \
+	clients/tests/test-client.check-on-disk/test_004-191.expected \
+	clients/tests/test-client.check-on-disk/test_004-192.expected \
+	clients/tests/test-client.check-on-disk/test_004-193.expected \
+	clients/tests/test-client.check-on-disk/test_004-194.expected \
+	clients/tests/test-client.check-on-disk/test_004-195.expected \
+	clients/tests/test-client.check-on-disk/test_004-196.expected \
+	clients/tests/test-client.check-on-disk/test_004-197.expected \
+	clients/tests/test-client.check-on-disk/test_004-198.expected \
+	clients/tests/test-client.check-on-disk/test_004-199.expected \
+	clients/tests/test-client.check-on-disk/test_004-200.expected \
+	clients/tests/test-client.check-on-disk/test_004-201.expected \
+	clients/tests/test-client.check-on-disk/test_004-202.expected \
+	clients/tests/test-client.check-on-disk/test_004-203.expected \
+	clients/tests/test-client.check-on-disk/test_004-204.expected \
 	$(NULL)
diff --git a/clients/tests/test-client.check-on-disk/test_001-001.expected b/clients/tests/test-client.check-on-disk/test_001-001.expected
index 23f546bf..87620388 100644
--- a/clients/tests/test-client.check-on-disk/test_001-001.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-001.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:651:test_001()/1
+location: clients/tests/test-client.py:752:test_001()/1
 cmd: $NMCLI 
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-002.expected b/clients/tests/test-client.check-on-disk/test_001-002.expected
index bcbb86ee..7d995122 100644
--- a/clients/tests/test-client.check-on-disk/test_001-002.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-002.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:651:test_001()/2
+location: clients/tests/test-client.py:752:test_001()/2
 cmd: $NMCLI 
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-003.expected b/clients/tests/test-client.check-on-disk/test_001-003.expected
index f08e8df7..1378170e 100644
--- a/clients/tests/test-client.check-on-disk/test_001-003.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-003.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:653:test_001()/3
+location: clients/tests/test-client.py:754:test_001()/3
 cmd: $NMCLI -f AP -mode multiline -p d show wlan0
 lang: C
 returncode: 10
diff --git a/clients/tests/test-client.check-on-disk/test_001-004.expected b/clients/tests/test-client.check-on-disk/test_001-004.expected
index 1e01f6cd..3826df45 100644
--- a/clients/tests/test-client.check-on-disk/test_001-004.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-004.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:653:test_001()/4
+location: clients/tests/test-client.py:754:test_001()/4
 cmd: $NMCLI -f AP -mode multiline -p d show wlan0
 lang: pl_PL.UTF-8
 returncode: 10
diff --git a/clients/tests/test-client.check-on-disk/test_001-005.expected b/clients/tests/test-client.check-on-disk/test_001-005.expected
index c3ddbd52..0ce8a626 100644
--- a/clients/tests/test-client.check-on-disk/test_001-005.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-005.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:655:test_001()/5
+location: clients/tests/test-client.py:756:test_001()/5
 cmd: $NMCLI c s
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-006.expected b/clients/tests/test-client.check-on-disk/test_001-006.expected
index 6e1bbca1..52665c26 100644
--- a/clients/tests/test-client.check-on-disk/test_001-006.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-006.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:655:test_001()/6
+location: clients/tests/test-client.py:756:test_001()/6
 cmd: $NMCLI c s
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-007.expected b/clients/tests/test-client.check-on-disk/test_001-007.expected
index 759cfe56..c5b269f0 100644
--- a/clients/tests/test-client.check-on-disk/test_001-007.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-007.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:657:test_001()/7
+location: clients/tests/test-client.py:758:test_001()/7
 cmd: $NMCLI bogus s
 lang: C
 returncode: 2
diff --git a/clients/tests/test-client.check-on-disk/test_001-008.expected b/clients/tests/test-client.check-on-disk/test_001-008.expected
index ba4d941c..b7f5f04d 100644
--- a/clients/tests/test-client.check-on-disk/test_001-008.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-008.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:657:test_001()/8
+location: clients/tests/test-client.py:758:test_001()/8
 cmd: $NMCLI bogus s
 lang: pl_PL.UTF-8
 returncode: 2
diff --git a/clients/tests/test-client.check-on-disk/test_001-009.expected b/clients/tests/test-client.check-on-disk/test_001-009.expected
index 2614409a..c762e51c 100644
--- a/clients/tests/test-client.check-on-disk/test_001-009.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-009.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/9
+location: clients/tests/test-client.py:761:test_001()/9
 cmd: $NMCLI general permissions
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-010.expected b/clients/tests/test-client.check-on-disk/test_001-010.expected
index 0c9f540f..677d7429 100644
--- a/clients/tests/test-client.check-on-disk/test_001-010.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-010.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/10
+location: clients/tests/test-client.py:761:test_001()/10
 cmd: $NMCLI general permissions
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-011.expected b/clients/tests/test-client.check-on-disk/test_001-011.expected
index fc6cc6b6..757a19cb 100644
--- a/clients/tests/test-client.check-on-disk/test_001-011.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-011.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/11
+location: clients/tests/test-client.py:761:test_001()/11
 cmd: $NMCLI --pretty general permissions
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-012.expected b/clients/tests/test-client.check-on-disk/test_001-012.expected
index cb1793d2..6cca955c 100644
--- a/clients/tests/test-client.check-on-disk/test_001-012.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-012.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/12
+location: clients/tests/test-client.py:761:test_001()/12
 cmd: $NMCLI --pretty general permissions
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-013.expected b/clients/tests/test-client.check-on-disk/test_001-013.expected
index 1317ee13..82241f0e 100644
--- a/clients/tests/test-client.check-on-disk/test_001-013.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-013.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/13
+location: clients/tests/test-client.py:761:test_001()/13
 cmd: $NMCLI --terse general permissions
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-014.expected b/clients/tests/test-client.check-on-disk/test_001-014.expected
index 73e62b7e..f77108c9 100644
--- a/clients/tests/test-client.check-on-disk/test_001-014.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-014.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/14
+location: clients/tests/test-client.py:761:test_001()/14
 cmd: $NMCLI --terse general permissions
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-015.expected b/clients/tests/test-client.check-on-disk/test_001-015.expected
index 426d9834..a7dc5316 100644
--- a/clients/tests/test-client.check-on-disk/test_001-015.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-015.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/15
+location: clients/tests/test-client.py:761:test_001()/15
 cmd: $NMCLI --mode tabular general permissions
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-016.expected b/clients/tests/test-client.check-on-disk/test_001-016.expected
index e501a8d3..4bb5a267 100644
--- a/clients/tests/test-client.check-on-disk/test_001-016.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-016.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/16
+location: clients/tests/test-client.py:761:test_001()/16
 cmd: $NMCLI --mode tabular general permissions
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-017.expected b/clients/tests/test-client.check-on-disk/test_001-017.expected
index ab38df97..c6010f4d 100644
--- a/clients/tests/test-client.check-on-disk/test_001-017.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-017.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/17
+location: clients/tests/test-client.py:761:test_001()/17
 cmd: $NMCLI --mode tabular --pretty general permissions
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-018.expected b/clients/tests/test-client.check-on-disk/test_001-018.expected
index 7bbf78f5..6d594751 100644
--- a/clients/tests/test-client.check-on-disk/test_001-018.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-018.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/18
+location: clients/tests/test-client.py:761:test_001()/18
 cmd: $NMCLI --mode tabular --pretty general permissions
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-019.expected b/clients/tests/test-client.check-on-disk/test_001-019.expected
index 23692b05..c2d8fa0e 100644
--- a/clients/tests/test-client.check-on-disk/test_001-019.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-019.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/19
+location: clients/tests/test-client.py:761:test_001()/19
 cmd: $NMCLI --mode tabular --terse general permissions
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-020.expected b/clients/tests/test-client.check-on-disk/test_001-020.expected
index b0987d67..b64e9233 100644
--- a/clients/tests/test-client.check-on-disk/test_001-020.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-020.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/20
+location: clients/tests/test-client.py:761:test_001()/20
 cmd: $NMCLI --mode tabular --terse general permissions
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-021.expected b/clients/tests/test-client.check-on-disk/test_001-021.expected
index eb082c02..5320e865 100644
--- a/clients/tests/test-client.check-on-disk/test_001-021.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-021.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/21
+location: clients/tests/test-client.py:761:test_001()/21
 cmd: $NMCLI --mode multiline general permissions
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-022.expected b/clients/tests/test-client.check-on-disk/test_001-022.expected
index df002053..ba9c8e4d 100644
--- a/clients/tests/test-client.check-on-disk/test_001-022.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-022.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/22
+location: clients/tests/test-client.py:761:test_001()/22
 cmd: $NMCLI --mode multiline general permissions
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-023.expected b/clients/tests/test-client.check-on-disk/test_001-023.expected
index 55376eb9..ffcc9cb8 100644
--- a/clients/tests/test-client.check-on-disk/test_001-023.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-023.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/23
+location: clients/tests/test-client.py:761:test_001()/23
 cmd: $NMCLI --mode multiline --pretty general permissions
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-024.expected b/clients/tests/test-client.check-on-disk/test_001-024.expected
index 10b3b04c..a14523d8 100644
--- a/clients/tests/test-client.check-on-disk/test_001-024.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-024.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/24
+location: clients/tests/test-client.py:761:test_001()/24
 cmd: $NMCLI --mode multiline --pretty general permissions
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-025.expected b/clients/tests/test-client.check-on-disk/test_001-025.expected
index 687e62bf..1c8ee11f 100644
--- a/clients/tests/test-client.check-on-disk/test_001-025.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-025.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/25
+location: clients/tests/test-client.py:761:test_001()/25
 cmd: $NMCLI --mode multiline --terse general permissions
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_001-026.expected b/clients/tests/test-client.check-on-disk/test_001-026.expected
index 1b01d876..2c11a85d 100644
--- a/clients/tests/test-client.check-on-disk/test_001-026.expected
+++ b/clients/tests/test-client.check-on-disk/test_001-026.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:665:test_001()/26
+location: clients/tests/test-client.py:761:test_001()/26
 cmd: $NMCLI --mode multiline --terse general permissions
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_002-001.expected b/clients/tests/test-client.check-on-disk/test_002-001.expected
index 5f3d7d6a..c952c9c9 100644
--- a/clients/tests/test-client.check-on-disk/test_002-001.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-001.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:670:test_002()/1
+location: clients/tests/test-client.py:766:test_002()/1
 cmd: $NMCLI d
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_002-002.expected b/clients/tests/test-client.check-on-disk/test_002-002.expected
index 3bdc45e4..6b244d5e 100644
--- a/clients/tests/test-client.check-on-disk/test_002-002.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-002.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:670:test_002()/2
+location: clients/tests/test-client.py:766:test_002()/2
 cmd: $NMCLI d
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_002-003.expected b/clients/tests/test-client.check-on-disk/test_002-003.expected
index e2e56101..f406aa70 100644
--- a/clients/tests/test-client.check-on-disk/test_002-003.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-003.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:672:test_002()/3
+location: clients/tests/test-client.py:768:test_002()/3
 cmd: $NMCLI -f all d
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_002-004.expected b/clients/tests/test-client.check-on-disk/test_002-004.expected
index 0e884ed0..b1cfa7ae 100644
--- a/clients/tests/test-client.check-on-disk/test_002-004.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-004.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:672:test_002()/4
+location: clients/tests/test-client.py:768:test_002()/4
 cmd: $NMCLI -f all d
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_002-005.expected b/clients/tests/test-client.check-on-disk/test_002-005.expected
index 3d1440ea..144b3908 100644
--- a/clients/tests/test-client.check-on-disk/test_002-005.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-005.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:674:test_002()/5
+location: clients/tests/test-client.py:770:test_002()/5
 cmd: $NMCLI 
 lang: C
 returncode: 0
@@ -6,23 +6,23 @@ stdout: 621 bytes
 >>>
 eth0: unavailable
 	"eth0"
-	ethernet (virtual), 72:41:AB:90:41:5D, hw
+	ethernet (virtual), 65:2E:D3:9E:0A:0D, hw
 
 eth1: unavailable
 	"eth1"
-	ethernet (virtual), 1F:E6:D1:E6:1D:53, hw
+	ethernet (virtual), 47:D5:6B:65:FD:6A, hw
 
 wlan0: unavailable
 	"wlan0"
-	wifi (virtual), 5A:88:5E:B6:90:40, hw
+	wifi (virtual), 3D:99:1D:8B:74:4D, hw
 
 wlan1: unavailable
 	"wlan1"
-	wifi (virtual), 7C:D4:69:31:67:0B, hw
+	wifi (virtual), 99:09:77:FD:FE:1D, hw
 
 wlan1: unavailable
 	"wlan1"
-	wifi (virtual), 41:21:6B:F3:C9:4A, hw
+	wifi (virtual), 5D:30:4A:EC:3F:61, hw
 
 DNS configuration:
 	servers: 1.2.3.4 5.6.7.8
diff --git a/clients/tests/test-client.check-on-disk/test_002-006.expected b/clients/tests/test-client.check-on-disk/test_002-006.expected
index a676f62d..f1a229ba 100644
--- a/clients/tests/test-client.check-on-disk/test_002-006.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-006.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:674:test_002()/6
+location: clients/tests/test-client.py:770:test_002()/6
 cmd: $NMCLI 
 lang: pl_PL.UTF-8
 returncode: 0
@@ -6,23 +6,23 @@ stdout: 684 bytes
 >>>
 eth0: niedostępne
 	"eth0"
-	ethernet (virtual), 72:41:AB:90:41:5D, sprzęt
+	ethernet (virtual), 65:2E:D3:9E:0A:0D, sprzęt
 
 eth1: niedostępne
 	"eth1"
-	ethernet (virtual), 1F:E6:D1:E6:1D:53, sprzęt
+	ethernet (virtual), 47:D5:6B:65:FD:6A, sprzęt
 
 wlan0: niedostępne
 	"wlan0"
-	wifi (virtual), 5A:88:5E:B6:90:40, sprzęt
+	wifi (virtual), 3D:99:1D:8B:74:4D, sprzęt
 
 wlan1: niedostępne
 	"wlan1"
-	wifi (virtual), 7C:D4:69:31:67:0B, sprzęt
+	wifi (virtual), 99:09:77:FD:FE:1D, sprzęt
 
 wlan1: niedostępne
 	"wlan1"
-	wifi (virtual), 41:21:6B:F3:C9:4A, sprzęt
+	wifi (virtual), 5D:30:4A:EC:3F:61, sprzęt
 
 DNS configuration:
 	servers: 1.2.3.4 5.6.7.8
diff --git a/clients/tests/test-client.check-on-disk/test_002-007.expected b/clients/tests/test-client.check-on-disk/test_002-007.expected
index 780e7f6e..e522a6bc 100644
--- a/clients/tests/test-client.check-on-disk/test_002-007.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-007.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:676:test_002()/7
+location: clients/tests/test-client.py:772:test_002()/7
 cmd: $NMCLI -f AP -mode multiline d show wlan0
 lang: C
 returncode: 0
@@ -9,24 +9,24 @@ AP[1].SSID:                             wlan0-ap-3
 AP[1].MODE:                             Infra
 AP[1].CHAN:                             1
 AP[1].RATE:                             54 Mbit/s
-AP[1].SIGNAL:                           88
-AP[1].BARS:                             ****
+AP[1].SIGNAL:                           55
+AP[1].BARS:                             **  
 AP[1].SECURITY:                         WPA1 WPA2
 AP[2].IN-USE:                            
-AP[2].SSID:                             wlan0-ap-2
+AP[2].SSID:                             wlan0-ap-1
 AP[2].MODE:                             Infra
 AP[2].CHAN:                             1
 AP[2].RATE:                             54 Mbit/s
-AP[2].SIGNAL:                           61
-AP[2].BARS:                             *** 
+AP[2].SIGNAL:                           44
+AP[2].BARS:                             **  
 AP[2].SECURITY:                         WPA1 WPA2
 AP[3].IN-USE:                            
-AP[3].SSID:                             wlan0-ap-1
+AP[3].SSID:                             wlan0-ap-2
 AP[3].MODE:                             Infra
 AP[3].CHAN:                             1
 AP[3].RATE:                             54 Mbit/s
-AP[3].SIGNAL:                           29
-AP[3].BARS:                             *   
+AP[3].SIGNAL:                           34
+AP[3].BARS:                             **  
 AP[3].SECURITY:                         WPA1 WPA2
 
 <<<
diff --git a/clients/tests/test-client.check-on-disk/test_002-008.expected b/clients/tests/test-client.check-on-disk/test_002-008.expected
index c605e8e7..9fb89b1a 100644
--- a/clients/tests/test-client.check-on-disk/test_002-008.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-008.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:676:test_002()/8
+location: clients/tests/test-client.py:772:test_002()/8
 cmd: $NMCLI -f AP -mode multiline d show wlan0
 lang: pl_PL.UTF-8
 returncode: 0
@@ -9,24 +9,24 @@ AP[1].SSID:                             wlan0-ap-3
 AP[1].MODE:                             Infrastruktura
 AP[1].CHAN:                             1
 AP[1].RATE:                             54 Mb/s
-AP[1].SIGNAL:                           88
-AP[1].BARS:                             ****
+AP[1].SIGNAL:                           55
+AP[1].BARS:                             **  
 AP[1].SECURITY:                         WPA1 WPA2
 AP[2].IN-USE:                            
-AP[2].SSID:                             wlan0-ap-2
+AP[2].SSID:                             wlan0-ap-1
 AP[2].MODE:                             Infrastruktura
 AP[2].CHAN:                             1
 AP[2].RATE:                             54 Mb/s
-AP[2].SIGNAL:                           61
-AP[2].BARS:                             *** 
+AP[2].SIGNAL:                           44
+AP[2].BARS:                             **  
 AP[2].SECURITY:                         WPA1 WPA2
 AP[3].IN-USE:                            
-AP[3].SSID:                             wlan0-ap-1
+AP[3].SSID:                             wlan0-ap-2
 AP[3].MODE:                             Infrastruktura
 AP[3].CHAN:                             1
 AP[3].RATE:                             54 Mb/s
-AP[3].SIGNAL:                           29
-AP[3].BARS:                             *   
+AP[3].SIGNAL:                           34
+AP[3].BARS:                             **  
 AP[3].SECURITY:                         WPA1 WPA2
 
 <<<
diff --git a/clients/tests/test-client.check-on-disk/test_002-009.expected b/clients/tests/test-client.check-on-disk/test_002-009.expected
index bd1bbe90..6db902aa 100644
--- a/clients/tests/test-client.check-on-disk/test_002-009.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-009.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:677:test_002()/9
+location: clients/tests/test-client.py:773:test_002()/9
 cmd: $NMCLI -f AP -mode multiline -p d show wlan0
 lang: C
 returncode: 0
@@ -12,26 +12,26 @@ AP[1].SSID:                             wlan0-ap-3
 AP[1].MODE:                             Infra
 AP[1].CHAN:                             1
 AP[1].RATE:                             54 Mbit/s
-AP[1].SIGNAL:                           88
-AP[1].BARS:                             ****
+AP[1].SIGNAL:                           55
+AP[1].BARS:                             **  
 AP[1].SECURITY:                         WPA1 WPA2
 -------------------------------------------------------------------------------
 AP[2].IN-USE:                            
-AP[2].SSID:                             wlan0-ap-2
+AP[2].SSID:                             wlan0-ap-1
 AP[2].MODE:                             Infra
 AP[2].CHAN:                             1
 AP[2].RATE:                             54 Mbit/s
-AP[2].SIGNAL:                           61
-AP[2].BARS:                             *** 
+AP[2].SIGNAL:                           44
+AP[2].BARS:                             **  
 AP[2].SECURITY:                         WPA1 WPA2
 -------------------------------------------------------------------------------
 AP[3].IN-USE:                            
-AP[3].SSID:                             wlan0-ap-1
+AP[3].SSID:                             wlan0-ap-2
 AP[3].MODE:                             Infra
 AP[3].CHAN:                             1
 AP[3].RATE:                             54 Mbit/s
-AP[3].SIGNAL:                           29
-AP[3].BARS:                             *   
+AP[3].SIGNAL:                           34
+AP[3].BARS:                             **  
 AP[3].SECURITY:                         WPA1 WPA2
 -------------------------------------------------------------------------------
 
diff --git a/clients/tests/test-client.check-on-disk/test_002-010.expected b/clients/tests/test-client.check-on-disk/test_002-010.expected
index d3c06c7b..fac540ea 100644
--- a/clients/tests/test-client.check-on-disk/test_002-010.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-010.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:677:test_002()/10
+location: clients/tests/test-client.py:773:test_002()/10
 cmd: $NMCLI -f AP -mode multiline -p d show wlan0
 lang: pl_PL.UTF-8
 returncode: 0
@@ -12,26 +12,26 @@ AP[1].SSID:                             wlan0-ap-3
 AP[1].MODE:                             Infrastruktura
 AP[1].CHAN:                             1
 AP[1].RATE:                             54 Mb/s
-AP[1].SIGNAL:                           88
-AP[1].BARS:                             ****
+AP[1].SIGNAL:                           55
+AP[1].BARS:                             **  
 AP[1].SECURITY:                         WPA1 WPA2
 -------------------------------------------------------------------------------
 AP[2].IN-USE:                            
-AP[2].SSID:                             wlan0-ap-2
+AP[2].SSID:                             wlan0-ap-1
 AP[2].MODE:                             Infrastruktura
 AP[2].CHAN:                             1
 AP[2].RATE:                             54 Mb/s
-AP[2].SIGNAL:                           61
-AP[2].BARS:                             *** 
+AP[2].SIGNAL:                           44
+AP[2].BARS:                             **  
 AP[2].SECURITY:                         WPA1 WPA2
 -------------------------------------------------------------------------------
 AP[3].IN-USE:                            
-AP[3].SSID:                             wlan0-ap-1
+AP[3].SSID:                             wlan0-ap-2
 AP[3].MODE:                             Infrastruktura
 AP[3].CHAN:                             1
 AP[3].RATE:                             54 Mb/s
-AP[3].SIGNAL:                           29
-AP[3].BARS:                             *   
+AP[3].SIGNAL:                           34
+AP[3].BARS:                             **  
 AP[3].SECURITY:                         WPA1 WPA2
 -------------------------------------------------------------------------------
 
diff --git a/clients/tests/test-client.check-on-disk/test_002-011.expected b/clients/tests/test-client.check-on-disk/test_002-011.expected
index e943c114..1e7952d4 100644
--- a/clients/tests/test-client.check-on-disk/test_002-011.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-011.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:678:test_002()/11
+location: clients/tests/test-client.py:774:test_002()/11
 cmd: $NMCLI -f AP -mode multiline -t d show wlan0
 lang: C
 returncode: 0
@@ -9,24 +9,24 @@ AP[1].SSID:wlan0-ap-3
 AP[1].MODE:Infra
 AP[1].CHAN:1
 AP[1].RATE:54 Mbit/s
-AP[1].SIGNAL:88
-AP[1].BARS:****
+AP[1].SIGNAL:55
+AP[1].BARS:**  
 AP[1].SECURITY:WPA1 WPA2
 AP[2].IN-USE: 
-AP[2].SSID:wlan0-ap-2
+AP[2].SSID:wlan0-ap-1
 AP[2].MODE:Infra
 AP[2].CHAN:1
 AP[2].RATE:54 Mbit/s
-AP[2].SIGNAL:61
-AP[2].BARS:*** 
+AP[2].SIGNAL:44
+AP[2].BARS:**  
 AP[2].SECURITY:WPA1 WPA2
 AP[3].IN-USE: 
-AP[3].SSID:wlan0-ap-1
+AP[3].SSID:wlan0-ap-2
 AP[3].MODE:Infra
 AP[3].CHAN:1
 AP[3].RATE:54 Mbit/s
-AP[3].SIGNAL:29
-AP[3].BARS:*   
+AP[3].SIGNAL:34
+AP[3].BARS:**  
 AP[3].SECURITY:WPA1 WPA2
 
 <<<
diff --git a/clients/tests/test-client.check-on-disk/test_002-012.expected b/clients/tests/test-client.check-on-disk/test_002-012.expected
index 6e3e5d56..8476e693 100644
--- a/clients/tests/test-client.check-on-disk/test_002-012.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-012.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:678:test_002()/12
+location: clients/tests/test-client.py:774:test_002()/12
 cmd: $NMCLI -f AP -mode multiline -t d show wlan0
 lang: pl_PL.UTF-8
 returncode: 0
@@ -9,24 +9,24 @@ AP[1].SSID:wlan0-ap-3
 AP[1].MODE:Infrastruktura
 AP[1].CHAN:1
 AP[1].RATE:54 Mb/s
-AP[1].SIGNAL:88
-AP[1].BARS:****
+AP[1].SIGNAL:55
+AP[1].BARS:**  
 AP[1].SECURITY:WPA1 WPA2
 AP[2].IN-USE: 
-AP[2].SSID:wlan0-ap-2
+AP[2].SSID:wlan0-ap-1
 AP[2].MODE:Infrastruktura
 AP[2].CHAN:1
 AP[2].RATE:54 Mb/s
-AP[2].SIGNAL:61
-AP[2].BARS:*** 
+AP[2].SIGNAL:44
+AP[2].BARS:**  
 AP[2].SECURITY:WPA1 WPA2
 AP[3].IN-USE: 
-AP[3].SSID:wlan0-ap-1
+AP[3].SSID:wlan0-ap-2
 AP[3].MODE:Infrastruktura
 AP[3].CHAN:1
 AP[3].RATE:54 Mb/s
-AP[3].SIGNAL:29
-AP[3].BARS:*   
+AP[3].SIGNAL:34
+AP[3].BARS:**  
 AP[3].SECURITY:WPA1 WPA2
 
 <<<
diff --git a/clients/tests/test-client.check-on-disk/test_002-013.expected b/clients/tests/test-client.check-on-disk/test_002-013.expected
index a649addd..58e22048 100644
--- a/clients/tests/test-client.check-on-disk/test_002-013.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-013.expected
@@ -1,13 +1,13 @@
-location: clients/tests/test-client.py:679:test_002()/13
+location: clients/tests/test-client.py:775:test_002()/13
 cmd: $NMCLI -f AP -mode tabular d show wlan0
 lang: C
 returncode: 0
 stdout: 304 bytes
 >>>
 NAME   IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
-AP[1]          wlan0-ap-3  Infra  1     54 Mbit/s  88      ****  WPA1 WPA2 
-AP[2]          wlan0-ap-2  Infra  1     54 Mbit/s  61      ***   WPA1 WPA2 
-AP[3]          wlan0-ap-1  Infra  1     54 Mbit/s  29      *     WPA1 WPA2 
+AP[1]          wlan0-ap-3  Infra  1     54 Mbit/s  55      **    WPA1 WPA2 
+AP[2]          wlan0-ap-1  Infra  1     54 Mbit/s  44      **    WPA1 WPA2 
+AP[3]          wlan0-ap-2  Infra  1     54 Mbit/s  34      **    WPA1 WPA2 
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_002-014.expected b/clients/tests/test-client.check-on-disk/test_002-014.expected
index d2a8a667..6d8126d6 100644
--- a/clients/tests/test-client.check-on-disk/test_002-014.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-014.expected
@@ -1,13 +1,13 @@
-location: clients/tests/test-client.py:679:test_002()/14
+location: clients/tests/test-client.py:775:test_002()/14
 cmd: $NMCLI -f AP -mode tabular d show wlan0
 lang: pl_PL.UTF-8
 returncode: 0
 stdout: 338 bytes
 >>>
 NAME   IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
-AP[1]          wlan0-ap-3  Infrastruktura  1     54 Mb/s  88      ****  WPA1 WPA2 
-AP[2]          wlan0-ap-2  Infrastruktura  1     54 Mb/s  61      ***   WPA1 WPA2 
-AP[3]          wlan0-ap-1  Infrastruktura  1     54 Mb/s  29      *     WPA1 WPA2 
+AP[1]          wlan0-ap-3  Infrastruktura  1     54 Mb/s  55      **    WPA1 WPA2 
+AP[2]          wlan0-ap-1  Infrastruktura  1     54 Mb/s  44      **    WPA1 WPA2 
+AP[3]          wlan0-ap-2  Infrastruktura  1     54 Mb/s  34      **    WPA1 WPA2 
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_002-015.expected b/clients/tests/test-client.check-on-disk/test_002-015.expected
index 1b28741f..3806f6b3 100644
--- a/clients/tests/test-client.check-on-disk/test_002-015.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-015.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:680:test_002()/15
+location: clients/tests/test-client.py:776:test_002()/15
 cmd: $NMCLI -f AP -mode tabular -p d show wlan0
 lang: C
 returncode: 0
@@ -9,9 +9,9 @@ stdout: 460 bytes
 ==========================
 NAME   IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
 ----------------------------------------------------------------------------
-AP[1]          wlan0-ap-3  Infra  1     54 Mbit/s  88      ****  WPA1 WPA2 
-AP[2]          wlan0-ap-2  Infra  1     54 Mbit/s  61      ***   WPA1 WPA2 
-AP[3]          wlan0-ap-1  Infra  1     54 Mbit/s  29      *     WPA1 WPA2 
+AP[1]          wlan0-ap-3  Infra  1     54 Mbit/s  55      **    WPA1 WPA2 
+AP[2]          wlan0-ap-1  Infra  1     54 Mbit/s  44      **    WPA1 WPA2 
+AP[3]          wlan0-ap-2  Infra  1     54 Mbit/s  34      **    WPA1 WPA2 
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_002-016.expected b/clients/tests/test-client.check-on-disk/test_002-016.expected
index a5970447..8eab1457 100644
--- a/clients/tests/test-client.check-on-disk/test_002-016.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-016.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:680:test_002()/16
+location: clients/tests/test-client.py:776:test_002()/16
 cmd: $NMCLI -f AP -mode tabular -p d show wlan0
 lang: pl_PL.UTF-8
 returncode: 0
@@ -9,9 +9,9 @@ stdout: 530 bytes
 ===================================
 NAME   IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
 -----------------------------------------------------------------------------------
-AP[1]          wlan0-ap-3  Infrastruktura  1     54 Mb/s  88      ****  WPA1 WPA2 
-AP[2]          wlan0-ap-2  Infrastruktura  1     54 Mb/s  61      ***   WPA1 WPA2 
-AP[3]          wlan0-ap-1  Infrastruktura  1     54 Mb/s  29      *     WPA1 WPA2 
+AP[1]          wlan0-ap-3  Infrastruktura  1     54 Mb/s  55      **    WPA1 WPA2 
+AP[2]          wlan0-ap-1  Infrastruktura  1     54 Mb/s  44      **    WPA1 WPA2 
+AP[3]          wlan0-ap-2  Infrastruktura  1     54 Mb/s  34      **    WPA1 WPA2 
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_002-017.expected b/clients/tests/test-client.check-on-disk/test_002-017.expected
index 61499b6d..f0119718 100644
--- a/clients/tests/test-client.check-on-disk/test_002-017.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-017.expected
@@ -1,12 +1,12 @@
-location: clients/tests/test-client.py:681:test_002()/17
+location: clients/tests/test-client.py:777:test_002()/17
 cmd: $NMCLI -f AP -mode tabular -t d show wlan0
 lang: C
 returncode: 0
 stdout: 165 bytes
 >>>
-AP[1]: :wlan0-ap-3:Infra:1:54 Mbit/s:88:****:WPA1 WPA2
-AP[2]: :wlan0-ap-2:Infra:1:54 Mbit/s:61:*** :WPA1 WPA2
-AP[3]: :wlan0-ap-1:Infra:1:54 Mbit/s:29:*   :WPA1 WPA2
+AP[1]: :wlan0-ap-3:Infra:1:54 Mbit/s:55:**  :WPA1 WPA2
+AP[2]: :wlan0-ap-1:Infra:1:54 Mbit/s:44:**  :WPA1 WPA2
+AP[3]: :wlan0-ap-2:Infra:1:54 Mbit/s:34:**  :WPA1 WPA2
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_002-018.expected b/clients/tests/test-client.check-on-disk/test_002-018.expected
index bbac7a72..61528cb9 100644
--- a/clients/tests/test-client.check-on-disk/test_002-018.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-018.expected
@@ -1,12 +1,12 @@
-location: clients/tests/test-client.py:681:test_002()/18
+location: clients/tests/test-client.py:777:test_002()/18
 cmd: $NMCLI -f AP -mode tabular -t d show wlan0
 lang: pl_PL.UTF-8
 returncode: 0
 stdout: 192 bytes
 >>>
-AP[1]: :wlan0-ap-3:Infrastruktura:1:54 Mb/s:88:****:WPA1 WPA2
-AP[2]: :wlan0-ap-2:Infrastruktura:1:54 Mb/s:61:*** :WPA1 WPA2
-AP[3]: :wlan0-ap-1:Infrastruktura:1:54 Mb/s:29:*   :WPA1 WPA2
+AP[1]: :wlan0-ap-3:Infrastruktura:1:54 Mb/s:55:**  :WPA1 WPA2
+AP[2]: :wlan0-ap-1:Infrastruktura:1:54 Mb/s:44:**  :WPA1 WPA2
+AP[3]: :wlan0-ap-2:Infrastruktura:1:54 Mb/s:34:**  :WPA1 WPA2
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_002-019.expected b/clients/tests/test-client.check-on-disk/test_002-019.expected
index 0bcc5e9d..a45f657a 100644
--- a/clients/tests/test-client.check-on-disk/test_002-019.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-019.expected
@@ -1,16 +1,16 @@
-location: clients/tests/test-client.py:683:test_002()/19
+location: clients/tests/test-client.py:779:test_002()/19
 cmd: $NMCLI -f ALL d wifi
 lang: C
 returncode: 0
 stdout: 1840 bytes
 >>>
 NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
-AP[1]  wlan0-ap-3  776C616E302D61702D33  53:8C:FC:BD:7D:2B  Infra  1     2412 MHz  54 Mbit/s  88      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/3 
-AP[2]  wlan0-ap-2  776C616E302D61702D32  A1:A2:78:A7:C5:D5  Infra  1     2412 MHz  54 Mbit/s  61      ***   WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
-AP[3]  wlan0-ap-1  776C616E302D61702D31  81:28:C5:C2:E5:15  Infra  1     2412 MHz  54 Mbit/s  29      *     WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[1]  wlan0-ap-3  776C616E302D61702D33  60:B3:25:25:E2:C8  Infra  1     2412 MHz  54 Mbit/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/3 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  90:B1:5F:9E:E0:E3  Infra  1     2412 MHz  54 Mbit/s  44      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-2  776C616E302D61702D32  61:66:D2:E7:44:A2  Infra  1     2412 MHz  54 Mbit/s  34      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
 
 NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
-AP[1]  wlan1-ap-4  776C616E312D61702D34  EA:62:1C:BD:C0:8F  Infra  1     2412 MHz  54 Mbit/s  34      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   no              /org/freedesktop/NetworkManager/AccessPoint/4 
+AP[1]  wlan1-ap-4  776C616E312D61702D34  EE:52:8B:49:A1:96  Infra  1     2412 MHz  54 Mbit/s  38      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   no              /org/freedesktop/NetworkManager/AccessPoint/4 
 
 NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
 
diff --git a/clients/tests/test-client.check-on-disk/test_002-020.expected b/clients/tests/test-client.check-on-disk/test_002-020.expected
index f433340e..cabc853d 100644
--- a/clients/tests/test-client.check-on-disk/test_002-020.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-020.expected
@@ -1,16 +1,16 @@
-location: clients/tests/test-client.py:683:test_002()/20
+location: clients/tests/test-client.py:779:test_002()/20
 cmd: $NMCLI -f ALL d wifi
 lang: pl_PL.UTF-8
 returncode: 0
 stdout: 1898 bytes
 >>>
 NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
-AP[1]  wlan0-ap-3  776C616E302D61702D33  53:8C:FC:BD:7D:2B  Infrastruktura  1     2412 MHz  54 Mb/s  88      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/3 
-AP[2]  wlan0-ap-2  776C616E302D61702D32  A1:A2:78:A7:C5:D5  Infrastruktura  1     2412 MHz  54 Mb/s  61      ***   WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
-AP[3]  wlan0-ap-1  776C616E302D61702D31  81:28:C5:C2:E5:15  Infrastruktura  1     2412 MHz  54 Mb/s  29      *     WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[1]  wlan0-ap-3  776C616E302D61702D33  60:B3:25:25:E2:C8  Infrastruktura  1     2412 MHz  54 Mb/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/3 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  90:B1:5F:9E:E0:E3  Infrastruktura  1     2412 MHz  54 Mb/s  44      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-2  776C616E302D61702D32  61:66:D2:E7:44:A2  Infrastruktura  1     2412 MHz  54 Mb/s  34      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
 
 NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
-AP[1]  wlan1-ap-4  776C616E312D61702D34  EA:62:1C:BD:C0:8F  Infrastruktura  1     2412 MHz  54 Mb/s  34      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   nie             /org/freedesktop/NetworkManager/AccessPoint/4 
+AP[1]  wlan1-ap-4  776C616E312D61702D34  EE:52:8B:49:A1:96  Infrastruktura  1     2412 MHz  54 Mb/s  38      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   nie             /org/freedesktop/NetworkManager/AccessPoint/4 
 
 NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
 
diff --git a/clients/tests/test-client.check-on-disk/test_002-021.expected b/clients/tests/test-client.check-on-disk/test_002-021.expected
index 8dd7f647..fd5c1542 100644
--- a/clients/tests/test-client.check-on-disk/test_002-021.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-021.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:685:test_002()/21
+location: clients/tests/test-client.py:781:test_002()/21
 cmd: $NMCLI c
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_002-022.expected b/clients/tests/test-client.check-on-disk/test_002-022.expected
index 25d7bed2..cea22e1d 100644
--- a/clients/tests/test-client.check-on-disk/test_002-022.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-022.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:685:test_002()/22
+location: clients/tests/test-client.py:781:test_002()/22
 cmd: $NMCLI c
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_002-023.expected b/clients/tests/test-client.check-on-disk/test_002-023.expected
index 43ce6419..60b138d3 100644
--- a/clients/tests/test-client.check-on-disk/test_002-023.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-023.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:687:test_002()/23
+location: clients/tests/test-client.py:783:test_002()/23
 cmd: $NMCLI c s con-1
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_002-024.expected b/clients/tests/test-client.check-on-disk/test_002-024.expected
index a5b7bc4a..2527453f 100644
--- a/clients/tests/test-client.check-on-disk/test_002-024.expected
+++ b/clients/tests/test-client.check-on-disk/test_002-024.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:687:test_002()/24
+location: clients/tests/test-client.py:783:test_002()/24
 cmd: $NMCLI c s con-1
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_003-001.expected b/clients/tests/test-client.check-on-disk/test_003-001.expected
index e131cb36..a83e8adf 100644
--- a/clients/tests/test-client.check-on-disk/test_003-001.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-001.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:697:test_003()/1
+location: clients/tests/test-client.py:793:test_003()/1
 cmd: $NMCLI c add type ethernet ifname '*' con-name con-xx1
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_003-002.expected b/clients/tests/test-client.check-on-disk/test_003-002.expected
index 9c9cfb2d..fe5b3d79 100644
--- a/clients/tests/test-client.check-on-disk/test_003-002.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-002.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:700:test_003()/2
+location: clients/tests/test-client.py:796:test_003()/2
 cmd: $NMCLI c s
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_003-003.expected b/clients/tests/test-client.check-on-disk/test_003-003.expected
index 882d1b4d..ef70c516 100644
--- a/clients/tests/test-client.check-on-disk/test_003-003.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-003.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:700:test_003()/3
+location: clients/tests/test-client.py:796:test_003()/3
 cmd: $NMCLI c s
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_003-004.expected b/clients/tests/test-client.check-on-disk/test_003-004.expected
index 37c67f27..74844be8 100644
--- a/clients/tests/test-client.check-on-disk/test_003-004.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-004.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:705:test_003()/4
+location: clients/tests/test-client.py:801:test_003()/4
 cmd: $NMCLI c add type ethernet ifname '*'
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_003-005.expected b/clients/tests/test-client.check-on-disk/test_003-005.expected
index 15ef586b..1a116f0e 100644
--- a/clients/tests/test-client.check-on-disk/test_003-005.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-005.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:708:test_003()/5
+location: clients/tests/test-client.py:804:test_003()/5
 cmd: $NMCLI c s
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_003-006.expected b/clients/tests/test-client.check-on-disk/test_003-006.expected
index cd89b202..592b92e3 100644
--- a/clients/tests/test-client.check-on-disk/test_003-006.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-006.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:708:test_003()/6
+location: clients/tests/test-client.py:804:test_003()/6
 cmd: $NMCLI c s
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_003-007.expected b/clients/tests/test-client.check-on-disk/test_003-007.expected
index c2e5a566..44ad7097 100644
--- a/clients/tests/test-client.check-on-disk/test_003-007.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-007.expected
@@ -1,13 +1,13 @@
-location: clients/tests/test-client.py:711:test_003()/7
+location: clients/tests/test-client.py:807:test_003()/7
 cmd: $NMCLI -f ALL c s
 lang: C
 returncode: 0
-stdout: 912 bytes
+stdout: 1108 bytes
 >>>
-NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE  ACTIVE-PATH  SLAVE 
-con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/1  no      --      --     --           --    
-con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/2  no      --      --     --           --    
-ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/3  no      --      --     --           --    
+NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE  ACTIVE-PATH  SLAVE  FILENAME                                        
+con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/1  no      --      --     --           --     /etc/NetworkManager/system-connections/con-1    
+con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/2  no      --      --     --           --     /etc/NetworkManager/system-connections/con-xx1  
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/3  no      --      --     --           --     /etc/NetworkManager/system-connections/ethernet 
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-008.expected b/clients/tests/test-client.check-on-disk/test_003-008.expected
index 1100563f..d9933f37 100644
--- a/clients/tests/test-client.check-on-disk/test_003-008.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-008.expected
@@ -1,13 +1,13 @@
-location: clients/tests/test-client.py:711:test_003()/8
+location: clients/tests/test-client.py:807:test_003()/8
 cmd: $NMCLI -f ALL c s
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 912 bytes
+stdout: 1108 bytes
 >>>
-NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE  ACTIVE-PATH  SLAVE 
-con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/1  nie     --      --     --           --    
-con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/2  nie     --      --     --           --    
-ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/3  nie     --      --     --           --    
+NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE  ACTIVE-PATH  SLAVE  FILENAME                                        
+con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/1  nie     --      --     --           --     /etc/NetworkManager/system-connections/con-1    
+con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/2  nie     --      --     --           --     /etc/NetworkManager/system-connections/con-xx1  
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/3  nie     --      --     --           --     /etc/NetworkManager/system-connections/ethernet 
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-009.expected b/clients/tests/test-client.check-on-disk/test_003-009.expected
index f3d9d292..5eb0bcae 100644
--- a/clients/tests/test-client.check-on-disk/test_003-009.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-009.expected
@@ -1,8 +1,8 @@
-location: clients/tests/test-client.py:715:test_003()/9
+location: clients/tests/test-client.py:811:test_003()/9
 cmd: $NMCLI --complete-args -f ALL c s ''
 lang: C
 returncode: 0
-stdout: 64 bytes
+stdout: 73 bytes
 >>>
 
 --active
@@ -11,6 +11,7 @@ apath
 con-1
 con-xx1
 ethernet
+filename
 help
 id
 path
diff --git a/clients/tests/test-client.check-on-disk/test_003-010.expected b/clients/tests/test-client.check-on-disk/test_003-010.expected
index 86c4dea0..97792be6 100644
--- a/clients/tests/test-client.check-on-disk/test_003-010.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-010.expected
@@ -1,8 +1,8 @@
-location: clients/tests/test-client.py:715:test_003()/10
+location: clients/tests/test-client.py:811:test_003()/10
 cmd: $NMCLI --complete-args -f ALL c s ''
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 64 bytes
+stdout: 73 bytes
 >>>
 
 --active
@@ -11,6 +11,7 @@ apath
 con-1
 con-xx1
 ethernet
+filename
 help
 id
 path
diff --git a/clients/tests/test-client.check-on-disk/test_003-011.expected b/clients/tests/test-client.check-on-disk/test_003-011.expected
index 3da70bbf..2e792875 100644
--- a/clients/tests/test-client.check-on-disk/test_003-011.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-011.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:728:test_003()/11
+location: clients/tests/test-client.py:824:test_003()/11
 cmd: $NMCLI con up ethernet ifname eth0
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_003-012.expected b/clients/tests/test-client.check-on-disk/test_003-012.expected
index 810ffc8b..0902837e 100644
--- a/clients/tests/test-client.check-on-disk/test_003-012.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-012.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:731:test_003()/12
+location: clients/tests/test-client.py:827:test_003()/12
 cmd: $NMCLI con
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_003-013.expected b/clients/tests/test-client.check-on-disk/test_003-013.expected
index b17bbf28..458cfde5 100644
--- a/clients/tests/test-client.check-on-disk/test_003-013.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-013.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:731:test_003()/13
+location: clients/tests/test-client.py:827:test_003()/13
 cmd: $NMCLI con
 lang: pl_PL.UTF-8
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_003-014.expected b/clients/tests/test-client.check-on-disk/test_003-014.expected
index da785a2c..10a90fee 100644
--- a/clients/tests/test-client.check-on-disk/test_003-014.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-014.expected
@@ -1,13 +1,13 @@
-location: clients/tests/test-client.py:734:test_003()/14
+location: clients/tests/test-client.py:830:test_003()/14
 cmd: $NMCLI -f ALL con
 lang: C
 returncode: 0
-stdout: 1084 bytes
+stdout: 1280 bytes
 >>>
-NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE      ACTIVE-PATH                                         SLAVE 
-ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/3  yes     eth0    activated  /org/freedesktop/NetworkManager/ActiveConnection/1  --    
-con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/1  no      --      --         --                                                  --    
-con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/2  no      --      --         --                                                  --    
+NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE      ACTIVE-PATH                                         SLAVE  FILENAME                                        
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/3  yes     eth0    activated  /org/freedesktop/NetworkManager/ActiveConnection/1  --     /etc/NetworkManager/system-connections/ethernet 
+con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/1  no      --      --         --                                                  --     /etc/NetworkManager/system-connections/con-1    
+con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/2  no      --      --         --                                                  --     /etc/NetworkManager/system-connections/con-xx1  
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-015.expected b/clients/tests/test-client.check-on-disk/test_003-015.expected
index ad645f8f..ea80926d 100644
--- a/clients/tests/test-client.check-on-disk/test_003-015.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-015.expected
@@ -1,13 +1,13 @@
-location: clients/tests/test-client.py:734:test_003()/15
+location: clients/tests/test-client.py:830:test_003()/15
 cmd: $NMCLI -f ALL con
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 1088 bytes
+stdout: 1284 bytes
 >>>
-NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE       ACTIVE-PATH                                         SLAVE 
-ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/3  tak     eth0    aktywowano  /org/freedesktop/NetworkManager/ActiveConnection/1  --    
-con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/1  nie     --      --          --                                                  --    
-con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/2  nie     --      --          --                                                  --    
+NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE       ACTIVE-PATH                                         SLAVE  FILENAME                                        
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/3  tak     eth0    aktywowano  /org/freedesktop/NetworkManager/ActiveConnection/1  --     /etc/NetworkManager/system-connections/ethernet 
+con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/1  nie     --      --          --                                                  --     /etc/NetworkManager/system-connections/con-1    
+con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/2  nie     --      --          --                                                  --     /etc/NetworkManager/system-connections/con-xx1  
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-016.expected b/clients/tests/test-client.check-on-disk/test_003-016.expected
index 8d68221f..b68edc98 100644
--- a/clients/tests/test-client.check-on-disk/test_003-016.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-016.expected
@@ -1,87 +1,11 @@
-location: clients/tests/test-client.py:737:test_003()/16
-cmd: $NMCLI -f ALL con s ethernet
+location: clients/tests/test-client.py:833:test_003()/16
+cmd: $NMCLI -f ALL con s -a
 lang: C
 returncode: 0
-stdout: 3516 bytes
+stdout: 640 bytes
 >>>
-connection.id:                          ethernet
-connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
-connection.stable-id:                   --
-connection.type:                        802-3-ethernet
-connection.interface-name:              --
-connection.autoconnect:                 yes
-connection.autoconnect-priority:        0
-connection.autoconnect-retries:         -1 (default)
-connection.auth-retries:                -1
-connection.timestamp:                   0
-connection.read-only:                   no
-connection.permissions:                 --
-connection.zone:                        --
-connection.master:                      --
-connection.slave-type:                  --
-connection.autoconnect-slaves:          -1 (default)
-connection.secondaries:                 --
-connection.gateway-ping-timeout:        0
-connection.metered:                     unknown
-connection.lldp:                        default
-connection.mdns:                        -1 (default)
-802-3-ethernet.port:                    --
-802-3-ethernet.speed:                   0
-802-3-ethernet.duplex:                  --
-802-3-ethernet.auto-negotiate:          no
-802-3-ethernet.mac-address:             --
-802-3-ethernet.cloned-mac-address:      --
-802-3-ethernet.generate-mac-address-mask:--
-802-3-ethernet.mac-address-blacklist:   --
-802-3-ethernet.mtu:                     auto
-802-3-ethernet.s390-subchannels:        --
-802-3-ethernet.s390-nettype:            --
-802-3-ethernet.s390-options:            --
-802-3-ethernet.wake-on-lan:             default
-802-3-ethernet.wake-on-lan-password:    --
-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.ignore-auto-routes:                no
-ipv4.ignore-auto-dns:                   no
-ipv4.dhcp-client-id:                    --
-ipv4.dhcp-timeout:                      0 (default)
-ipv4.dhcp-send-hostname:                yes
-ipv4.dhcp-hostname:                     --
-ipv4.dhcp-fqdn:                         --
-ipv4.never-default:                     no
-ipv4.may-fail:                          yes
-ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                no
-ipv6.ignore-auto-dns:                   no
-ipv6.never-default:                     no
-ipv6.may-fail:                          yes
-ipv6.ip6-privacy:                       -1 (unknown)
-ipv6.addr-gen-mode:                     stable-privacy
-ipv6.dhcp-send-hostname:                yes
-ipv6.dhcp-hostname:                     --
-ipv6.token:                             --
-proxy.method:                           none
-proxy.browser-only:                     no
-proxy.pac-url:                          --
-proxy.pac-script:                       --
+NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE      ACTIVE-PATH                                         SLAVE  FILENAME                                        
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/3  yes     eth0    activated  /org/freedesktop/NetworkManager/ActiveConnection/1  --     /etc/NetworkManager/system-connections/ethernet 
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-017.expected b/clients/tests/test-client.check-on-disk/test_003-017.expected
index 7e99138c..aa621f28 100644
--- a/clients/tests/test-client.check-on-disk/test_003-017.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-017.expected
@@ -1,87 +1,11 @@
-location: clients/tests/test-client.py:737:test_003()/17
-cmd: $NMCLI -f ALL con s ethernet
+location: clients/tests/test-client.py:833:test_003()/17
+cmd: $NMCLI -f ALL con s -a
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3534 bytes
+stdout: 642 bytes
 >>>
-connection.id:                          ethernet
-connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
-connection.stable-id:                   --
-connection.type:                        802-3-ethernet
-connection.interface-name:              --
-connection.autoconnect:                 tak
-connection.autoconnect-priority:        0
-connection.autoconnect-retries:         -1 (default)
-connection.auth-retries:                -1
-connection.timestamp:                   0
-connection.read-only:                   nie
-connection.permissions:                 --
-connection.zone:                        --
-connection.master:                      --
-connection.slave-type:                  --
-connection.autoconnect-slaves:          -1 (default)
-connection.secondaries:                 --
-connection.gateway-ping-timeout:        0
-connection.metered:                     nieznane
-connection.lldp:                        default
-connection.mdns:                        -1 (default)
-802-3-ethernet.port:                    --
-802-3-ethernet.speed:                   0
-802-3-ethernet.duplex:                  --
-802-3-ethernet.auto-negotiate:          nie
-802-3-ethernet.mac-address:             --
-802-3-ethernet.cloned-mac-address:      --
-802-3-ethernet.generate-mac-address-mask:--
-802-3-ethernet.mac-address-blacklist:   --
-802-3-ethernet.mtu:                     automatyczne
-802-3-ethernet.s390-subchannels:        --
-802-3-ethernet.s390-nettype:            --
-802-3-ethernet.s390-options:            --
-802-3-ethernet.wake-on-lan:             default
-802-3-ethernet.wake-on-lan-password:    --
-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.ignore-auto-routes:                nie
-ipv4.ignore-auto-dns:                   nie
-ipv4.dhcp-client-id:                    --
-ipv4.dhcp-timeout:                      0 (default)
-ipv4.dhcp-send-hostname:                tak
-ipv4.dhcp-hostname:                     --
-ipv4.dhcp-fqdn:                         --
-ipv4.never-default:                     nie
-ipv4.may-fail:                          tak
-ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                nie
-ipv6.ignore-auto-dns:                   nie
-ipv6.never-default:                     nie
-ipv6.may-fail:                          tak
-ipv6.ip6-privacy:                       -1 (unknown)
-ipv6.addr-gen-mode:                     stable-privacy
-ipv6.dhcp-send-hostname:                tak
-ipv6.dhcp-hostname:                     --
-ipv6.token:                             --
-proxy.method:                           none
-proxy.browser-only:                     nie
-proxy.pac-url:                          --
-proxy.pac-script:                       --
+NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE       ACTIVE-PATH                                         SLAVE  FILENAME                                        
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/3  tak     eth0    aktywowano  /org/freedesktop/NetworkManager/ActiveConnection/1  --     /etc/NetworkManager/system-connections/ethernet 
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-018.expected b/clients/tests/test-client.check-on-disk/test_003-018.expected
index bc74883d..3d99a000 100644
--- a/clients/tests/test-client.check-on-disk/test_003-018.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-018.expected
@@ -1,99 +1,11 @@
-location: clients/tests/test-client.py:740:test_003()/18
-cmd: $NMCLI con s ethernet
+location: clients/tests/test-client.py:836:test_003()/18
+cmd: $NMCLI -f ACTIVE-PATH,DEVICE,UUID con s -act
 lang: C
 returncode: 0
-stdout: 4180 bytes
+stdout: 196 bytes
 >>>
-connection.id:                          ethernet
-connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
-connection.stable-id:                   --
-connection.type:                        802-3-ethernet
-connection.interface-name:              --
-connection.autoconnect:                 yes
-connection.autoconnect-priority:        0
-connection.autoconnect-retries:         -1 (default)
-connection.auth-retries:                -1
-connection.timestamp:                   0
-connection.read-only:                   no
-connection.permissions:                 --
-connection.zone:                        --
-connection.master:                      --
-connection.slave-type:                  --
-connection.autoconnect-slaves:          -1 (default)
-connection.secondaries:                 --
-connection.gateway-ping-timeout:        0
-connection.metered:                     unknown
-connection.lldp:                        default
-connection.mdns:                        -1 (default)
-802-3-ethernet.port:                    --
-802-3-ethernet.speed:                   0
-802-3-ethernet.duplex:                  --
-802-3-ethernet.auto-negotiate:          no
-802-3-ethernet.mac-address:             --
-802-3-ethernet.cloned-mac-address:      --
-802-3-ethernet.generate-mac-address-mask:--
-802-3-ethernet.mac-address-blacklist:   --
-802-3-ethernet.mtu:                     auto
-802-3-ethernet.s390-subchannels:        --
-802-3-ethernet.s390-nettype:            --
-802-3-ethernet.s390-options:            --
-802-3-ethernet.wake-on-lan:             default
-802-3-ethernet.wake-on-lan-password:    --
-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.ignore-auto-routes:                no
-ipv4.ignore-auto-dns:                   no
-ipv4.dhcp-client-id:                    --
-ipv4.dhcp-timeout:                      0 (default)
-ipv4.dhcp-send-hostname:                yes
-ipv4.dhcp-hostname:                     --
-ipv4.dhcp-fqdn:                         --
-ipv4.never-default:                     no
-ipv4.may-fail:                          yes
-ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                no
-ipv6.ignore-auto-dns:                   no
-ipv6.never-default:                     no
-ipv6.may-fail:                          yes
-ipv6.ip6-privacy:                       -1 (unknown)
-ipv6.addr-gen-mode:                     stable-privacy
-ipv6.dhcp-send-hostname:                yes
-ipv6.dhcp-hostname:                     --
-ipv6.token:                             --
-proxy.method:                           none
-proxy.browser-only:                     no
-proxy.pac-url:                          --
-proxy.pac-script:                       --
-GENERAL.NAME:                           ethernet
-GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
-GENERAL.DEVICES:                        eth0
-GENERAL.STATE:                          activated
-GENERAL.DEFAULT:                        no
-GENERAL.DEFAULT6:                       no
-GENERAL.SPEC-OBJECT:                    --
-GENERAL.VPN:                            no
-GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
-GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
-GENERAL.ZONE:                           --
-GENERAL.MASTER-PATH:                    --
+ACTIVE-PATH                                         DEVICE  UUID                                 
+/org/freedesktop/NetworkManager/ActiveConnection/1  eth0    UUID-ethernet-REPLACED-REPLACED-REPL 
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-019.expected b/clients/tests/test-client.check-on-disk/test_003-019.expected
index 5e37312d..aabab154 100644
--- a/clients/tests/test-client.check-on-disk/test_003-019.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-019.expected
@@ -1,99 +1,11 @@
-location: clients/tests/test-client.py:740:test_003()/19
-cmd: $NMCLI con s ethernet
+location: clients/tests/test-client.py:836:test_003()/19
+cmd: $NMCLI -f ACTIVE-PATH,DEVICE,UUID con s -act
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 4201 bytes
+stdout: 196 bytes
 >>>
-connection.id:                          ethernet
-connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
-connection.stable-id:                   --
-connection.type:                        802-3-ethernet
-connection.interface-name:              --
-connection.autoconnect:                 tak
-connection.autoconnect-priority:        0
-connection.autoconnect-retries:         -1 (default)
-connection.auth-retries:                -1
-connection.timestamp:                   0
-connection.read-only:                   nie
-connection.permissions:                 --
-connection.zone:                        --
-connection.master:                      --
-connection.slave-type:                  --
-connection.autoconnect-slaves:          -1 (default)
-connection.secondaries:                 --
-connection.gateway-ping-timeout:        0
-connection.metered:                     nieznane
-connection.lldp:                        default
-connection.mdns:                        -1 (default)
-802-3-ethernet.port:                    --
-802-3-ethernet.speed:                   0
-802-3-ethernet.duplex:                  --
-802-3-ethernet.auto-negotiate:          nie
-802-3-ethernet.mac-address:             --
-802-3-ethernet.cloned-mac-address:      --
-802-3-ethernet.generate-mac-address-mask:--
-802-3-ethernet.mac-address-blacklist:   --
-802-3-ethernet.mtu:                     automatyczne
-802-3-ethernet.s390-subchannels:        --
-802-3-ethernet.s390-nettype:            --
-802-3-ethernet.s390-options:            --
-802-3-ethernet.wake-on-lan:             default
-802-3-ethernet.wake-on-lan-password:    --
-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.ignore-auto-routes:                nie
-ipv4.ignore-auto-dns:                   nie
-ipv4.dhcp-client-id:                    --
-ipv4.dhcp-timeout:                      0 (default)
-ipv4.dhcp-send-hostname:                tak
-ipv4.dhcp-hostname:                     --
-ipv4.dhcp-fqdn:                         --
-ipv4.never-default:                     nie
-ipv4.may-fail:                          tak
-ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                nie
-ipv6.ignore-auto-dns:                   nie
-ipv6.never-default:                     nie
-ipv6.may-fail:                          tak
-ipv6.ip6-privacy:                       -1 (unknown)
-ipv6.addr-gen-mode:                     stable-privacy
-ipv6.dhcp-send-hostname:                tak
-ipv6.dhcp-hostname:                     --
-ipv6.token:                             --
-proxy.method:                           none
-proxy.browser-only:                     nie
-proxy.pac-url:                          --
-proxy.pac-script:                       --
-GENERAL.NAME:                           ethernet
-GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
-GENERAL.DEVICES:                        eth0
-GENERAL.STATE:                          activated
-GENERAL.DEFAULT:                        nie
-GENERAL.DEFAULT6:                       nie
-GENERAL.SPEC-OBJECT:                    --
-GENERAL.VPN:                            nie
-GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
-GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
-GENERAL.ZONE:                           --
-GENERAL.MASTER-PATH:                    --
+ACTIVE-PATH                                         DEVICE  UUID                                 
+/org/freedesktop/NetworkManager/ActiveConnection/1  eth0    UUID-ethernet-REPLACED-REPLACED-REPL 
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-020.expected b/clients/tests/test-client.check-on-disk/test_003-020.expected
index 513985a5..5575cca5 100644
--- a/clients/tests/test-client.check-on-disk/test_003-020.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-020.expected
@@ -1,19 +1,14 @@
-location: clients/tests/test-client.py:743:test_003()/20
-cmd: $NMCLI -f ALL dev s eth0
+location: clients/tests/test-client.py:839:test_003()/20
+cmd: $NMCLI -f UUID,NAME con s --active
 lang: C
 returncode: 0
-stdout: 1056 bytes
+stdout: 96 bytes
 >>>
-DEVICE  TYPE      STATE        DBUS-PATH                                  CONNECTION  CON-UUID                              CON-PATH                                           
-eth1    ethernet  unavailable  /org/freedesktop/NetworkManager/Devices/2  --          --                                    --                                                 
-wlan0   wifi      unavailable  /org/freedesktop/NetworkManager/Devices/3  --          --                                    --                                                 
-wlan1   wifi      unavailable  /org/freedesktop/NetworkManager/Devices/4  --          --                                    --                                                 
-wlan1   wifi      unavailable  /org/freedesktop/NetworkManager/Devices/5  --          --                                    --                                                 
-eth0    ethernet  unavailable  /org/freedesktop/NetworkManager/Devices/1  ethernet    UUID-ethernet-REPLACED-REPLACED-REPL  /org/freedesktop/NetworkManager/ActiveConnection/1 
+UUID                                  NAME     
+UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
 
 <<<
-stderr: 24 bytes
+stderr: 0 bytes
 >>>
-Unknown parameter: eth0
 
 <<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-021.expected b/clients/tests/test-client.check-on-disk/test_003-021.expected
index 6809f290..4ff536cc 100644
--- a/clients/tests/test-client.check-on-disk/test_003-021.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-021.expected
@@ -1,19 +1,14 @@
-location: clients/tests/test-client.py:743:test_003()/21
-cmd: $NMCLI -f ALL dev s eth0
+location: clients/tests/test-client.py:839:test_003()/21
+cmd: $NMCLI -f UUID,NAME con s --active
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 1061 bytes
+stdout: 96 bytes
 >>>
-DEVICE  TYPE      STATE        DBUS-PATH                                  CONNECTION  CON-UUID                              CON-PATH                                           
-eth1    ethernet  niedostępne  /org/freedesktop/NetworkManager/Devices/2  --          --                                    --                                                 
-wlan0   wifi      niedostępne  /org/freedesktop/NetworkManager/Devices/3  --          --                                    --                                                 
-wlan1   wifi      niedostępne  /org/freedesktop/NetworkManager/Devices/4  --          --                                    --                                                 
-wlan1   wifi      niedostępne  /org/freedesktop/NetworkManager/Devices/5  --          --                                    --                                                 
-eth0    ethernet  niedostępne  /org/freedesktop/NetworkManager/Devices/1  ethernet    UUID-ethernet-REPLACED-REPLACED-REPL  /org/freedesktop/NetworkManager/ActiveConnection/1 
+UUID                                  NAME     
+UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
 
 <<<
-stderr: 24 bytes
+stderr: 0 bytes
 >>>
-Nieznany parametr: eth0
 
 <<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-022.expected b/clients/tests/test-client.check-on-disk/test_003-022.expected
index 57d4e4a8..18c83c0a 100644
--- a/clients/tests/test-client.check-on-disk/test_003-022.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-022.expected
@@ -1,39 +1,88 @@
-location: clients/tests/test-client.py:746:test_003()/22
-cmd: $NMCLI -f ALL dev show eth0
+location: clients/tests/test-client.py:842:test_003()/22
+cmd: $NMCLI -f ALL con s ethernet
 lang: C
 returncode: 0
-stdout: 1487 bytes
+stdout: 3559 bytes
 >>>
-GENERAL.DEVICE:                         eth0
-GENERAL.TYPE:                           ethernet
-GENERAL.NM-TYPE:                        NMDeviceEthernet
-GENERAL.VENDOR:                         --
-GENERAL.PRODUCT:                        --
-GENERAL.DRIVER:                         virtual
-GENERAL.DRIVER-VERSION:                 --
-GENERAL.FIRMWARE-VERSION:               --
-GENERAL.HWADDR:                         72:41:AB:90:41:5D
-GENERAL.MTU:                            0
-GENERAL.STATE:                          20 (unavailable)
-GENERAL.REASON:                         0 (No reason given)
-GENERAL.UDI:                            /sys/devices/virtual/eth0
-GENERAL.IP-IFACE:                       --
-GENERAL.IS-SOFTWARE:                    no
-GENERAL.NM-MANAGED:                     yes
-GENERAL.AUTOCONNECT:                    yes
-GENERAL.FIRMWARE-MISSING:               no
-GENERAL.NM-PLUGIN-MISSING:              no
-GENERAL.PHYS-PORT-ID:                   --
-GENERAL.CONNECTION:                     ethernet
-GENERAL.CON-UUID:                       UUID-ethernet-REPLACED-REPLACED-REPL
-GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
-GENERAL.METERED:                        unknown
-CAPABILITIES.CARRIER-DETECT:            no
-CAPABILITIES.SPEED:                     100 Mb/s
-CAPABILITIES.IS-SOFTWARE:               no
-CAPABILITIES.SRIOV:                     no
-WIRED-PROPERTIES.CARRIER:               off
-CONNECTIONS.AVAILABLE-CONNECTION-PATHS: --
+connection.id:                          ethernet
+connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
+connection.stable-id:                   --
+connection.type:                        802-3-ethernet
+connection.interface-name:              --
+connection.autoconnect:                 yes
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   no
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     unknown
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+802-3-ethernet.port:                    --
+802-3-ethernet.speed:                   0
+802-3-ethernet.duplex:                  --
+802-3-ethernet.auto-negotiate:          no
+802-3-ethernet.mac-address:             --
+802-3-ethernet.cloned-mac-address:      --
+802-3-ethernet.generate-mac-address-mask:--
+802-3-ethernet.mac-address-blacklist:   --
+802-3-ethernet.mtu:                     auto
+802-3-ethernet.s390-subchannels:        --
+802-3-ethernet.s390-nettype:            --
+802-3-ethernet.s390-options:            --
+802-3-ethernet.wake-on-lan:             default
+802-3-ethernet.wake-on-lan-password:    --
+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.ignore-auto-routes:                no
+ipv4.ignore-auto-dns:                   no
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                yes
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     no
+ipv4.may-fail:                          yes
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                no
+ipv6.ignore-auto-dns:                   no
+ipv6.never-default:                     no
+ipv6.may-fail:                          yes
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                yes
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+proxy.method:                           none
+proxy.browser-only:                     no
+proxy.pac-url:                          --
+proxy.pac-script:                       --
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-023.expected b/clients/tests/test-client.check-on-disk/test_003-023.expected
index 0455374f..94796450 100644
--- a/clients/tests/test-client.check-on-disk/test_003-023.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-023.expected
@@ -1,39 +1,88 @@
-location: clients/tests/test-client.py:746:test_003()/23
-cmd: $NMCLI -f ALL dev show eth0
+location: clients/tests/test-client.py:842:test_003()/23
+cmd: $NMCLI -f ALL con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 1510 bytes
+stdout: 3577 bytes
 >>>
-GENERAL.DEVICE:                         eth0
-GENERAL.TYPE:                           ethernet
-GENERAL.NM-TYPE:                        NMDeviceEthernet
-GENERAL.VENDOR:                         --
-GENERAL.PRODUCT:                        --
-GENERAL.DRIVER:                         virtual
-GENERAL.DRIVER-VERSION:                 --
-GENERAL.FIRMWARE-VERSION:               --
-GENERAL.HWADDR:                         72:41:AB:90:41:5D
-GENERAL.MTU:                            0
-GENERAL.STATE:                          20 (niedostępne)
-GENERAL.REASON:                         0 (Nie podano przyczyny)
-GENERAL.UDI:                            /sys/devices/virtual/eth0
-GENERAL.IP-IFACE:                       --
-GENERAL.IS-SOFTWARE:                    nie
-GENERAL.NM-MANAGED:                     tak
-GENERAL.AUTOCONNECT:                    tak
-GENERAL.FIRMWARE-MISSING:               nie
-GENERAL.NM-PLUGIN-MISSING:              nie
-GENERAL.PHYS-PORT-ID:                   --
-GENERAL.CONNECTION:                     ethernet
-GENERAL.CON-UUID:                       UUID-ethernet-REPLACED-REPLACED-REPL
-GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
-GENERAL.METERED:                        nieznane
-CAPABILITIES.CARRIER-DETECT:            nie
-CAPABILITIES.SPEED:                     100 Mb/s
-CAPABILITIES.IS-SOFTWARE:               nie
-CAPABILITIES.SRIOV:                     nie
-WIRED-PROPERTIES.CARRIER:               wyłączone
-CONNECTIONS.AVAILABLE-CONNECTION-PATHS: --
+connection.id:                          ethernet
+connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
+connection.stable-id:                   --
+connection.type:                        802-3-ethernet
+connection.interface-name:              --
+connection.autoconnect:                 tak
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   nie
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     nieznane
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+802-3-ethernet.port:                    --
+802-3-ethernet.speed:                   0
+802-3-ethernet.duplex:                  --
+802-3-ethernet.auto-negotiate:          nie
+802-3-ethernet.mac-address:             --
+802-3-ethernet.cloned-mac-address:      --
+802-3-ethernet.generate-mac-address-mask:--
+802-3-ethernet.mac-address-blacklist:   --
+802-3-ethernet.mtu:                     automatyczne
+802-3-ethernet.s390-subchannels:        --
+802-3-ethernet.s390-nettype:            --
+802-3-ethernet.s390-options:            --
+802-3-ethernet.wake-on-lan:             default
+802-3-ethernet.wake-on-lan-password:    --
+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.ignore-auto-routes:                nie
+ipv4.ignore-auto-dns:                   nie
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                tak
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     nie
+ipv4.may-fail:                          tak
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                nie
+ipv6.ignore-auto-dns:                   nie
+ipv6.never-default:                     nie
+ipv6.may-fail:                          tak
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                tak
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+proxy.method:                           none
+proxy.browser-only:                     nie
+proxy.pac-url:                          --
+proxy.pac-script:                       --
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-024.expected b/clients/tests/test-client.check-on-disk/test_003-024.expected
index b20a45d4..cf698874 100644
--- a/clients/tests/test-client.check-on-disk/test_003-024.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-024.expected
@@ -1,10 +1,10 @@
-location: clients/tests/test-client.py:728:test_003()/24
-cmd: $NMCLI con up ethernet ifname eth1
+location: clients/tests/test-client.py:845:test_003()/24
+cmd: $NMCLI -f GENERAL.STATE con s ethernet
 lang: C
 returncode: 0
-stdout: 106 bytes
+stdout: 50 bytes
 >>>
-Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
+GENERAL.STATE:                          activated
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-025.expected b/clients/tests/test-client.check-on-disk/test_003-025.expected
index 3806099b..8e0eef21 100644
--- a/clients/tests/test-client.check-on-disk/test_003-025.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-025.expected
@@ -1,13 +1,10 @@
-location: clients/tests/test-client.py:731:test_003()/25
-cmd: $NMCLI con
-lang: C
+location: clients/tests/test-client.py:845:test_003()/25
+cmd: $NMCLI -f GENERAL.STATE con s ethernet
+lang: pl_PL.UTF-8
 returncode: 0
-stdout: 264 bytes
+stdout: 51 bytes
 >>>
-NAME      UUID                                  TYPE      DEVICE 
-ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  eth0   
-con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  --     
-con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  --     
+GENERAL.STATE:                          aktywowano
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-026.expected b/clients/tests/test-client.check-on-disk/test_003-026.expected
index ee609134..c6639a34 100644
--- a/clients/tests/test-client.check-on-disk/test_003-026.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-026.expected
@@ -1,13 +1,100 @@
-location: clients/tests/test-client.py:731:test_003()/26
-cmd: $NMCLI con
-lang: pl_PL.UTF-8
+location: clients/tests/test-client.py:848:test_003()/26
+cmd: $NMCLI con s ethernet
+lang: C
 returncode: 0
-stdout: 264 bytes
+stdout: 4223 bytes
 >>>
-NAME      UUID                                  TYPE      DEVICE 
-ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  eth0   
-con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  --     
-con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  --     
+connection.id:                          ethernet
+connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
+connection.stable-id:                   --
+connection.type:                        802-3-ethernet
+connection.interface-name:              --
+connection.autoconnect:                 yes
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   no
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     unknown
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+802-3-ethernet.port:                    --
+802-3-ethernet.speed:                   0
+802-3-ethernet.duplex:                  --
+802-3-ethernet.auto-negotiate:          no
+802-3-ethernet.mac-address:             --
+802-3-ethernet.cloned-mac-address:      --
+802-3-ethernet.generate-mac-address-mask:--
+802-3-ethernet.mac-address-blacklist:   --
+802-3-ethernet.mtu:                     auto
+802-3-ethernet.s390-subchannels:        --
+802-3-ethernet.s390-nettype:            --
+802-3-ethernet.s390-options:            --
+802-3-ethernet.wake-on-lan:             default
+802-3-ethernet.wake-on-lan-password:    --
+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.ignore-auto-routes:                no
+ipv4.ignore-auto-dns:                   no
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                yes
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     no
+ipv4.may-fail:                          yes
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                no
+ipv6.ignore-auto-dns:                   no
+ipv6.never-default:                     no
+ipv6.may-fail:                          yes
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                yes
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+proxy.method:                           none
+proxy.browser-only:                     no
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+GENERAL.NAME:                           ethernet
+GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.DEVICES:                        eth0
+GENERAL.STATE:                          activated
+GENERAL.DEFAULT:                        no
+GENERAL.DEFAULT6:                       no
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            no
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-027.expected b/clients/tests/test-client.check-on-disk/test_003-027.expected
index 96924a42..ad84cdb1 100644
--- a/clients/tests/test-client.check-on-disk/test_003-027.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-027.expected
@@ -1,13 +1,100 @@
-location: clients/tests/test-client.py:734:test_003()/27
-cmd: $NMCLI -f ALL con
-lang: C
+location: clients/tests/test-client.py:848:test_003()/27
+cmd: $NMCLI con s ethernet
+lang: pl_PL.UTF-8
 returncode: 0
-stdout: 1084 bytes
+stdout: 4245 bytes
 >>>
-NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE      ACTIVE-PATH                                         SLAVE 
-ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/3  yes     eth0    activated  /org/freedesktop/NetworkManager/ActiveConnection/1  --    
-con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/1  no      --      --         --                                                  --    
-con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/2  no      --      --         --                                                  --    
+connection.id:                          ethernet
+connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
+connection.stable-id:                   --
+connection.type:                        802-3-ethernet
+connection.interface-name:              --
+connection.autoconnect:                 tak
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   nie
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     nieznane
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+802-3-ethernet.port:                    --
+802-3-ethernet.speed:                   0
+802-3-ethernet.duplex:                  --
+802-3-ethernet.auto-negotiate:          nie
+802-3-ethernet.mac-address:             --
+802-3-ethernet.cloned-mac-address:      --
+802-3-ethernet.generate-mac-address-mask:--
+802-3-ethernet.mac-address-blacklist:   --
+802-3-ethernet.mtu:                     automatyczne
+802-3-ethernet.s390-subchannels:        --
+802-3-ethernet.s390-nettype:            --
+802-3-ethernet.s390-options:            --
+802-3-ethernet.wake-on-lan:             default
+802-3-ethernet.wake-on-lan-password:    --
+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.ignore-auto-routes:                nie
+ipv4.ignore-auto-dns:                   nie
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                tak
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     nie
+ipv4.may-fail:                          tak
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                nie
+ipv6.ignore-auto-dns:                   nie
+ipv6.never-default:                     nie
+ipv6.may-fail:                          tak
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                tak
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+proxy.method:                           none
+proxy.browser-only:                     nie
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+GENERAL.NAME:                           ethernet
+GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.DEVICES:                        eth0
+GENERAL.STATE:                          aktywowano
+GENERAL.DEFAULT:                        nie
+GENERAL.DEFAULT6:                       nie
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            nie
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-028.expected b/clients/tests/test-client.check-on-disk/test_003-028.expected
index 6065d1ea..c3f04638 100644
--- a/clients/tests/test-client.check-on-disk/test_003-028.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-028.expected
@@ -1,16 +1,19 @@
-location: clients/tests/test-client.py:734:test_003()/28
-cmd: $NMCLI -f ALL con
-lang: pl_PL.UTF-8
+location: clients/tests/test-client.py:851:test_003()/28
+cmd: $NMCLI -f ALL dev s eth0
+lang: C
 returncode: 0
-stdout: 1088 bytes
+stdout: 1056 bytes
 >>>
-NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE       ACTIVE-PATH                                         SLAVE 
-ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/3  tak     eth0    aktywowano  /org/freedesktop/NetworkManager/ActiveConnection/1  --    
-con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/1  nie     --      --          --                                                  --    
-con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/2  nie     --      --          --                                                  --    
+DEVICE  TYPE      STATE        DBUS-PATH                                  CONNECTION  CON-UUID                              CON-PATH                                           
+eth1    ethernet  unavailable  /org/freedesktop/NetworkManager/Devices/2  --          --                                    --                                                 
+wlan0   wifi      unavailable  /org/freedesktop/NetworkManager/Devices/3  --          --                                    --                                                 
+wlan1   wifi      unavailable  /org/freedesktop/NetworkManager/Devices/4  --          --                                    --                                                 
+wlan1   wifi      unavailable  /org/freedesktop/NetworkManager/Devices/5  --          --                                    --                                                 
+eth0    ethernet  unavailable  /org/freedesktop/NetworkManager/Devices/1  ethernet    UUID-ethernet-REPLACED-REPLACED-REPL  /org/freedesktop/NetworkManager/ActiveConnection/1 
 
 <<<
-stderr: 0 bytes
+stderr: 24 bytes
 >>>
+Unknown parameter: eth0
 
 <<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-029.expected b/clients/tests/test-client.check-on-disk/test_003-029.expected
index ebb89619..10688630 100644
--- a/clients/tests/test-client.check-on-disk/test_003-029.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-029.expected
@@ -1,90 +1,19 @@
-location: clients/tests/test-client.py:737:test_003()/29
-cmd: $NMCLI -f ALL con s ethernet
-lang: C
+location: clients/tests/test-client.py:851:test_003()/29
+cmd: $NMCLI -f ALL dev s eth0
+lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3516 bytes
+stdout: 1061 bytes
 >>>
-connection.id:                          ethernet
-connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
-connection.stable-id:                   --
-connection.type:                        802-3-ethernet
-connection.interface-name:              --
-connection.autoconnect:                 yes
-connection.autoconnect-priority:        0
-connection.autoconnect-retries:         -1 (default)
-connection.auth-retries:                -1
-connection.timestamp:                   0
-connection.read-only:                   no
-connection.permissions:                 --
-connection.zone:                        --
-connection.master:                      --
-connection.slave-type:                  --
-connection.autoconnect-slaves:          -1 (default)
-connection.secondaries:                 --
-connection.gateway-ping-timeout:        0
-connection.metered:                     unknown
-connection.lldp:                        default
-connection.mdns:                        -1 (default)
-802-3-ethernet.port:                    --
-802-3-ethernet.speed:                   0
-802-3-ethernet.duplex:                  --
-802-3-ethernet.auto-negotiate:          no
-802-3-ethernet.mac-address:             --
-802-3-ethernet.cloned-mac-address:      --
-802-3-ethernet.generate-mac-address-mask:--
-802-3-ethernet.mac-address-blacklist:   --
-802-3-ethernet.mtu:                     auto
-802-3-ethernet.s390-subchannels:        --
-802-3-ethernet.s390-nettype:            --
-802-3-ethernet.s390-options:            --
-802-3-ethernet.wake-on-lan:             default
-802-3-ethernet.wake-on-lan-password:    --
-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.ignore-auto-routes:                no
-ipv4.ignore-auto-dns:                   no
-ipv4.dhcp-client-id:                    --
-ipv4.dhcp-timeout:                      0 (default)
-ipv4.dhcp-send-hostname:                yes
-ipv4.dhcp-hostname:                     --
-ipv4.dhcp-fqdn:                         --
-ipv4.never-default:                     no
-ipv4.may-fail:                          yes
-ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                no
-ipv6.ignore-auto-dns:                   no
-ipv6.never-default:                     no
-ipv6.may-fail:                          yes
-ipv6.ip6-privacy:                       -1 (unknown)
-ipv6.addr-gen-mode:                     stable-privacy
-ipv6.dhcp-send-hostname:                yes
-ipv6.dhcp-hostname:                     --
-ipv6.token:                             --
-proxy.method:                           none
-proxy.browser-only:                     no
-proxy.pac-url:                          --
-proxy.pac-script:                       --
+DEVICE  TYPE      STATE        DBUS-PATH                                  CONNECTION  CON-UUID                              CON-PATH                                           
+eth1    ethernet  niedostępne  /org/freedesktop/NetworkManager/Devices/2  --          --                                    --                                                 
+wlan0   wifi      niedostępne  /org/freedesktop/NetworkManager/Devices/3  --          --                                    --                                                 
+wlan1   wifi      niedostępne  /org/freedesktop/NetworkManager/Devices/4  --          --                                    --                                                 
+wlan1   wifi      niedostępne  /org/freedesktop/NetworkManager/Devices/5  --          --                                    --                                                 
+eth0    ethernet  niedostępne  /org/freedesktop/NetworkManager/Devices/1  ethernet    UUID-ethernet-REPLACED-REPLACED-REPL  /org/freedesktop/NetworkManager/ActiveConnection/1 
 
 <<<
-stderr: 0 bytes
+stderr: 24 bytes
 >>>
+Nieznany parametr: eth0
 
 <<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-030.expected b/clients/tests/test-client.check-on-disk/test_003-030.expected
index adf743d8..b9b9ad23 100644
--- a/clients/tests/test-client.check-on-disk/test_003-030.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-030.expected
@@ -1,87 +1,64 @@
-location: clients/tests/test-client.py:737:test_003()/30
-cmd: $NMCLI -f ALL con s ethernet
-lang: pl_PL.UTF-8
+location: clients/tests/test-client.py:854:test_003()/30
+cmd: $NMCLI -f ALL dev show eth0
+lang: C
 returncode: 0
-stdout: 3534 bytes
+stdout: 3239 bytes
 >>>
-connection.id:                          ethernet
-connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
-connection.stable-id:                   --
-connection.type:                        802-3-ethernet
-connection.interface-name:              --
-connection.autoconnect:                 tak
-connection.autoconnect-priority:        0
-connection.autoconnect-retries:         -1 (default)
-connection.auth-retries:                -1
-connection.timestamp:                   0
-connection.read-only:                   nie
-connection.permissions:                 --
-connection.zone:                        --
-connection.master:                      --
-connection.slave-type:                  --
-connection.autoconnect-slaves:          -1 (default)
-connection.secondaries:                 --
-connection.gateway-ping-timeout:        0
-connection.metered:                     nieznane
-connection.lldp:                        default
-connection.mdns:                        -1 (default)
-802-3-ethernet.port:                    --
-802-3-ethernet.speed:                   0
-802-3-ethernet.duplex:                  --
-802-3-ethernet.auto-negotiate:          nie
-802-3-ethernet.mac-address:             --
-802-3-ethernet.cloned-mac-address:      --
-802-3-ethernet.generate-mac-address-mask:--
-802-3-ethernet.mac-address-blacklist:   --
-802-3-ethernet.mtu:                     automatyczne
-802-3-ethernet.s390-subchannels:        --
-802-3-ethernet.s390-nettype:            --
-802-3-ethernet.s390-options:            --
-802-3-ethernet.wake-on-lan:             default
-802-3-ethernet.wake-on-lan-password:    --
-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.ignore-auto-routes:                nie
-ipv4.ignore-auto-dns:                   nie
-ipv4.dhcp-client-id:                    --
-ipv4.dhcp-timeout:                      0 (default)
-ipv4.dhcp-send-hostname:                tak
-ipv4.dhcp-hostname:                     --
-ipv4.dhcp-fqdn:                         --
-ipv4.never-default:                     nie
-ipv4.may-fail:                          tak
-ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                nie
-ipv6.ignore-auto-dns:                   nie
-ipv6.never-default:                     nie
-ipv6.may-fail:                          tak
-ipv6.ip6-privacy:                       -1 (unknown)
-ipv6.addr-gen-mode:                     stable-privacy
-ipv6.dhcp-send-hostname:                tak
-ipv6.dhcp-hostname:                     --
-ipv6.token:                             --
-proxy.method:                           none
-proxy.browser-only:                     nie
-proxy.pac-url:                          --
-proxy.pac-script:                       --
+GENERAL.DEVICE:                         eth0
+GENERAL.TYPE:                           ethernet
+GENERAL.NM-TYPE:                        NMDeviceEthernet
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         C0:61:AE:26:4D:D7
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.REASON:                         0 (No reason given)
+GENERAL.UDI:                            /sys/devices/virtual/eth0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    no
+GENERAL.NM-MANAGED:                     yes
+GENERAL.AUTOCONNECT:                    yes
+GENERAL.FIRMWARE-MISSING:               no
+GENERAL.NM-PLUGIN-MISSING:              no
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     ethernet
+GENERAL.CON-UUID:                       UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.METERED:                        unknown
+CAPABILITIES.CARRIER-DETECT:            no
+CAPABILITIES.SPEED:                     100 Mb/s
+CAPABILITIES.IS-SOFTWARE:               no
+CAPABILITIES.SRIOV:                     no
+WIRED-PROPERTIES.CARRIER:               off
+IP4.ADDRESS[1]:                         192.168.6.238/29
+IP4.GATEWAY:                            --
+IP4.ROUTE[1]:                           dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
+IP4.ROUTE[2]:                           dst = 192.168.155.50/19, nh = 192.168.127.64
+IP4.DNS[1]:                             192.168.213.113
+IP4.DOMAIN[1]:                          sear4.foo4.bar
+IP4.WINS[1]:                            192.168.156.115
+IP4.WINS[2]:                            192.168.8.33
+IP6.ADDRESS[1]:                         2001:a::29c0:62b9:2e01:30a/69
+IP6.ADDRESS[2]:                         2001:a::6433:6420:34f9:3801/115
+IP6.ADDRESS[3]:                         2001:a::8191:ed6b:8ce:b60/103
+IP6.GATEWAY:                            2001:a::2b50:64d1:9a91:23b4
+IP6.ROUTE[1]:                           dst = 2001:a::5ecb:f5ee:fb96:856c/100, nh = ::, mt = 4249082794
+IP6.DNS[1]:                             2001:a::1323:9a78:2b82:d16b
+IP6.DNS[2]:                             2001:a::4e1:24e6:b8c1:91bb
+IP6.DNS[3]:                             2001:a::bd96:3bed:fbd6:19c5
+IP6.DOMAIN[1]:                          sear6.fo.x.y
+IP6.DOMAIN[2]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-5 = val-5
+DHCP6.OPTION[3]:                        dhcp-6-opt-6 = val-6
+DHCP6.OPTION[4]:                        dhcp-6-opt-8 = val-8
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2,1,3}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+CONNECTIONS.AVAILABLE-CONNECTIONS[2]:   5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
+CONNECTIONS.AVAILABLE-CONNECTIONS[3]:   UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-031.expected b/clients/tests/test-client.check-on-disk/test_003-031.expected
index cbf57afc..29485ead 100644
--- a/clients/tests/test-client.check-on-disk/test_003-031.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-031.expected
@@ -1,112 +1,64 @@
-location: clients/tests/test-client.py:740:test_003()/31
-cmd: $NMCLI con s ethernet
-lang: C
+location: clients/tests/test-client.py:854:test_003()/31
+cmd: $NMCLI -f ALL dev show eth0
+lang: pl_PL.UTF-8
 returncode: 0
-stdout: 4845 bytes
+stdout: 3262 bytes
 >>>
-connection.id:                          ethernet
-connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
-connection.stable-id:                   --
-connection.type:                        802-3-ethernet
-connection.interface-name:              --
-connection.autoconnect:                 yes
-connection.autoconnect-priority:        0
-connection.autoconnect-retries:         -1 (default)
-connection.auth-retries:                -1
-connection.timestamp:                   0
-connection.read-only:                   no
-connection.permissions:                 --
-connection.zone:                        --
-connection.master:                      --
-connection.slave-type:                  --
-connection.autoconnect-slaves:          -1 (default)
-connection.secondaries:                 --
-connection.gateway-ping-timeout:        0
-connection.metered:                     unknown
-connection.lldp:                        default
-connection.mdns:                        -1 (default)
-802-3-ethernet.port:                    --
-802-3-ethernet.speed:                   0
-802-3-ethernet.duplex:                  --
-802-3-ethernet.auto-negotiate:          no
-802-3-ethernet.mac-address:             --
-802-3-ethernet.cloned-mac-address:      --
-802-3-ethernet.generate-mac-address-mask:--
-802-3-ethernet.mac-address-blacklist:   --
-802-3-ethernet.mtu:                     auto
-802-3-ethernet.s390-subchannels:        --
-802-3-ethernet.s390-nettype:            --
-802-3-ethernet.s390-options:            --
-802-3-ethernet.wake-on-lan:             default
-802-3-ethernet.wake-on-lan-password:    --
-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.ignore-auto-routes:                no
-ipv4.ignore-auto-dns:                   no
-ipv4.dhcp-client-id:                    --
-ipv4.dhcp-timeout:                      0 (default)
-ipv4.dhcp-send-hostname:                yes
-ipv4.dhcp-hostname:                     --
-ipv4.dhcp-fqdn:                         --
-ipv4.never-default:                     no
-ipv4.may-fail:                          yes
-ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                no
-ipv6.ignore-auto-dns:                   no
-ipv6.never-default:                     no
-ipv6.may-fail:                          yes
-ipv6.ip6-privacy:                       -1 (unknown)
-ipv6.addr-gen-mode:                     stable-privacy
-ipv6.dhcp-send-hostname:                yes
-ipv6.dhcp-hostname:                     --
-ipv6.token:                             --
-proxy.method:                           none
-proxy.browser-only:                     no
-proxy.pac-url:                          --
-proxy.pac-script:                       --
-GENERAL.NAME:                           ethernet
-GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
-GENERAL.DEVICES:                        eth0
-GENERAL.STATE:                          activated
-GENERAL.DEFAULT:                        no
-GENERAL.DEFAULT6:                       no
-GENERAL.SPEC-OBJECT:                    --
-GENERAL.VPN:                            no
-GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
-GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
-GENERAL.ZONE:                           --
-GENERAL.MASTER-PATH:                    --
-
-GENERAL.NAME:                           ethernet
-GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
-GENERAL.DEVICES:                        eth1
-GENERAL.STATE:                          activated
-GENERAL.DEFAULT:                        no
-GENERAL.DEFAULT6:                       no
-GENERAL.SPEC-OBJECT:                    --
-GENERAL.VPN:                            no
-GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
-GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
-GENERAL.ZONE:                           --
-GENERAL.MASTER-PATH:                    --
+GENERAL.DEVICE:                         eth0
+GENERAL.TYPE:                           ethernet
+GENERAL.NM-TYPE:                        NMDeviceEthernet
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         C0:61:AE:26:4D:D7
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.REASON:                         0 (Nie podano przyczyny)
+GENERAL.UDI:                            /sys/devices/virtual/eth0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    nie
+GENERAL.NM-MANAGED:                     tak
+GENERAL.AUTOCONNECT:                    tak
+GENERAL.FIRMWARE-MISSING:               nie
+GENERAL.NM-PLUGIN-MISSING:              nie
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     ethernet
+GENERAL.CON-UUID:                       UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.METERED:                        nieznane
+CAPABILITIES.CARRIER-DETECT:            nie
+CAPABILITIES.SPEED:                     100 Mb/s
+CAPABILITIES.IS-SOFTWARE:               nie
+CAPABILITIES.SRIOV:                     nie
+WIRED-PROPERTIES.CARRIER:               wyłączone
+IP4.ADDRESS[1]:                         192.168.6.238/29
+IP4.GATEWAY:                            --
+IP4.ROUTE[1]:                           dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
+IP4.ROUTE[2]:                           dst = 192.168.155.50/19, nh = 192.168.127.64
+IP4.DNS[1]:                             192.168.213.113
+IP4.DOMAIN[1]:                          sear4.foo4.bar
+IP4.WINS[1]:                            192.168.156.115
+IP4.WINS[2]:                            192.168.8.33
+IP6.ADDRESS[1]:                         2001:a::29c0:62b9:2e01:30a/69
+IP6.ADDRESS[2]:                         2001:a::6433:6420:34f9:3801/115
+IP6.ADDRESS[3]:                         2001:a::8191:ed6b:8ce:b60/103
+IP6.GATEWAY:                            2001:a::2b50:64d1:9a91:23b4
+IP6.ROUTE[1]:                           dst = 2001:a::5ecb:f5ee:fb96:856c/100, nh = ::, mt = 4249082794
+IP6.DNS[1]:                             2001:a::1323:9a78:2b82:d16b
+IP6.DNS[2]:                             2001:a::4e1:24e6:b8c1:91bb
+IP6.DNS[3]:                             2001:a::bd96:3bed:fbd6:19c5
+IP6.DOMAIN[1]:                          sear6.fo.x.y
+IP6.DOMAIN[2]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-5 = val-5
+DHCP6.OPTION[3]:                        dhcp-6-opt-6 = val-6
+DHCP6.OPTION[4]:                        dhcp-6-opt-8 = val-8
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2,1,3}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+CONNECTIONS.AVAILABLE-CONNECTIONS[2]:   5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
+CONNECTIONS.AVAILABLE-CONNECTIONS[3]:   UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-032.expected b/clients/tests/test-client.check-on-disk/test_003-032.expected
index e5d74a1b..8ce56ad7 100644
--- a/clients/tests/test-client.check-on-disk/test_003-032.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-032.expected
@@ -1,112 +1,64 @@
-location: clients/tests/test-client.py:740:test_003()/32
-cmd: $NMCLI con s ethernet
-lang: pl_PL.UTF-8
+location: clients/tests/test-client.py:857:test_003()/32
+cmd: $NMCLI -f ALL -t dev show eth0
+lang: C
 returncode: 0
-stdout: 4869 bytes
+stdout: 2011 bytes
 >>>
-connection.id:                          ethernet
-connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
-connection.stable-id:                   --
-connection.type:                        802-3-ethernet
-connection.interface-name:              --
-connection.autoconnect:                 tak
-connection.autoconnect-priority:        0
-connection.autoconnect-retries:         -1 (default)
-connection.auth-retries:                -1
-connection.timestamp:                   0
-connection.read-only:                   nie
-connection.permissions:                 --
-connection.zone:                        --
-connection.master:                      --
-connection.slave-type:                  --
-connection.autoconnect-slaves:          -1 (default)
-connection.secondaries:                 --
-connection.gateway-ping-timeout:        0
-connection.metered:                     nieznane
-connection.lldp:                        default
-connection.mdns:                        -1 (default)
-802-3-ethernet.port:                    --
-802-3-ethernet.speed:                   0
-802-3-ethernet.duplex:                  --
-802-3-ethernet.auto-negotiate:          nie
-802-3-ethernet.mac-address:             --
-802-3-ethernet.cloned-mac-address:      --
-802-3-ethernet.generate-mac-address-mask:--
-802-3-ethernet.mac-address-blacklist:   --
-802-3-ethernet.mtu:                     automatyczne
-802-3-ethernet.s390-subchannels:        --
-802-3-ethernet.s390-nettype:            --
-802-3-ethernet.s390-options:            --
-802-3-ethernet.wake-on-lan:             default
-802-3-ethernet.wake-on-lan-password:    --
-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.ignore-auto-routes:                nie
-ipv4.ignore-auto-dns:                   nie
-ipv4.dhcp-client-id:                    --
-ipv4.dhcp-timeout:                      0 (default)
-ipv4.dhcp-send-hostname:                tak
-ipv4.dhcp-hostname:                     --
-ipv4.dhcp-fqdn:                         --
-ipv4.never-default:                     nie
-ipv4.may-fail:                          tak
-ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                nie
-ipv6.ignore-auto-dns:                   nie
-ipv6.never-default:                     nie
-ipv6.may-fail:                          tak
-ipv6.ip6-privacy:                       -1 (unknown)
-ipv6.addr-gen-mode:                     stable-privacy
-ipv6.dhcp-send-hostname:                tak
-ipv6.dhcp-hostname:                     --
-ipv6.token:                             --
-proxy.method:                           none
-proxy.browser-only:                     nie
-proxy.pac-url:                          --
-proxy.pac-script:                       --
-GENERAL.NAME:                           ethernet
-GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
-GENERAL.DEVICES:                        eth0
-GENERAL.STATE:                          activated
-GENERAL.DEFAULT:                        nie
-GENERAL.DEFAULT6:                       nie
-GENERAL.SPEC-OBJECT:                    --
-GENERAL.VPN:                            nie
-GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
-GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
-GENERAL.ZONE:                           --
-GENERAL.MASTER-PATH:                    --
-
-GENERAL.NAME:                           ethernet
-GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
-GENERAL.DEVICES:                        eth1
-GENERAL.STATE:                          activated
-GENERAL.DEFAULT:                        nie
-GENERAL.DEFAULT6:                       nie
-GENERAL.SPEC-OBJECT:                    --
-GENERAL.VPN:                            nie
-GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
-GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
-GENERAL.ZONE:                           --
-GENERAL.MASTER-PATH:                    --
+GENERAL.DEVICE:eth0
+GENERAL.TYPE:ethernet
+GENERAL.NM-TYPE:NMDeviceEthernet
+GENERAL.VENDOR:
+GENERAL.PRODUCT:
+GENERAL.DRIVER:virtual
+GENERAL.DRIVER-VERSION:
+GENERAL.FIRMWARE-VERSION:
+GENERAL.HWADDR:C0:61:AE:26:4D:D7
+GENERAL.MTU:0
+GENERAL.STATE:20 (unavailable)
+GENERAL.REASON:0 (No reason given)
+GENERAL.UDI:/sys/devices/virtual/eth0
+GENERAL.IP-IFACE:
+GENERAL.IS-SOFTWARE:no
+GENERAL.NM-MANAGED:yes
+GENERAL.AUTOCONNECT:yes
+GENERAL.FIRMWARE-MISSING:no
+GENERAL.NM-PLUGIN-MISSING:no
+GENERAL.PHYS-PORT-ID:
+GENERAL.CONNECTION:ethernet
+GENERAL.CON-UUID:UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.METERED:unknown
+CAPABILITIES.CARRIER-DETECT:no
+CAPABILITIES.SPEED:100 Mb/s
+CAPABILITIES.IS-SOFTWARE:no
+CAPABILITIES.SRIOV:no
+WIRED-PROPERTIES.CARRIER:off
+IP4.ADDRESS[1]:192.168.6.238/29
+IP4.GATEWAY:
+IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
+IP4.ROUTE[2]:dst = 192.168.155.50/19, nh = 192.168.127.64
+IP4.DNS[1]:192.168.213.113
+IP4.DOMAIN[1]:sear4.foo4.bar
+IP4.WINS[1]:192.168.156.115
+IP4.WINS[2]:192.168.8.33
+IP6.ADDRESS[1]:2001:a::29c0:62b9:2e01:30a/69
+IP6.ADDRESS[2]:2001:a::6433:6420:34f9:3801/115
+IP6.ADDRESS[3]:2001:a::8191:ed6b:8ce:b60/103
+IP6.GATEWAY:2001:a::2b50:64d1:9a91:23b4
+IP6.ROUTE[1]:dst = 2001:a::5ecb:f5ee:fb96:856c/100, nh = ::, mt = 4249082794
+IP6.DNS[1]:2001:a::1323:9a78:2b82:d16b
+IP6.DNS[2]:2001:a::4e1:24e6:b8c1:91bb
+IP6.DNS[3]:2001:a::bd96:3bed:fbd6:19c5
+IP6.DOMAIN[1]:sear6.fo.x.y
+IP6.DOMAIN[2]:sear6.foo4.bar
+DHCP6.OPTION[1]:dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:dhcp-6-opt-5 = val-5
+DHCP6.OPTION[3]:dhcp-6-opt-6 = val-6
+DHCP6.OPTION[4]:dhcp-6-opt-8 = val-8
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/{2,1,3}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+CONNECTIONS.AVAILABLE-CONNECTIONS[2]:5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
+CONNECTIONS.AVAILABLE-CONNECTIONS[3]:UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-033.expected b/clients/tests/test-client.check-on-disk/test_003-033.expected
index 46b70521..9b9ca5e1 100644
--- a/clients/tests/test-client.check-on-disk/test_003-033.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-033.expected
@@ -1,19 +1,67 @@
-location: clients/tests/test-client.py:743:test_003()/33
-cmd: $NMCLI -f ALL dev s eth0
-lang: C
+location: clients/tests/test-client.py:857:test_003()/33
+cmd: $NMCLI -f ALL -t dev show eth0
+lang: pl_PL.UTF-8
 returncode: 0
-stdout: 1056 bytes
+stdout: 2034 bytes
 >>>
-DEVICE  TYPE      STATE        DBUS-PATH                                  CONNECTION  CON-UUID                              CON-PATH                                           
-wlan0   wifi      unavailable  /org/freedesktop/NetworkManager/Devices/3  --          --                                    --                                                 
-wlan1   wifi      unavailable  /org/freedesktop/NetworkManager/Devices/4  --          --                                    --                                                 
-wlan1   wifi      unavailable  /org/freedesktop/NetworkManager/Devices/5  --          --                                    --                                                 
-eth0    ethernet  unavailable  /org/freedesktop/NetworkManager/Devices/1  ethernet    UUID-ethernet-REPLACED-REPLACED-REPL  /org/freedesktop/NetworkManager/ActiveConnection/1 
-eth1    ethernet  unavailable  /org/freedesktop/NetworkManager/Devices/2  ethernet    UUID-ethernet-REPLACED-REPLACED-REPL  /org/freedesktop/NetworkManager/ActiveConnection/2 
+GENERAL.DEVICE:eth0
+GENERAL.TYPE:ethernet
+GENERAL.NM-TYPE:NMDeviceEthernet
+GENERAL.VENDOR:
+GENERAL.PRODUCT:
+GENERAL.DRIVER:virtual
+GENERAL.DRIVER-VERSION:
+GENERAL.FIRMWARE-VERSION:
+GENERAL.HWADDR:C0:61:AE:26:4D:D7
+GENERAL.MTU:0
+GENERAL.STATE:20 (niedostępne)
+GENERAL.REASON:0 (Nie podano przyczyny)
+GENERAL.UDI:/sys/devices/virtual/eth0
+GENERAL.IP-IFACE:
+GENERAL.IS-SOFTWARE:nie
+GENERAL.NM-MANAGED:tak
+GENERAL.AUTOCONNECT:tak
+GENERAL.FIRMWARE-MISSING:nie
+GENERAL.NM-PLUGIN-MISSING:nie
+GENERAL.PHYS-PORT-ID:
+GENERAL.CONNECTION:ethernet
+GENERAL.CON-UUID:UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.METERED:nieznane
+CAPABILITIES.CARRIER-DETECT:nie
+CAPABILITIES.SPEED:100 Mb/s
+CAPABILITIES.IS-SOFTWARE:nie
+CAPABILITIES.SRIOV:nie
+WIRED-PROPERTIES.CARRIER:wyłączone
+IP4.ADDRESS[1]:192.168.6.238/29
+IP4.GATEWAY:
+IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
+IP4.ROUTE[2]:dst = 192.168.155.50/19, nh = 192.168.127.64
+IP4.DNS[1]:192.168.213.113
+IP4.DOMAIN[1]:sear4.foo4.bar
+IP4.WINS[1]:192.168.156.115
+IP4.WINS[2]:192.168.8.33
+IP6.ADDRESS[1]:2001:a::29c0:62b9:2e01:30a/69
+IP6.ADDRESS[2]:2001:a::6433:6420:34f9:3801/115
+IP6.ADDRESS[3]:2001:a::8191:ed6b:8ce:b60/103
+IP6.GATEWAY:2001:a::2b50:64d1:9a91:23b4
+IP6.ROUTE[1]:dst = 2001:a::5ecb:f5ee:fb96:856c/100, nh = ::, mt = 4249082794
+IP6.DNS[1]:2001:a::1323:9a78:2b82:d16b
+IP6.DNS[2]:2001:a::4e1:24e6:b8c1:91bb
+IP6.DNS[3]:2001:a::bd96:3bed:fbd6:19c5
+IP6.DOMAIN[1]:sear6.fo.x.y
+IP6.DOMAIN[2]:sear6.foo4.bar
+DHCP6.OPTION[1]:dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:dhcp-6-opt-5 = val-5
+DHCP6.OPTION[3]:dhcp-6-opt-6 = val-6
+DHCP6.OPTION[4]:dhcp-6-opt-8 = val-8
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/{2,1,3}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+CONNECTIONS.AVAILABLE-CONNECTIONS[2]:5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
+CONNECTIONS.AVAILABLE-CONNECTIONS[3]:UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
 
 <<<
-stderr: 24 bytes
+stderr: 0 bytes
 >>>
-Unknown parameter: eth0
 
 <<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-034.expected b/clients/tests/test-client.check-on-disk/test_003-034.expected
index 77cc99fd..ab807e0d 100644
--- a/clients/tests/test-client.check-on-disk/test_003-034.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-034.expected
@@ -1,19 +1,13 @@
-location: clients/tests/test-client.py:743:test_003()/34
-cmd: $NMCLI -f ALL dev s eth0
-lang: pl_PL.UTF-8
+location: clients/tests/test-client.py:824:test_003()/34
+cmd: $NMCLI con up ethernet ifname eth1
+lang: C
 returncode: 0
-stdout: 1061 bytes
+stdout: 106 bytes
 >>>
-DEVICE  TYPE      STATE        DBUS-PATH                                  CONNECTION  CON-UUID                              CON-PATH                                           
-wlan0   wifi      niedostępne  /org/freedesktop/NetworkManager/Devices/3  --          --                                    --                                                 
-wlan1   wifi      niedostępne  /org/freedesktop/NetworkManager/Devices/4  --          --                                    --                                                 
-wlan1   wifi      niedostępne  /org/freedesktop/NetworkManager/Devices/5  --          --                                    --                                                 
-eth0    ethernet  niedostępne  /org/freedesktop/NetworkManager/Devices/1  ethernet    UUID-ethernet-REPLACED-REPLACED-REPL  /org/freedesktop/NetworkManager/ActiveConnection/1 
-eth1    ethernet  niedostępne  /org/freedesktop/NetworkManager/Devices/2  ethernet    UUID-ethernet-REPLACED-REPLACED-REPL  /org/freedesktop/NetworkManager/ActiveConnection/2 
+Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
 
 <<<
-stderr: 24 bytes
+stderr: 0 bytes
 >>>
-Nieznany parametr: eth0
 
 <<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-035.expected b/clients/tests/test-client.check-on-disk/test_003-035.expected
index ae928657..b1b60932 100644
--- a/clients/tests/test-client.check-on-disk/test_003-035.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-035.expected
@@ -1,39 +1,14 @@
-location: clients/tests/test-client.py:746:test_003()/35
-cmd: $NMCLI -f ALL dev show eth0
+location: clients/tests/test-client.py:827:test_003()/35
+cmd: $NMCLI con
 lang: C
 returncode: 0
-stdout: 1487 bytes
+stdout: 330 bytes
 >>>
-GENERAL.DEVICE:                         eth0
-GENERAL.TYPE:                           ethernet
-GENERAL.NM-TYPE:                        NMDeviceEthernet
-GENERAL.VENDOR:                         --
-GENERAL.PRODUCT:                        --
-GENERAL.DRIVER:                         virtual
-GENERAL.DRIVER-VERSION:                 --
-GENERAL.FIRMWARE-VERSION:               --
-GENERAL.HWADDR:                         72:41:AB:90:41:5D
-GENERAL.MTU:                            0
-GENERAL.STATE:                          20 (unavailable)
-GENERAL.REASON:                         0 (No reason given)
-GENERAL.UDI:                            /sys/devices/virtual/eth0
-GENERAL.IP-IFACE:                       --
-GENERAL.IS-SOFTWARE:                    no
-GENERAL.NM-MANAGED:                     yes
-GENERAL.AUTOCONNECT:                    yes
-GENERAL.FIRMWARE-MISSING:               no
-GENERAL.NM-PLUGIN-MISSING:              no
-GENERAL.PHYS-PORT-ID:                   --
-GENERAL.CONNECTION:                     ethernet
-GENERAL.CON-UUID:                       UUID-ethernet-REPLACED-REPLACED-REPL
-GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
-GENERAL.METERED:                        unknown
-CAPABILITIES.CARRIER-DETECT:            no
-CAPABILITIES.SPEED:                     100 Mb/s
-CAPABILITIES.IS-SOFTWARE:               no
-CAPABILITIES.SRIOV:                     no
-WIRED-PROPERTIES.CARRIER:               off
-CONNECTIONS.AVAILABLE-CONNECTION-PATHS: --
+NAME      UUID                                  TYPE      DEVICE 
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  eth0   
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  eth1   
+con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  --     
+con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  --     
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-036.expected b/clients/tests/test-client.check-on-disk/test_003-036.expected
index 11b511f7..8cf42cf9 100644
--- a/clients/tests/test-client.check-on-disk/test_003-036.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-036.expected
@@ -1,39 +1,14 @@
-location: clients/tests/test-client.py:746:test_003()/36
-cmd: $NMCLI -f ALL dev show eth0
+location: clients/tests/test-client.py:827:test_003()/36
+cmd: $NMCLI con
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 1510 bytes
+stdout: 330 bytes
 >>>
-GENERAL.DEVICE:                         eth0
-GENERAL.TYPE:                           ethernet
-GENERAL.NM-TYPE:                        NMDeviceEthernet
-GENERAL.VENDOR:                         --
-GENERAL.PRODUCT:                        --
-GENERAL.DRIVER:                         virtual
-GENERAL.DRIVER-VERSION:                 --
-GENERAL.FIRMWARE-VERSION:               --
-GENERAL.HWADDR:                         72:41:AB:90:41:5D
-GENERAL.MTU:                            0
-GENERAL.STATE:                          20 (niedostępne)
-GENERAL.REASON:                         0 (Nie podano przyczyny)
-GENERAL.UDI:                            /sys/devices/virtual/eth0
-GENERAL.IP-IFACE:                       --
-GENERAL.IS-SOFTWARE:                    nie
-GENERAL.NM-MANAGED:                     tak
-GENERAL.AUTOCONNECT:                    tak
-GENERAL.FIRMWARE-MISSING:               nie
-GENERAL.NM-PLUGIN-MISSING:              nie
-GENERAL.PHYS-PORT-ID:                   --
-GENERAL.CONNECTION:                     ethernet
-GENERAL.CON-UUID:                       UUID-ethernet-REPLACED-REPLACED-REPL
-GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
-GENERAL.METERED:                        nieznane
-CAPABILITIES.CARRIER-DETECT:            nie
-CAPABILITIES.SPEED:                     100 Mb/s
-CAPABILITIES.IS-SOFTWARE:               nie
-CAPABILITIES.SRIOV:                     nie
-WIRED-PROPERTIES.CARRIER:               wyłączone
-CONNECTIONS.AVAILABLE-CONNECTION-PATHS: --
+NAME      UUID                                  TYPE      DEVICE 
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  eth0   
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  eth1   
+con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  --     
+con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  --     
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-037.expected b/clients/tests/test-client.check-on-disk/test_003-037.expected
index 0346b310..2eebd4a4 100644
--- a/clients/tests/test-client.check-on-disk/test_003-037.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-037.expected
@@ -1,13 +1,14 @@
-location: clients/tests/test-client.py:755:test_003()/37
+location: clients/tests/test-client.py:830:test_003()/37
 cmd: $NMCLI -f ALL con
 lang: C
 returncode: 0
-stdout: 1096 bytes
+stdout: 1600 bytes
 >>>
-NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE         ACTIVE-PATH                                         SLAVE 
-ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/3  yes     eth0    deactivating  /org/freedesktop/NetworkManager/ActiveConnection/1  --    
-con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/1  no      --      --            --                                                  --    
-con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/2  no      --      --            --                                                  --    
+NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE      ACTIVE-PATH                                         SLAVE  FILENAME                                        
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/3  yes     eth0    activated  /org/freedesktop/NetworkManager/ActiveConnection/1  --     /etc/NetworkManager/system-connections/ethernet 
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/3  yes     eth1    activated  /org/freedesktop/NetworkManager/ActiveConnection/2  --     /etc/NetworkManager/system-connections/ethernet 
+con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/1  no      --      --         --                                                  --     /etc/NetworkManager/system-connections/con-1    
+con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/2  no      --      --         --                                                  --     /etc/NetworkManager/system-connections/con-xx1  
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-038.expected b/clients/tests/test-client.check-on-disk/test_003-038.expected
index 81c7c237..a6b4b459 100644
--- a/clients/tests/test-client.check-on-disk/test_003-038.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-038.expected
@@ -1,13 +1,14 @@
-location: clients/tests/test-client.py:755:test_003()/38
+location: clients/tests/test-client.py:830:test_003()/38
 cmd: $NMCLI -f ALL con
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 1104 bytes
+stdout: 1605 bytes
 >>>
-NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE           ACTIVE-PATH                                         SLAVE 
-ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/3  tak     eth0    dezaktywowanie  /org/freedesktop/NetworkManager/ActiveConnection/1  --    
-con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/1  nie     --      --              --                                                  --    
-con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/2  nie     --      --              --                                                  --    
+NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE       ACTIVE-PATH                                         SLAVE  FILENAME                                        
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/3  tak     eth0    aktywowano  /org/freedesktop/NetworkManager/ActiveConnection/1  --     /etc/NetworkManager/system-connections/ethernet 
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/3  tak     eth1    aktywowano  /org/freedesktop/NetworkManager/ActiveConnection/2  --     /etc/NetworkManager/system-connections/ethernet 
+con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/1  nie     --      --          --                                                  --     /etc/NetworkManager/system-connections/con-1    
+con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/2  nie     --      --          --                                                  --     /etc/NetworkManager/system-connections/con-xx1  
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-039.expected b/clients/tests/test-client.check-on-disk/test_003-039.expected
index 3640d0c9..337735b1 100644
--- a/clients/tests/test-client.check-on-disk/test_003-039.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-039.expected
@@ -1,13 +1,12 @@
-location: clients/tests/test-client.py:758:test_003()/39
-cmd: $NMCLI -f UUID,TYPE con
+location: clients/tests/test-client.py:833:test_003()/39
+cmd: $NMCLI -f ALL con s -a
 lang: C
 returncode: 0
-stdout: 192 bytes
+stdout: 960 bytes
 >>>
-UUID                                  TYPE     
-UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
-5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
-UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE      ACTIVE-PATH                                         SLAVE  FILENAME                                        
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/3  yes     eth0    activated  /org/freedesktop/NetworkManager/ActiveConnection/1  --     /etc/NetworkManager/system-connections/ethernet 
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/3  yes     eth1    activated  /org/freedesktop/NetworkManager/ActiveConnection/2  --     /etc/NetworkManager/system-connections/ethernet 
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-040.expected b/clients/tests/test-client.check-on-disk/test_003-040.expected
index fd263f55..97be1db4 100644
--- a/clients/tests/test-client.check-on-disk/test_003-040.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-040.expected
@@ -1,13 +1,12 @@
-location: clients/tests/test-client.py:758:test_003()/40
-cmd: $NMCLI -f UUID,TYPE con
+location: clients/tests/test-client.py:833:test_003()/40
+cmd: $NMCLI -f ALL con s -a
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 192 bytes
+stdout: 963 bytes
 >>>
-UUID                                  TYPE     
-UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
-5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
-UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE       ACTIVE-PATH                                         SLAVE  FILENAME                                        
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/3  tak     eth0    aktywowano  /org/freedesktop/NetworkManager/ActiveConnection/1  --     /etc/NetworkManager/system-connections/ethernet 
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/3  tak     eth1    aktywowano  /org/freedesktop/NetworkManager/ActiveConnection/2  --     /etc/NetworkManager/system-connections/ethernet 
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-041.expected b/clients/tests/test-client.check-on-disk/test_003-041.expected
index f61fb681..1fa2aa6f 100644
--- a/clients/tests/test-client.check-on-disk/test_003-041.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-041.expected
@@ -1,15 +1,12 @@
-location: clients/tests/test-client.py:761:test_003()/41
-cmd: $NMCLI -f UUID,TYPE --mode multiline con
+location: clients/tests/test-client.py:836:test_003()/41
+cmd: $NMCLI -f ACTIVE-PATH,DEVICE,UUID con s -act
 lang: C
 returncode: 0
-stdout: 378 bytes
+stdout: 294 bytes
 >>>
-UUID:                                   UUID-ethernet-REPLACED-REPLACED-REPL
-TYPE:                                   ethernet
-UUID:                                   5fcfd6d7-1e63-3332-8826-a7eda103792d
-TYPE:                                   ethernet
-UUID:                                   UUID-con-xx1-REPLACED-REPLACED-REPLA
-TYPE:                                   ethernet
+ACTIVE-PATH                                         DEVICE  UUID                                 
+/org/freedesktop/NetworkManager/ActiveConnection/1  eth0    UUID-ethernet-REPLACED-REPLACED-REPL 
+/org/freedesktop/NetworkManager/ActiveConnection/2  eth1    UUID-ethernet-REPLACED-REPLACED-REPL 
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-042.expected b/clients/tests/test-client.check-on-disk/test_003-042.expected
index 6ea659e9..df90c8f5 100644
--- a/clients/tests/test-client.check-on-disk/test_003-042.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-042.expected
@@ -1,15 +1,12 @@
-location: clients/tests/test-client.py:761:test_003()/42
-cmd: $NMCLI -f UUID,TYPE --mode multiline con
+location: clients/tests/test-client.py:836:test_003()/42
+cmd: $NMCLI -f ACTIVE-PATH,DEVICE,UUID con s -act
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 378 bytes
+stdout: 294 bytes
 >>>
-UUID:                                   UUID-ethernet-REPLACED-REPLACED-REPL
-TYPE:                                   ethernet
-UUID:                                   5fcfd6d7-1e63-3332-8826-a7eda103792d
-TYPE:                                   ethernet
-UUID:                                   UUID-con-xx1-REPLACED-REPLACED-REPLA
-TYPE:                                   ethernet
+ACTIVE-PATH                                         DEVICE  UUID                                 
+/org/freedesktop/NetworkManager/ActiveConnection/1  eth0    UUID-ethernet-REPLACED-REPLACED-REPL 
+/org/freedesktop/NetworkManager/ActiveConnection/2  eth1    UUID-ethernet-REPLACED-REPLACED-REPL 
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-043.expected b/clients/tests/test-client.check-on-disk/test_003-043.expected
index 8f5aeb70..afbe5ad2 100644
--- a/clients/tests/test-client.check-on-disk/test_003-043.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-043.expected
@@ -1,15 +1,11 @@
-location: clients/tests/test-client.py:764:test_003()/43
-cmd: $NMCLI -f UUID,TYPE --mode multiline --terse con
+location: clients/tests/test-client.py:839:test_003()/43
+cmd: $NMCLI -f UUID,NAME con s --active
 lang: C
 returncode: 0
-stdout: 186 bytes
+stdout: 96 bytes
 >>>
-UUID:UUID-ethernet-REPLACED-REPLACED-REPL
-TYPE:802-3-ethernet
-UUID:5fcfd6d7-1e63-3332-8826-a7eda103792d
-TYPE:802-3-ethernet
-UUID:UUID-con-xx1-REPLACED-REPLACED-REPLA
-TYPE:802-3-ethernet
+UUID                                  NAME     
+UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-044.expected b/clients/tests/test-client.check-on-disk/test_003-044.expected
index fbe01dab..260cab53 100644
--- a/clients/tests/test-client.check-on-disk/test_003-044.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-044.expected
@@ -1,15 +1,11 @@
-location: clients/tests/test-client.py:764:test_003()/44
-cmd: $NMCLI -f UUID,TYPE --mode multiline --terse con
+location: clients/tests/test-client.py:839:test_003()/44
+cmd: $NMCLI -f UUID,NAME con s --active
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 186 bytes
+stdout: 96 bytes
 >>>
-UUID:UUID-ethernet-REPLACED-REPLACED-REPL
-TYPE:802-3-ethernet
-UUID:5fcfd6d7-1e63-3332-8826-a7eda103792d
-TYPE:802-3-ethernet
-UUID:UUID-con-xx1-REPLACED-REPLACED-REPLA
-TYPE:802-3-ethernet
+UUID                                  NAME     
+UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-045.expected b/clients/tests/test-client.check-on-disk/test_003-045.expected
index 5759e2f4..bd8a8306 100644
--- a/clients/tests/test-client.check-on-disk/test_003-045.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-045.expected
@@ -1,21 +1,88 @@
-location: clients/tests/test-client.py:767:test_003()/45
-cmd: $NMCLI -f UUID,TYPE --mode multiline --pretty con
+location: clients/tests/test-client.py:842:test_003()/45
+cmd: $NMCLI -f ALL con s ethernet
 lang: C
 returncode: 0
-stdout: 835 bytes
+stdout: 3559 bytes
 >>>
-===============================================================================
-                      NetworkManager connection profiles
-===============================================================================
-UUID:                                   UUID-ethernet-REPLACED-REPLACED-REPL
-TYPE:                                   ethernet
--------------------------------------------------------------------------------
-UUID:                                   5fcfd6d7-1e63-3332-8826-a7eda103792d
-TYPE:                                   ethernet
--------------------------------------------------------------------------------
-UUID:                                   UUID-con-xx1-REPLACED-REPLACED-REPLA
-TYPE:                                   ethernet
--------------------------------------------------------------------------------
+connection.id:                          ethernet
+connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
+connection.stable-id:                   --
+connection.type:                        802-3-ethernet
+connection.interface-name:              --
+connection.autoconnect:                 yes
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   no
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     unknown
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+802-3-ethernet.port:                    --
+802-3-ethernet.speed:                   0
+802-3-ethernet.duplex:                  --
+802-3-ethernet.auto-negotiate:          no
+802-3-ethernet.mac-address:             --
+802-3-ethernet.cloned-mac-address:      --
+802-3-ethernet.generate-mac-address-mask:--
+802-3-ethernet.mac-address-blacklist:   --
+802-3-ethernet.mtu:                     auto
+802-3-ethernet.s390-subchannels:        --
+802-3-ethernet.s390-nettype:            --
+802-3-ethernet.s390-options:            --
+802-3-ethernet.wake-on-lan:             default
+802-3-ethernet.wake-on-lan-password:    --
+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.ignore-auto-routes:                no
+ipv4.ignore-auto-dns:                   no
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                yes
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     no
+ipv4.may-fail:                          yes
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                no
+ipv6.ignore-auto-dns:                   no
+ipv6.never-default:                     no
+ipv6.may-fail:                          yes
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                yes
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+proxy.method:                           none
+proxy.browser-only:                     no
+proxy.pac-url:                          --
+proxy.pac-script:                       --
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-046.expected b/clients/tests/test-client.check-on-disk/test_003-046.expected
index d853d487..a5dad008 100644
--- a/clients/tests/test-client.check-on-disk/test_003-046.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-046.expected
@@ -1,21 +1,88 @@
-location: clients/tests/test-client.py:767:test_003()/46
-cmd: $NMCLI -f UUID,TYPE --mode multiline --pretty con
+location: clients/tests/test-client.py:842:test_003()/46
+cmd: $NMCLI -f ALL con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 841 bytes
+stdout: 3577 bytes
 >>>
-===============================================================================
-                    Profile połączeń usługi NetworkManager
-===============================================================================
-UUID:                                   UUID-ethernet-REPLACED-REPLACED-REPL
-TYPE:                                   ethernet
--------------------------------------------------------------------------------
-UUID:                                   5fcfd6d7-1e63-3332-8826-a7eda103792d
-TYPE:                                   ethernet
--------------------------------------------------------------------------------
-UUID:                                   UUID-con-xx1-REPLACED-REPLACED-REPLA
-TYPE:                                   ethernet
--------------------------------------------------------------------------------
+connection.id:                          ethernet
+connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
+connection.stable-id:                   --
+connection.type:                        802-3-ethernet
+connection.interface-name:              --
+connection.autoconnect:                 tak
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   nie
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     nieznane
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+802-3-ethernet.port:                    --
+802-3-ethernet.speed:                   0
+802-3-ethernet.duplex:                  --
+802-3-ethernet.auto-negotiate:          nie
+802-3-ethernet.mac-address:             --
+802-3-ethernet.cloned-mac-address:      --
+802-3-ethernet.generate-mac-address-mask:--
+802-3-ethernet.mac-address-blacklist:   --
+802-3-ethernet.mtu:                     automatyczne
+802-3-ethernet.s390-subchannels:        --
+802-3-ethernet.s390-nettype:            --
+802-3-ethernet.s390-options:            --
+802-3-ethernet.wake-on-lan:             default
+802-3-ethernet.wake-on-lan-password:    --
+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.ignore-auto-routes:                nie
+ipv4.ignore-auto-dns:                   nie
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                tak
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     nie
+ipv4.may-fail:                          tak
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                nie
+ipv6.ignore-auto-dns:                   nie
+ipv6.never-default:                     nie
+ipv6.may-fail:                          tak
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                tak
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+proxy.method:                           none
+proxy.browser-only:                     nie
+proxy.pac-url:                          --
+proxy.pac-script:                       --
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-047.expected b/clients/tests/test-client.check-on-disk/test_003-047.expected
index 6522c7b2..0e555c10 100644
--- a/clients/tests/test-client.check-on-disk/test_003-047.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-047.expected
@@ -1,13 +1,12 @@
-location: clients/tests/test-client.py:770:test_003()/47
-cmd: $NMCLI -f UUID,TYPE --mode tabular con
+location: clients/tests/test-client.py:845:test_003()/47
+cmd: $NMCLI -f GENERAL.STATE con s ethernet
 lang: C
 returncode: 0
-stdout: 192 bytes
+stdout: 101 bytes
 >>>
-UUID                                  TYPE     
-UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
-5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
-UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+GENERAL.STATE:                          activated
+
+GENERAL.STATE:                          activated
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-048.expected b/clients/tests/test-client.check-on-disk/test_003-048.expected
index 08d3ae95..60f33d71 100644
--- a/clients/tests/test-client.check-on-disk/test_003-048.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-048.expected
@@ -1,13 +1,12 @@
-location: clients/tests/test-client.py:770:test_003()/48
-cmd: $NMCLI -f UUID,TYPE --mode tabular con
+location: clients/tests/test-client.py:845:test_003()/48
+cmd: $NMCLI -f GENERAL.STATE con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 192 bytes
+stdout: 103 bytes
 >>>
-UUID                                  TYPE     
-UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
-5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
-UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+GENERAL.STATE:                          aktywowano
+
+GENERAL.STATE:                          aktywowano
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-049.expected b/clients/tests/test-client.check-on-disk/test_003-049.expected
index 3f8f3060..30f80a57 100644
--- a/clients/tests/test-client.check-on-disk/test_003-049.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-049.expected
@@ -1,12 +1,113 @@
-location: clients/tests/test-client.py:773:test_003()/49
-cmd: $NMCLI -f UUID,TYPE --mode tabular --terse con
+location: clients/tests/test-client.py:848:test_003()/49
+cmd: $NMCLI con s ethernet
 lang: C
 returncode: 0
-stdout: 156 bytes
+stdout: 4888 bytes
 >>>
-UUID-ethernet-REPLACED-REPLACED-REPL:802-3-ethernet
-5fcfd6d7-1e63-3332-8826-a7eda103792d:802-3-ethernet
-UUID-con-xx1-REPLACED-REPLACED-REPLA:802-3-ethernet
+connection.id:                          ethernet
+connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
+connection.stable-id:                   --
+connection.type:                        802-3-ethernet
+connection.interface-name:              --
+connection.autoconnect:                 yes
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   no
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     unknown
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+802-3-ethernet.port:                    --
+802-3-ethernet.speed:                   0
+802-3-ethernet.duplex:                  --
+802-3-ethernet.auto-negotiate:          no
+802-3-ethernet.mac-address:             --
+802-3-ethernet.cloned-mac-address:      --
+802-3-ethernet.generate-mac-address-mask:--
+802-3-ethernet.mac-address-blacklist:   --
+802-3-ethernet.mtu:                     auto
+802-3-ethernet.s390-subchannels:        --
+802-3-ethernet.s390-nettype:            --
+802-3-ethernet.s390-options:            --
+802-3-ethernet.wake-on-lan:             default
+802-3-ethernet.wake-on-lan-password:    --
+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.ignore-auto-routes:                no
+ipv4.ignore-auto-dns:                   no
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                yes
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     no
+ipv4.may-fail:                          yes
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                no
+ipv6.ignore-auto-dns:                   no
+ipv6.never-default:                     no
+ipv6.may-fail:                          yes
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                yes
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+proxy.method:                           none
+proxy.browser-only:                     no
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+GENERAL.NAME:                           ethernet
+GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.DEVICES:                        eth0
+GENERAL.STATE:                          activated
+GENERAL.DEFAULT:                        no
+GENERAL.DEFAULT6:                       no
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            no
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
+
+GENERAL.NAME:                           ethernet
+GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.DEVICES:                        eth1
+GENERAL.STATE:                          activated
+GENERAL.DEFAULT:                        no
+GENERAL.DEFAULT6:                       no
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            no
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-050.expected b/clients/tests/test-client.check-on-disk/test_003-050.expected
index dea01fd2..892e7a8b 100644
--- a/clients/tests/test-client.check-on-disk/test_003-050.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-050.expected
@@ -1,12 +1,113 @@
-location: clients/tests/test-client.py:773:test_003()/50
-cmd: $NMCLI -f UUID,TYPE --mode tabular --terse con
+location: clients/tests/test-client.py:848:test_003()/50
+cmd: $NMCLI con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 156 bytes
+stdout: 4914 bytes
 >>>
-UUID-ethernet-REPLACED-REPLACED-REPL:802-3-ethernet
-5fcfd6d7-1e63-3332-8826-a7eda103792d:802-3-ethernet
-UUID-con-xx1-REPLACED-REPLACED-REPLA:802-3-ethernet
+connection.id:                          ethernet
+connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
+connection.stable-id:                   --
+connection.type:                        802-3-ethernet
+connection.interface-name:              --
+connection.autoconnect:                 tak
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   nie
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     nieznane
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+802-3-ethernet.port:                    --
+802-3-ethernet.speed:                   0
+802-3-ethernet.duplex:                  --
+802-3-ethernet.auto-negotiate:          nie
+802-3-ethernet.mac-address:             --
+802-3-ethernet.cloned-mac-address:      --
+802-3-ethernet.generate-mac-address-mask:--
+802-3-ethernet.mac-address-blacklist:   --
+802-3-ethernet.mtu:                     automatyczne
+802-3-ethernet.s390-subchannels:        --
+802-3-ethernet.s390-nettype:            --
+802-3-ethernet.s390-options:            --
+802-3-ethernet.wake-on-lan:             default
+802-3-ethernet.wake-on-lan-password:    --
+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.ignore-auto-routes:                nie
+ipv4.ignore-auto-dns:                   nie
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                tak
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     nie
+ipv4.may-fail:                          tak
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                nie
+ipv6.ignore-auto-dns:                   nie
+ipv6.never-default:                     nie
+ipv6.may-fail:                          tak
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                tak
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+proxy.method:                           none
+proxy.browser-only:                     nie
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+GENERAL.NAME:                           ethernet
+GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.DEVICES:                        eth0
+GENERAL.STATE:                          aktywowano
+GENERAL.DEFAULT:                        nie
+GENERAL.DEFAULT6:                       nie
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            nie
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
+
+GENERAL.NAME:                           ethernet
+GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.DEVICES:                        eth1
+GENERAL.STATE:                          aktywowano
+GENERAL.DEFAULT:                        nie
+GENERAL.DEFAULT6:                       nie
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            nie
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-051.expected b/clients/tests/test-client.check-on-disk/test_003-051.expected
index 7e4dd471..2f2e7b11 100644
--- a/clients/tests/test-client.check-on-disk/test_003-051.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-051.expected
@@ -1,20 +1,19 @@
-location: clients/tests/test-client.py:776:test_003()/51
-cmd: $NMCLI -f UUID,TYPE --mode tabular --pretty con
+location: clients/tests/test-client.py:851:test_003()/51
+cmd: $NMCLI -f ALL dev s eth0
 lang: C
 returncode: 0
-stdout: 394 bytes
+stdout: 1056 bytes
 >>>
-======================================
-  NetworkManager connection profiles
-======================================
-UUID                                  TYPE     
---------------------------------------------------------------------------------------
-UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
-5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
-UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+DEVICE  TYPE      STATE        DBUS-PATH                                  CONNECTION  CON-UUID                              CON-PATH                                           
+wlan0   wifi      unavailable  /org/freedesktop/NetworkManager/Devices/3  --          --                                    --                                                 
+wlan1   wifi      unavailable  /org/freedesktop/NetworkManager/Devices/4  --          --                                    --                                                 
+wlan1   wifi      unavailable  /org/freedesktop/NetworkManager/Devices/5  --          --                                    --                                                 
+eth0    ethernet  unavailable  /org/freedesktop/NetworkManager/Devices/1  ethernet    UUID-ethernet-REPLACED-REPLACED-REPL  /org/freedesktop/NetworkManager/ActiveConnection/1 
+eth1    ethernet  unavailable  /org/freedesktop/NetworkManager/Devices/2  ethernet    UUID-ethernet-REPLACED-REPLACED-REPL  /org/freedesktop/NetworkManager/ActiveConnection/2 
 
 <<<
-stderr: 0 bytes
+stderr: 24 bytes
 >>>
+Unknown parameter: eth0
 
 <<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-052.expected b/clients/tests/test-client.check-on-disk/test_003-052.expected
index 3d6c2eca..b9c637da 100644
--- a/clients/tests/test-client.check-on-disk/test_003-052.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-052.expected
@@ -1,20 +1,19 @@
-location: clients/tests/test-client.py:776:test_003()/52
-cmd: $NMCLI -f UUID,TYPE --mode tabular --pretty con
+location: clients/tests/test-client.py:851:test_003()/52
+cmd: $NMCLI -f ALL dev s eth0
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 414 bytes
+stdout: 1061 bytes
 >>>
-==========================================
-  Profile połączeń usługi NetworkManager
-==========================================
-UUID                                  TYPE     
-------------------------------------------------------------------------------------------
-UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
-5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
-UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+DEVICE  TYPE      STATE        DBUS-PATH                                  CONNECTION  CON-UUID                              CON-PATH                                           
+wlan0   wifi      niedostępne  /org/freedesktop/NetworkManager/Devices/3  --          --                                    --                                                 
+wlan1   wifi      niedostępne  /org/freedesktop/NetworkManager/Devices/4  --          --                                    --                                                 
+wlan1   wifi      niedostępne  /org/freedesktop/NetworkManager/Devices/5  --          --                                    --                                                 
+eth0    ethernet  niedostępne  /org/freedesktop/NetworkManager/Devices/1  ethernet    UUID-ethernet-REPLACED-REPLACED-REPL  /org/freedesktop/NetworkManager/ActiveConnection/1 
+eth1    ethernet  niedostępne  /org/freedesktop/NetworkManager/Devices/2  ethernet    UUID-ethernet-REPLACED-REPLACED-REPL  /org/freedesktop/NetworkManager/ActiveConnection/2 
 
 <<<
-stderr: 0 bytes
+stderr: 24 bytes
 >>>
+Nieznany parametr: eth0
 
 <<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-053.expected b/clients/tests/test-client.check-on-disk/test_003-053.expected
index dd92ec68..70ff8521 100644
--- a/clients/tests/test-client.check-on-disk/test_003-053.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-053.expected
@@ -1,112 +1,64 @@
-location: clients/tests/test-client.py:779:test_003()/53
-cmd: $NMCLI con s ethernet
+location: clients/tests/test-client.py:854:test_003()/53
+cmd: $NMCLI -f ALL dev show eth0
 lang: C
 returncode: 0
-stdout: 4848 bytes
+stdout: 3239 bytes
 >>>
-connection.id:                          ethernet
-connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
-connection.stable-id:                   --
-connection.type:                        802-3-ethernet
-connection.interface-name:              --
-connection.autoconnect:                 yes
-connection.autoconnect-priority:        0
-connection.autoconnect-retries:         -1 (default)
-connection.auth-retries:                -1
-connection.timestamp:                   0
-connection.read-only:                   no
-connection.permissions:                 --
-connection.zone:                        --
-connection.master:                      --
-connection.slave-type:                  --
-connection.autoconnect-slaves:          -1 (default)
-connection.secondaries:                 --
-connection.gateway-ping-timeout:        0
-connection.metered:                     unknown
-connection.lldp:                        default
-connection.mdns:                        -1 (default)
-802-3-ethernet.port:                    --
-802-3-ethernet.speed:                   0
-802-3-ethernet.duplex:                  --
-802-3-ethernet.auto-negotiate:          no
-802-3-ethernet.mac-address:             --
-802-3-ethernet.cloned-mac-address:      --
-802-3-ethernet.generate-mac-address-mask:--
-802-3-ethernet.mac-address-blacklist:   --
-802-3-ethernet.mtu:                     auto
-802-3-ethernet.s390-subchannels:        --
-802-3-ethernet.s390-nettype:            --
-802-3-ethernet.s390-options:            --
-802-3-ethernet.wake-on-lan:             default
-802-3-ethernet.wake-on-lan-password:    --
-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.ignore-auto-routes:                no
-ipv4.ignore-auto-dns:                   no
-ipv4.dhcp-client-id:                    --
-ipv4.dhcp-timeout:                      0 (default)
-ipv4.dhcp-send-hostname:                yes
-ipv4.dhcp-hostname:                     --
-ipv4.dhcp-fqdn:                         --
-ipv4.never-default:                     no
-ipv4.may-fail:                          yes
-ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                no
-ipv6.ignore-auto-dns:                   no
-ipv6.never-default:                     no
-ipv6.may-fail:                          yes
-ipv6.ip6-privacy:                       -1 (unknown)
-ipv6.addr-gen-mode:                     stable-privacy
-ipv6.dhcp-send-hostname:                yes
-ipv6.dhcp-hostname:                     --
-ipv6.token:                             --
-proxy.method:                           none
-proxy.browser-only:                     no
-proxy.pac-url:                          --
-proxy.pac-script:                       --
-GENERAL.NAME:                           ethernet
-GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
-GENERAL.DEVICES:                        eth0
-GENERAL.STATE:                          deactivating
-GENERAL.DEFAULT:                        no
-GENERAL.DEFAULT6:                       no
-GENERAL.SPEC-OBJECT:                    --
-GENERAL.VPN:                            no
-GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
-GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
-GENERAL.ZONE:                           --
-GENERAL.MASTER-PATH:                    --
-
-GENERAL.NAME:                           ethernet
-GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
-GENERAL.DEVICES:                        eth1
-GENERAL.STATE:                          activated
-GENERAL.DEFAULT:                        no
-GENERAL.DEFAULT6:                       no
-GENERAL.SPEC-OBJECT:                    --
-GENERAL.VPN:                            no
-GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
-GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
-GENERAL.ZONE:                           --
-GENERAL.MASTER-PATH:                    --
+GENERAL.DEVICE:                         eth0
+GENERAL.TYPE:                           ethernet
+GENERAL.NM-TYPE:                        NMDeviceEthernet
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         C0:61:AE:26:4D:D7
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.REASON:                         0 (No reason given)
+GENERAL.UDI:                            /sys/devices/virtual/eth0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    no
+GENERAL.NM-MANAGED:                     yes
+GENERAL.AUTOCONNECT:                    yes
+GENERAL.FIRMWARE-MISSING:               no
+GENERAL.NM-PLUGIN-MISSING:              no
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     ethernet
+GENERAL.CON-UUID:                       UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.METERED:                        unknown
+CAPABILITIES.CARRIER-DETECT:            no
+CAPABILITIES.SPEED:                     100 Mb/s
+CAPABILITIES.IS-SOFTWARE:               no
+CAPABILITIES.SRIOV:                     no
+WIRED-PROPERTIES.CARRIER:               off
+IP4.ADDRESS[1]:                         192.168.6.238/29
+IP4.GATEWAY:                            --
+IP4.ROUTE[1]:                           dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
+IP4.ROUTE[2]:                           dst = 192.168.155.50/19, nh = 192.168.127.64
+IP4.DNS[1]:                             192.168.213.113
+IP4.DOMAIN[1]:                          sear4.foo4.bar
+IP4.WINS[1]:                            192.168.156.115
+IP4.WINS[2]:                            192.168.8.33
+IP6.ADDRESS[1]:                         2001:a::29c0:62b9:2e01:30a/69
+IP6.ADDRESS[2]:                         2001:a::6433:6420:34f9:3801/115
+IP6.ADDRESS[3]:                         2001:a::8191:ed6b:8ce:b60/103
+IP6.GATEWAY:                            2001:a::2b50:64d1:9a91:23b4
+IP6.ROUTE[1]:                           dst = 2001:a::5ecb:f5ee:fb96:856c/100, nh = ::, mt = 4249082794
+IP6.DNS[1]:                             2001:a::1323:9a78:2b82:d16b
+IP6.DNS[2]:                             2001:a::4e1:24e6:b8c1:91bb
+IP6.DNS[3]:                             2001:a::bd96:3bed:fbd6:19c5
+IP6.DOMAIN[1]:                          sear6.fo.x.y
+IP6.DOMAIN[2]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-5 = val-5
+DHCP6.OPTION[3]:                        dhcp-6-opt-6 = val-6
+DHCP6.OPTION[4]:                        dhcp-6-opt-8 = val-8
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2,1,3}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+CONNECTIONS.AVAILABLE-CONNECTIONS[2]:   5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
+CONNECTIONS.AVAILABLE-CONNECTIONS[3]:   UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-054.expected b/clients/tests/test-client.check-on-disk/test_003-054.expected
index 7379f872..9faf56e7 100644
--- a/clients/tests/test-client.check-on-disk/test_003-054.expected
+++ b/clients/tests/test-client.check-on-disk/test_003-054.expected
@@ -1,112 +1,64 @@
-location: clients/tests/test-client.py:779:test_003()/54
-cmd: $NMCLI con s ethernet
+location: clients/tests/test-client.py:854:test_003()/54
+cmd: $NMCLI -f ALL dev show eth0
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 4872 bytes
+stdout: 3262 bytes
 >>>
-connection.id:                          ethernet
-connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
-connection.stable-id:                   --
-connection.type:                        802-3-ethernet
-connection.interface-name:              --
-connection.autoconnect:                 tak
-connection.autoconnect-priority:        0
-connection.autoconnect-retries:         -1 (default)
-connection.auth-retries:                -1
-connection.timestamp:                   0
-connection.read-only:                   nie
-connection.permissions:                 --
-connection.zone:                        --
-connection.master:                      --
-connection.slave-type:                  --
-connection.autoconnect-slaves:          -1 (default)
-connection.secondaries:                 --
-connection.gateway-ping-timeout:        0
-connection.metered:                     nieznane
-connection.lldp:                        default
-connection.mdns:                        -1 (default)
-802-3-ethernet.port:                    --
-802-3-ethernet.speed:                   0
-802-3-ethernet.duplex:                  --
-802-3-ethernet.auto-negotiate:          nie
-802-3-ethernet.mac-address:             --
-802-3-ethernet.cloned-mac-address:      --
-802-3-ethernet.generate-mac-address-mask:--
-802-3-ethernet.mac-address-blacklist:   --
-802-3-ethernet.mtu:                     automatyczne
-802-3-ethernet.s390-subchannels:        --
-802-3-ethernet.s390-nettype:            --
-802-3-ethernet.s390-options:            --
-802-3-ethernet.wake-on-lan:             default
-802-3-ethernet.wake-on-lan-password:    --
-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.ignore-auto-routes:                nie
-ipv4.ignore-auto-dns:                   nie
-ipv4.dhcp-client-id:                    --
-ipv4.dhcp-timeout:                      0 (default)
-ipv4.dhcp-send-hostname:                tak
-ipv4.dhcp-hostname:                     --
-ipv4.dhcp-fqdn:                         --
-ipv4.never-default:                     nie
-ipv4.may-fail:                          tak
-ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                nie
-ipv6.ignore-auto-dns:                   nie
-ipv6.never-default:                     nie
-ipv6.may-fail:                          tak
-ipv6.ip6-privacy:                       -1 (unknown)
-ipv6.addr-gen-mode:                     stable-privacy
-ipv6.dhcp-send-hostname:                tak
-ipv6.dhcp-hostname:                     --
-ipv6.token:                             --
-proxy.method:                           none
-proxy.browser-only:                     nie
-proxy.pac-url:                          --
-proxy.pac-script:                       --
-GENERAL.NAME:                           ethernet
-GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
-GENERAL.DEVICES:                        eth0
-GENERAL.STATE:                          deactivating
-GENERAL.DEFAULT:                        nie
-GENERAL.DEFAULT6:                       nie
-GENERAL.SPEC-OBJECT:                    --
-GENERAL.VPN:                            nie
-GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
-GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
-GENERAL.ZONE:                           --
-GENERAL.MASTER-PATH:                    --
-
-GENERAL.NAME:                           ethernet
-GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
-GENERAL.DEVICES:                        eth1
-GENERAL.STATE:                          activated
-GENERAL.DEFAULT:                        nie
-GENERAL.DEFAULT6:                       nie
-GENERAL.SPEC-OBJECT:                    --
-GENERAL.VPN:                            nie
-GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
-GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
-GENERAL.ZONE:                           --
-GENERAL.MASTER-PATH:                    --
+GENERAL.DEVICE:                         eth0
+GENERAL.TYPE:                           ethernet
+GENERAL.NM-TYPE:                        NMDeviceEthernet
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         C0:61:AE:26:4D:D7
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.REASON:                         0 (Nie podano przyczyny)
+GENERAL.UDI:                            /sys/devices/virtual/eth0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    nie
+GENERAL.NM-MANAGED:                     tak
+GENERAL.AUTOCONNECT:                    tak
+GENERAL.FIRMWARE-MISSING:               nie
+GENERAL.NM-PLUGIN-MISSING:              nie
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     ethernet
+GENERAL.CON-UUID:                       UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.METERED:                        nieznane
+CAPABILITIES.CARRIER-DETECT:            nie
+CAPABILITIES.SPEED:                     100 Mb/s
+CAPABILITIES.IS-SOFTWARE:               nie
+CAPABILITIES.SRIOV:                     nie
+WIRED-PROPERTIES.CARRIER:               wyłączone
+IP4.ADDRESS[1]:                         192.168.6.238/29
+IP4.GATEWAY:                            --
+IP4.ROUTE[1]:                           dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
+IP4.ROUTE[2]:                           dst = 192.168.155.50/19, nh = 192.168.127.64
+IP4.DNS[1]:                             192.168.213.113
+IP4.DOMAIN[1]:                          sear4.foo4.bar
+IP4.WINS[1]:                            192.168.156.115
+IP4.WINS[2]:                            192.168.8.33
+IP6.ADDRESS[1]:                         2001:a::29c0:62b9:2e01:30a/69
+IP6.ADDRESS[2]:                         2001:a::6433:6420:34f9:3801/115
+IP6.ADDRESS[3]:                         2001:a::8191:ed6b:8ce:b60/103
+IP6.GATEWAY:                            2001:a::2b50:64d1:9a91:23b4
+IP6.ROUTE[1]:                           dst = 2001:a::5ecb:f5ee:fb96:856c/100, nh = ::, mt = 4249082794
+IP6.DNS[1]:                             2001:a::1323:9a78:2b82:d16b
+IP6.DNS[2]:                             2001:a::4e1:24e6:b8c1:91bb
+IP6.DNS[3]:                             2001:a::bd96:3bed:fbd6:19c5
+IP6.DOMAIN[1]:                          sear6.fo.x.y
+IP6.DOMAIN[2]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-5 = val-5
+DHCP6.OPTION[3]:                        dhcp-6-opt-6 = val-6
+DHCP6.OPTION[4]:                        dhcp-6-opt-8 = val-8
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2,1,3}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+CONNECTIONS.AVAILABLE-CONNECTIONS[2]:   5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
+CONNECTIONS.AVAILABLE-CONNECTIONS[3]:   UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
 
 <<<
 stderr: 0 bytes
diff --git a/clients/tests/test-client.check-on-disk/test_003-055.expected b/clients/tests/test-client.check-on-disk/test_003-055.expected
new file mode 100644
index 00000000..be42aa0c
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-055.expected
@@ -0,0 +1,67 @@
+location: clients/tests/test-client.py:857:test_003()/55
+cmd: $NMCLI -f ALL -t dev show eth0
+lang: C
+returncode: 0
+stdout: 2011 bytes
+>>>
+GENERAL.DEVICE:eth0
+GENERAL.TYPE:ethernet
+GENERAL.NM-TYPE:NMDeviceEthernet
+GENERAL.VENDOR:
+GENERAL.PRODUCT:
+GENERAL.DRIVER:virtual
+GENERAL.DRIVER-VERSION:
+GENERAL.FIRMWARE-VERSION:
+GENERAL.HWADDR:C0:61:AE:26:4D:D7
+GENERAL.MTU:0
+GENERAL.STATE:20 (unavailable)
+GENERAL.REASON:0 (No reason given)
+GENERAL.UDI:/sys/devices/virtual/eth0
+GENERAL.IP-IFACE:
+GENERAL.IS-SOFTWARE:no
+GENERAL.NM-MANAGED:yes
+GENERAL.AUTOCONNECT:yes
+GENERAL.FIRMWARE-MISSING:no
+GENERAL.NM-PLUGIN-MISSING:no
+GENERAL.PHYS-PORT-ID:
+GENERAL.CONNECTION:ethernet
+GENERAL.CON-UUID:UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.METERED:unknown
+CAPABILITIES.CARRIER-DETECT:no
+CAPABILITIES.SPEED:100 Mb/s
+CAPABILITIES.IS-SOFTWARE:no
+CAPABILITIES.SRIOV:no
+WIRED-PROPERTIES.CARRIER:off
+IP4.ADDRESS[1]:192.168.6.238/29
+IP4.GATEWAY:
+IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
+IP4.ROUTE[2]:dst = 192.168.155.50/19, nh = 192.168.127.64
+IP4.DNS[1]:192.168.213.113
+IP4.DOMAIN[1]:sear4.foo4.bar
+IP4.WINS[1]:192.168.156.115
+IP4.WINS[2]:192.168.8.33
+IP6.ADDRESS[1]:2001:a::29c0:62b9:2e01:30a/69
+IP6.ADDRESS[2]:2001:a::6433:6420:34f9:3801/115
+IP6.ADDRESS[3]:2001:a::8191:ed6b:8ce:b60/103
+IP6.GATEWAY:2001:a::2b50:64d1:9a91:23b4
+IP6.ROUTE[1]:dst = 2001:a::5ecb:f5ee:fb96:856c/100, nh = ::, mt = 4249082794
+IP6.DNS[1]:2001:a::1323:9a78:2b82:d16b
+IP6.DNS[2]:2001:a::4e1:24e6:b8c1:91bb
+IP6.DNS[3]:2001:a::bd96:3bed:fbd6:19c5
+IP6.DOMAIN[1]:sear6.fo.x.y
+IP6.DOMAIN[2]:sear6.foo4.bar
+DHCP6.OPTION[1]:dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:dhcp-6-opt-5 = val-5
+DHCP6.OPTION[3]:dhcp-6-opt-6 = val-6
+DHCP6.OPTION[4]:dhcp-6-opt-8 = val-8
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/{2,1,3}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+CONNECTIONS.AVAILABLE-CONNECTIONS[2]:5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
+CONNECTIONS.AVAILABLE-CONNECTIONS[3]:UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-056.expected b/clients/tests/test-client.check-on-disk/test_003-056.expected
new file mode 100644
index 00000000..021c75c5
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-056.expected
@@ -0,0 +1,67 @@
+location: clients/tests/test-client.py:857:test_003()/56
+cmd: $NMCLI -f ALL -t dev show eth0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 2034 bytes
+>>>
+GENERAL.DEVICE:eth0
+GENERAL.TYPE:ethernet
+GENERAL.NM-TYPE:NMDeviceEthernet
+GENERAL.VENDOR:
+GENERAL.PRODUCT:
+GENERAL.DRIVER:virtual
+GENERAL.DRIVER-VERSION:
+GENERAL.FIRMWARE-VERSION:
+GENERAL.HWADDR:C0:61:AE:26:4D:D7
+GENERAL.MTU:0
+GENERAL.STATE:20 (niedostępne)
+GENERAL.REASON:0 (Nie podano przyczyny)
+GENERAL.UDI:/sys/devices/virtual/eth0
+GENERAL.IP-IFACE:
+GENERAL.IS-SOFTWARE:nie
+GENERAL.NM-MANAGED:tak
+GENERAL.AUTOCONNECT:tak
+GENERAL.FIRMWARE-MISSING:nie
+GENERAL.NM-PLUGIN-MISSING:nie
+GENERAL.PHYS-PORT-ID:
+GENERAL.CONNECTION:ethernet
+GENERAL.CON-UUID:UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.METERED:nieznane
+CAPABILITIES.CARRIER-DETECT:nie
+CAPABILITIES.SPEED:100 Mb/s
+CAPABILITIES.IS-SOFTWARE:nie
+CAPABILITIES.SRIOV:nie
+WIRED-PROPERTIES.CARRIER:wyłączone
+IP4.ADDRESS[1]:192.168.6.238/29
+IP4.GATEWAY:
+IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
+IP4.ROUTE[2]:dst = 192.168.155.50/19, nh = 192.168.127.64
+IP4.DNS[1]:192.168.213.113
+IP4.DOMAIN[1]:sear4.foo4.bar
+IP4.WINS[1]:192.168.156.115
+IP4.WINS[2]:192.168.8.33
+IP6.ADDRESS[1]:2001:a::29c0:62b9:2e01:30a/69
+IP6.ADDRESS[2]:2001:a::6433:6420:34f9:3801/115
+IP6.ADDRESS[3]:2001:a::8191:ed6b:8ce:b60/103
+IP6.GATEWAY:2001:a::2b50:64d1:9a91:23b4
+IP6.ROUTE[1]:dst = 2001:a::5ecb:f5ee:fb96:856c/100, nh = ::, mt = 4249082794
+IP6.DNS[1]:2001:a::1323:9a78:2b82:d16b
+IP6.DNS[2]:2001:a::4e1:24e6:b8c1:91bb
+IP6.DNS[3]:2001:a::bd96:3bed:fbd6:19c5
+IP6.DOMAIN[1]:sear6.fo.x.y
+IP6.DOMAIN[2]:sear6.foo4.bar
+DHCP6.OPTION[1]:dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:dhcp-6-opt-5 = val-5
+DHCP6.OPTION[3]:dhcp-6-opt-6 = val-6
+DHCP6.OPTION[4]:dhcp-6-opt-8 = val-8
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/{2,1,3}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+CONNECTIONS.AVAILABLE-CONNECTIONS[2]:5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
+CONNECTIONS.AVAILABLE-CONNECTIONS[3]:UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-057.expected b/clients/tests/test-client.check-on-disk/test_003-057.expected
new file mode 100644
index 00000000..7b57d8ed
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-057.expected
@@ -0,0 +1,17 @@
+location: clients/tests/test-client.py:871:test_003()/57
+cmd: $NMCLI -f ALL con
+lang: C
+returncode: 0
+stdout: 1615 bytes
+>>>
+NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE         ACTIVE-PATH                                         SLAVE  FILENAME                                        
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/3  yes     eth1    activated     /org/freedesktop/NetworkManager/ActiveConnection/2  --     /etc/NetworkManager/system-connections/ethernet 
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/3  yes     eth0    deactivating  /org/freedesktop/NetworkManager/ActiveConnection/1  --     /etc/NetworkManager/system-connections/ethernet 
+con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/1  no      --      --            --                                                  --     /etc/NetworkManager/system-connections/con-1    
+con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/2  no      --      --            --                                                  --     /etc/NetworkManager/system-connections/con-xx1  
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-058.expected b/clients/tests/test-client.check-on-disk/test_003-058.expected
new file mode 100644
index 00000000..1b07c9bb
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-058.expected
@@ -0,0 +1,17 @@
+location: clients/tests/test-client.py:871:test_003()/58
+cmd: $NMCLI -f ALL con
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1625 bytes
+>>>
+NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE           ACTIVE-PATH                                         SLAVE  FILENAME                                        
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/3  tak     eth1    aktywowano      /org/freedesktop/NetworkManager/ActiveConnection/2  --     /etc/NetworkManager/system-connections/ethernet 
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/3  tak     eth0    dezaktywowanie  /org/freedesktop/NetworkManager/ActiveConnection/1  --     /etc/NetworkManager/system-connections/ethernet 
+con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/1  nie     --      --              --                                                  --     /etc/NetworkManager/system-connections/con-1    
+con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/2  nie     --      --              --                                                  --     /etc/NetworkManager/system-connections/con-xx1  
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-059.expected b/clients/tests/test-client.check-on-disk/test_003-059.expected
new file mode 100644
index 00000000..11cc3843
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-059.expected
@@ -0,0 +1,16 @@
+location: clients/tests/test-client.py:874:test_003()/59
+cmd: $NMCLI -f UUID,TYPE con
+lang: C
+returncode: 0
+stdout: 192 bytes
+>>>
+UUID                                  TYPE     
+UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
+5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
+UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-060.expected b/clients/tests/test-client.check-on-disk/test_003-060.expected
new file mode 100644
index 00000000..aabea1f3
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-060.expected
@@ -0,0 +1,16 @@
+location: clients/tests/test-client.py:874:test_003()/60
+cmd: $NMCLI -f UUID,TYPE con
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 192 bytes
+>>>
+UUID                                  TYPE     
+UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
+5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
+UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-061.expected b/clients/tests/test-client.check-on-disk/test_003-061.expected
new file mode 100644
index 00000000..f6d8a47e
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-061.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:877:test_003()/61
+cmd: $NMCLI -f UUID,TYPE --mode multiline con
+lang: C
+returncode: 0
+stdout: 378 bytes
+>>>
+UUID:                                   UUID-ethernet-REPLACED-REPLACED-REPL
+TYPE:                                   ethernet
+UUID:                                   5fcfd6d7-1e63-3332-8826-a7eda103792d
+TYPE:                                   ethernet
+UUID:                                   UUID-con-xx1-REPLACED-REPLACED-REPLA
+TYPE:                                   ethernet
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-062.expected b/clients/tests/test-client.check-on-disk/test_003-062.expected
new file mode 100644
index 00000000..c668227d
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-062.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:877:test_003()/62
+cmd: $NMCLI -f UUID,TYPE --mode multiline con
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 378 bytes
+>>>
+UUID:                                   UUID-ethernet-REPLACED-REPLACED-REPL
+TYPE:                                   ethernet
+UUID:                                   5fcfd6d7-1e63-3332-8826-a7eda103792d
+TYPE:                                   ethernet
+UUID:                                   UUID-con-xx1-REPLACED-REPLACED-REPLA
+TYPE:                                   ethernet
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-063.expected b/clients/tests/test-client.check-on-disk/test_003-063.expected
new file mode 100644
index 00000000..5daafcf4
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-063.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:880:test_003()/63
+cmd: $NMCLI -f UUID,TYPE --mode multiline --terse con
+lang: C
+returncode: 0
+stdout: 186 bytes
+>>>
+UUID:UUID-ethernet-REPLACED-REPLACED-REPL
+TYPE:802-3-ethernet
+UUID:5fcfd6d7-1e63-3332-8826-a7eda103792d
+TYPE:802-3-ethernet
+UUID:UUID-con-xx1-REPLACED-REPLACED-REPLA
+TYPE:802-3-ethernet
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-064.expected b/clients/tests/test-client.check-on-disk/test_003-064.expected
new file mode 100644
index 00000000..d5456e0f
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-064.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:880:test_003()/64
+cmd: $NMCLI -f UUID,TYPE --mode multiline --terse con
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 186 bytes
+>>>
+UUID:UUID-ethernet-REPLACED-REPLACED-REPL
+TYPE:802-3-ethernet
+UUID:5fcfd6d7-1e63-3332-8826-a7eda103792d
+TYPE:802-3-ethernet
+UUID:UUID-con-xx1-REPLACED-REPLACED-REPLA
+TYPE:802-3-ethernet
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-065.expected b/clients/tests/test-client.check-on-disk/test_003-065.expected
new file mode 100644
index 00000000..e1e20172
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-065.expected
@@ -0,0 +1,24 @@
+location: clients/tests/test-client.py:883:test_003()/65
+cmd: $NMCLI -f UUID,TYPE --mode multiline --pretty con
+lang: C
+returncode: 0
+stdout: 835 bytes
+>>>
+===============================================================================
+                      NetworkManager connection profiles
+===============================================================================
+UUID:                                   UUID-ethernet-REPLACED-REPLACED-REPL
+TYPE:                                   ethernet
+-------------------------------------------------------------------------------
+UUID:                                   5fcfd6d7-1e63-3332-8826-a7eda103792d
+TYPE:                                   ethernet
+-------------------------------------------------------------------------------
+UUID:                                   UUID-con-xx1-REPLACED-REPLACED-REPLA
+TYPE:                                   ethernet
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-066.expected b/clients/tests/test-client.check-on-disk/test_003-066.expected
new file mode 100644
index 00000000..7855e17d
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-066.expected
@@ -0,0 +1,24 @@
+location: clients/tests/test-client.py:883:test_003()/66
+cmd: $NMCLI -f UUID,TYPE --mode multiline --pretty con
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 841 bytes
+>>>
+===============================================================================
+                    Profile połączeń usługi NetworkManager
+===============================================================================
+UUID:                                   UUID-ethernet-REPLACED-REPLACED-REPL
+TYPE:                                   ethernet
+-------------------------------------------------------------------------------
+UUID:                                   5fcfd6d7-1e63-3332-8826-a7eda103792d
+TYPE:                                   ethernet
+-------------------------------------------------------------------------------
+UUID:                                   UUID-con-xx1-REPLACED-REPLACED-REPLA
+TYPE:                                   ethernet
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-067.expected b/clients/tests/test-client.check-on-disk/test_003-067.expected
new file mode 100644
index 00000000..3f210bcf
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-067.expected
@@ -0,0 +1,16 @@
+location: clients/tests/test-client.py:886:test_003()/67
+cmd: $NMCLI -f UUID,TYPE --mode tabular con
+lang: C
+returncode: 0
+stdout: 192 bytes
+>>>
+UUID                                  TYPE     
+UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
+5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
+UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-068.expected b/clients/tests/test-client.check-on-disk/test_003-068.expected
new file mode 100644
index 00000000..acc2f178
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-068.expected
@@ -0,0 +1,16 @@
+location: clients/tests/test-client.py:886:test_003()/68
+cmd: $NMCLI -f UUID,TYPE --mode tabular con
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 192 bytes
+>>>
+UUID                                  TYPE     
+UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
+5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
+UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-069.expected b/clients/tests/test-client.check-on-disk/test_003-069.expected
new file mode 100644
index 00000000..f6087390
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-069.expected
@@ -0,0 +1,15 @@
+location: clients/tests/test-client.py:889:test_003()/69
+cmd: $NMCLI -f UUID,TYPE --mode tabular --terse con
+lang: C
+returncode: 0
+stdout: 156 bytes
+>>>
+UUID-ethernet-REPLACED-REPLACED-REPL:802-3-ethernet
+5fcfd6d7-1e63-3332-8826-a7eda103792d:802-3-ethernet
+UUID-con-xx1-REPLACED-REPLACED-REPLA:802-3-ethernet
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-070.expected b/clients/tests/test-client.check-on-disk/test_003-070.expected
new file mode 100644
index 00000000..93c8a80b
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-070.expected
@@ -0,0 +1,15 @@
+location: clients/tests/test-client.py:889:test_003()/70
+cmd: $NMCLI -f UUID,TYPE --mode tabular --terse con
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 156 bytes
+>>>
+UUID-ethernet-REPLACED-REPLACED-REPL:802-3-ethernet
+5fcfd6d7-1e63-3332-8826-a7eda103792d:802-3-ethernet
+UUID-con-xx1-REPLACED-REPLACED-REPLA:802-3-ethernet
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-071.expected b/clients/tests/test-client.check-on-disk/test_003-071.expected
new file mode 100644
index 00000000..3fc1750e
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-071.expected
@@ -0,0 +1,20 @@
+location: clients/tests/test-client.py:892:test_003()/71
+cmd: $NMCLI -f UUID,TYPE --mode tabular --pretty con
+lang: C
+returncode: 0
+stdout: 394 bytes
+>>>
+======================================
+  NetworkManager connection profiles
+======================================
+UUID                                  TYPE     
+--------------------------------------------------------------------------------------
+UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
+5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
+UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-072.expected b/clients/tests/test-client.check-on-disk/test_003-072.expected
new file mode 100644
index 00000000..be79082d
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-072.expected
@@ -0,0 +1,20 @@
+location: clients/tests/test-client.py:892:test_003()/72
+cmd: $NMCLI -f UUID,TYPE --mode tabular --pretty con
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 414 bytes
+>>>
+==========================================
+  Profile połączeń usługi NetworkManager
+==========================================
+UUID                                  TYPE     
+------------------------------------------------------------------------------------------
+UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
+5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
+UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-073.expected b/clients/tests/test-client.check-on-disk/test_003-073.expected
new file mode 100644
index 00000000..64b9611d
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-073.expected
@@ -0,0 +1,116 @@
+location: clients/tests/test-client.py:895:test_003()/73
+cmd: $NMCLI con s ethernet
+lang: C
+returncode: 0
+stdout: 4891 bytes
+>>>
+connection.id:                          ethernet
+connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
+connection.stable-id:                   --
+connection.type:                        802-3-ethernet
+connection.interface-name:              --
+connection.autoconnect:                 yes
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   no
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     unknown
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+802-3-ethernet.port:                    --
+802-3-ethernet.speed:                   0
+802-3-ethernet.duplex:                  --
+802-3-ethernet.auto-negotiate:          no
+802-3-ethernet.mac-address:             --
+802-3-ethernet.cloned-mac-address:      --
+802-3-ethernet.generate-mac-address-mask:--
+802-3-ethernet.mac-address-blacklist:   --
+802-3-ethernet.mtu:                     auto
+802-3-ethernet.s390-subchannels:        --
+802-3-ethernet.s390-nettype:            --
+802-3-ethernet.s390-options:            --
+802-3-ethernet.wake-on-lan:             default
+802-3-ethernet.wake-on-lan-password:    --
+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.ignore-auto-routes:                no
+ipv4.ignore-auto-dns:                   no
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                yes
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     no
+ipv4.may-fail:                          yes
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                no
+ipv6.ignore-auto-dns:                   no
+ipv6.never-default:                     no
+ipv6.may-fail:                          yes
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                yes
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+proxy.method:                           none
+proxy.browser-only:                     no
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+GENERAL.NAME:                           ethernet
+GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.DEVICES:                        eth1
+GENERAL.STATE:                          activated
+GENERAL.DEFAULT:                        no
+GENERAL.DEFAULT6:                       no
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            no
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
+
+GENERAL.NAME:                           ethernet
+GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.DEVICES:                        eth0
+GENERAL.STATE:                          deactivating
+GENERAL.DEFAULT:                        no
+GENERAL.DEFAULT6:                       no
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            no
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-074.expected b/clients/tests/test-client.check-on-disk/test_003-074.expected
new file mode 100644
index 00000000..a775fdbd
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-074.expected
@@ -0,0 +1,116 @@
+location: clients/tests/test-client.py:895:test_003()/74
+cmd: $NMCLI con s ethernet
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 4918 bytes
+>>>
+connection.id:                          ethernet
+connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
+connection.stable-id:                   --
+connection.type:                        802-3-ethernet
+connection.interface-name:              --
+connection.autoconnect:                 tak
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   nie
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     nieznane
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+802-3-ethernet.port:                    --
+802-3-ethernet.speed:                   0
+802-3-ethernet.duplex:                  --
+802-3-ethernet.auto-negotiate:          nie
+802-3-ethernet.mac-address:             --
+802-3-ethernet.cloned-mac-address:      --
+802-3-ethernet.generate-mac-address-mask:--
+802-3-ethernet.mac-address-blacklist:   --
+802-3-ethernet.mtu:                     automatyczne
+802-3-ethernet.s390-subchannels:        --
+802-3-ethernet.s390-nettype:            --
+802-3-ethernet.s390-options:            --
+802-3-ethernet.wake-on-lan:             default
+802-3-ethernet.wake-on-lan-password:    --
+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.ignore-auto-routes:                nie
+ipv4.ignore-auto-dns:                   nie
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                tak
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     nie
+ipv4.may-fail:                          tak
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                nie
+ipv6.ignore-auto-dns:                   nie
+ipv6.never-default:                     nie
+ipv6.may-fail:                          tak
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                tak
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+proxy.method:                           none
+proxy.browser-only:                     nie
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+GENERAL.NAME:                           ethernet
+GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.DEVICES:                        eth1
+GENERAL.STATE:                          aktywowano
+GENERAL.DEFAULT:                        nie
+GENERAL.DEFAULT6:                       nie
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            nie
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
+
+GENERAL.NAME:                           ethernet
+GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.DEVICES:                        eth0
+GENERAL.STATE:                          dezaktywowanie
+GENERAL.DEFAULT:                        nie
+GENERAL.DEFAULT6:                       nie
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            nie
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-075.expected b/clients/tests/test-client.check-on-disk/test_003-075.expected
new file mode 100644
index 00000000..121cc2cc
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-075.expected
@@ -0,0 +1,103 @@
+location: clients/tests/test-client.py:898:test_003()/75
+cmd: $NMCLI c s /org/freedesktop/NetworkManager/ActiveConnection/1
+lang: C
+returncode: 0
+stdout: 4226 bytes
+>>>
+connection.id:                          ethernet
+connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
+connection.stable-id:                   --
+connection.type:                        802-3-ethernet
+connection.interface-name:              --
+connection.autoconnect:                 yes
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   no
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     unknown
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+802-3-ethernet.port:                    --
+802-3-ethernet.speed:                   0
+802-3-ethernet.duplex:                  --
+802-3-ethernet.auto-negotiate:          no
+802-3-ethernet.mac-address:             --
+802-3-ethernet.cloned-mac-address:      --
+802-3-ethernet.generate-mac-address-mask:--
+802-3-ethernet.mac-address-blacklist:   --
+802-3-ethernet.mtu:                     auto
+802-3-ethernet.s390-subchannels:        --
+802-3-ethernet.s390-nettype:            --
+802-3-ethernet.s390-options:            --
+802-3-ethernet.wake-on-lan:             default
+802-3-ethernet.wake-on-lan-password:    --
+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.ignore-auto-routes:                no
+ipv4.ignore-auto-dns:                   no
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                yes
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     no
+ipv4.may-fail:                          yes
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                no
+ipv6.ignore-auto-dns:                   no
+ipv6.never-default:                     no
+ipv6.may-fail:                          yes
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                yes
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+proxy.method:                           none
+proxy.browser-only:                     no
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+GENERAL.NAME:                           ethernet
+GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.DEVICES:                        eth0
+GENERAL.STATE:                          deactivating
+GENERAL.DEFAULT:                        no
+GENERAL.DEFAULT6:                       no
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            no
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-076.expected b/clients/tests/test-client.check-on-disk/test_003-076.expected
new file mode 100644
index 00000000..334ef37c
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-076.expected
@@ -0,0 +1,103 @@
+location: clients/tests/test-client.py:898:test_003()/76
+cmd: $NMCLI c s /org/freedesktop/NetworkManager/ActiveConnection/1
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 4249 bytes
+>>>
+connection.id:                          ethernet
+connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
+connection.stable-id:                   --
+connection.type:                        802-3-ethernet
+connection.interface-name:              --
+connection.autoconnect:                 tak
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   nie
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     nieznane
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+802-3-ethernet.port:                    --
+802-3-ethernet.speed:                   0
+802-3-ethernet.duplex:                  --
+802-3-ethernet.auto-negotiate:          nie
+802-3-ethernet.mac-address:             --
+802-3-ethernet.cloned-mac-address:      --
+802-3-ethernet.generate-mac-address-mask:--
+802-3-ethernet.mac-address-blacklist:   --
+802-3-ethernet.mtu:                     automatyczne
+802-3-ethernet.s390-subchannels:        --
+802-3-ethernet.s390-nettype:            --
+802-3-ethernet.s390-options:            --
+802-3-ethernet.wake-on-lan:             default
+802-3-ethernet.wake-on-lan-password:    --
+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.ignore-auto-routes:                nie
+ipv4.ignore-auto-dns:                   nie
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                tak
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     nie
+ipv4.may-fail:                          tak
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                nie
+ipv6.ignore-auto-dns:                   nie
+ipv6.never-default:                     nie
+ipv6.may-fail:                          tak
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                tak
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+proxy.method:                           none
+proxy.browser-only:                     nie
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+GENERAL.NAME:                           ethernet
+GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.DEVICES:                        eth0
+GENERAL.STATE:                          dezaktywowanie
+GENERAL.DEFAULT:                        nie
+GENERAL.DEFAULT6:                       nie
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            nie
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-077.expected b/clients/tests/test-client.check-on-disk/test_003-077.expected
new file mode 100644
index 00000000..cf08e7c4
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-077.expected
@@ -0,0 +1,67 @@
+location: clients/tests/test-client.py:901:test_003()/77
+cmd: $NMCLI -f all dev show eth0
+lang: C
+returncode: 0
+stdout: 3239 bytes
+>>>
+GENERAL.DEVICE:                         eth0
+GENERAL.TYPE:                           ethernet
+GENERAL.NM-TYPE:                        NMDeviceEthernet
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         C0:61:AE:26:4D:D7
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.REASON:                         0 (No reason given)
+GENERAL.UDI:                            /sys/devices/virtual/eth0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    no
+GENERAL.NM-MANAGED:                     yes
+GENERAL.AUTOCONNECT:                    yes
+GENERAL.FIRMWARE-MISSING:               no
+GENERAL.NM-PLUGIN-MISSING:              no
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     ethernet
+GENERAL.CON-UUID:                       UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.METERED:                        unknown
+CAPABILITIES.CARRIER-DETECT:            no
+CAPABILITIES.SPEED:                     100 Mb/s
+CAPABILITIES.IS-SOFTWARE:               no
+CAPABILITIES.SRIOV:                     no
+WIRED-PROPERTIES.CARRIER:               off
+IP4.ADDRESS[1]:                         192.168.6.238/29
+IP4.GATEWAY:                            --
+IP4.ROUTE[1]:                           dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
+IP4.ROUTE[2]:                           dst = 192.168.155.50/19, nh = 192.168.127.64
+IP4.DNS[1]:                             192.168.213.113
+IP4.DOMAIN[1]:                          sear4.foo4.bar
+IP4.WINS[1]:                            192.168.156.115
+IP4.WINS[2]:                            192.168.8.33
+IP6.ADDRESS[1]:                         2001:a::29c0:62b9:2e01:30a/69
+IP6.ADDRESS[2]:                         2001:a::6433:6420:34f9:3801/115
+IP6.ADDRESS[3]:                         2001:a::8191:ed6b:8ce:b60/103
+IP6.GATEWAY:                            2001:a::2b50:64d1:9a91:23b4
+IP6.ROUTE[1]:                           dst = 2001:a::5ecb:f5ee:fb96:856c/100, nh = ::, mt = 4249082794
+IP6.DNS[1]:                             2001:a::1323:9a78:2b82:d16b
+IP6.DNS[2]:                             2001:a::4e1:24e6:b8c1:91bb
+IP6.DNS[3]:                             2001:a::bd96:3bed:fbd6:19c5
+IP6.DOMAIN[1]:                          sear6.fo.x.y
+IP6.DOMAIN[2]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-5 = val-5
+DHCP6.OPTION[3]:                        dhcp-6-opt-6 = val-6
+DHCP6.OPTION[4]:                        dhcp-6-opt-8 = val-8
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2,1,3}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+CONNECTIONS.AVAILABLE-CONNECTIONS[2]:   5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
+CONNECTIONS.AVAILABLE-CONNECTIONS[3]:   UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-078.expected b/clients/tests/test-client.check-on-disk/test_003-078.expected
new file mode 100644
index 00000000..17ea8000
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-078.expected
@@ -0,0 +1,67 @@
+location: clients/tests/test-client.py:901:test_003()/78
+cmd: $NMCLI -f all dev show eth0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 3262 bytes
+>>>
+GENERAL.DEVICE:                         eth0
+GENERAL.TYPE:                           ethernet
+GENERAL.NM-TYPE:                        NMDeviceEthernet
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         C0:61:AE:26:4D:D7
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.REASON:                         0 (Nie podano przyczyny)
+GENERAL.UDI:                            /sys/devices/virtual/eth0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    nie
+GENERAL.NM-MANAGED:                     tak
+GENERAL.AUTOCONNECT:                    tak
+GENERAL.FIRMWARE-MISSING:               nie
+GENERAL.NM-PLUGIN-MISSING:              nie
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     ethernet
+GENERAL.CON-UUID:                       UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.METERED:                        nieznane
+CAPABILITIES.CARRIER-DETECT:            nie
+CAPABILITIES.SPEED:                     100 Mb/s
+CAPABILITIES.IS-SOFTWARE:               nie
+CAPABILITIES.SRIOV:                     nie
+WIRED-PROPERTIES.CARRIER:               wyłączone
+IP4.ADDRESS[1]:                         192.168.6.238/29
+IP4.GATEWAY:                            --
+IP4.ROUTE[1]:                           dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
+IP4.ROUTE[2]:                           dst = 192.168.155.50/19, nh = 192.168.127.64
+IP4.DNS[1]:                             192.168.213.113
+IP4.DOMAIN[1]:                          sear4.foo4.bar
+IP4.WINS[1]:                            192.168.156.115
+IP4.WINS[2]:                            192.168.8.33
+IP6.ADDRESS[1]:                         2001:a::29c0:62b9:2e01:30a/69
+IP6.ADDRESS[2]:                         2001:a::6433:6420:34f9:3801/115
+IP6.ADDRESS[3]:                         2001:a::8191:ed6b:8ce:b60/103
+IP6.GATEWAY:                            2001:a::2b50:64d1:9a91:23b4
+IP6.ROUTE[1]:                           dst = 2001:a::5ecb:f5ee:fb96:856c/100, nh = ::, mt = 4249082794
+IP6.DNS[1]:                             2001:a::1323:9a78:2b82:d16b
+IP6.DNS[2]:                             2001:a::4e1:24e6:b8c1:91bb
+IP6.DNS[3]:                             2001:a::bd96:3bed:fbd6:19c5
+IP6.DOMAIN[1]:                          sear6.fo.x.y
+IP6.DOMAIN[2]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-5 = val-5
+DHCP6.OPTION[3]:                        dhcp-6-opt-6 = val-6
+DHCP6.OPTION[4]:                        dhcp-6-opt-8 = val-8
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2,1,3}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+CONNECTIONS.AVAILABLE-CONNECTIONS[2]:   5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
+CONNECTIONS.AVAILABLE-CONNECTIONS[3]:   UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-079.expected b/clients/tests/test-client.check-on-disk/test_003-079.expected
new file mode 100644
index 00000000..4a682cd6
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-079.expected
@@ -0,0 +1,17 @@
+location: clients/tests/test-client.py:871:test_003()/79
+cmd: $NMCLI -f ALL con
+lang: C
+returncode: 0
+stdout: 1615 bytes
+>>>
+NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE         ACTIVE-PATH                                         SLAVE  FILENAME                                        
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  --         --              --           --                    --        /org/freedesktop/NetworkManager/Settings/Connection/3  yes     eth1    activated     /org/freedesktop/NetworkManager/ActiveConnection/2  --     /etc/NetworkManager/system-connections/ethernet 
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  --         --              --           --                    --        /org/freedesktop/NetworkManager/Settings/Connection/3  yes     eth0    deactivating  /org/freedesktop/NetworkManager/ActiveConnection/1  --     /etc/NetworkManager/system-connections/ethernet 
+con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/1  no      --      --            --                                                  --     /etc/NetworkManager/system-connections/con-1    
+con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/2  no      --      --            --                                                  --     /etc/NetworkManager/system-connections/con-xx1  
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-080.expected b/clients/tests/test-client.check-on-disk/test_003-080.expected
new file mode 100644
index 00000000..b5b47626
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-080.expected
@@ -0,0 +1,17 @@
+location: clients/tests/test-client.py:871:test_003()/80
+cmd: $NMCLI -f ALL con
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1625 bytes
+>>>
+NAME      UUID                                  TYPE      TIMESTAMP  TIMESTAMP-REAL  AUTOCONNECT  AUTOCONNECT-PRIORITY  READONLY  DBUS-PATH                                              ACTIVE  DEVICE  STATE           ACTIVE-PATH                                         SLAVE  FILENAME                                        
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  --         --              --           --                    --        /org/freedesktop/NetworkManager/Settings/Connection/3  tak     eth1    aktywowano      /org/freedesktop/NetworkManager/ActiveConnection/2  --     /etc/NetworkManager/system-connections/ethernet 
+ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  ethernet  --         --              --           --                    --        /org/freedesktop/NetworkManager/Settings/Connection/3  tak     eth0    dezaktywowanie  /org/freedesktop/NetworkManager/ActiveConnection/1  --     /etc/NetworkManager/system-connections/ethernet 
+con-1     5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/1  nie     --      --              --                                                  --     /etc/NetworkManager/system-connections/con-1    
+con-xx1   UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/2  nie     --      --              --                                                  --     /etc/NetworkManager/system-connections/con-xx1  
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-081.expected b/clients/tests/test-client.check-on-disk/test_003-081.expected
new file mode 100644
index 00000000..87012066
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-081.expected
@@ -0,0 +1,15 @@
+location: clients/tests/test-client.py:874:test_003()/81
+cmd: $NMCLI -f UUID,TYPE con
+lang: C
+returncode: 0
+stdout: 144 bytes
+>>>
+UUID                                  TYPE     
+5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
+UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-082.expected b/clients/tests/test-client.check-on-disk/test_003-082.expected
new file mode 100644
index 00000000..1929f72d
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-082.expected
@@ -0,0 +1,15 @@
+location: clients/tests/test-client.py:874:test_003()/82
+cmd: $NMCLI -f UUID,TYPE con
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 144 bytes
+>>>
+UUID                                  TYPE     
+5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
+UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-083.expected b/clients/tests/test-client.check-on-disk/test_003-083.expected
new file mode 100644
index 00000000..ec76badf
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-083.expected
@@ -0,0 +1,16 @@
+location: clients/tests/test-client.py:877:test_003()/83
+cmd: $NMCLI -f UUID,TYPE --mode multiline con
+lang: C
+returncode: 0
+stdout: 252 bytes
+>>>
+UUID:                                   5fcfd6d7-1e63-3332-8826-a7eda103792d
+TYPE:                                   ethernet
+UUID:                                   UUID-con-xx1-REPLACED-REPLACED-REPLA
+TYPE:                                   ethernet
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-084.expected b/clients/tests/test-client.check-on-disk/test_003-084.expected
new file mode 100644
index 00000000..e3c9d78c
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-084.expected
@@ -0,0 +1,16 @@
+location: clients/tests/test-client.py:877:test_003()/84
+cmd: $NMCLI -f UUID,TYPE --mode multiline con
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 252 bytes
+>>>
+UUID:                                   5fcfd6d7-1e63-3332-8826-a7eda103792d
+TYPE:                                   ethernet
+UUID:                                   UUID-con-xx1-REPLACED-REPLACED-REPLA
+TYPE:                                   ethernet
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-085.expected b/clients/tests/test-client.check-on-disk/test_003-085.expected
new file mode 100644
index 00000000..7a02730e
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-085.expected
@@ -0,0 +1,16 @@
+location: clients/tests/test-client.py:880:test_003()/85
+cmd: $NMCLI -f UUID,TYPE --mode multiline --terse con
+lang: C
+returncode: 0
+stdout: 124 bytes
+>>>
+UUID:5fcfd6d7-1e63-3332-8826-a7eda103792d
+TYPE:802-3-ethernet
+UUID:UUID-con-xx1-REPLACED-REPLACED-REPLA
+TYPE:802-3-ethernet
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-086.expected b/clients/tests/test-client.check-on-disk/test_003-086.expected
new file mode 100644
index 00000000..9f67f6cd
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-086.expected
@@ -0,0 +1,16 @@
+location: clients/tests/test-client.py:880:test_003()/86
+cmd: $NMCLI -f UUID,TYPE --mode multiline --terse con
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 124 bytes
+>>>
+UUID:5fcfd6d7-1e63-3332-8826-a7eda103792d
+TYPE:802-3-ethernet
+UUID:UUID-con-xx1-REPLACED-REPLACED-REPLA
+TYPE:802-3-ethernet
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-087.expected b/clients/tests/test-client.check-on-disk/test_003-087.expected
new file mode 100644
index 00000000..f9e19176
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-087.expected
@@ -0,0 +1,21 @@
+location: clients/tests/test-client.py:883:test_003()/87
+cmd: $NMCLI -f UUID,TYPE --mode multiline --pretty con
+lang: C
+returncode: 0
+stdout: 629 bytes
+>>>
+===============================================================================
+                      NetworkManager connection profiles
+===============================================================================
+UUID:                                   5fcfd6d7-1e63-3332-8826-a7eda103792d
+TYPE:                                   ethernet
+-------------------------------------------------------------------------------
+UUID:                                   UUID-con-xx1-REPLACED-REPLACED-REPLA
+TYPE:                                   ethernet
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-088.expected b/clients/tests/test-client.check-on-disk/test_003-088.expected
new file mode 100644
index 00000000..cf53fad4
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-088.expected
@@ -0,0 +1,21 @@
+location: clients/tests/test-client.py:883:test_003()/88
+cmd: $NMCLI -f UUID,TYPE --mode multiline --pretty con
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 635 bytes
+>>>
+===============================================================================
+                    Profile połączeń usługi NetworkManager
+===============================================================================
+UUID:                                   5fcfd6d7-1e63-3332-8826-a7eda103792d
+TYPE:                                   ethernet
+-------------------------------------------------------------------------------
+UUID:                                   UUID-con-xx1-REPLACED-REPLACED-REPLA
+TYPE:                                   ethernet
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-089.expected b/clients/tests/test-client.check-on-disk/test_003-089.expected
new file mode 100644
index 00000000..2ab37338
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-089.expected
@@ -0,0 +1,15 @@
+location: clients/tests/test-client.py:886:test_003()/89
+cmd: $NMCLI -f UUID,TYPE --mode tabular con
+lang: C
+returncode: 0
+stdout: 144 bytes
+>>>
+UUID                                  TYPE     
+5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
+UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-090.expected b/clients/tests/test-client.check-on-disk/test_003-090.expected
new file mode 100644
index 00000000..ab212221
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-090.expected
@@ -0,0 +1,15 @@
+location: clients/tests/test-client.py:886:test_003()/90
+cmd: $NMCLI -f UUID,TYPE --mode tabular con
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 144 bytes
+>>>
+UUID                                  TYPE     
+5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
+UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-091.expected b/clients/tests/test-client.check-on-disk/test_003-091.expected
new file mode 100644
index 00000000..27e4804c
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-091.expected
@@ -0,0 +1,14 @@
+location: clients/tests/test-client.py:889:test_003()/91
+cmd: $NMCLI -f UUID,TYPE --mode tabular --terse con
+lang: C
+returncode: 0
+stdout: 104 bytes
+>>>
+5fcfd6d7-1e63-3332-8826-a7eda103792d:802-3-ethernet
+UUID-con-xx1-REPLACED-REPLACED-REPLA:802-3-ethernet
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-092.expected b/clients/tests/test-client.check-on-disk/test_003-092.expected
new file mode 100644
index 00000000..52510ea2
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-092.expected
@@ -0,0 +1,14 @@
+location: clients/tests/test-client.py:889:test_003()/92
+cmd: $NMCLI -f UUID,TYPE --mode tabular --terse con
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 104 bytes
+>>>
+5fcfd6d7-1e63-3332-8826-a7eda103792d:802-3-ethernet
+UUID-con-xx1-REPLACED-REPLACED-REPLA:802-3-ethernet
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-093.expected b/clients/tests/test-client.check-on-disk/test_003-093.expected
new file mode 100644
index 00000000..69377419
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-093.expected
@@ -0,0 +1,19 @@
+location: clients/tests/test-client.py:892:test_003()/93
+cmd: $NMCLI -f UUID,TYPE --mode tabular --pretty con
+lang: C
+returncode: 0
+stdout: 346 bytes
+>>>
+======================================
+  NetworkManager connection profiles
+======================================
+UUID                                  TYPE     
+--------------------------------------------------------------------------------------
+5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
+UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-094.expected b/clients/tests/test-client.check-on-disk/test_003-094.expected
new file mode 100644
index 00000000..231dc84c
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-094.expected
@@ -0,0 +1,19 @@
+location: clients/tests/test-client.py:892:test_003()/94
+cmd: $NMCLI -f UUID,TYPE --mode tabular --pretty con
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 366 bytes
+>>>
+==========================================
+  Profile połączeń usługi NetworkManager
+==========================================
+UUID                                  TYPE     
+------------------------------------------------------------------------------------------
+5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet 
+UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-095.expected b/clients/tests/test-client.check-on-disk/test_003-095.expected
new file mode 100644
index 00000000..1f441524
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-095.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:895:test_003()/95
+cmd: $NMCLI con s ethernet
+lang: C
+returncode: 10
+stdout: 0 bytes
+>>>
+
+<<<
+stderr: 46 bytes
+>>>
+Error: ethernet - no such connection profile.
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-096.expected b/clients/tests/test-client.check-on-disk/test_003-096.expected
new file mode 100644
index 00000000..ef53f5c1
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-096.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:895:test_003()/96
+cmd: $NMCLI con s ethernet
+lang: pl_PL.UTF-8
+returncode: 10
+stdout: 0 bytes
+>>>
+
+<<<
+stderr: 58 bytes
+>>>
+Błąd: ethernet — nie ma takiego profilu połączenia.
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-097.expected b/clients/tests/test-client.check-on-disk/test_003-097.expected
new file mode 100644
index 00000000..7e47fd36
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-097.expected
@@ -0,0 +1,24 @@
+location: clients/tests/test-client.py:898:test_003()/97
+cmd: $NMCLI c s /org/freedesktop/NetworkManager/ActiveConnection/1
+lang: C
+returncode: 0
+stdout: 667 bytes
+>>>
+GENERAL.NAME:                           ethernet
+GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.DEVICES:                        eth0
+GENERAL.STATE:                          deactivating
+GENERAL.DEFAULT:                        no
+GENERAL.DEFAULT6:                       no
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            no
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-098.expected b/clients/tests/test-client.check-on-disk/test_003-098.expected
new file mode 100644
index 00000000..b503ad45
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-098.expected
@@ -0,0 +1,24 @@
+location: clients/tests/test-client.py:898:test_003()/98
+cmd: $NMCLI c s /org/freedesktop/NetworkManager/ActiveConnection/1
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 672 bytes
+>>>
+GENERAL.NAME:                           ethernet
+GENERAL.UUID:                           UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.DEVICES:                        eth0
+GENERAL.STATE:                          dezaktywowanie
+GENERAL.DEFAULT:                        nie
+GENERAL.DEFAULT6:                       nie
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            nie
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-099.expected b/clients/tests/test-client.check-on-disk/test_003-099.expected
new file mode 100644
index 00000000..b6a73bc9
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-099.expected
@@ -0,0 +1,67 @@
+location: clients/tests/test-client.py:901:test_003()/99
+cmd: $NMCLI -f all dev show eth0
+lang: C
+returncode: 0
+stdout: 3207 bytes
+>>>
+GENERAL.DEVICE:                         eth0
+GENERAL.TYPE:                           ethernet
+GENERAL.NM-TYPE:                        NMDeviceEthernet
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         C0:61:AE:26:4D:D7
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.REASON:                         0 (No reason given)
+GENERAL.UDI:                            /sys/devices/virtual/eth0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    no
+GENERAL.NM-MANAGED:                     yes
+GENERAL.AUTOCONNECT:                    yes
+GENERAL.FIRMWARE-MISSING:               no
+GENERAL.NM-PLUGIN-MISSING:              no
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     ethernet
+GENERAL.CON-UUID:                       UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.METERED:                        unknown
+CAPABILITIES.CARRIER-DETECT:            no
+CAPABILITIES.SPEED:                     100 Mb/s
+CAPABILITIES.IS-SOFTWARE:               no
+CAPABILITIES.SRIOV:                     no
+WIRED-PROPERTIES.CARRIER:               off
+IP4.ADDRESS[1]:                         192.168.6.238/29
+IP4.GATEWAY:                            --
+IP4.ROUTE[1]:                           dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
+IP4.ROUTE[2]:                           dst = 192.168.155.50/19, nh = 192.168.127.64
+IP4.DNS[1]:                             192.168.213.113
+IP4.DOMAIN[1]:                          sear4.foo4.bar
+IP4.WINS[1]:                            192.168.156.115
+IP4.WINS[2]:                            192.168.8.33
+IP6.ADDRESS[1]:                         2001:a::29c0:62b9:2e01:30a/69
+IP6.ADDRESS[2]:                         2001:a::6433:6420:34f9:3801/115
+IP6.ADDRESS[3]:                         2001:a::8191:ed6b:8ce:b60/103
+IP6.GATEWAY:                            2001:a::2b50:64d1:9a91:23b4
+IP6.ROUTE[1]:                           dst = 2001:a::5ecb:f5ee:fb96:856c/100, nh = ::, mt = 4249082794
+IP6.DNS[1]:                             2001:a::1323:9a78:2b82:d16b
+IP6.DNS[2]:                             2001:a::4e1:24e6:b8c1:91bb
+IP6.DNS[3]:                             2001:a::bd96:3bed:fbd6:19c5
+IP6.DOMAIN[1]:                          sear6.fo.x.y
+IP6.DOMAIN[2]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-5 = val-5
+DHCP6.OPTION[3]:                        dhcp-6-opt-6 = val-6
+DHCP6.OPTION[4]:                        dhcp-6-opt-8 = val-8
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2,1,3}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+CONNECTIONS.AVAILABLE-CONNECTIONS[2]:   5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
+CONNECTIONS.AVAILABLE-CONNECTIONS[3]:   (null) | (null)
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_003-100.expected b/clients/tests/test-client.check-on-disk/test_003-100.expected
new file mode 100644
index 00000000..2a214da9
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_003-100.expected
@@ -0,0 +1,67 @@
+location: clients/tests/test-client.py:901:test_003()/100
+cmd: $NMCLI -f all dev show eth0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 3230 bytes
+>>>
+GENERAL.DEVICE:                         eth0
+GENERAL.TYPE:                           ethernet
+GENERAL.NM-TYPE:                        NMDeviceEthernet
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         C0:61:AE:26:4D:D7
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.REASON:                         0 (Nie podano przyczyny)
+GENERAL.UDI:                            /sys/devices/virtual/eth0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    nie
+GENERAL.NM-MANAGED:                     tak
+GENERAL.AUTOCONNECT:                    tak
+GENERAL.FIRMWARE-MISSING:               nie
+GENERAL.NM-PLUGIN-MISSING:              nie
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     ethernet
+GENERAL.CON-UUID:                       UUID-ethernet-REPLACED-REPLACED-REPL
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
+GENERAL.METERED:                        nieznane
+CAPABILITIES.CARRIER-DETECT:            nie
+CAPABILITIES.SPEED:                     100 Mb/s
+CAPABILITIES.IS-SOFTWARE:               nie
+CAPABILITIES.SRIOV:                     nie
+WIRED-PROPERTIES.CARRIER:               wyłączone
+IP4.ADDRESS[1]:                         192.168.6.238/29
+IP4.GATEWAY:                            --
+IP4.ROUTE[1]:                           dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
+IP4.ROUTE[2]:                           dst = 192.168.155.50/19, nh = 192.168.127.64
+IP4.DNS[1]:                             192.168.213.113
+IP4.DOMAIN[1]:                          sear4.foo4.bar
+IP4.WINS[1]:                            192.168.156.115
+IP4.WINS[2]:                            192.168.8.33
+IP6.ADDRESS[1]:                         2001:a::29c0:62b9:2e01:30a/69
+IP6.ADDRESS[2]:                         2001:a::6433:6420:34f9:3801/115
+IP6.ADDRESS[3]:                         2001:a::8191:ed6b:8ce:b60/103
+IP6.GATEWAY:                            2001:a::2b50:64d1:9a91:23b4
+IP6.ROUTE[1]:                           dst = 2001:a::5ecb:f5ee:fb96:856c/100, nh = ::, mt = 4249082794
+IP6.DNS[1]:                             2001:a::1323:9a78:2b82:d16b
+IP6.DNS[2]:                             2001:a::4e1:24e6:b8c1:91bb
+IP6.DNS[3]:                             2001:a::bd96:3bed:fbd6:19c5
+IP6.DOMAIN[1]:                          sear6.fo.x.y
+IP6.DOMAIN[2]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-5 = val-5
+DHCP6.OPTION[3]:                        dhcp-6-opt-6 = val-6
+DHCP6.OPTION[4]:                        dhcp-6-opt-8 = val-8
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2,1,3}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+CONNECTIONS.AVAILABLE-CONNECTIONS[2]:   5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
+CONNECTIONS.AVAILABLE-CONNECTIONS[3]:   (null) | (null)
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-001.expected b/clients/tests/test-client.check-on-disk/test_004-001.expected
index 0723731d..59406c6a 100644
--- a/clients/tests/test-client.check-on-disk/test_004-001.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-001.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:789:test_004()/1
+location: clients/tests/test-client.py:911:test_004()/1
 cmd: $NMCLI c add type wifi ifname '*' ssid foobar con-name con-xx1
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_004-002.expected b/clients/tests/test-client.check-on-disk/test_004-002.expected
index 37c88812..551fbbf3 100644
--- a/clients/tests/test-client.check-on-disk/test_004-002.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-002.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:791:test_004()/2
+location: clients/tests/test-client.py:913:test_004()/2
 cmd: $NMCLI connection mod con-xx1 ip.gateway ''
 lang: C
 returncode: 2
diff --git a/clients/tests/test-client.check-on-disk/test_004-003.expected b/clients/tests/test-client.check-on-disk/test_004-003.expected
index e76bb0bf..b88303a7 100644
--- a/clients/tests/test-client.check-on-disk/test_004-003.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-003.expected
@@ -1,12 +1,13 @@
-location: clients/tests/test-client.py:792:test_004()/3
+location: clients/tests/test-client.py:914:test_004()/3
 cmd: $NMCLI connection mod con-xx1 ipv4.gateway 172.16.0.1
-lang: C
-returncode: 0
+lang: pl_PL.UTF-8
+returncode: 1
 stdout: 0 bytes
 >>>
 
 <<<
-stderr: 0 bytes
+stderr: 143 bytes
 >>>
+Błąd: zmodyfikowanie połączenia „con-xx1” się nie powiodło: ipv4.gateway: gateway cannot be set if there are no addresses configured
 
 <<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-004.expected b/clients/tests/test-client.check-on-disk/test_004-004.expected
index 17233cd1..786189b4 100644
--- a/clients/tests/test-client.check-on-disk/test_004-004.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-004.expected
@@ -1,12 +1,13 @@
-location: clients/tests/test-client.py:793:test_004()/4
+location: clients/tests/test-client.py:915:test_004()/4
 cmd: $NMCLI connection mod con-xx1 ipv6.gateway ::99
 lang: C
-returncode: 0
+returncode: 1
 stdout: 0 bytes
 >>>
 
 <<<
-stderr: 0 bytes
+stderr: 119 bytes
 >>>
+Error: Failed to modify connection 'con-xx1': ipv6.gateway: gateway cannot be set if there are no addresses configured
 
 <<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-005.expected b/clients/tests/test-client.check-on-disk/test_004-005.expected
index a4b0a592..35ac557c 100644
--- a/clients/tests/test-client.check-on-disk/test_004-005.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-005.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:794:test_004()/5
+location: clients/tests/test-client.py:916:test_004()/5
 cmd: $NMCLI connection mod con-xx1 802.abc ''
 lang: C
 returncode: 2
diff --git a/clients/tests/test-client.check-on-disk/test_004-006.expected b/clients/tests/test-client.check-on-disk/test_004-006.expected
index 9fd5fe42..16d6fbd9 100644
--- a/clients/tests/test-client.check-on-disk/test_004-006.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-006.expected
@@ -1,4 +1,4 @@
-location: clients/tests/test-client.py:795:test_004()/6
+location: clients/tests/test-client.py:917:test_004()/6
 cmd: $NMCLI connection mod con-xx1 802-11-wireless.band a
 lang: C
 returncode: 0
diff --git a/clients/tests/test-client.check-on-disk/test_004-007.expected b/clients/tests/test-client.check-on-disk/test_004-007.expected
new file mode 100644
index 00000000..390a5adb
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-007.expected
@@ -0,0 +1,12 @@
+location: clients/tests/test-client.py:918:test_004()/7
+cmd: $NMCLI connection mod con-xx1 ipv4.addresses 192.168.77.5/24 ipv4.routes '2.3.4.5/32 192.168.77.1' ipv6.addresses 1:2:3:4::6/64 ipv6.routes 1:2:3:4:5:6::5/128
+lang: C
+returncode: 0
+stdout: 0 bytes
+>>>
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-008.expected b/clients/tests/test-client.check-on-disk/test_004-008.expected
new file mode 100644
index 00000000..c3a203b3
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-008.expected
@@ -0,0 +1,94 @@
+location: clients/tests/test-client.py:920:test_004()/8
+cmd: $NMCLI con s con-xx1
+lang: C
+returncode: 0
+stdout: 3810 bytes
+>>>
+connection.id:                          con-xx1
+connection.uuid:                        UUID-con-xx1-REPLACED-REPLACED-REPLA
+connection.stable-id:                   --
+connection.type:                        802-11-wireless
+connection.interface-name:              --
+connection.autoconnect:                 yes
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   no
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     unknown
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+802-11-wireless.ssid:                   foobar
+802-11-wireless.mode:                   infrastructure
+802-11-wireless.band:                   a
+802-11-wireless.channel:                0
+802-11-wireless.bssid:                  --
+802-11-wireless.rate:                   0
+802-11-wireless.tx-power:               0
+802-11-wireless.mac-address:            --
+802-11-wireless.cloned-mac-address:     --
+802-11-wireless.generate-mac-address-mask:--
+802-11-wireless.mac-address-blacklist:  --
+802-11-wireless.mac-address-randomization:default
+802-11-wireless.mtu:                    auto
+802-11-wireless.seen-bssids:            --
+802-11-wireless.hidden:                 no
+802-11-wireless.powersave:              0 (default)
+802-11-wireless.wake-on-wlan:           0x1 (default)
+ipv4.method:                            auto
+ipv4.dns:                               --
+ipv4.dns-search:                        --
+ipv4.dns-options:                       ""
+ipv4.dns-priority:                      0
+ipv4.addresses:                         192.168.77.5/24
+ipv4.gateway:                           --
+ipv4.routes:                            { ip = 2.3.4.5/32, nh = 192.168.77.1 }
+ipv4.route-metric:                      -1
+ipv4.route-table:                       0 (unspec)
+ipv4.ignore-auto-routes:                no
+ipv4.ignore-auto-dns:                   no
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                yes
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     no
+ipv4.may-fail:                          yes
+ipv4.dad-timeout:                       -1 (default)
+ipv6.method:                            auto
+ipv6.dns:                               --
+ipv6.dns-search:                        --
+ipv6.dns-options:                       ""
+ipv6.dns-priority:                      0
+ipv6.addresses:                         1:2:3:4::6/64
+ipv6.gateway:                           --
+ipv6.routes:                            { ip = 1:2:3:4:5:6:0:5/128 }
+ipv6.route-metric:                      -1
+ipv6.route-table:                       0 (unspec)
+ipv6.ignore-auto-routes:                no
+ipv6.ignore-auto-dns:                   no
+ipv6.never-default:                     no
+ipv6.may-fail:                          yes
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                yes
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+proxy.method:                           none
+proxy.browser-only:                     no
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-009.expected b/clients/tests/test-client.check-on-disk/test_004-009.expected
new file mode 100644
index 00000000..fa5425d5
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-009.expected
@@ -0,0 +1,94 @@
+location: clients/tests/test-client.py:920:test_004()/9
+cmd: $NMCLI con s con-xx1
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 3828 bytes
+>>>
+connection.id:                          con-xx1
+connection.uuid:                        UUID-con-xx1-REPLACED-REPLACED-REPLA
+connection.stable-id:                   --
+connection.type:                        802-11-wireless
+connection.interface-name:              --
+connection.autoconnect:                 tak
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   nie
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     nieznane
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+802-11-wireless.ssid:                   foobar
+802-11-wireless.mode:                   infrastructure
+802-11-wireless.band:                   a
+802-11-wireless.channel:                0
+802-11-wireless.bssid:                  --
+802-11-wireless.rate:                   0
+802-11-wireless.tx-power:               0
+802-11-wireless.mac-address:            --
+802-11-wireless.cloned-mac-address:     --
+802-11-wireless.generate-mac-address-mask:--
+802-11-wireless.mac-address-blacklist:  --
+802-11-wireless.mac-address-randomization:default
+802-11-wireless.mtu:                    automatyczne
+802-11-wireless.seen-bssids:            --
+802-11-wireless.hidden:                 nie
+802-11-wireless.powersave:              0 (default)
+802-11-wireless.wake-on-wlan:           0x1 (default)
+ipv4.method:                            auto
+ipv4.dns:                               --
+ipv4.dns-search:                        --
+ipv4.dns-options:                       ""
+ipv4.dns-priority:                      0
+ipv4.addresses:                         192.168.77.5/24
+ipv4.gateway:                           --
+ipv4.routes:                            { ip = 2.3.4.5/32, nh = 192.168.77.1 }
+ipv4.route-metric:                      -1
+ipv4.route-table:                       0 (unspec)
+ipv4.ignore-auto-routes:                nie
+ipv4.ignore-auto-dns:                   nie
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                tak
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     nie
+ipv4.may-fail:                          tak
+ipv4.dad-timeout:                       -1 (default)
+ipv6.method:                            auto
+ipv6.dns:                               --
+ipv6.dns-search:                        --
+ipv6.dns-options:                       ""
+ipv6.dns-priority:                      0
+ipv6.addresses:                         1:2:3:4::6/64
+ipv6.gateway:                           --
+ipv6.routes:                            { ip = 1:2:3:4:5:6:0:5/128 }
+ipv6.route-metric:                      -1
+ipv6.route-table:                       0 (unspec)
+ipv6.ignore-auto-routes:                nie
+ipv6.ignore-auto-dns:                   nie
+ipv6.never-default:                     nie
+ipv6.may-fail:                          tak
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                tak
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+proxy.method:                           none
+proxy.browser-only:                     nie
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-010.expected b/clients/tests/test-client.check-on-disk/test_004-010.expected
new file mode 100644
index 00000000..67767097
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-010.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:927:test_004()/10
+cmd: $NMCLI connection add type vpn con-name con-vpn-1 ifname '*' vpn-type openvpn vpn.data 'key1 = val1,   key2  = val2, key3=val3'
+lang: C
+returncode: 0
+stdout: 82 bytes
+>>>
+Connection 'con-vpn-1' (UUID-con-vpn-1-REPLACED-REPLACED-REP) successfully added.
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-011.expected b/clients/tests/test-client.check-on-disk/test_004-011.expected
new file mode 100644
index 00000000..e1a02130
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-011.expected
@@ -0,0 +1,16 @@
+location: clients/tests/test-client.py:930:test_004()/11
+cmd: $NMCLI con s
+lang: C
+returncode: 0
+stdout: 268 bytes
+>>>
+NAME       UUID                                  TYPE      DEVICE 
+con-1      5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  --     
+con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  vpn       --     
+con-xx1    UUID-con-xx1-REPLACED-REPLACED-REPLA  wifi      --     
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-012.expected b/clients/tests/test-client.check-on-disk/test_004-012.expected
new file mode 100644
index 00000000..1cbf8837
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-012.expected
@@ -0,0 +1,16 @@
+location: clients/tests/test-client.py:930:test_004()/12
+cmd: $NMCLI con s
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 268 bytes
+>>>
+NAME       UUID                                  TYPE      DEVICE 
+con-1      5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  --     
+con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  vpn       --     
+con-xx1    UUID-con-xx1-REPLACED-REPLACED-REPLA  wifi      --     
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-013.expected b/clients/tests/test-client.check-on-disk/test_004-013.expected
new file mode 100644
index 00000000..21461acf
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-013.expected
@@ -0,0 +1,83 @@
+location: clients/tests/test-client.py:932:test_004()/13
+cmd: $NMCLI con s con-vpn-1
+lang: C
+returncode: 0
+stdout: 3274 bytes
+>>>
+connection.id:                          con-vpn-1
+connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
+connection.stable-id:                   --
+connection.type:                        vpn
+connection.interface-name:              --
+connection.autoconnect:                 yes
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   no
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     unknown
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+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.ignore-auto-routes:                no
+ipv4.ignore-auto-dns:                   no
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                yes
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     no
+ipv4.may-fail:                          yes
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                no
+ipv6.ignore-auto-dns:                   no
+ipv6.never-default:                     no
+ipv6.may-fail:                          yes
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                yes
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+vpn.service-type:                       org.freedesktop.NetworkManager.openvpn
+vpn.user-name:                          --
+vpn.data:                               key1 = val1, key2 = val2, key3 = val3
+vpn.secrets:                            <hidden>
+vpn.persistent:                         no
+vpn.timeout:                            0
+proxy.method:                           none
+proxy.browser-only:                     no
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-014.expected b/clients/tests/test-client.check-on-disk/test_004-014.expected
new file mode 100644
index 00000000..7bf49cc8
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-014.expected
@@ -0,0 +1,83 @@
+location: clients/tests/test-client.py:932:test_004()/14
+cmd: $NMCLI con s con-vpn-1
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 3284 bytes
+>>>
+connection.id:                          con-vpn-1
+connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
+connection.stable-id:                   --
+connection.type:                        vpn
+connection.interface-name:              --
+connection.autoconnect:                 tak
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   nie
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     nieznane
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+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.ignore-auto-routes:                nie
+ipv4.ignore-auto-dns:                   nie
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                tak
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     nie
+ipv4.may-fail:                          tak
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                nie
+ipv6.ignore-auto-dns:                   nie
+ipv6.never-default:                     nie
+ipv6.may-fail:                          tak
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                tak
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+vpn.service-type:                       org.freedesktop.NetworkManager.openvpn
+vpn.user-name:                          --
+vpn.data:                               key1 = val1, key2 = val2, key3 = val3
+vpn.secrets:                            <hidden>
+vpn.persistent:                         nie
+vpn.timeout:                            0
+proxy.method:                           none
+proxy.browser-only:                     nie
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-015.expected b/clients/tests/test-client.check-on-disk/test_004-015.expected
new file mode 100644
index 00000000..58120e7a
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-015.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:934:test_004()/15
+cmd: $NMCLI con up con-xx1
+lang: C
+returncode: 0
+stdout: 106 bytes
+>>>
+Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-016.expected b/clients/tests/test-client.check-on-disk/test_004-016.expected
new file mode 100644
index 00000000..31e9dd61
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-016.expected
@@ -0,0 +1,16 @@
+location: clients/tests/test-client.py:936:test_004()/16
+cmd: $NMCLI con s
+lang: C
+returncode: 0
+stdout: 268 bytes
+>>>
+NAME       UUID                                  TYPE      DEVICE 
+con-xx1    UUID-con-xx1-REPLACED-REPLACED-REPLA  wifi      wlan0  
+con-1      5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  --     
+con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  vpn       --     
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-017.expected b/clients/tests/test-client.check-on-disk/test_004-017.expected
new file mode 100644
index 00000000..9f9df61c
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-017.expected
@@ -0,0 +1,16 @@
+location: clients/tests/test-client.py:936:test_004()/17
+cmd: $NMCLI con s
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 268 bytes
+>>>
+NAME       UUID                                  TYPE      DEVICE 
+con-xx1    UUID-con-xx1-REPLACED-REPLACED-REPLA  wifi      wlan0  
+con-1      5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  --     
+con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  vpn       --     
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-018.expected b/clients/tests/test-client.check-on-disk/test_004-018.expected
new file mode 100644
index 00000000..b023ae6a
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-018.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:938:test_004()/18
+cmd: $NMCLI con up con-vpn-1
+lang: C
+returncode: 0
+stdout: 106 bytes
+>>>
+Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-019.expected b/clients/tests/test-client.check-on-disk/test_004-019.expected
new file mode 100644
index 00000000..23c25b7f
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-019.expected
@@ -0,0 +1,16 @@
+location: clients/tests/test-client.py:940:test_004()/19
+cmd: $NMCLI con s
+lang: C
+returncode: 0
+stdout: 268 bytes
+>>>
+NAME       UUID                                  TYPE      DEVICE 
+con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  vpn       wlan0  
+con-xx1    UUID-con-xx1-REPLACED-REPLACED-REPLA  wifi      wlan0  
+con-1      5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  --     
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-020.expected b/clients/tests/test-client.check-on-disk/test_004-020.expected
new file mode 100644
index 00000000..68c7fad3
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-020.expected
@@ -0,0 +1,16 @@
+location: clients/tests/test-client.py:940:test_004()/20
+cmd: $NMCLI con s
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 268 bytes
+>>>
+NAME       UUID                                  TYPE      DEVICE 
+con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  vpn       wlan0  
+con-xx1    UUID-con-xx1-REPLACED-REPLACED-REPLA  wifi      wlan0  
+con-1      5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  --     
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-021.expected b/clients/tests/test-client.check-on-disk/test_004-021.expected
new file mode 100644
index 00000000..52d951c8
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-021.expected
@@ -0,0 +1,103 @@
+location: clients/tests/test-client.py:942:test_004()/21
+cmd: $NMCLI con s con-vpn-1
+lang: C
+returncode: 0
+stdout: 4356 bytes
+>>>
+connection.id:                          con-vpn-1
+connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
+connection.stable-id:                   --
+connection.type:                        vpn
+connection.interface-name:              --
+connection.autoconnect:                 yes
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   no
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     unknown
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+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.ignore-auto-routes:                no
+ipv4.ignore-auto-dns:                   no
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                yes
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     no
+ipv4.may-fail:                          yes
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                no
+ipv6.ignore-auto-dns:                   no
+ipv6.never-default:                     no
+ipv6.may-fail:                          yes
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                yes
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+vpn.service-type:                       org.freedesktop.NetworkManager.openvpn
+vpn.user-name:                          --
+vpn.data:                               key1 = val1, key2 = val2, key3 = val3
+vpn.secrets:                            <hidden>
+vpn.persistent:                         no
+vpn.timeout:                            0
+proxy.method:                           none
+proxy.browser-only:                     no
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+GENERAL.NAME:                           con-vpn-1
+GENERAL.UUID:                           UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.DEVICES:                        wlan0
+GENERAL.STATE:                          activated
+GENERAL.DEFAULT:                        no
+GENERAL.DEFAULT6:                       no
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            yes
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
+VPN.TYPE:                               openvpn
+VPN.USERNAME:                           --
+VPN.GATEWAY:                            --
+VPN.BANNER:                             *** VPN connection con-vpn-1 ***
+VPN.VPN-STATE:                          0 - unknown
+VPN.CFG[1]:                             key1 = val1
+VPN.CFG[2]:                             key2 = val2
+VPN.CFG[3]:                             key3 = val3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-022.expected b/clients/tests/test-client.check-on-disk/test_004-022.expected
new file mode 100644
index 00000000..50647263
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-022.expected
@@ -0,0 +1,103 @@
+location: clients/tests/test-client.py:942:test_004()/22
+cmd: $NMCLI con s con-vpn-1
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 4370 bytes
+>>>
+connection.id:                          con-vpn-1
+connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
+connection.stable-id:                   --
+connection.type:                        vpn
+connection.interface-name:              --
+connection.autoconnect:                 tak
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   nie
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     nieznane
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+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.ignore-auto-routes:                nie
+ipv4.ignore-auto-dns:                   nie
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                tak
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     nie
+ipv4.may-fail:                          tak
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                nie
+ipv6.ignore-auto-dns:                   nie
+ipv6.never-default:                     nie
+ipv6.may-fail:                          tak
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                tak
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+vpn.service-type:                       org.freedesktop.NetworkManager.openvpn
+vpn.user-name:                          --
+vpn.data:                               key1 = val1, key2 = val2, key3 = val3
+vpn.secrets:                            <hidden>
+vpn.persistent:                         nie
+vpn.timeout:                            0
+proxy.method:                           none
+proxy.browser-only:                     nie
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+GENERAL.NAME:                           con-vpn-1
+GENERAL.UUID:                           UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.DEVICES:                        wlan0
+GENERAL.STATE:                          aktywowano
+GENERAL.DEFAULT:                        nie
+GENERAL.DEFAULT6:                       nie
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            tak
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
+VPN.TYPE:                               openvpn
+VPN.USERNAME:                           --
+VPN.GATEWAY:                            --
+VPN.BANNER:                             *** VPN connection con-vpn-1 ***
+VPN.VPN-STATE:                          0 - nieznane
+VPN.CFG[1]:                             key1 = val1
+VPN.CFG[2]:                             key2 = val2
+VPN.CFG[3]:                             key3 = val3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-023.expected b/clients/tests/test-client.check-on-disk/test_004-023.expected
new file mode 100644
index 00000000..8e94ab86
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-023.expected
@@ -0,0 +1,103 @@
+location: clients/tests/test-client.py:951:test_004()/23
+cmd: $NMCLI con s con-vpn-1
+lang: C
+returncode: 0
+stdout: 4362 bytes
+>>>
+connection.id:                          con-vpn-1
+connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
+connection.stable-id:                   --
+connection.type:                        vpn
+connection.interface-name:              --
+connection.autoconnect:                 yes
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   no
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     unknown
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+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.ignore-auto-routes:                no
+ipv4.ignore-auto-dns:                   no
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                yes
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     no
+ipv4.may-fail:                          yes
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                no
+ipv6.ignore-auto-dns:                   no
+ipv6.never-default:                     no
+ipv6.may-fail:                          yes
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                yes
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+vpn.service-type:                       org.freedesktop.NetworkManager.openvpn
+vpn.user-name:                          --
+vpn.data:                               key1 = val1, key2 = val2, key3 = val3
+vpn.secrets:                            <hidden>
+vpn.persistent:                         no
+vpn.timeout:                            0
+proxy.method:                           none
+proxy.browser-only:                     no
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+GENERAL.NAME:                           con-vpn-1
+GENERAL.UUID:                           UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.DEVICES:                        wlan0
+GENERAL.STATE:                          activated
+GENERAL.DEFAULT:                        no
+GENERAL.DEFAULT6:                       no
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            yes
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
+VPN.TYPE:                               openvpn
+VPN.USERNAME:                           --
+VPN.GATEWAY:                            --
+VPN.BANNER:                             *** VPN connection con-vpn-1 ***
+VPN.VPN-STATE:                          5 - VPN connected
+VPN.CFG[1]:                             key1 = val1
+VPN.CFG[2]:                             key2 = val2
+VPN.CFG[3]:                             key3 = val3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-024.expected b/clients/tests/test-client.check-on-disk/test_004-024.expected
new file mode 100644
index 00000000..2787f179
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-024.expected
@@ -0,0 +1,103 @@
+location: clients/tests/test-client.py:951:test_004()/24
+cmd: $NMCLI con s con-vpn-1
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 4380 bytes
+>>>
+connection.id:                          con-vpn-1
+connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
+connection.stable-id:                   --
+connection.type:                        vpn
+connection.interface-name:              --
+connection.autoconnect:                 tak
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   nie
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     nieznane
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+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.ignore-auto-routes:                nie
+ipv4.ignore-auto-dns:                   nie
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                tak
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     nie
+ipv4.may-fail:                          tak
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                nie
+ipv6.ignore-auto-dns:                   nie
+ipv6.never-default:                     nie
+ipv6.may-fail:                          tak
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                tak
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+vpn.service-type:                       org.freedesktop.NetworkManager.openvpn
+vpn.user-name:                          --
+vpn.data:                               key1 = val1, key2 = val2, key3 = val3
+vpn.secrets:                            <hidden>
+vpn.persistent:                         nie
+vpn.timeout:                            0
+proxy.method:                           none
+proxy.browser-only:                     nie
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+GENERAL.NAME:                           con-vpn-1
+GENERAL.UUID:                           UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.DEVICES:                        wlan0
+GENERAL.STATE:                          aktywowano
+GENERAL.DEFAULT:                        nie
+GENERAL.DEFAULT6:                       nie
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            tak
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
+VPN.TYPE:                               openvpn
+VPN.USERNAME:                           --
+VPN.GATEWAY:                            --
+VPN.BANNER:                             *** VPN connection con-vpn-1 ***
+VPN.VPN-STATE:                          5 - Połączono z VPN
+VPN.CFG[1]:                             key1 = val1
+VPN.CFG[2]:                             key2 = val2
+VPN.CFG[3]:                             key3 = val3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-025.expected b/clients/tests/test-client.check-on-disk/test_004-025.expected
new file mode 100644
index 00000000..e47e58fb
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-025.expected
@@ -0,0 +1,103 @@
+location: clients/tests/test-client.py:953:test_004()/25
+cmd: $NMCLI -t con s con-vpn-1
+lang: C
+returncode: 0
+stdout: 2131 bytes
+>>>
+connection.id:con-vpn-1
+connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
+connection.stable-id:
+connection.type:vpn
+connection.interface-name:
+connection.autoconnect:yes
+connection.autoconnect-priority:0
+connection.autoconnect-retries:-1
+connection.auth-retries:-1
+connection.timestamp:0
+connection.read-only:no
+connection.permissions:
+connection.zone:
+connection.master:
+connection.slave-type:
+connection.autoconnect-slaves:-1
+connection.secondaries:
+connection.gateway-ping-timeout:0
+connection.metered:unknown
+connection.lldp:default
+connection.mdns:-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
+ipv4.ignore-auto-routes:no
+ipv4.ignore-auto-dns:no
+ipv4.dhcp-client-id:
+ipv4.dhcp-timeout:0
+ipv4.dhcp-send-hostname:yes
+ipv4.dhcp-hostname:
+ipv4.dhcp-fqdn:
+ipv4.never-default:no
+ipv4.may-fail:yes
+ipv4.dad-timeout:-1
+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
+ipv6.ignore-auto-routes:no
+ipv6.ignore-auto-dns:no
+ipv6.never-default:no
+ipv6.may-fail:yes
+ipv6.ip6-privacy:-1
+ipv6.addr-gen-mode:stable-privacy
+ipv6.dhcp-duid:
+ipv6.dhcp-send-hostname:yes
+ipv6.dhcp-hostname:
+ipv6.token:
+vpn.service-type:org.freedesktop.NetworkManager.openvpn
+vpn.user-name:
+vpn.data:key1 = val1, key2 = val2, key3 = val3
+vpn.secrets:<hidden>
+vpn.persistent:no
+vpn.timeout:0
+proxy.method:none
+proxy.browser-only:no
+proxy.pac-url:
+proxy.pac-script:
+GENERAL.NAME:con-vpn-1
+GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.DEVICES:wlan0
+GENERAL.STATE:activated
+GENERAL.DEFAULT:no
+GENERAL.DEFAULT6:no
+GENERAL.SPEC-OBJECT:
+GENERAL.VPN:yes
+GENERAL.DBUS-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:
+GENERAL.MASTER-PATH:
+VPN.TYPE:openvpn
+VPN.USERNAME:
+VPN.GATEWAY:
+VPN.BANNER:*** VPN connection con-vpn-1 ***
+VPN.VPN-STATE:5 - VPN connected
+VPN.CFG[1]:key1 = val1
+VPN.CFG[2]:key2 = val2
+VPN.CFG[3]:key3 = val3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-026.expected b/clients/tests/test-client.check-on-disk/test_004-026.expected
new file mode 100644
index 00000000..6fea759f
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-026.expected
@@ -0,0 +1,103 @@
+location: clients/tests/test-client.py:953:test_004()/26
+cmd: $NMCLI -t con s con-vpn-1
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 2136 bytes
+>>>
+connection.id:con-vpn-1
+connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
+connection.stable-id:
+connection.type:vpn
+connection.interface-name:
+connection.autoconnect:yes
+connection.autoconnect-priority:0
+connection.autoconnect-retries:-1
+connection.auth-retries:-1
+connection.timestamp:0
+connection.read-only:no
+connection.permissions:
+connection.zone:
+connection.master:
+connection.slave-type:
+connection.autoconnect-slaves:-1
+connection.secondaries:
+connection.gateway-ping-timeout:0
+connection.metered:unknown
+connection.lldp:default
+connection.mdns:-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
+ipv4.ignore-auto-routes:no
+ipv4.ignore-auto-dns:no
+ipv4.dhcp-client-id:
+ipv4.dhcp-timeout:0
+ipv4.dhcp-send-hostname:yes
+ipv4.dhcp-hostname:
+ipv4.dhcp-fqdn:
+ipv4.never-default:no
+ipv4.may-fail:yes
+ipv4.dad-timeout:-1
+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
+ipv6.ignore-auto-routes:no
+ipv6.ignore-auto-dns:no
+ipv6.never-default:no
+ipv6.may-fail:yes
+ipv6.ip6-privacy:-1
+ipv6.addr-gen-mode:stable-privacy
+ipv6.dhcp-duid:
+ipv6.dhcp-send-hostname:yes
+ipv6.dhcp-hostname:
+ipv6.token:
+vpn.service-type:org.freedesktop.NetworkManager.openvpn
+vpn.user-name:
+vpn.data:key1 = val1, key2 = val2, key3 = val3
+vpn.secrets:<hidden>
+vpn.persistent:no
+vpn.timeout:0
+proxy.method:none
+proxy.browser-only:no
+proxy.pac-url:
+proxy.pac-script:
+GENERAL.NAME:con-vpn-1
+GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.DEVICES:wlan0
+GENERAL.STATE:activated
+GENERAL.DEFAULT:no
+GENERAL.DEFAULT6:no
+GENERAL.SPEC-OBJECT:
+GENERAL.VPN:yes
+GENERAL.DBUS-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:
+GENERAL.MASTER-PATH:
+VPN.TYPE:openvpn
+VPN.USERNAME:
+VPN.GATEWAY:
+VPN.BANNER:*** VPN connection con-vpn-1 ***
+VPN.VPN-STATE:5 - Połączono z VPN
+VPN.CFG[1]:key1 = val1
+VPN.CFG[2]:key2 = val2
+VPN.CFG[3]:key3 = val3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-027.expected b/clients/tests/test-client.check-on-disk/test_004-027.expected
new file mode 100644
index 00000000..d91e4064
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-027.expected
@@ -0,0 +1,83 @@
+location: clients/tests/test-client.py:956:test_004()/27
+cmd: $NMCLI -f ALL con s con-vpn-1
+lang: C
+returncode: 0
+stdout: 3274 bytes
+>>>
+connection.id:                          con-vpn-1
+connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
+connection.stable-id:                   --
+connection.type:                        vpn
+connection.interface-name:              --
+connection.autoconnect:                 yes
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   no
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     unknown
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+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.ignore-auto-routes:                no
+ipv4.ignore-auto-dns:                   no
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                yes
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     no
+ipv4.may-fail:                          yes
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                no
+ipv6.ignore-auto-dns:                   no
+ipv6.never-default:                     no
+ipv6.may-fail:                          yes
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                yes
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+vpn.service-type:                       org.freedesktop.NetworkManager.openvpn
+vpn.user-name:                          --
+vpn.data:                               key1 = val1, key2 = val2, key3 = val3
+vpn.secrets:                            <hidden>
+vpn.persistent:                         no
+vpn.timeout:                            0
+proxy.method:                           none
+proxy.browser-only:                     no
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-028.expected b/clients/tests/test-client.check-on-disk/test_004-028.expected
new file mode 100644
index 00000000..41d3c1fd
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-028.expected
@@ -0,0 +1,83 @@
+location: clients/tests/test-client.py:956:test_004()/28
+cmd: $NMCLI -f ALL con s con-vpn-1
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 3284 bytes
+>>>
+connection.id:                          con-vpn-1
+connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
+connection.stable-id:                   --
+connection.type:                        vpn
+connection.interface-name:              --
+connection.autoconnect:                 tak
+connection.autoconnect-priority:        0
+connection.autoconnect-retries:         -1 (default)
+connection.auth-retries:                -1
+connection.timestamp:                   0
+connection.read-only:                   nie
+connection.permissions:                 --
+connection.zone:                        --
+connection.master:                      --
+connection.slave-type:                  --
+connection.autoconnect-slaves:          -1 (default)
+connection.secondaries:                 --
+connection.gateway-ping-timeout:        0
+connection.metered:                     nieznane
+connection.lldp:                        default
+connection.mdns:                        -1 (default)
+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.ignore-auto-routes:                nie
+ipv4.ignore-auto-dns:                   nie
+ipv4.dhcp-client-id:                    --
+ipv4.dhcp-timeout:                      0 (default)
+ipv4.dhcp-send-hostname:                tak
+ipv4.dhcp-hostname:                     --
+ipv4.dhcp-fqdn:                         --
+ipv4.never-default:                     nie
+ipv4.may-fail:                          tak
+ipv4.dad-timeout:                       -1 (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.ignore-auto-routes:                nie
+ipv6.ignore-auto-dns:                   nie
+ipv6.never-default:                     nie
+ipv6.may-fail:                          tak
+ipv6.ip6-privacy:                       -1 (unknown)
+ipv6.addr-gen-mode:                     stable-privacy
+ipv6.dhcp-duid:                         --
+ipv6.dhcp-send-hostname:                tak
+ipv6.dhcp-hostname:                     --
+ipv6.token:                             --
+vpn.service-type:                       org.freedesktop.NetworkManager.openvpn
+vpn.user-name:                          --
+vpn.data:                               key1 = val1, key2 = val2, key3 = val3
+vpn.secrets:                            <hidden>
+vpn.persistent:                         nie
+vpn.timeout:                            0
+proxy.method:                           none
+proxy.browser-only:                     nie
+proxy.pac-url:                          --
+proxy.pac-script:                       --
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-029.expected b/clients/tests/test-client.check-on-disk/test_004-029.expected
new file mode 100644
index 00000000..06924df3
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-029.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:962:test_004()/29
+cmd: $NMCLI -f VPN con s con-vpn-1
+lang: C
+returncode: 0
+stdout: 334 bytes
+>>>
+vpn.service-type:                       org.freedesktop.NetworkManager.openvpn
+vpn.user-name:                          --
+vpn.data:                               key1 = val1, key2 = val2, key3 = val3
+vpn.secrets:                            <hidden>
+vpn.persistent:                         no
+vpn.timeout:                            0
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-030.expected b/clients/tests/test-client.check-on-disk/test_004-030.expected
new file mode 100644
index 00000000..5c785eae
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-030.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:962:test_004()/30
+cmd: $NMCLI -f VPN con s con-vpn-1
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 335 bytes
+>>>
+vpn.service-type:                       org.freedesktop.NetworkManager.openvpn
+vpn.user-name:                          --
+vpn.data:                               key1 = val1, key2 = val2, key3 = val3
+vpn.secrets:                            <hidden>
+vpn.persistent:                         nie
+vpn.timeout:                            0
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-031.expected b/clients/tests/test-client.check-on-disk/test_004-031.expected
new file mode 100644
index 00000000..916142dc
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-031.expected
@@ -0,0 +1,24 @@
+location: clients/tests/test-client.py:965:test_004()/31
+cmd: $NMCLI -f GENERAL con s con-vpn-1
+lang: C
+returncode: 0
+stdout: 667 bytes
+>>>
+GENERAL.NAME:                           con-vpn-1
+GENERAL.UUID:                           UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.DEVICES:                        wlan0
+GENERAL.STATE:                          activated
+GENERAL.DEFAULT:                        no
+GENERAL.DEFAULT6:                       no
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            yes
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-032.expected b/clients/tests/test-client.check-on-disk/test_004-032.expected
new file mode 100644
index 00000000..1d16a406
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-032.expected
@@ -0,0 +1,24 @@
+location: clients/tests/test-client.py:965:test_004()/32
+cmd: $NMCLI -f GENERAL con s con-vpn-1
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 670 bytes
+>>>
+GENERAL.NAME:                           con-vpn-1
+GENERAL.UUID:                           UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.DEVICES:                        wlan0
+GENERAL.STATE:                          aktywowano
+GENERAL.DEFAULT:                        nie
+GENERAL.DEFAULT6:                       nie
+GENERAL.SPEC-OBJECT:                    --
+GENERAL.VPN:                            tak
+GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/Connection/3
+GENERAL.ZONE:                           --
+GENERAL.MASTER-PATH:                    --
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-033.expected b/clients/tests/test-client.check-on-disk/test_004-033.expected
new file mode 100644
index 00000000..52f0fcb2
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-033.expected
@@ -0,0 +1,36 @@
+location: clients/tests/test-client.py:968:test_004()/33
+cmd: $NMCLI dev show wlan0
+lang: C
+returncode: 0
+stdout: 1363 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-034.expected b/clients/tests/test-client.check-on-disk/test_004-034.expected
new file mode 100644
index 00000000..d76c2219
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-034.expected
@@ -0,0 +1,36 @@
+location: clients/tests/test-client.py:968:test_004()/34
+cmd: $NMCLI dev show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1364 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-035.expected b/clients/tests/test-client.check-on-disk/test_004-035.expected
new file mode 100644
index 00000000..be2917f3
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-035.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:971:test_004()/35
+cmd: $NMCLI -f all dev show wlan0
+lang: C
+returncode: 0
+stdout: 4600 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.REASON:                         0 (No reason given)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    no
+GENERAL.NM-MANAGED:                     yes
+GENERAL.AUTOCONNECT:                    yes
+GENERAL.FIRMWARE-MISSING:               no
+GENERAL.NM-PLUGIN-MISSING:              no
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        unknown
+CAPABILITIES.CARRIER-DETECT:            no
+CAPABILITIES.SPEED:                     unknown
+CAPABILITIES.IS-SOFTWARE:               no
+CAPABILITIES.SRIOV:                     no
+WIFI-PROPERTIES.WEP:                    yes
+WIFI-PROPERTIES.WPA:                    yes
+WIFI-PROPERTIES.WPA2:                   yes
+WIFI-PROPERTIES.TKIP:                   yes
+WIFI-PROPERTIES.CCMP:                   yes
+WIFI-PROPERTIES.AP:                     yes
+WIFI-PROPERTIES.ADHOC:                  yes
+WIFI-PROPERTIES.2GHZ:                   unknown
+WIFI-PROPERTIES.5GHZ:                   unknown
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infra
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mbit/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infra
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mbit/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infra
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mbit/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-036.expected b/clients/tests/test-client.check-on-disk/test_004-036.expected
new file mode 100644
index 00000000..7b58b747
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-036.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:971:test_004()/36
+cmd: $NMCLI -f all dev show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 4643 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.REASON:                         0 (Nie podano przyczyny)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    nie
+GENERAL.NM-MANAGED:                     tak
+GENERAL.AUTOCONNECT:                    tak
+GENERAL.FIRMWARE-MISSING:               nie
+GENERAL.NM-PLUGIN-MISSING:              nie
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        nieznane
+CAPABILITIES.CARRIER-DETECT:            nie
+CAPABILITIES.SPEED:                     nieznane
+CAPABILITIES.IS-SOFTWARE:               nie
+CAPABILITIES.SRIOV:                     nie
+WIFI-PROPERTIES.WEP:                    tak
+WIFI-PROPERTIES.WPA:                    tak
+WIFI-PROPERTIES.WPA2:                   tak
+WIFI-PROPERTIES.TKIP:                   tak
+WIFI-PROPERTIES.CCMP:                   tak
+WIFI-PROPERTIES.AP:                     tak
+WIFI-PROPERTIES.ADHOC:                  tak
+WIFI-PROPERTIES.2GHZ:                   nieznane
+WIFI-PROPERTIES.5GHZ:                   nieznane
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infrastruktura
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mb/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infrastruktura
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mb/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infrastruktura
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mb/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-037.expected b/clients/tests/test-client.check-on-disk/test_004-037.expected
new file mode 100644
index 00000000..a241b7cc
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-037.expected
@@ -0,0 +1,46 @@
+location: clients/tests/test-client.py:974:test_004()/37
+cmd: $NMCLI -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
+lang: C
+returncode: 0
+stdout: 1679 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.REASON:                         0 (No reason given)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    no
+GENERAL.NM-MANAGED:                     yes
+GENERAL.AUTOCONNECT:                    yes
+GENERAL.FIRMWARE-MISSING:               no
+GENERAL.NM-PLUGIN-MISSING:              no
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        unknown
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+WIFI-PROPERTIES.WEP:                    yes
+WIFI-PROPERTIES.WPA:                    yes
+WIFI-PROPERTIES.WPA2:                   yes
+WIFI-PROPERTIES.TKIP:                   yes
+WIFI-PROPERTIES.CCMP:                   yes
+WIFI-PROPERTIES.AP:                     yes
+WIFI-PROPERTIES.ADHOC:                  yes
+WIFI-PROPERTIES.2GHZ:                   unknown
+WIFI-PROPERTIES.5GHZ:                   unknown
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-038.expected b/clients/tests/test-client.check-on-disk/test_004-038.expected
new file mode 100644
index 00000000..01082f55
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-038.expected
@@ -0,0 +1,46 @@
+location: clients/tests/test-client.py:974:test_004()/38
+cmd: $NMCLI -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1691 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.REASON:                         0 (Nie podano przyczyny)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    nie
+GENERAL.NM-MANAGED:                     tak
+GENERAL.AUTOCONNECT:                    tak
+GENERAL.FIRMWARE-MISSING:               nie
+GENERAL.NM-PLUGIN-MISSING:              nie
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        nieznane
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+WIFI-PROPERTIES.WEP:                    tak
+WIFI-PROPERTIES.WPA:                    tak
+WIFI-PROPERTIES.WPA2:                   tak
+WIFI-PROPERTIES.TKIP:                   tak
+WIFI-PROPERTIES.CCMP:                   tak
+WIFI-PROPERTIES.AP:                     tak
+WIFI-PROPERTIES.ADHOC:                  tak
+WIFI-PROPERTIES.2GHZ:                   nieznane
+WIFI-PROPERTIES.5GHZ:                   nieznane
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-039.expected b/clients/tests/test-client.check-on-disk/test_004-039.expected
new file mode 100644
index 00000000..a5c17fb5
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-039.expected
@@ -0,0 +1,46 @@
+location: clients/tests/test-client.py:977:test_004()/39
+cmd: $NMCLI -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES -t dev show wlan0
+lang: C
+returncode: 0
+stdout: 931 bytes
+>>>
+GENERAL.DEVICE:wlan0
+GENERAL.TYPE:wifi
+GENERAL.NM-TYPE:NMDeviceWifi
+GENERAL.VENDOR:
+GENERAL.PRODUCT:
+GENERAL.DRIVER:virtual
+GENERAL.DRIVER-VERSION:
+GENERAL.FIRMWARE-VERSION:
+GENERAL.HWADDR:13:E0:74:85:7C:D9
+GENERAL.MTU:0
+GENERAL.STATE:20 (unavailable)
+GENERAL.REASON:0 (No reason given)
+GENERAL.UDI:/sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:
+GENERAL.IS-SOFTWARE:no
+GENERAL.NM-MANAGED:yes
+GENERAL.AUTOCONNECT:yes
+GENERAL.FIRMWARE-MISSING:no
+GENERAL.NM-PLUGIN-MISSING:no
+GENERAL.PHYS-PORT-ID:
+GENERAL.CONNECTION:con-vpn-1
+GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:unknown
+GENERAL.HWADDR:13:E0:74:85:7C:D9
+WIFI-PROPERTIES.WEP:yes
+WIFI-PROPERTIES.WPA:yes
+WIFI-PROPERTIES.WPA2:yes
+WIFI-PROPERTIES.TKIP:yes
+WIFI-PROPERTIES.CCMP:yes
+WIFI-PROPERTIES.AP:yes
+WIFI-PROPERTIES.ADHOC:yes
+WIFI-PROPERTIES.2GHZ:unknown
+WIFI-PROPERTIES.5GHZ:unknown
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-040.expected b/clients/tests/test-client.check-on-disk/test_004-040.expected
new file mode 100644
index 00000000..ce0760f8
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-040.expected
@@ -0,0 +1,46 @@
+location: clients/tests/test-client.py:977:test_004()/40
+cmd: $NMCLI -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES -t dev show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 943 bytes
+>>>
+GENERAL.DEVICE:wlan0
+GENERAL.TYPE:wifi
+GENERAL.NM-TYPE:NMDeviceWifi
+GENERAL.VENDOR:
+GENERAL.PRODUCT:
+GENERAL.DRIVER:virtual
+GENERAL.DRIVER-VERSION:
+GENERAL.FIRMWARE-VERSION:
+GENERAL.HWADDR:13:E0:74:85:7C:D9
+GENERAL.MTU:0
+GENERAL.STATE:20 (niedostępne)
+GENERAL.REASON:0 (Nie podano przyczyny)
+GENERAL.UDI:/sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:
+GENERAL.IS-SOFTWARE:nie
+GENERAL.NM-MANAGED:tak
+GENERAL.AUTOCONNECT:tak
+GENERAL.FIRMWARE-MISSING:nie
+GENERAL.NM-PLUGIN-MISSING:nie
+GENERAL.PHYS-PORT-ID:
+GENERAL.CONNECTION:con-vpn-1
+GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:nieznane
+GENERAL.HWADDR:13:E0:74:85:7C:D9
+WIFI-PROPERTIES.WEP:tak
+WIFI-PROPERTIES.WPA:tak
+WIFI-PROPERTIES.WPA2:tak
+WIFI-PROPERTIES.TKIP:tak
+WIFI-PROPERTIES.CCMP:tak
+WIFI-PROPERTIES.AP:tak
+WIFI-PROPERTIES.ADHOC:tak
+WIFI-PROPERTIES.2GHZ:nieznane
+WIFI-PROPERTIES.5GHZ:nieznane
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-041.expected b/clients/tests/test-client.check-on-disk/test_004-041.expected
new file mode 100644
index 00000000..6ac14e54
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-041.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:980:test_004()/41
+cmd: $NMCLI -f DEVICE,TYPE,DBUS-PATH dev
+lang: C
+returncode: 0
+stdout: 366 bytes
+>>>
+DEVICE  TYPE      DBUS-PATH                                 
+eth0    ethernet  /org/freedesktop/NetworkManager/Devices/1 
+eth1    ethernet  /org/freedesktop/NetworkManager/Devices/2 
+wlan1   wifi      /org/freedesktop/NetworkManager/Devices/4 
+wlan1   wifi      /org/freedesktop/NetworkManager/Devices/5 
+wlan0   wifi      /org/freedesktop/NetworkManager/Devices/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-042.expected b/clients/tests/test-client.check-on-disk/test_004-042.expected
new file mode 100644
index 00000000..1d2b2b73
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-042.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:980:test_004()/42
+cmd: $NMCLI -f DEVICE,TYPE,DBUS-PATH dev
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 366 bytes
+>>>
+DEVICE  TYPE      DBUS-PATH                                 
+eth0    ethernet  /org/freedesktop/NetworkManager/Devices/1 
+eth1    ethernet  /org/freedesktop/NetworkManager/Devices/2 
+wlan1   wifi      /org/freedesktop/NetworkManager/Devices/4 
+wlan1   wifi      /org/freedesktop/NetworkManager/Devices/5 
+wlan0   wifi      /org/freedesktop/NetworkManager/Devices/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-043.expected b/clients/tests/test-client.check-on-disk/test_004-043.expected
new file mode 100644
index 00000000..45d5c4f9
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-043.expected
@@ -0,0 +1,21 @@
+location: clients/tests/test-client.py:984:test_004()/43
+cmd: $NMCLI -f ALL device wifi list
+lang: C
+returncode: 0
+stdout: 1840 bytes
+>>>
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan1-ap-4  776C616E312D61702D34  94:2B:E8:F6:D2:86  Infra  1     2412 MHz  54 Mbit/s  48      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   no              /org/freedesktop/NetworkManager/AccessPoint/4 
+
+NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
+
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infra  1     2412 MHz  54 Mbit/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  61:95:77:AC:1E:4C  Infra  1     2412 MHz  54 Mbit/s  81      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-3  776C616E302D61702D33  9B:F6:B7:EC:97:76  Infra  1     2412 MHz  54 Mbit/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-044.expected b/clients/tests/test-client.check-on-disk/test_004-044.expected
new file mode 100644
index 00000000..99e6fd35
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-044.expected
@@ -0,0 +1,21 @@
+location: clients/tests/test-client.py:984:test_004()/44
+cmd: $NMCLI -f ALL device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1898 bytes
+>>>
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan1-ap-4  776C616E312D61702D34  94:2B:E8:F6:D2:86  Infrastruktura  1     2412 MHz  54 Mb/s  48      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   nie             /org/freedesktop/NetworkManager/AccessPoint/4 
+
+NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
+
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infrastruktura  1     2412 MHz  54 Mb/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  61:95:77:AC:1E:4C  Infrastruktura  1     2412 MHz  54 Mb/s  81      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-3  776C616E302D61702D33  9B:F6:B7:EC:97:76  Infrastruktura  1     2412 MHz  54 Mb/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-045.expected b/clients/tests/test-client.check-on-disk/test_004-045.expected
new file mode 100644
index 00000000..94d8765e
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-045.expected
@@ -0,0 +1,21 @@
+location: clients/tests/test-client.py:986:test_004()/45
+cmd: $NMCLI -f COMMON device wifi list
+lang: C
+returncode: 0
+stdout: 472 bytes
+>>>
+IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
+        wlan1-ap-4  Infra  1     54 Mbit/s  48      **    WPA1 WPA2 
+
+IN-USE  SSID  MODE  CHAN  RATE  SIGNAL  BARS  SECURITY 
+
+IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
+        wlan0-ap-2  Infra  1     54 Mbit/s  92      ****  WPA1 WPA2 
+        wlan0-ap-1  Infra  1     54 Mbit/s  81      ****  WPA1 WPA2 
+        wlan0-ap-3  Infra  1     54 Mbit/s  55      **    WPA1 WPA2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-046.expected b/clients/tests/test-client.check-on-disk/test_004-046.expected
new file mode 100644
index 00000000..2ba69fe2
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-046.expected
@@ -0,0 +1,21 @@
+location: clients/tests/test-client.py:986:test_004()/46
+cmd: $NMCLI -f COMMON device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 522 bytes
+>>>
+IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
+        wlan1-ap-4  Infrastruktura  1     54 Mb/s  48      **    WPA1 WPA2 
+
+IN-USE  SSID  MODE  CHAN  RATE  SIGNAL  BARS  SECURITY 
+
+IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
+        wlan0-ap-2  Infrastruktura  1     54 Mb/s  92      ****  WPA1 WPA2 
+        wlan0-ap-1  Infrastruktura  1     54 Mb/s  81      ****  WPA1 WPA2 
+        wlan0-ap-3  Infrastruktura  1     54 Mb/s  55      **    WPA1 WPA2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-047.expected b/clients/tests/test-client.check-on-disk/test_004-047.expected
new file mode 100644
index 00000000..a7dc0a80
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-047.expected
@@ -0,0 +1,21 @@
+location: clients/tests/test-client.py:989:test_004()/47
+cmd: $NMCLI -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: C
+returncode: 0
+stdout: 1840 bytes
+>>>
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan1-ap-4  776C616E312D61702D34  94:2B:E8:F6:D2:86  Infra  1     2412 MHz  54 Mbit/s  48      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   no              /org/freedesktop/NetworkManager/AccessPoint/4 
+
+NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
+
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infra  1     2412 MHz  54 Mbit/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  61:95:77:AC:1E:4C  Infra  1     2412 MHz  54 Mbit/s  81      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-3  776C616E302D61702D33  9B:F6:B7:EC:97:76  Infra  1     2412 MHz  54 Mbit/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-048.expected b/clients/tests/test-client.check-on-disk/test_004-048.expected
new file mode 100644
index 00000000..1f81e9af
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-048.expected
@@ -0,0 +1,21 @@
+location: clients/tests/test-client.py:989:test_004()/48
+cmd: $NMCLI -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1898 bytes
+>>>
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan1-ap-4  776C616E312D61702D34  94:2B:E8:F6:D2:86  Infrastruktura  1     2412 MHz  54 Mb/s  48      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   nie             /org/freedesktop/NetworkManager/AccessPoint/4 
+
+NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
+
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infrastruktura  1     2412 MHz  54 Mb/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  61:95:77:AC:1E:4C  Infrastruktura  1     2412 MHz  54 Mb/s  81      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-3  776C616E302D61702D33  9B:F6:B7:EC:97:76  Infrastruktura  1     2412 MHz  54 Mb/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-049.expected b/clients/tests/test-client.check-on-disk/test_004-049.expected
new file mode 100644
index 00000000..cd708d86
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-049.expected
@@ -0,0 +1,14 @@
+location: clients/tests/test-client.py:991:test_004()/49
+cmd: $NMCLI -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 568 bytes
+>>>
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infra  1     2412 MHz  54 Mbit/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-050.expected b/clients/tests/test-client.check-on-disk/test_004-050.expected
new file mode 100644
index 00000000..f12bbdeb
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-050.expected
@@ -0,0 +1,14 @@
+location: clients/tests/test-client.py:991:test_004()/50
+cmd: $NMCLI -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 586 bytes
+>>>
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infrastruktura  1     2412 MHz  54 Mb/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-051.expected b/clients/tests/test-client.check-on-disk/test_004-051.expected
new file mode 100644
index 00000000..f612088e
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-051.expected
@@ -0,0 +1,14 @@
+location: clients/tests/test-client.py:993:test_004()/51
+cmd: $NMCLI -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 138 bytes
+>>>
+IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
+        wlan0-ap-2  Infra  1     54 Mbit/s  92      ****  WPA1 WPA2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-052.expected b/clients/tests/test-client.check-on-disk/test_004-052.expected
new file mode 100644
index 00000000..9097d6b9
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-052.expected
@@ -0,0 +1,14 @@
+location: clients/tests/test-client.py:993:test_004()/52
+cmd: $NMCLI -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 154 bytes
+>>>
+IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
+        wlan0-ap-2  Infrastruktura  1     54 Mb/s  92      ****  WPA1 WPA2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-053.expected b/clients/tests/test-client.check-on-disk/test_004-053.expected
new file mode 100644
index 00000000..a31c7b51
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-053.expected
@@ -0,0 +1,14 @@
+location: clients/tests/test-client.py:996:test_004()/53
+cmd: $NMCLI -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 568 bytes
+>>>
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infra  1     2412 MHz  54 Mbit/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-054.expected b/clients/tests/test-client.check-on-disk/test_004-054.expected
new file mode 100644
index 00000000..ce17c996
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-054.expected
@@ -0,0 +1,14 @@
+location: clients/tests/test-client.py:996:test_004()/54
+cmd: $NMCLI -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 586 bytes
+>>>
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infrastruktura  1     2412 MHz  54 Mb/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-055.expected b/clients/tests/test-client.check-on-disk/test_004-055.expected
new file mode 100644
index 00000000..4dbf91d9
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-055.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:998:test_004()/55
+cmd: $NMCLI -f ALL device show wlan0
+lang: C
+returncode: 0
+stdout: 4600 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.REASON:                         0 (No reason given)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    no
+GENERAL.NM-MANAGED:                     yes
+GENERAL.AUTOCONNECT:                    yes
+GENERAL.FIRMWARE-MISSING:               no
+GENERAL.NM-PLUGIN-MISSING:              no
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        unknown
+CAPABILITIES.CARRIER-DETECT:            no
+CAPABILITIES.SPEED:                     unknown
+CAPABILITIES.IS-SOFTWARE:               no
+CAPABILITIES.SRIOV:                     no
+WIFI-PROPERTIES.WEP:                    yes
+WIFI-PROPERTIES.WPA:                    yes
+WIFI-PROPERTIES.WPA2:                   yes
+WIFI-PROPERTIES.TKIP:                   yes
+WIFI-PROPERTIES.CCMP:                   yes
+WIFI-PROPERTIES.AP:                     yes
+WIFI-PROPERTIES.ADHOC:                  yes
+WIFI-PROPERTIES.2GHZ:                   unknown
+WIFI-PROPERTIES.5GHZ:                   unknown
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infra
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mbit/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infra
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mbit/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infra
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mbit/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-056.expected b/clients/tests/test-client.check-on-disk/test_004-056.expected
new file mode 100644
index 00000000..d106ea7f
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-056.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:998:test_004()/56
+cmd: $NMCLI -f ALL device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 4643 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.REASON:                         0 (Nie podano przyczyny)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    nie
+GENERAL.NM-MANAGED:                     tak
+GENERAL.AUTOCONNECT:                    tak
+GENERAL.FIRMWARE-MISSING:               nie
+GENERAL.NM-PLUGIN-MISSING:              nie
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        nieznane
+CAPABILITIES.CARRIER-DETECT:            nie
+CAPABILITIES.SPEED:                     nieznane
+CAPABILITIES.IS-SOFTWARE:               nie
+CAPABILITIES.SRIOV:                     nie
+WIFI-PROPERTIES.WEP:                    tak
+WIFI-PROPERTIES.WPA:                    tak
+WIFI-PROPERTIES.WPA2:                   tak
+WIFI-PROPERTIES.TKIP:                   tak
+WIFI-PROPERTIES.CCMP:                   tak
+WIFI-PROPERTIES.AP:                     tak
+WIFI-PROPERTIES.ADHOC:                  tak
+WIFI-PROPERTIES.2GHZ:                   nieznane
+WIFI-PROPERTIES.5GHZ:                   nieznane
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infrastruktura
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mb/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infrastruktura
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mb/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infrastruktura
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mb/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-057.expected b/clients/tests/test-client.check-on-disk/test_004-057.expected
new file mode 100644
index 00000000..5d1f25a6
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-057.expected
@@ -0,0 +1,36 @@
+location: clients/tests/test-client.py:1000:test_004()/57
+cmd: $NMCLI -f COMMON device show wlan0
+lang: C
+returncode: 0
+stdout: 1363 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-058.expected b/clients/tests/test-client.check-on-disk/test_004-058.expected
new file mode 100644
index 00000000..f3dfd3d7
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-058.expected
@@ -0,0 +1,36 @@
+location: clients/tests/test-client.py:1000:test_004()/58
+cmd: $NMCLI -f COMMON device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1364 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-059.expected b/clients/tests/test-client.check-on-disk/test_004-059.expected
new file mode 100644
index 00000000..806db142
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-059.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:1002:test_004()/59
+cmd: $NMCLI -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: C
+returncode: 0
+stdout: 4600 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.REASON:                         0 (No reason given)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    no
+GENERAL.NM-MANAGED:                     yes
+GENERAL.AUTOCONNECT:                    yes
+GENERAL.FIRMWARE-MISSING:               no
+GENERAL.NM-PLUGIN-MISSING:              no
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        unknown
+CAPABILITIES.CARRIER-DETECT:            no
+CAPABILITIES.SPEED:                     unknown
+CAPABILITIES.IS-SOFTWARE:               no
+CAPABILITIES.SRIOV:                     no
+WIFI-PROPERTIES.WEP:                    yes
+WIFI-PROPERTIES.WPA:                    yes
+WIFI-PROPERTIES.WPA2:                   yes
+WIFI-PROPERTIES.TKIP:                   yes
+WIFI-PROPERTIES.CCMP:                   yes
+WIFI-PROPERTIES.AP:                     yes
+WIFI-PROPERTIES.ADHOC:                  yes
+WIFI-PROPERTIES.2GHZ:                   unknown
+WIFI-PROPERTIES.5GHZ:                   unknown
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infra
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mbit/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infra
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mbit/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infra
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mbit/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-060.expected b/clients/tests/test-client.check-on-disk/test_004-060.expected
new file mode 100644
index 00000000..e9f76f77
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-060.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:1002:test_004()/60
+cmd: $NMCLI -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 4643 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.REASON:                         0 (Nie podano przyczyny)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    nie
+GENERAL.NM-MANAGED:                     tak
+GENERAL.AUTOCONNECT:                    tak
+GENERAL.FIRMWARE-MISSING:               nie
+GENERAL.NM-PLUGIN-MISSING:              nie
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        nieznane
+CAPABILITIES.CARRIER-DETECT:            nie
+CAPABILITIES.SPEED:                     nieznane
+CAPABILITIES.IS-SOFTWARE:               nie
+CAPABILITIES.SRIOV:                     nie
+WIFI-PROPERTIES.WEP:                    tak
+WIFI-PROPERTIES.WPA:                    tak
+WIFI-PROPERTIES.WPA2:                   tak
+WIFI-PROPERTIES.TKIP:                   tak
+WIFI-PROPERTIES.CCMP:                   tak
+WIFI-PROPERTIES.AP:                     tak
+WIFI-PROPERTIES.ADHOC:                  tak
+WIFI-PROPERTIES.2GHZ:                   nieznane
+WIFI-PROPERTIES.5GHZ:                   nieznane
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infrastruktura
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mb/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infrastruktura
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mb/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infrastruktura
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mb/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-061.expected b/clients/tests/test-client.check-on-disk/test_004-061.expected
new file mode 100644
index 00000000..dcbd33b2
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-061.expected
@@ -0,0 +1,33 @@
+location: clients/tests/test-client.py:984:test_004()/61
+cmd: $NMCLI --pretty -f ALL device wifi list
+lang: C
+returncode: 0
+stdout: 2872 bytes
+>>>
+===========================
+  Wi-Fi scan list (wlan1)
+===========================
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan1-ap-4  776C616E312D61702D34  94:2B:E8:F6:D2:86  Infra  1     2412 MHz  54 Mbit/s  48      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   no              /org/freedesktop/NetworkManager/AccessPoint/4 
+
+===========================
+  Wi-Fi scan list (wlan1)
+===========================
+NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+===========================
+  Wi-Fi scan list (wlan0)
+===========================
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infra  1     2412 MHz  54 Mbit/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  61:95:77:AC:1E:4C  Infra  1     2412 MHz  54 Mbit/s  81      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-3  776C616E302D61702D33  9B:F6:B7:EC:97:76  Infra  1     2412 MHz  54 Mbit/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-062.expected b/clients/tests/test-client.check-on-disk/test_004-062.expected
new file mode 100644
index 00000000..eb76554b
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-062.expected
@@ -0,0 +1,33 @@
+location: clients/tests/test-client.py:984:test_004()/62
+cmd: $NMCLI --pretty -f ALL device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 3100 bytes
+>>>
+========================================
+  Lista skanowania sieci Wi-Fi (wlan1)
+========================================
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan1-ap-4  776C616E312D61702D34  94:2B:E8:F6:D2:86  Infrastruktura  1     2412 MHz  54 Mb/s  48      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   nie             /org/freedesktop/NetworkManager/AccessPoint/4 
+
+========================================
+  Lista skanowania sieci Wi-Fi (wlan1)
+========================================
+NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+========================================
+  Lista skanowania sieci Wi-Fi (wlan0)
+========================================
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infrastruktura  1     2412 MHz  54 Mb/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  61:95:77:AC:1E:4C  Infrastruktura  1     2412 MHz  54 Mb/s  81      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-3  776C616E302D61702D33  9B:F6:B7:EC:97:76  Infrastruktura  1     2412 MHz  54 Mb/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-063.expected b/clients/tests/test-client.check-on-disk/test_004-063.expected
new file mode 100644
index 00000000..7117753e
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-063.expected
@@ -0,0 +1,33 @@
+location: clients/tests/test-client.py:986:test_004()/63
+cmd: $NMCLI --pretty -f COMMON device wifi list
+lang: C
+returncode: 0
+stdout: 996 bytes
+>>>
+===========================
+  Wi-Fi scan list (wlan1)
+===========================
+IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
+------------------------------------------------------------------------------------------------
+        wlan1-ap-4  Infra  1     54 Mbit/s  48      **    WPA1 WPA2 
+
+===========================
+  Wi-Fi scan list (wlan1)
+===========================
+IN-USE  SSID  MODE  CHAN  RATE  SIGNAL  BARS  SECURITY 
+-----------------------------------------------------------------------------------
+
+===========================
+  Wi-Fi scan list (wlan0)
+===========================
+IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
+------------------------------------------------------------------------------------------------
+        wlan0-ap-2  Infra  1     54 Mbit/s  92      ****  WPA1 WPA2 
+        wlan0-ap-1  Infra  1     54 Mbit/s  81      ****  WPA1 WPA2 
+        wlan0-ap-3  Infra  1     54 Mbit/s  55      **    WPA1 WPA2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-064.expected b/clients/tests/test-client.check-on-disk/test_004-064.expected
new file mode 100644
index 00000000..1854e364
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-064.expected
@@ -0,0 +1,33 @@
+location: clients/tests/test-client.py:986:test_004()/64
+cmd: $NMCLI --pretty -f COMMON device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1216 bytes
+>>>
+========================================
+  Lista skanowania sieci Wi-Fi (wlan1)
+========================================
+IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
+--------------------------------------------------------------------------------------------------------------------
+        wlan1-ap-4  Infrastruktura  1     54 Mb/s  48      **    WPA1 WPA2 
+
+========================================
+  Lista skanowania sieci Wi-Fi (wlan1)
+========================================
+IN-USE  SSID  MODE  CHAN  RATE  SIGNAL  BARS  SECURITY 
+------------------------------------------------------------------------------------------------
+
+========================================
+  Lista skanowania sieci Wi-Fi (wlan0)
+========================================
+IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
+--------------------------------------------------------------------------------------------------------------------
+        wlan0-ap-2  Infrastruktura  1     54 Mb/s  92      ****  WPA1 WPA2 
+        wlan0-ap-1  Infrastruktura  1     54 Mb/s  81      ****  WPA1 WPA2 
+        wlan0-ap-3  Infrastruktura  1     54 Mb/s  55      **    WPA1 WPA2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-065.expected b/clients/tests/test-client.check-on-disk/test_004-065.expected
new file mode 100644
index 00000000..90d8fcd0
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-065.expected
@@ -0,0 +1,33 @@
+location: clients/tests/test-client.py:989:test_004()/65
+cmd: $NMCLI --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: C
+returncode: 0
+stdout: 2872 bytes
+>>>
+===========================
+  Wi-Fi scan list (wlan1)
+===========================
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan1-ap-4  776C616E312D61702D34  94:2B:E8:F6:D2:86  Infra  1     2412 MHz  54 Mbit/s  48      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   no              /org/freedesktop/NetworkManager/AccessPoint/4 
+
+===========================
+  Wi-Fi scan list (wlan1)
+===========================
+NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+===========================
+  Wi-Fi scan list (wlan0)
+===========================
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infra  1     2412 MHz  54 Mbit/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  61:95:77:AC:1E:4C  Infra  1     2412 MHz  54 Mbit/s  81      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-3  776C616E302D61702D33  9B:F6:B7:EC:97:76  Infra  1     2412 MHz  54 Mbit/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-066.expected b/clients/tests/test-client.check-on-disk/test_004-066.expected
new file mode 100644
index 00000000..a59f00ab
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-066.expected
@@ -0,0 +1,33 @@
+location: clients/tests/test-client.py:989:test_004()/66
+cmd: $NMCLI --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 3100 bytes
+>>>
+========================================
+  Lista skanowania sieci Wi-Fi (wlan1)
+========================================
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan1-ap-4  776C616E312D61702D34  94:2B:E8:F6:D2:86  Infrastruktura  1     2412 MHz  54 Mb/s  48      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   nie             /org/freedesktop/NetworkManager/AccessPoint/4 
+
+========================================
+  Lista skanowania sieci Wi-Fi (wlan1)
+========================================
+NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+========================================
+  Lista skanowania sieci Wi-Fi (wlan0)
+========================================
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infrastruktura  1     2412 MHz  54 Mb/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  61:95:77:AC:1E:4C  Infrastruktura  1     2412 MHz  54 Mb/s  81      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-3  776C616E302D61702D33  9B:F6:B7:EC:97:76  Infrastruktura  1     2412 MHz  54 Mb/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-067.expected b/clients/tests/test-client.check-on-disk/test_004-067.expected
new file mode 100644
index 00000000..280d8da1
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-067.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:991:test_004()/67
+cmd: $NMCLI --pretty -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 962 bytes
+>>>
+===========================
+  Wi-Fi scan list (wlan0)
+===========================
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infra  1     2412 MHz  54 Mbit/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-068.expected b/clients/tests/test-client.check-on-disk/test_004-068.expected
new file mode 100644
index 00000000..a89b9cd3
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-068.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:991:test_004()/68
+cmd: $NMCLI --pretty -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1039 bytes
+>>>
+========================================
+  Lista skanowania sieci Wi-Fi (wlan0)
+========================================
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infrastruktura  1     2412 MHz  54 Mb/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-069.expected b/clients/tests/test-client.check-on-disk/test_004-069.expected
new file mode 100644
index 00000000..04b8e2d7
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-069.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:993:test_004()/69
+cmd: $NMCLI --pretty -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 317 bytes
+>>>
+===========================
+  Wi-Fi scan list (wlan0)
+===========================
+IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
+------------------------------------------------------------------------------------------------
+        wlan0-ap-2  Infra  1     54 Mbit/s  92      ****  WPA1 WPA2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-070.expected b/clients/tests/test-client.check-on-disk/test_004-070.expected
new file mode 100644
index 00000000..35551dae
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-070.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:993:test_004()/70
+cmd: $NMCLI --pretty -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 392 bytes
+>>>
+========================================
+  Lista skanowania sieci Wi-Fi (wlan0)
+========================================
+IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
+--------------------------------------------------------------------------------------------------------------------
+        wlan0-ap-2  Infrastruktura  1     54 Mb/s  92      ****  WPA1 WPA2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-071.expected b/clients/tests/test-client.check-on-disk/test_004-071.expected
new file mode 100644
index 00000000..40bdc2c4
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-071.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:996:test_004()/71
+cmd: $NMCLI --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 962 bytes
+>>>
+===========================
+  Wi-Fi scan list (wlan0)
+===========================
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infra  1     2412 MHz  54 Mbit/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-072.expected b/clients/tests/test-client.check-on-disk/test_004-072.expected
new file mode 100644
index 00000000..36b40d5c
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-072.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:996:test_004()/72
+cmd: $NMCLI --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1039 bytes
+>>>
+========================================
+  Lista skanowania sieci Wi-Fi (wlan0)
+========================================
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infrastruktura  1     2412 MHz  54 Mb/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-073.expected b/clients/tests/test-client.check-on-disk/test_004-073.expected
new file mode 100644
index 00000000..2adc6c9d
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-073.expected
@@ -0,0 +1,115 @@
+location: clients/tests/test-client.py:998:test_004()/73
+cmd: $NMCLI --pretty -f ALL device show wlan0
+lang: C
+returncode: 0
+stdout: 5691 bytes
+>>>
+===============================================================================
+                            Device details (wlan0)
+===============================================================================
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.REASON:                         0 (No reason given)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    no
+GENERAL.NM-MANAGED:                     yes
+GENERAL.AUTOCONNECT:                    yes
+GENERAL.FIRMWARE-MISSING:               no
+GENERAL.NM-PLUGIN-MISSING:              no
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        unknown
+-------------------------------------------------------------------------------
+CAPABILITIES.CARRIER-DETECT:            no
+CAPABILITIES.SPEED:                     unknown
+CAPABILITIES.IS-SOFTWARE:               no
+CAPABILITIES.SRIOV:                     no
+-------------------------------------------------------------------------------
+WIFI-PROPERTIES.WEP:                    yes
+WIFI-PROPERTIES.WPA:                    yes
+WIFI-PROPERTIES.WPA2:                   yes
+WIFI-PROPERTIES.TKIP:                   yes
+WIFI-PROPERTIES.CCMP:                   yes
+WIFI-PROPERTIES.AP:                     yes
+WIFI-PROPERTIES.ADHOC:                  yes
+WIFI-PROPERTIES.2GHZ:                   unknown
+WIFI-PROPERTIES.5GHZ:                   unknown
+-------------------------------------------------------------------------------
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infra
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mbit/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infra
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mbit/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infra
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mbit/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+-------------------------------------------------------------------------------
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+-------------------------------------------------------------------------------
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+-------------------------------------------------------------------------------
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+-------------------------------------------------------------------------------
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-074.expected b/clients/tests/test-client.check-on-disk/test_004-074.expected
new file mode 100644
index 00000000..6965edd5
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-074.expected
@@ -0,0 +1,115 @@
+location: clients/tests/test-client.py:998:test_004()/74
+cmd: $NMCLI --pretty -f ALL device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 5741 bytes
+>>>
+===============================================================================
+                        Informacje o urządzeniu (wlan0)
+===============================================================================
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.REASON:                         0 (Nie podano przyczyny)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    nie
+GENERAL.NM-MANAGED:                     tak
+GENERAL.AUTOCONNECT:                    tak
+GENERAL.FIRMWARE-MISSING:               nie
+GENERAL.NM-PLUGIN-MISSING:              nie
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        nieznane
+-------------------------------------------------------------------------------
+CAPABILITIES.CARRIER-DETECT:            nie
+CAPABILITIES.SPEED:                     nieznane
+CAPABILITIES.IS-SOFTWARE:               nie
+CAPABILITIES.SRIOV:                     nie
+-------------------------------------------------------------------------------
+WIFI-PROPERTIES.WEP:                    tak
+WIFI-PROPERTIES.WPA:                    tak
+WIFI-PROPERTIES.WPA2:                   tak
+WIFI-PROPERTIES.TKIP:                   tak
+WIFI-PROPERTIES.CCMP:                   tak
+WIFI-PROPERTIES.AP:                     tak
+WIFI-PROPERTIES.ADHOC:                  tak
+WIFI-PROPERTIES.2GHZ:                   nieznane
+WIFI-PROPERTIES.5GHZ:                   nieznane
+-------------------------------------------------------------------------------
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infrastruktura
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mb/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infrastruktura
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mb/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infrastruktura
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mb/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+-------------------------------------------------------------------------------
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+-------------------------------------------------------------------------------
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+-------------------------------------------------------------------------------
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+-------------------------------------------------------------------------------
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-075.expected b/clients/tests/test-client.check-on-disk/test_004-075.expected
new file mode 100644
index 00000000..5830a481
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-075.expected
@@ -0,0 +1,48 @@
+location: clients/tests/test-client.py:1000:test_004()/75
+cmd: $NMCLI --pretty -f COMMON device show wlan0
+lang: C
+returncode: 0
+stdout: 2294 bytes
+>>>
+===============================================================================
+                            Device details (wlan0)
+===============================================================================
+GENERAL.DEVICE:                         wlan0
+-------------------------------------------------------------------------------
+GENERAL.TYPE:                           wifi
+-------------------------------------------------------------------------------
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+-------------------------------------------------------------------------------
+GENERAL.MTU:                            0
+-------------------------------------------------------------------------------
+GENERAL.STATE:                          20 (unavailable)
+-------------------------------------------------------------------------------
+GENERAL.CONNECTION:                     con-vpn-1
+-------------------------------------------------------------------------------
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+-------------------------------------------------------------------------------
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+-------------------------------------------------------------------------------
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-076.expected b/clients/tests/test-client.check-on-disk/test_004-076.expected
new file mode 100644
index 00000000..37321ce7
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-076.expected
@@ -0,0 +1,48 @@
+location: clients/tests/test-client.py:1000:test_004()/76
+cmd: $NMCLI --pretty -f COMMON device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 2302 bytes
+>>>
+===============================================================================
+                        Informacje o urządzeniu (wlan0)
+===============================================================================
+GENERAL.DEVICE:                         wlan0
+-------------------------------------------------------------------------------
+GENERAL.TYPE:                           wifi
+-------------------------------------------------------------------------------
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+-------------------------------------------------------------------------------
+GENERAL.MTU:                            0
+-------------------------------------------------------------------------------
+GENERAL.STATE:                          20 (niedostępne)
+-------------------------------------------------------------------------------
+GENERAL.CONNECTION:                     con-vpn-1
+-------------------------------------------------------------------------------
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+-------------------------------------------------------------------------------
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+-------------------------------------------------------------------------------
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-077.expected b/clients/tests/test-client.check-on-disk/test_004-077.expected
new file mode 100644
index 00000000..c3ba0db7
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-077.expected
@@ -0,0 +1,115 @@
+location: clients/tests/test-client.py:1002:test_004()/77
+cmd: $NMCLI --pretty -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: C
+returncode: 0
+stdout: 5691 bytes
+>>>
+===============================================================================
+                            Device details (wlan0)
+===============================================================================
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.REASON:                         0 (No reason given)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    no
+GENERAL.NM-MANAGED:                     yes
+GENERAL.AUTOCONNECT:                    yes
+GENERAL.FIRMWARE-MISSING:               no
+GENERAL.NM-PLUGIN-MISSING:              no
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        unknown
+-------------------------------------------------------------------------------
+CAPABILITIES.CARRIER-DETECT:            no
+CAPABILITIES.SPEED:                     unknown
+CAPABILITIES.IS-SOFTWARE:               no
+CAPABILITIES.SRIOV:                     no
+-------------------------------------------------------------------------------
+WIFI-PROPERTIES.WEP:                    yes
+WIFI-PROPERTIES.WPA:                    yes
+WIFI-PROPERTIES.WPA2:                   yes
+WIFI-PROPERTIES.TKIP:                   yes
+WIFI-PROPERTIES.CCMP:                   yes
+WIFI-PROPERTIES.AP:                     yes
+WIFI-PROPERTIES.ADHOC:                  yes
+WIFI-PROPERTIES.2GHZ:                   unknown
+WIFI-PROPERTIES.5GHZ:                   unknown
+-------------------------------------------------------------------------------
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infra
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mbit/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infra
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mbit/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infra
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mbit/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+-------------------------------------------------------------------------------
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+-------------------------------------------------------------------------------
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+-------------------------------------------------------------------------------
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+-------------------------------------------------------------------------------
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-078.expected b/clients/tests/test-client.check-on-disk/test_004-078.expected
new file mode 100644
index 00000000..65ff189b
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-078.expected
@@ -0,0 +1,115 @@
+location: clients/tests/test-client.py:1002:test_004()/78
+cmd: $NMCLI --pretty -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 5741 bytes
+>>>
+===============================================================================
+                        Informacje o urządzeniu (wlan0)
+===============================================================================
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.REASON:                         0 (Nie podano przyczyny)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    nie
+GENERAL.NM-MANAGED:                     tak
+GENERAL.AUTOCONNECT:                    tak
+GENERAL.FIRMWARE-MISSING:               nie
+GENERAL.NM-PLUGIN-MISSING:              nie
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        nieznane
+-------------------------------------------------------------------------------
+CAPABILITIES.CARRIER-DETECT:            nie
+CAPABILITIES.SPEED:                     nieznane
+CAPABILITIES.IS-SOFTWARE:               nie
+CAPABILITIES.SRIOV:                     nie
+-------------------------------------------------------------------------------
+WIFI-PROPERTIES.WEP:                    tak
+WIFI-PROPERTIES.WPA:                    tak
+WIFI-PROPERTIES.WPA2:                   tak
+WIFI-PROPERTIES.TKIP:                   tak
+WIFI-PROPERTIES.CCMP:                   tak
+WIFI-PROPERTIES.AP:                     tak
+WIFI-PROPERTIES.ADHOC:                  tak
+WIFI-PROPERTIES.2GHZ:                   nieznane
+WIFI-PROPERTIES.5GHZ:                   nieznane
+-------------------------------------------------------------------------------
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infrastruktura
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mb/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infrastruktura
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mb/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infrastruktura
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mb/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+-------------------------------------------------------------------------------
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+-------------------------------------------------------------------------------
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+-------------------------------------------------------------------------------
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+-------------------------------------------------------------------------------
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-079.expected b/clients/tests/test-client.check-on-disk/test_004-079.expected
new file mode 100644
index 00000000..f7dca469
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-079.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:984:test_004()/79
+cmd: $NMCLI --terse -f ALL device wifi list
+lang: C
+returncode: 0
+stdout: 1022 bytes
+>>>
+AP[1]:wlan1-ap-4:776C616E312D61702D34:94\:2B\:E8\:F6\:D2\:86:Infra:1:2412 MHz:54 Mbit/s:48:**  :WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan1:no: :/org/freedesktop/NetworkManager/AccessPoint/4
+
+
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infra:1:2412 MHz:54 Mbit/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/2
+AP[2]:wlan0-ap-1:776C616E302D61702D31:61\:95\:77\:AC\:1E\:4C:Infra:1:2412 MHz:54 Mbit/s:81:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/1
+AP[3]:wlan0-ap-3:776C616E302D61702D33:9B\:F6\:B7\:EC\:97\:76:Infra:1:2412 MHz:54 Mbit/s:55:**  :WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-080.expected b/clients/tests/test-client.check-on-disk/test_004-080.expected
new file mode 100644
index 00000000..6efa34b1
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-080.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:984:test_004()/80
+cmd: $NMCLI --terse -f ALL device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1070 bytes
+>>>
+AP[1]:wlan1-ap-4:776C616E312D61702D34:94\:2B\:E8\:F6\:D2\:86:Infrastruktura:1:2412 MHz:54 Mb/s:48:**  :WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan1:nie: :/org/freedesktop/NetworkManager/AccessPoint/4
+
+
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infrastruktura:1:2412 MHz:54 Mb/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/2
+AP[2]:wlan0-ap-1:776C616E302D61702D31:61\:95\:77\:AC\:1E\:4C:Infrastruktura:1:2412 MHz:54 Mb/s:81:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/1
+AP[3]:wlan0-ap-3:776C616E302D61702D33:9B\:F6\:B7\:EC\:97\:76:Infrastruktura:1:2412 MHz:54 Mb/s:55:**  :WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-081.expected b/clients/tests/test-client.check-on-disk/test_004-081.expected
new file mode 100644
index 00000000..f4401bf9
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-081.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:986:test_004()/81
+cmd: $NMCLI --terse -f COMMON device wifi list
+lang: C
+returncode: 0
+stdout: 198 bytes
+>>>
+ :wlan1-ap-4:Infra:1:54 Mbit/s:48:**  :WPA1 WPA2
+
+
+ :wlan0-ap-2:Infra:1:54 Mbit/s:92:****:WPA1 WPA2
+ :wlan0-ap-1:Infra:1:54 Mbit/s:81:****:WPA1 WPA2
+ :wlan0-ap-3:Infra:1:54 Mbit/s:55:**  :WPA1 WPA2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-082.expected b/clients/tests/test-client.check-on-disk/test_004-082.expected
new file mode 100644
index 00000000..0554165f
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-082.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:986:test_004()/82
+cmd: $NMCLI --terse -f COMMON device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 234 bytes
+>>>
+ :wlan1-ap-4:Infrastruktura:1:54 Mb/s:48:**  :WPA1 WPA2
+
+
+ :wlan0-ap-2:Infrastruktura:1:54 Mb/s:92:****:WPA1 WPA2
+ :wlan0-ap-1:Infrastruktura:1:54 Mb/s:81:****:WPA1 WPA2
+ :wlan0-ap-3:Infrastruktura:1:54 Mb/s:55:**  :WPA1 WPA2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-083.expected b/clients/tests/test-client.check-on-disk/test_004-083.expected
new file mode 100644
index 00000000..4d818c03
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-083.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:989:test_004()/83
+cmd: $NMCLI --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: C
+returncode: 0
+stdout: 1022 bytes
+>>>
+AP[1]:wlan1-ap-4:776C616E312D61702D34:94\:2B\:E8\:F6\:D2\:86:Infra:1:2412 MHz:54 Mbit/s:48:**  :WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan1:no: :/org/freedesktop/NetworkManager/AccessPoint/4
+
+
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infra:1:2412 MHz:54 Mbit/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/2
+AP[2]:wlan0-ap-1:776C616E302D61702D31:61\:95\:77\:AC\:1E\:4C:Infra:1:2412 MHz:54 Mbit/s:81:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/1
+AP[3]:wlan0-ap-3:776C616E302D61702D33:9B\:F6\:B7\:EC\:97\:76:Infra:1:2412 MHz:54 Mbit/s:55:**  :WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-084.expected b/clients/tests/test-client.check-on-disk/test_004-084.expected
new file mode 100644
index 00000000..73f41c6f
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-084.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:989:test_004()/84
+cmd: $NMCLI --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1070 bytes
+>>>
+AP[1]:wlan1-ap-4:776C616E312D61702D34:94\:2B\:E8\:F6\:D2\:86:Infrastruktura:1:2412 MHz:54 Mb/s:48:**  :WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan1:nie: :/org/freedesktop/NetworkManager/AccessPoint/4
+
+
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infrastruktura:1:2412 MHz:54 Mb/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/2
+AP[2]:wlan0-ap-1:776C616E302D61702D31:61\:95\:77\:AC\:1E\:4C:Infrastruktura:1:2412 MHz:54 Mb/s:81:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/1
+AP[3]:wlan0-ap-3:776C616E302D61702D33:9B\:F6\:B7\:EC\:97\:76:Infrastruktura:1:2412 MHz:54 Mb/s:55:**  :WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-085.expected b/clients/tests/test-client.check-on-disk/test_004-085.expected
new file mode 100644
index 00000000..b9c3a91c
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-085.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:991:test_004()/85
+cmd: $NMCLI --terse -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 255 bytes
+>>>
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infra:1:2412 MHz:54 Mbit/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-086.expected b/clients/tests/test-client.check-on-disk/test_004-086.expected
new file mode 100644
index 00000000..353001b4
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-086.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:991:test_004()/86
+cmd: $NMCLI --terse -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 267 bytes
+>>>
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infrastruktura:1:2412 MHz:54 Mb/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-087.expected b/clients/tests/test-client.check-on-disk/test_004-087.expected
new file mode 100644
index 00000000..ab8c0fa2
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-087.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:993:test_004()/87
+cmd: $NMCLI --terse -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 49 bytes
+>>>
+ :wlan0-ap-2:Infra:1:54 Mbit/s:92:****:WPA1 WPA2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-088.expected b/clients/tests/test-client.check-on-disk/test_004-088.expected
new file mode 100644
index 00000000..bb049d20
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-088.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:993:test_004()/88
+cmd: $NMCLI --terse -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 58 bytes
+>>>
+ :wlan0-ap-2:Infrastruktura:1:54 Mb/s:92:****:WPA1 WPA2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-089.expected b/clients/tests/test-client.check-on-disk/test_004-089.expected
new file mode 100644
index 00000000..3a365df9
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-089.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:996:test_004()/89
+cmd: $NMCLI --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 255 bytes
+>>>
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infra:1:2412 MHz:54 Mbit/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-090.expected b/clients/tests/test-client.check-on-disk/test_004-090.expected
new file mode 100644
index 00000000..fcd8759a
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-090.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:996:test_004()/90
+cmd: $NMCLI --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 267 bytes
+>>>
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infrastruktura:1:2412 MHz:54 Mb/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-091.expected b/clients/tests/test-client.check-on-disk/test_004-091.expected
new file mode 100644
index 00000000..72d685f4
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-091.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:998:test_004()/91
+cmd: $NMCLI --terse -f ALL device show wlan0
+lang: C
+returncode: 0
+stdout: 2467 bytes
+>>>
+GENERAL.DEVICE:wlan0
+GENERAL.TYPE:wifi
+GENERAL.NM-TYPE:NMDeviceWifi
+GENERAL.VENDOR:
+GENERAL.PRODUCT:
+GENERAL.DRIVER:virtual
+GENERAL.DRIVER-VERSION:
+GENERAL.FIRMWARE-VERSION:
+GENERAL.HWADDR:13:E0:74:85:7C:D9
+GENERAL.MTU:0
+GENERAL.STATE:20 (unavailable)
+GENERAL.REASON:0 (No reason given)
+GENERAL.UDI:/sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:
+GENERAL.IS-SOFTWARE:no
+GENERAL.NM-MANAGED:yes
+GENERAL.AUTOCONNECT:yes
+GENERAL.FIRMWARE-MISSING:no
+GENERAL.NM-PLUGIN-MISSING:no
+GENERAL.PHYS-PORT-ID:
+GENERAL.CONNECTION:con-vpn-1
+GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:unknown
+CAPABILITIES.CARRIER-DETECT:no
+CAPABILITIES.SPEED:unknown
+CAPABILITIES.IS-SOFTWARE:no
+CAPABILITIES.SRIOV:no
+WIFI-PROPERTIES.WEP:yes
+WIFI-PROPERTIES.WPA:yes
+WIFI-PROPERTIES.WPA2:yes
+WIFI-PROPERTIES.TKIP:yes
+WIFI-PROPERTIES.CCMP:yes
+WIFI-PROPERTIES.AP:yes
+WIFI-PROPERTIES.ADHOC:yes
+WIFI-PROPERTIES.2GHZ:unknown
+WIFI-PROPERTIES.5GHZ:unknown
+AP[1].IN-USE: 
+AP[1].SSID:wlan0-ap-2
+AP[1].MODE:Infra
+AP[1].CHAN:1
+AP[1].RATE:54 Mbit/s
+AP[1].SIGNAL:92
+AP[1].BARS:****
+AP[1].SECURITY:WPA1 WPA2
+AP[2].IN-USE: 
+AP[2].SSID:wlan0-ap-1
+AP[2].MODE:Infra
+AP[2].CHAN:1
+AP[2].RATE:54 Mbit/s
+AP[2].SIGNAL:81
+AP[2].BARS:****
+AP[2].SECURITY:WPA1 WPA2
+AP[3].IN-USE: 
+AP[3].SSID:wlan0-ap-3
+AP[3].MODE:Infra
+AP[3].CHAN:1
+AP[3].RATE:54 Mbit/s
+AP[3].SIGNAL:55
+AP[3].BARS:**  
+AP[3].SECURITY:WPA1 WPA2
+IP4.ADDRESS[1]:192.168.228.18/32
+IP4.ADDRESS[2]:192.168.209.179/25
+IP4.GATEWAY:192.168.41.120
+IP4.DOMAIN[1]:sear4.foo2.bar
+IP4.DOMAIN[2]:sear4.fo.x.y
+IP4.DOMAIN[3]:sear4.foo1.bar
+IP4.DOMAIN[4]:sear4.foo4.bar
+IP4.DOMAIN[5]:sear4.fo.o.bar
+IP4.WINS[1]:192.168.120.79
+DHCP4.OPTION[1]:dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:dhcp-4-opt-7 = val-7
+IP6.GATEWAY:
+IP6.ROUTE[1]:dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:sear6.foo2.bar
+IP6.DOMAIN[2]:sear6.foo1.bar
+IP6.DOMAIN[3]:sear6.fo.x.y
+IP6.DOMAIN[4]:sear6.fo.o.bar
+IP6.DOMAIN[5]:sear6.foo3.bar
+IP6.DOMAIN[6]:sear6.foo4.bar
+DHCP6.OPTION[1]:dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-092.expected b/clients/tests/test-client.check-on-disk/test_004-092.expected
new file mode 100644
index 00000000..6f5fc275
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-092.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:998:test_004()/92
+cmd: $NMCLI --terse -f ALL device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 2510 bytes
+>>>
+GENERAL.DEVICE:wlan0
+GENERAL.TYPE:wifi
+GENERAL.NM-TYPE:NMDeviceWifi
+GENERAL.VENDOR:
+GENERAL.PRODUCT:
+GENERAL.DRIVER:virtual
+GENERAL.DRIVER-VERSION:
+GENERAL.FIRMWARE-VERSION:
+GENERAL.HWADDR:13:E0:74:85:7C:D9
+GENERAL.MTU:0
+GENERAL.STATE:20 (niedostępne)
+GENERAL.REASON:0 (Nie podano przyczyny)
+GENERAL.UDI:/sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:
+GENERAL.IS-SOFTWARE:nie
+GENERAL.NM-MANAGED:tak
+GENERAL.AUTOCONNECT:tak
+GENERAL.FIRMWARE-MISSING:nie
+GENERAL.NM-PLUGIN-MISSING:nie
+GENERAL.PHYS-PORT-ID:
+GENERAL.CONNECTION:con-vpn-1
+GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:nieznane
+CAPABILITIES.CARRIER-DETECT:nie
+CAPABILITIES.SPEED:nieznane
+CAPABILITIES.IS-SOFTWARE:nie
+CAPABILITIES.SRIOV:nie
+WIFI-PROPERTIES.WEP:tak
+WIFI-PROPERTIES.WPA:tak
+WIFI-PROPERTIES.WPA2:tak
+WIFI-PROPERTIES.TKIP:tak
+WIFI-PROPERTIES.CCMP:tak
+WIFI-PROPERTIES.AP:tak
+WIFI-PROPERTIES.ADHOC:tak
+WIFI-PROPERTIES.2GHZ:nieznane
+WIFI-PROPERTIES.5GHZ:nieznane
+AP[1].IN-USE: 
+AP[1].SSID:wlan0-ap-2
+AP[1].MODE:Infrastruktura
+AP[1].CHAN:1
+AP[1].RATE:54 Mb/s
+AP[1].SIGNAL:92
+AP[1].BARS:****
+AP[1].SECURITY:WPA1 WPA2
+AP[2].IN-USE: 
+AP[2].SSID:wlan0-ap-1
+AP[2].MODE:Infrastruktura
+AP[2].CHAN:1
+AP[2].RATE:54 Mb/s
+AP[2].SIGNAL:81
+AP[2].BARS:****
+AP[2].SECURITY:WPA1 WPA2
+AP[3].IN-USE: 
+AP[3].SSID:wlan0-ap-3
+AP[3].MODE:Infrastruktura
+AP[3].CHAN:1
+AP[3].RATE:54 Mb/s
+AP[3].SIGNAL:55
+AP[3].BARS:**  
+AP[3].SECURITY:WPA1 WPA2
+IP4.ADDRESS[1]:192.168.228.18/32
+IP4.ADDRESS[2]:192.168.209.179/25
+IP4.GATEWAY:192.168.41.120
+IP4.DOMAIN[1]:sear4.foo2.bar
+IP4.DOMAIN[2]:sear4.fo.x.y
+IP4.DOMAIN[3]:sear4.foo1.bar
+IP4.DOMAIN[4]:sear4.foo4.bar
+IP4.DOMAIN[5]:sear4.fo.o.bar
+IP4.WINS[1]:192.168.120.79
+DHCP4.OPTION[1]:dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:dhcp-4-opt-7 = val-7
+IP6.GATEWAY:
+IP6.ROUTE[1]:dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:sear6.foo2.bar
+IP6.DOMAIN[2]:sear6.foo1.bar
+IP6.DOMAIN[3]:sear6.fo.x.y
+IP6.DOMAIN[4]:sear6.fo.o.bar
+IP6.DOMAIN[5]:sear6.foo3.bar
+IP6.DOMAIN[6]:sear6.foo4.bar
+DHCP6.OPTION[1]:dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-093.expected b/clients/tests/test-client.check-on-disk/test_004-093.expected
new file mode 100644
index 00000000..4f50347e
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-093.expected
@@ -0,0 +1,36 @@
+location: clients/tests/test-client.py:1000:test_004()/93
+cmd: $NMCLI --terse -f COMMON device show wlan0
+lang: C
+returncode: 0
+stdout: 739 bytes
+>>>
+GENERAL.DEVICE:wlan0
+GENERAL.TYPE:wifi
+GENERAL.HWADDR:13:E0:74:85:7C:D9
+GENERAL.MTU:0
+GENERAL.STATE:20 (unavailable)
+GENERAL.CONNECTION:con-vpn-1
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+IP4.ADDRESS[1]:192.168.228.18/32
+IP4.ADDRESS[2]:192.168.209.179/25
+IP4.GATEWAY:192.168.41.120
+IP4.DOMAIN[1]:sear4.foo2.bar
+IP4.DOMAIN[2]:sear4.fo.x.y
+IP4.DOMAIN[3]:sear4.foo1.bar
+IP4.DOMAIN[4]:sear4.foo4.bar
+IP4.DOMAIN[5]:sear4.fo.o.bar
+IP4.WINS[1]:192.168.120.79
+IP6.GATEWAY:
+IP6.ROUTE[1]:dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:sear6.foo2.bar
+IP6.DOMAIN[2]:sear6.foo1.bar
+IP6.DOMAIN[3]:sear6.fo.x.y
+IP6.DOMAIN[4]:sear6.fo.o.bar
+IP6.DOMAIN[5]:sear6.foo3.bar
+IP6.DOMAIN[6]:sear6.foo4.bar
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-094.expected b/clients/tests/test-client.check-on-disk/test_004-094.expected
new file mode 100644
index 00000000..19fd92bd
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-094.expected
@@ -0,0 +1,36 @@
+location: clients/tests/test-client.py:1000:test_004()/94
+cmd: $NMCLI --terse -f COMMON device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 740 bytes
+>>>
+GENERAL.DEVICE:wlan0
+GENERAL.TYPE:wifi
+GENERAL.HWADDR:13:E0:74:85:7C:D9
+GENERAL.MTU:0
+GENERAL.STATE:20 (niedostępne)
+GENERAL.CONNECTION:con-vpn-1
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+IP4.ADDRESS[1]:192.168.228.18/32
+IP4.ADDRESS[2]:192.168.209.179/25
+IP4.GATEWAY:192.168.41.120
+IP4.DOMAIN[1]:sear4.foo2.bar
+IP4.DOMAIN[2]:sear4.fo.x.y
+IP4.DOMAIN[3]:sear4.foo1.bar
+IP4.DOMAIN[4]:sear4.foo4.bar
+IP4.DOMAIN[5]:sear4.fo.o.bar
+IP4.WINS[1]:192.168.120.79
+IP6.GATEWAY:
+IP6.ROUTE[1]:dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:sear6.foo2.bar
+IP6.DOMAIN[2]:sear6.foo1.bar
+IP6.DOMAIN[3]:sear6.fo.x.y
+IP6.DOMAIN[4]:sear6.fo.o.bar
+IP6.DOMAIN[5]:sear6.foo3.bar
+IP6.DOMAIN[6]:sear6.foo4.bar
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-095.expected b/clients/tests/test-client.check-on-disk/test_004-095.expected
new file mode 100644
index 00000000..5f49d796
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-095.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:1002:test_004()/95
+cmd: $NMCLI --terse -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: C
+returncode: 0
+stdout: 2467 bytes
+>>>
+GENERAL.DEVICE:wlan0
+GENERAL.TYPE:wifi
+GENERAL.NM-TYPE:NMDeviceWifi
+GENERAL.VENDOR:
+GENERAL.PRODUCT:
+GENERAL.DRIVER:virtual
+GENERAL.DRIVER-VERSION:
+GENERAL.FIRMWARE-VERSION:
+GENERAL.HWADDR:13:E0:74:85:7C:D9
+GENERAL.MTU:0
+GENERAL.STATE:20 (unavailable)
+GENERAL.REASON:0 (No reason given)
+GENERAL.UDI:/sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:
+GENERAL.IS-SOFTWARE:no
+GENERAL.NM-MANAGED:yes
+GENERAL.AUTOCONNECT:yes
+GENERAL.FIRMWARE-MISSING:no
+GENERAL.NM-PLUGIN-MISSING:no
+GENERAL.PHYS-PORT-ID:
+GENERAL.CONNECTION:con-vpn-1
+GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:unknown
+CAPABILITIES.CARRIER-DETECT:no
+CAPABILITIES.SPEED:unknown
+CAPABILITIES.IS-SOFTWARE:no
+CAPABILITIES.SRIOV:no
+WIFI-PROPERTIES.WEP:yes
+WIFI-PROPERTIES.WPA:yes
+WIFI-PROPERTIES.WPA2:yes
+WIFI-PROPERTIES.TKIP:yes
+WIFI-PROPERTIES.CCMP:yes
+WIFI-PROPERTIES.AP:yes
+WIFI-PROPERTIES.ADHOC:yes
+WIFI-PROPERTIES.2GHZ:unknown
+WIFI-PROPERTIES.5GHZ:unknown
+AP[1].IN-USE: 
+AP[1].SSID:wlan0-ap-2
+AP[1].MODE:Infra
+AP[1].CHAN:1
+AP[1].RATE:54 Mbit/s
+AP[1].SIGNAL:92
+AP[1].BARS:****
+AP[1].SECURITY:WPA1 WPA2
+AP[2].IN-USE: 
+AP[2].SSID:wlan0-ap-1
+AP[2].MODE:Infra
+AP[2].CHAN:1
+AP[2].RATE:54 Mbit/s
+AP[2].SIGNAL:81
+AP[2].BARS:****
+AP[2].SECURITY:WPA1 WPA2
+AP[3].IN-USE: 
+AP[3].SSID:wlan0-ap-3
+AP[3].MODE:Infra
+AP[3].CHAN:1
+AP[3].RATE:54 Mbit/s
+AP[3].SIGNAL:55
+AP[3].BARS:**  
+AP[3].SECURITY:WPA1 WPA2
+IP4.ADDRESS[1]:192.168.228.18/32
+IP4.ADDRESS[2]:192.168.209.179/25
+IP4.GATEWAY:192.168.41.120
+IP4.DOMAIN[1]:sear4.foo2.bar
+IP4.DOMAIN[2]:sear4.fo.x.y
+IP4.DOMAIN[3]:sear4.foo1.bar
+IP4.DOMAIN[4]:sear4.foo4.bar
+IP4.DOMAIN[5]:sear4.fo.o.bar
+IP4.WINS[1]:192.168.120.79
+DHCP4.OPTION[1]:dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:dhcp-4-opt-7 = val-7
+IP6.GATEWAY:
+IP6.ROUTE[1]:dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:sear6.foo2.bar
+IP6.DOMAIN[2]:sear6.foo1.bar
+IP6.DOMAIN[3]:sear6.fo.x.y
+IP6.DOMAIN[4]:sear6.fo.o.bar
+IP6.DOMAIN[5]:sear6.foo3.bar
+IP6.DOMAIN[6]:sear6.foo4.bar
+DHCP6.OPTION[1]:dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-096.expected b/clients/tests/test-client.check-on-disk/test_004-096.expected
new file mode 100644
index 00000000..2c46d66a
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-096.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:1002:test_004()/96
+cmd: $NMCLI --terse -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 2510 bytes
+>>>
+GENERAL.DEVICE:wlan0
+GENERAL.TYPE:wifi
+GENERAL.NM-TYPE:NMDeviceWifi
+GENERAL.VENDOR:
+GENERAL.PRODUCT:
+GENERAL.DRIVER:virtual
+GENERAL.DRIVER-VERSION:
+GENERAL.FIRMWARE-VERSION:
+GENERAL.HWADDR:13:E0:74:85:7C:D9
+GENERAL.MTU:0
+GENERAL.STATE:20 (niedostępne)
+GENERAL.REASON:0 (Nie podano przyczyny)
+GENERAL.UDI:/sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:
+GENERAL.IS-SOFTWARE:nie
+GENERAL.NM-MANAGED:tak
+GENERAL.AUTOCONNECT:tak
+GENERAL.FIRMWARE-MISSING:nie
+GENERAL.NM-PLUGIN-MISSING:nie
+GENERAL.PHYS-PORT-ID:
+GENERAL.CONNECTION:con-vpn-1
+GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:nieznane
+CAPABILITIES.CARRIER-DETECT:nie
+CAPABILITIES.SPEED:nieznane
+CAPABILITIES.IS-SOFTWARE:nie
+CAPABILITIES.SRIOV:nie
+WIFI-PROPERTIES.WEP:tak
+WIFI-PROPERTIES.WPA:tak
+WIFI-PROPERTIES.WPA2:tak
+WIFI-PROPERTIES.TKIP:tak
+WIFI-PROPERTIES.CCMP:tak
+WIFI-PROPERTIES.AP:tak
+WIFI-PROPERTIES.ADHOC:tak
+WIFI-PROPERTIES.2GHZ:nieznane
+WIFI-PROPERTIES.5GHZ:nieznane
+AP[1].IN-USE: 
+AP[1].SSID:wlan0-ap-2
+AP[1].MODE:Infrastruktura
+AP[1].CHAN:1
+AP[1].RATE:54 Mb/s
+AP[1].SIGNAL:92
+AP[1].BARS:****
+AP[1].SECURITY:WPA1 WPA2
+AP[2].IN-USE: 
+AP[2].SSID:wlan0-ap-1
+AP[2].MODE:Infrastruktura
+AP[2].CHAN:1
+AP[2].RATE:54 Mb/s
+AP[2].SIGNAL:81
+AP[2].BARS:****
+AP[2].SECURITY:WPA1 WPA2
+AP[3].IN-USE: 
+AP[3].SSID:wlan0-ap-3
+AP[3].MODE:Infrastruktura
+AP[3].CHAN:1
+AP[3].RATE:54 Mb/s
+AP[3].SIGNAL:55
+AP[3].BARS:**  
+AP[3].SECURITY:WPA1 WPA2
+IP4.ADDRESS[1]:192.168.228.18/32
+IP4.ADDRESS[2]:192.168.209.179/25
+IP4.GATEWAY:192.168.41.120
+IP4.DOMAIN[1]:sear4.foo2.bar
+IP4.DOMAIN[2]:sear4.fo.x.y
+IP4.DOMAIN[3]:sear4.foo1.bar
+IP4.DOMAIN[4]:sear4.foo4.bar
+IP4.DOMAIN[5]:sear4.fo.o.bar
+IP4.WINS[1]:192.168.120.79
+DHCP4.OPTION[1]:dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:dhcp-4-opt-7 = val-7
+IP6.GATEWAY:
+IP6.ROUTE[1]:dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:sear6.foo2.bar
+IP6.DOMAIN[2]:sear6.foo1.bar
+IP6.DOMAIN[3]:sear6.fo.x.y
+IP6.DOMAIN[4]:sear6.fo.o.bar
+IP6.DOMAIN[5]:sear6.foo3.bar
+IP6.DOMAIN[6]:sear6.foo4.bar
+DHCP6.OPTION[1]:dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-097.expected b/clients/tests/test-client.check-on-disk/test_004-097.expected
new file mode 100644
index 00000000..780cc132
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-097.expected
@@ -0,0 +1,21 @@
+location: clients/tests/test-client.py:984:test_004()/97
+cmd: $NMCLI --mode tabular -f ALL device wifi list
+lang: C
+returncode: 0
+stdout: 1840 bytes
+>>>
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan1-ap-4  776C616E312D61702D34  94:2B:E8:F6:D2:86  Infra  1     2412 MHz  54 Mbit/s  48      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   no              /org/freedesktop/NetworkManager/AccessPoint/4 
+
+NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
+
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infra  1     2412 MHz  54 Mbit/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  61:95:77:AC:1E:4C  Infra  1     2412 MHz  54 Mbit/s  81      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-3  776C616E302D61702D33  9B:F6:B7:EC:97:76  Infra  1     2412 MHz  54 Mbit/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-098.expected b/clients/tests/test-client.check-on-disk/test_004-098.expected
new file mode 100644
index 00000000..a73f3c3b
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-098.expected
@@ -0,0 +1,21 @@
+location: clients/tests/test-client.py:984:test_004()/98
+cmd: $NMCLI --mode tabular -f ALL device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1898 bytes
+>>>
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan1-ap-4  776C616E312D61702D34  94:2B:E8:F6:D2:86  Infrastruktura  1     2412 MHz  54 Mb/s  48      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   nie             /org/freedesktop/NetworkManager/AccessPoint/4 
+
+NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
+
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infrastruktura  1     2412 MHz  54 Mb/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  61:95:77:AC:1E:4C  Infrastruktura  1     2412 MHz  54 Mb/s  81      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-3  776C616E302D61702D33  9B:F6:B7:EC:97:76  Infrastruktura  1     2412 MHz  54 Mb/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-099.expected b/clients/tests/test-client.check-on-disk/test_004-099.expected
new file mode 100644
index 00000000..556fe66e
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-099.expected
@@ -0,0 +1,21 @@
+location: clients/tests/test-client.py:986:test_004()/99
+cmd: $NMCLI --mode tabular -f COMMON device wifi list
+lang: C
+returncode: 0
+stdout: 472 bytes
+>>>
+IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
+        wlan1-ap-4  Infra  1     54 Mbit/s  48      **    WPA1 WPA2 
+
+IN-USE  SSID  MODE  CHAN  RATE  SIGNAL  BARS  SECURITY 
+
+IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
+        wlan0-ap-2  Infra  1     54 Mbit/s  92      ****  WPA1 WPA2 
+        wlan0-ap-1  Infra  1     54 Mbit/s  81      ****  WPA1 WPA2 
+        wlan0-ap-3  Infra  1     54 Mbit/s  55      **    WPA1 WPA2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-100.expected b/clients/tests/test-client.check-on-disk/test_004-100.expected
new file mode 100644
index 00000000..ee2333c2
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-100.expected
@@ -0,0 +1,21 @@
+location: clients/tests/test-client.py:986:test_004()/100
+cmd: $NMCLI --mode tabular -f COMMON device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 522 bytes
+>>>
+IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
+        wlan1-ap-4  Infrastruktura  1     54 Mb/s  48      **    WPA1 WPA2 
+
+IN-USE  SSID  MODE  CHAN  RATE  SIGNAL  BARS  SECURITY 
+
+IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
+        wlan0-ap-2  Infrastruktura  1     54 Mb/s  92      ****  WPA1 WPA2 
+        wlan0-ap-1  Infrastruktura  1     54 Mb/s  81      ****  WPA1 WPA2 
+        wlan0-ap-3  Infrastruktura  1     54 Mb/s  55      **    WPA1 WPA2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-101.expected b/clients/tests/test-client.check-on-disk/test_004-101.expected
new file mode 100644
index 00000000..650df5df
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-101.expected
@@ -0,0 +1,21 @@
+location: clients/tests/test-client.py:989:test_004()/101
+cmd: $NMCLI --mode tabular -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: C
+returncode: 0
+stdout: 1840 bytes
+>>>
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan1-ap-4  776C616E312D61702D34  94:2B:E8:F6:D2:86  Infra  1     2412 MHz  54 Mbit/s  48      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   no              /org/freedesktop/NetworkManager/AccessPoint/4 
+
+NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
+
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infra  1     2412 MHz  54 Mbit/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  61:95:77:AC:1E:4C  Infra  1     2412 MHz  54 Mbit/s  81      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-3  776C616E302D61702D33  9B:F6:B7:EC:97:76  Infra  1     2412 MHz  54 Mbit/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-102.expected b/clients/tests/test-client.check-on-disk/test_004-102.expected
new file mode 100644
index 00000000..7119e041
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-102.expected
@@ -0,0 +1,21 @@
+location: clients/tests/test-client.py:989:test_004()/102
+cmd: $NMCLI --mode tabular -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1898 bytes
+>>>
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan1-ap-4  776C616E312D61702D34  94:2B:E8:F6:D2:86  Infrastruktura  1     2412 MHz  54 Mb/s  48      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   nie             /org/freedesktop/NetworkManager/AccessPoint/4 
+
+NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
+
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infrastruktura  1     2412 MHz  54 Mb/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  61:95:77:AC:1E:4C  Infrastruktura  1     2412 MHz  54 Mb/s  81      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-3  776C616E302D61702D33  9B:F6:B7:EC:97:76  Infrastruktura  1     2412 MHz  54 Mb/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-103.expected b/clients/tests/test-client.check-on-disk/test_004-103.expected
new file mode 100644
index 00000000..3192bad6
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-103.expected
@@ -0,0 +1,14 @@
+location: clients/tests/test-client.py:991:test_004()/103
+cmd: $NMCLI --mode tabular -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 568 bytes
+>>>
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infra  1     2412 MHz  54 Mbit/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-104.expected b/clients/tests/test-client.check-on-disk/test_004-104.expected
new file mode 100644
index 00000000..ce3e7650
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-104.expected
@@ -0,0 +1,14 @@
+location: clients/tests/test-client.py:991:test_004()/104
+cmd: $NMCLI --mode tabular -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 586 bytes
+>>>
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infrastruktura  1     2412 MHz  54 Mb/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-105.expected b/clients/tests/test-client.check-on-disk/test_004-105.expected
new file mode 100644
index 00000000..1894b9bf
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-105.expected
@@ -0,0 +1,14 @@
+location: clients/tests/test-client.py:993:test_004()/105
+cmd: $NMCLI --mode tabular -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 138 bytes
+>>>
+IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
+        wlan0-ap-2  Infra  1     54 Mbit/s  92      ****  WPA1 WPA2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-106.expected b/clients/tests/test-client.check-on-disk/test_004-106.expected
new file mode 100644
index 00000000..ebcec5a3
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-106.expected
@@ -0,0 +1,14 @@
+location: clients/tests/test-client.py:993:test_004()/106
+cmd: $NMCLI --mode tabular -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 154 bytes
+>>>
+IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
+        wlan0-ap-2  Infrastruktura  1     54 Mb/s  92      ****  WPA1 WPA2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-107.expected b/clients/tests/test-client.check-on-disk/test_004-107.expected
new file mode 100644
index 00000000..48a961f2
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-107.expected
@@ -0,0 +1,14 @@
+location: clients/tests/test-client.py:996:test_004()/107
+cmd: $NMCLI --mode tabular -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 568 bytes
+>>>
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infra  1     2412 MHz  54 Mbit/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-108.expected b/clients/tests/test-client.check-on-disk/test_004-108.expected
new file mode 100644
index 00000000..53080dbf
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-108.expected
@@ -0,0 +1,14 @@
+location: clients/tests/test-client.py:996:test_004()/108
+cmd: $NMCLI --mode tabular -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 586 bytes
+>>>
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infrastruktura  1     2412 MHz  54 Mb/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-109.expected b/clients/tests/test-client.check-on-disk/test_004-109.expected
new file mode 100644
index 00000000..32398b7f
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-109.expected
@@ -0,0 +1,40 @@
+location: clients/tests/test-client.py:998:test_004()/109
+cmd: $NMCLI --mode tabular -f ALL device show wlan0
+lang: C
+returncode: 0
+stdout: 2760 bytes
+>>>
+NAME     DEVICE  TYPE  NM-TYPE       VENDOR  PRODUCT  DRIVER   DRIVER-VERSION  FIRMWARE-VERSION  HWADDR             MTU  STATE             REASON               UDI                         IP-IFACE  IS-SOFTWARE  NM-MANAGED  AUTOCONNECT  FIRMWARE-MISSING  NM-PLUGIN-MISSING  PHYS-PORT-ID  CONNECTION  CON-UUID                              CON-PATH                                            METERED 
+GENERAL  wlan0   wifi  NMDeviceWifi  --      --       virtual  --              --                13:E0:74:85:7C:D9  0    20 (unavailable)  0 (No reason given)  /sys/devices/virtual/wlan0  --        no           yes         yes          no                no                 --            con-vpn-1   UUID-con-vpn-1-REPLACED-REPLACED-REP  /org/freedesktop/NetworkManager/ActiveConnection/2  unknown 
+
+NAME          CARRIER-DETECT  SPEED    IS-SOFTWARE  SRIOV 
+CAPABILITIES  no              unknown  no           no    
+
+NAME             WEP  WPA  WPA2  TKIP  CCMP  AP   ADHOC  2GHZ     5GHZ    
+WIFI-PROPERTIES  yes  yes  yes   yes   yes   yes  yes    unknown  unknown 
+
+NAME   IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
+AP[1]          wlan0-ap-2  Infra  1     54 Mbit/s  92      ****  WPA1 WPA2 
+AP[2]          wlan0-ap-1  Infra  1     54 Mbit/s  81      ****  WPA1 WPA2 
+AP[3]          wlan0-ap-3  Infra  1     54 Mbit/s  55      **    WPA1 WPA2 
+
+GROUP  ADDRESS                                 GATEWAY         ROUTE  DNS  DOMAIN                                                                            WINS           
+IP4    192.168.228.18/32 | 192.168.209.179/25  192.168.41.120  --     --   sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar  192.168.120.79 
+
+GROUP  OPTION                                                                                    
+DHCP4  dhcp-4-opt-0 = val-0 | dhcp-4-opt-2 = val-2 | dhcp-4-opt-4 = val-4 | dhcp-4-opt-7 = val-7 
+
+GROUP  ADDRESS  GATEWAY  ROUTE                                                           DNS  DOMAIN                                                                                            
+IP6    --       --       dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086  --   sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar 
+
+GROUP  OPTION                                                                                                           
+DHCP6  dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5 
+
+NAME         AVAILABLE-CONNECTION-PATHS                    AVAILABLE-CONNECTIONS                          
+CONNECTIONS  /org/freedesktop/NetworkManager/Settings/{2}  UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-110.expected b/clients/tests/test-client.check-on-disk/test_004-110.expected
new file mode 100644
index 00000000..ee54183e
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-110.expected
@@ -0,0 +1,40 @@
+location: clients/tests/test-client.py:998:test_004()/110
+cmd: $NMCLI --mode tabular -f ALL device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 2813 bytes
+>>>
+NAME     DEVICE  TYPE  NM-TYPE       VENDOR  PRODUCT  DRIVER   DRIVER-VERSION  FIRMWARE-VERSION  HWADDR             MTU  STATE             REASON                    UDI                         IP-IFACE  IS-SOFTWARE  NM-MANAGED  AUTOCONNECT  FIRMWARE-MISSING  NM-PLUGIN-MISSING  PHYS-PORT-ID  CONNECTION  CON-UUID                              CON-PATH                                            METERED  
+GENERAL  wlan0   wifi  NMDeviceWifi  --      --       virtual  --              --                13:E0:74:85:7C:D9  0    20 (niedostępne)  0 (Nie podano przyczyny)  /sys/devices/virtual/wlan0  --        nie          tak         tak          nie               nie                --            con-vpn-1   UUID-con-vpn-1-REPLACED-REPLACED-REP  /org/freedesktop/NetworkManager/ActiveConnection/2  nieznane 
+
+NAME          CARRIER-DETECT  SPEED     IS-SOFTWARE  SRIOV 
+CAPABILITIES  nie             nieznane  nie          nie   
+
+NAME             WEP  WPA  WPA2  TKIP  CCMP  AP   ADHOC  2GHZ      5GHZ     
+WIFI-PROPERTIES  tak  tak  tak   tak   tak   tak  tak    nieznane  nieznane 
+
+NAME   IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
+AP[1]          wlan0-ap-2  Infrastruktura  1     54 Mb/s  92      ****  WPA1 WPA2 
+AP[2]          wlan0-ap-1  Infrastruktura  1     54 Mb/s  81      ****  WPA1 WPA2 
+AP[3]          wlan0-ap-3  Infrastruktura  1     54 Mb/s  55      **    WPA1 WPA2 
+
+GROUP  ADDRESS                                 GATEWAY         ROUTE  DNS  DOMAIN                                                                            WINS           
+IP4    192.168.228.18/32 | 192.168.209.179/25  192.168.41.120  --     --   sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar  192.168.120.79 
+
+GROUP  OPTION                                                                                    
+DHCP4  dhcp-4-opt-0 = val-0 | dhcp-4-opt-2 = val-2 | dhcp-4-opt-4 = val-4 | dhcp-4-opt-7 = val-7 
+
+GROUP  ADDRESS  GATEWAY  ROUTE                                                           DNS  DOMAIN                                                                                            
+IP6    --       --       dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086  --   sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar 
+
+GROUP  OPTION                                                                                                           
+DHCP6  dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5 
+
+NAME         AVAILABLE-CONNECTION-PATHS                    AVAILABLE-CONNECTIONS                          
+CONNECTIONS  /org/freedesktop/NetworkManager/Settings/{2}  UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-111.expected b/clients/tests/test-client.check-on-disk/test_004-111.expected
new file mode 100644
index 00000000..3e3a4a09
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-111.expected
@@ -0,0 +1,38 @@
+location: clients/tests/test-client.py:1000:test_004()/111
+cmd: $NMCLI --mode tabular -f COMMON device show wlan0
+lang: C
+returncode: 0
+stdout: 980 bytes
+>>>
+DEVICE 
+wlan0  
+
+TYPE 
+wifi 
+
+HWADDR            
+13:E0:74:85:7C:D9 
+
+MTU 
+0   
+
+STATE            
+20 (unavailable) 
+
+CONNECTION 
+con-vpn-1  
+
+CON-PATH                                           
+/org/freedesktop/NetworkManager/ActiveConnection/2 
+
+GROUP  ADDRESS                                 GATEWAY         ROUTE  DNS  DOMAIN                                                                            WINS           
+IP4    192.168.228.18/32 | 192.168.209.179/25  192.168.41.120  --     --   sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar  192.168.120.79 
+
+GROUP  ADDRESS  GATEWAY  ROUTE                                                           DNS  DOMAIN                                                                                            
+IP6    --       --       dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086  --   sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-112.expected b/clients/tests/test-client.check-on-disk/test_004-112.expected
new file mode 100644
index 00000000..cd8fbc74
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-112.expected
@@ -0,0 +1,38 @@
+location: clients/tests/test-client.py:1000:test_004()/112
+cmd: $NMCLI --mode tabular -f COMMON device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 981 bytes
+>>>
+DEVICE 
+wlan0  
+
+TYPE 
+wifi 
+
+HWADDR            
+13:E0:74:85:7C:D9 
+
+MTU 
+0   
+
+STATE            
+20 (niedostępne) 
+
+CONNECTION 
+con-vpn-1  
+
+CON-PATH                                           
+/org/freedesktop/NetworkManager/ActiveConnection/2 
+
+GROUP  ADDRESS                                 GATEWAY         ROUTE  DNS  DOMAIN                                                                            WINS           
+IP4    192.168.228.18/32 | 192.168.209.179/25  192.168.41.120  --     --   sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar  192.168.120.79 
+
+GROUP  ADDRESS  GATEWAY  ROUTE                                                           DNS  DOMAIN                                                                                            
+IP6    --       --       dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086  --   sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-113.expected b/clients/tests/test-client.check-on-disk/test_004-113.expected
new file mode 100644
index 00000000..ca0d2c76
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-113.expected
@@ -0,0 +1,40 @@
+location: clients/tests/test-client.py:1002:test_004()/113
+cmd: $NMCLI --mode tabular -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: C
+returncode: 0
+stdout: 2760 bytes
+>>>
+NAME     DEVICE  TYPE  NM-TYPE       VENDOR  PRODUCT  DRIVER   DRIVER-VERSION  FIRMWARE-VERSION  HWADDR             MTU  STATE             REASON               UDI                         IP-IFACE  IS-SOFTWARE  NM-MANAGED  AUTOCONNECT  FIRMWARE-MISSING  NM-PLUGIN-MISSING  PHYS-PORT-ID  CONNECTION  CON-UUID                              CON-PATH                                            METERED 
+GENERAL  wlan0   wifi  NMDeviceWifi  --      --       virtual  --              --                13:E0:74:85:7C:D9  0    20 (unavailable)  0 (No reason given)  /sys/devices/virtual/wlan0  --        no           yes         yes          no                no                 --            con-vpn-1   UUID-con-vpn-1-REPLACED-REPLACED-REP  /org/freedesktop/NetworkManager/ActiveConnection/2  unknown 
+
+NAME          CARRIER-DETECT  SPEED    IS-SOFTWARE  SRIOV 
+CAPABILITIES  no              unknown  no           no    
+
+NAME             WEP  WPA  WPA2  TKIP  CCMP  AP   ADHOC  2GHZ     5GHZ    
+WIFI-PROPERTIES  yes  yes  yes   yes   yes   yes  yes    unknown  unknown 
+
+NAME   IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
+AP[1]          wlan0-ap-2  Infra  1     54 Mbit/s  92      ****  WPA1 WPA2 
+AP[2]          wlan0-ap-1  Infra  1     54 Mbit/s  81      ****  WPA1 WPA2 
+AP[3]          wlan0-ap-3  Infra  1     54 Mbit/s  55      **    WPA1 WPA2 
+
+GROUP  ADDRESS                                 GATEWAY         ROUTE  DNS  DOMAIN                                                                            WINS           
+IP4    192.168.228.18/32 | 192.168.209.179/25  192.168.41.120  --     --   sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar  192.168.120.79 
+
+GROUP  OPTION                                                                                    
+DHCP4  dhcp-4-opt-0 = val-0 | dhcp-4-opt-2 = val-2 | dhcp-4-opt-4 = val-4 | dhcp-4-opt-7 = val-7 
+
+GROUP  ADDRESS  GATEWAY  ROUTE                                                           DNS  DOMAIN                                                                                            
+IP6    --       --       dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086  --   sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar 
+
+GROUP  OPTION                                                                                                           
+DHCP6  dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5 
+
+NAME         AVAILABLE-CONNECTION-PATHS                    AVAILABLE-CONNECTIONS                          
+CONNECTIONS  /org/freedesktop/NetworkManager/Settings/{2}  UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-114.expected b/clients/tests/test-client.check-on-disk/test_004-114.expected
new file mode 100644
index 00000000..2fe34bc5
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-114.expected
@@ -0,0 +1,40 @@
+location: clients/tests/test-client.py:1002:test_004()/114
+cmd: $NMCLI --mode tabular -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 2813 bytes
+>>>
+NAME     DEVICE  TYPE  NM-TYPE       VENDOR  PRODUCT  DRIVER   DRIVER-VERSION  FIRMWARE-VERSION  HWADDR             MTU  STATE             REASON                    UDI                         IP-IFACE  IS-SOFTWARE  NM-MANAGED  AUTOCONNECT  FIRMWARE-MISSING  NM-PLUGIN-MISSING  PHYS-PORT-ID  CONNECTION  CON-UUID                              CON-PATH                                            METERED  
+GENERAL  wlan0   wifi  NMDeviceWifi  --      --       virtual  --              --                13:E0:74:85:7C:D9  0    20 (niedostępne)  0 (Nie podano przyczyny)  /sys/devices/virtual/wlan0  --        nie          tak         tak          nie               nie                --            con-vpn-1   UUID-con-vpn-1-REPLACED-REPLACED-REP  /org/freedesktop/NetworkManager/ActiveConnection/2  nieznane 
+
+NAME          CARRIER-DETECT  SPEED     IS-SOFTWARE  SRIOV 
+CAPABILITIES  nie             nieznane  nie          nie   
+
+NAME             WEP  WPA  WPA2  TKIP  CCMP  AP   ADHOC  2GHZ      5GHZ     
+WIFI-PROPERTIES  tak  tak  tak   tak   tak   tak  tak    nieznane  nieznane 
+
+NAME   IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
+AP[1]          wlan0-ap-2  Infrastruktura  1     54 Mb/s  92      ****  WPA1 WPA2 
+AP[2]          wlan0-ap-1  Infrastruktura  1     54 Mb/s  81      ****  WPA1 WPA2 
+AP[3]          wlan0-ap-3  Infrastruktura  1     54 Mb/s  55      **    WPA1 WPA2 
+
+GROUP  ADDRESS                                 GATEWAY         ROUTE  DNS  DOMAIN                                                                            WINS           
+IP4    192.168.228.18/32 | 192.168.209.179/25  192.168.41.120  --     --   sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar  192.168.120.79 
+
+GROUP  OPTION                                                                                    
+DHCP4  dhcp-4-opt-0 = val-0 | dhcp-4-opt-2 = val-2 | dhcp-4-opt-4 = val-4 | dhcp-4-opt-7 = val-7 
+
+GROUP  ADDRESS  GATEWAY  ROUTE                                                           DNS  DOMAIN                                                                                            
+IP6    --       --       dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086  --   sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar 
+
+GROUP  OPTION                                                                                                           
+DHCP6  dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5 
+
+NAME         AVAILABLE-CONNECTION-PATHS                    AVAILABLE-CONNECTIONS                          
+CONNECTIONS  /org/freedesktop/NetworkManager/Settings/{2}  UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-115.expected b/clients/tests/test-client.check-on-disk/test_004-115.expected
new file mode 100644
index 00000000..f35200a7
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-115.expected
@@ -0,0 +1,33 @@
+location: clients/tests/test-client.py:984:test_004()/115
+cmd: $NMCLI --mode tabular --pretty -f ALL device wifi list
+lang: C
+returncode: 0
+stdout: 2872 bytes
+>>>
+===========================
+  Wi-Fi scan list (wlan1)
+===========================
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan1-ap-4  776C616E312D61702D34  94:2B:E8:F6:D2:86  Infra  1     2412 MHz  54 Mbit/s  48      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   no              /org/freedesktop/NetworkManager/AccessPoint/4 
+
+===========================
+  Wi-Fi scan list (wlan1)
+===========================
+NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+===========================
+  Wi-Fi scan list (wlan0)
+===========================
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infra  1     2412 MHz  54 Mbit/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  61:95:77:AC:1E:4C  Infra  1     2412 MHz  54 Mbit/s  81      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-3  776C616E302D61702D33  9B:F6:B7:EC:97:76  Infra  1     2412 MHz  54 Mbit/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-116.expected b/clients/tests/test-client.check-on-disk/test_004-116.expected
new file mode 100644
index 00000000..b5dd6402
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-116.expected
@@ -0,0 +1,33 @@
+location: clients/tests/test-client.py:984:test_004()/116
+cmd: $NMCLI --mode tabular --pretty -f ALL device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 3100 bytes
+>>>
+========================================
+  Lista skanowania sieci Wi-Fi (wlan1)
+========================================
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan1-ap-4  776C616E312D61702D34  94:2B:E8:F6:D2:86  Infrastruktura  1     2412 MHz  54 Mb/s  48      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   nie             /org/freedesktop/NetworkManager/AccessPoint/4 
+
+========================================
+  Lista skanowania sieci Wi-Fi (wlan1)
+========================================
+NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+========================================
+  Lista skanowania sieci Wi-Fi (wlan0)
+========================================
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infrastruktura  1     2412 MHz  54 Mb/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  61:95:77:AC:1E:4C  Infrastruktura  1     2412 MHz  54 Mb/s  81      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-3  776C616E302D61702D33  9B:F6:B7:EC:97:76  Infrastruktura  1     2412 MHz  54 Mb/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-117.expected b/clients/tests/test-client.check-on-disk/test_004-117.expected
new file mode 100644
index 00000000..d4710204
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-117.expected
@@ -0,0 +1,33 @@
+location: clients/tests/test-client.py:986:test_004()/117
+cmd: $NMCLI --mode tabular --pretty -f COMMON device wifi list
+lang: C
+returncode: 0
+stdout: 996 bytes
+>>>
+===========================
+  Wi-Fi scan list (wlan1)
+===========================
+IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
+------------------------------------------------------------------------------------------------
+        wlan1-ap-4  Infra  1     54 Mbit/s  48      **    WPA1 WPA2 
+
+===========================
+  Wi-Fi scan list (wlan1)
+===========================
+IN-USE  SSID  MODE  CHAN  RATE  SIGNAL  BARS  SECURITY 
+-----------------------------------------------------------------------------------
+
+===========================
+  Wi-Fi scan list (wlan0)
+===========================
+IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
+------------------------------------------------------------------------------------------------
+        wlan0-ap-2  Infra  1     54 Mbit/s  92      ****  WPA1 WPA2 
+        wlan0-ap-1  Infra  1     54 Mbit/s  81      ****  WPA1 WPA2 
+        wlan0-ap-3  Infra  1     54 Mbit/s  55      **    WPA1 WPA2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-118.expected b/clients/tests/test-client.check-on-disk/test_004-118.expected
new file mode 100644
index 00000000..7abe6c47
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-118.expected
@@ -0,0 +1,33 @@
+location: clients/tests/test-client.py:986:test_004()/118
+cmd: $NMCLI --mode tabular --pretty -f COMMON device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1216 bytes
+>>>
+========================================
+  Lista skanowania sieci Wi-Fi (wlan1)
+========================================
+IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
+--------------------------------------------------------------------------------------------------------------------
+        wlan1-ap-4  Infrastruktura  1     54 Mb/s  48      **    WPA1 WPA2 
+
+========================================
+  Lista skanowania sieci Wi-Fi (wlan1)
+========================================
+IN-USE  SSID  MODE  CHAN  RATE  SIGNAL  BARS  SECURITY 
+------------------------------------------------------------------------------------------------
+
+========================================
+  Lista skanowania sieci Wi-Fi (wlan0)
+========================================
+IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
+--------------------------------------------------------------------------------------------------------------------
+        wlan0-ap-2  Infrastruktura  1     54 Mb/s  92      ****  WPA1 WPA2 
+        wlan0-ap-1  Infrastruktura  1     54 Mb/s  81      ****  WPA1 WPA2 
+        wlan0-ap-3  Infrastruktura  1     54 Mb/s  55      **    WPA1 WPA2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-119.expected b/clients/tests/test-client.check-on-disk/test_004-119.expected
new file mode 100644
index 00000000..e0adcfcc
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-119.expected
@@ -0,0 +1,33 @@
+location: clients/tests/test-client.py:989:test_004()/119
+cmd: $NMCLI --mode tabular --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: C
+returncode: 0
+stdout: 2872 bytes
+>>>
+===========================
+  Wi-Fi scan list (wlan1)
+===========================
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan1-ap-4  776C616E312D61702D34  94:2B:E8:F6:D2:86  Infra  1     2412 MHz  54 Mbit/s  48      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   no              /org/freedesktop/NetworkManager/AccessPoint/4 
+
+===========================
+  Wi-Fi scan list (wlan1)
+===========================
+NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+===========================
+  Wi-Fi scan list (wlan0)
+===========================
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infra  1     2412 MHz  54 Mbit/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  61:95:77:AC:1E:4C  Infra  1     2412 MHz  54 Mbit/s  81      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-3  776C616E302D61702D33  9B:F6:B7:EC:97:76  Infra  1     2412 MHz  54 Mbit/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-120.expected b/clients/tests/test-client.check-on-disk/test_004-120.expected
new file mode 100644
index 00000000..5e7f5eb1
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-120.expected
@@ -0,0 +1,33 @@
+location: clients/tests/test-client.py:989:test_004()/120
+cmd: $NMCLI --mode tabular --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 3100 bytes
+>>>
+========================================
+  Lista skanowania sieci Wi-Fi (wlan1)
+========================================
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan1-ap-4  776C616E312D61702D34  94:2B:E8:F6:D2:86  Infrastruktura  1     2412 MHz  54 Mb/s  48      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan1   nie             /org/freedesktop/NetworkManager/AccessPoint/4 
+
+========================================
+  Lista skanowania sieci Wi-Fi (wlan1)
+========================================
+NAME  SSID  SSID-HEX  BSSID  MODE  CHAN  FREQ  RATE  SIGNAL  BARS  SECURITY  WPA-FLAGS  RSN-FLAGS  DEVICE  ACTIVE  IN-USE  DBUS-PATH 
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+========================================
+  Lista skanowania sieci Wi-Fi (wlan0)
+========================================
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infrastruktura  1     2412 MHz  54 Mb/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
+AP[2]  wlan0-ap-1  776C616E302D61702D31  61:95:77:AC:1E:4C  Infrastruktura  1     2412 MHz  54 Mb/s  81      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/1 
+AP[3]  wlan0-ap-3  776C616E302D61702D33  9B:F6:B7:EC:97:76  Infrastruktura  1     2412 MHz  54 Mb/s  55      **    WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/3 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-121.expected b/clients/tests/test-client.check-on-disk/test_004-121.expected
new file mode 100644
index 00000000..70ce9ba9
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-121.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:991:test_004()/121
+cmd: $NMCLI --mode tabular --pretty -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 962 bytes
+>>>
+===========================
+  Wi-Fi scan list (wlan0)
+===========================
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infra  1     2412 MHz  54 Mbit/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-122.expected b/clients/tests/test-client.check-on-disk/test_004-122.expected
new file mode 100644
index 00000000..19ab8aa1
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-122.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:991:test_004()/122
+cmd: $NMCLI --mode tabular --pretty -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1039 bytes
+>>>
+========================================
+  Lista skanowania sieci Wi-Fi (wlan0)
+========================================
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infrastruktura  1     2412 MHz  54 Mb/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-123.expected b/clients/tests/test-client.check-on-disk/test_004-123.expected
new file mode 100644
index 00000000..ab5a4e79
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-123.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:993:test_004()/123
+cmd: $NMCLI --mode tabular --pretty -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 317 bytes
+>>>
+===========================
+  Wi-Fi scan list (wlan0)
+===========================
+IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
+------------------------------------------------------------------------------------------------
+        wlan0-ap-2  Infra  1     54 Mbit/s  92      ****  WPA1 WPA2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-124.expected b/clients/tests/test-client.check-on-disk/test_004-124.expected
new file mode 100644
index 00000000..6ca1cfce
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-124.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:993:test_004()/124
+cmd: $NMCLI --mode tabular --pretty -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 392 bytes
+>>>
+========================================
+  Lista skanowania sieci Wi-Fi (wlan0)
+========================================
+IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
+--------------------------------------------------------------------------------------------------------------------
+        wlan0-ap-2  Infrastruktura  1     54 Mb/s  92      ****  WPA1 WPA2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-125.expected b/clients/tests/test-client.check-on-disk/test_004-125.expected
new file mode 100644
index 00000000..f412a3d8
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-125.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:996:test_004()/125
+cmd: $NMCLI --mode tabular --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 962 bytes
+>>>
+===========================
+  Wi-Fi scan list (wlan0)
+===========================
+NAME   SSID        SSID-HEX              BSSID              MODE   CHAN  FREQ      RATE       SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infra  1     2412 MHz  54 Mbit/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   no              /org/freedesktop/NetworkManager/AccessPoint/2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-126.expected b/clients/tests/test-client.check-on-disk/test_004-126.expected
new file mode 100644
index 00000000..58cb91aa
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-126.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:996:test_004()/126
+cmd: $NMCLI --mode tabular --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1039 bytes
+>>>
+========================================
+  Lista skanowania sieci Wi-Fi (wlan0)
+========================================
+NAME   SSID        SSID-HEX              BSSID              MODE            CHAN  FREQ      RATE     SIGNAL  BARS  SECURITY   WPA-FLAGS                                      RSN-FLAGS                                      DEVICE  ACTIVE  IN-USE  DBUS-PATH                                     
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1]  wlan0-ap-2  776C616E302D61702D32  C0:E2:BE:E8:EF:B6  Infrastruktura  1     2412 MHz  54 Mb/s  92      ****  WPA1 WPA2  pair_tkip pair_ccmp group_tkip group_ccmp psk  pair_tkip pair_ccmp group_tkip group_ccmp psk  wlan0   nie             /org/freedesktop/NetworkManager/AccessPoint/2 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-127.expected b/clients/tests/test-client.check-on-disk/test_004-127.expected
new file mode 100644
index 00000000..03585d90
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-127.expected
@@ -0,0 +1,52 @@
+location: clients/tests/test-client.py:998:test_004()/127
+cmd: $NMCLI --mode tabular --pretty -f ALL device show wlan0
+lang: C
+returncode: 0
+stdout: 4148 bytes
+>>>
+==========================
+  Device details (wlan0)
+==========================
+NAME     DEVICE  TYPE  NM-TYPE       VENDOR  PRODUCT  DRIVER   DRIVER-VERSION  FIRMWARE-VERSION  HWADDR             MTU  STATE             REASON               UDI                         IP-IFACE  IS-SOFTWARE  NM-MANAGED  AUTOCONNECT  FIRMWARE-MISSING  NM-PLUGIN-MISSING  PHYS-PORT-ID  CONNECTION  CON-UUID                              CON-PATH                                            METERED 
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL  wlan0   wifi  NMDeviceWifi  --      --       virtual  --              --                13:E0:74:85:7C:D9  0    20 (unavailable)  0 (No reason given)  /sys/devices/virtual/wlan0  --        no           yes         yes          no                no                 --            con-vpn-1   UUID-con-vpn-1-REPLACED-REPLACED-REP  /org/freedesktop/NetworkManager/ActiveConnection/2  unknown 
+
+NAME          CARRIER-DETECT  SPEED    IS-SOFTWARE  SRIOV 
+-----------------------------------------------------------
+CAPABILITIES  no              unknown  no           no    
+
+NAME             WEP  WPA  WPA2  TKIP  CCMP  AP   ADHOC  2GHZ     5GHZ    
+---------------------------------------------------------------------------
+WIFI-PROPERTIES  yes  yes  yes   yes   yes   yes  yes    unknown  unknown 
+
+NAME   IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
+----------------------------------------------------------------------------
+AP[1]          wlan0-ap-2  Infra  1     54 Mbit/s  92      ****  WPA1 WPA2 
+AP[2]          wlan0-ap-1  Infra  1     54 Mbit/s  81      ****  WPA1 WPA2 
+AP[3]          wlan0-ap-3  Infra  1     54 Mbit/s  55      **    WPA1 WPA2 
+
+GROUP  ADDRESS                                 GATEWAY         ROUTE  DNS  DOMAIN                                                                            WINS           
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+IP4    192.168.228.18/32 | 192.168.209.179/25  192.168.41.120  --     --   sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar  192.168.120.79 
+
+GROUP  OPTION                                                                                    
+--------------------------------------------------------------------------------------------------
+DHCP4  dhcp-4-opt-0 = val-0 | dhcp-4-opt-2 = val-2 | dhcp-4-opt-4 = val-4 | dhcp-4-opt-7 = val-7 
+
+GROUP  ADDRESS  GATEWAY  ROUTE                                                           DNS  DOMAIN                                                                                            
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+IP6    --       --       dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086  --   sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar 
+
+GROUP  OPTION                                                                                                           
+-------------------------------------------------------------------------------------------------------------------------
+DHCP6  dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5 
+
+NAME         AVAILABLE-CONNECTION-PATHS                    AVAILABLE-CONNECTIONS                          
+-----------------------------------------------------------------------------------------------------------
+CONNECTIONS  /org/freedesktop/NetworkManager/Settings/{2}  UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-128.expected b/clients/tests/test-client.check-on-disk/test_004-128.expected
new file mode 100644
index 00000000..be50cc17
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-128.expected
@@ -0,0 +1,52 @@
+location: clients/tests/test-client.py:998:test_004()/128
+cmd: $NMCLI --mode tabular --pretty -f ALL device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 4246 bytes
+>>>
+===================================
+  Informacje o urządzeniu (wlan0)
+===================================
+NAME     DEVICE  TYPE  NM-TYPE       VENDOR  PRODUCT  DRIVER   DRIVER-VERSION  FIRMWARE-VERSION  HWADDR             MTU  STATE             REASON                    UDI                         IP-IFACE  IS-SOFTWARE  NM-MANAGED  AUTOCONNECT  FIRMWARE-MISSING  NM-PLUGIN-MISSING  PHYS-PORT-ID  CONNECTION  CON-UUID                              CON-PATH                                            METERED  
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL  wlan0   wifi  NMDeviceWifi  --      --       virtual  --              --                13:E0:74:85:7C:D9  0    20 (niedostępne)  0 (Nie podano przyczyny)  /sys/devices/virtual/wlan0  --        nie          tak         tak          nie               nie                --            con-vpn-1   UUID-con-vpn-1-REPLACED-REPLACED-REP  /org/freedesktop/NetworkManager/ActiveConnection/2  nieznane 
+
+NAME          CARRIER-DETECT  SPEED     IS-SOFTWARE  SRIOV 
+------------------------------------------------------------
+CAPABILITIES  nie             nieznane  nie          nie   
+
+NAME             WEP  WPA  WPA2  TKIP  CCMP  AP   ADHOC  2GHZ      5GHZ     
+-----------------------------------------------------------------------------
+WIFI-PROPERTIES  tak  tak  tak   tak   tak   tak  tak    nieznane  nieznane 
+
+NAME   IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
+-----------------------------------------------------------------------------------
+AP[1]          wlan0-ap-2  Infrastruktura  1     54 Mb/s  92      ****  WPA1 WPA2 
+AP[2]          wlan0-ap-1  Infrastruktura  1     54 Mb/s  81      ****  WPA1 WPA2 
+AP[3]          wlan0-ap-3  Infrastruktura  1     54 Mb/s  55      **    WPA1 WPA2 
+
+GROUP  ADDRESS                                 GATEWAY         ROUTE  DNS  DOMAIN                                                                            WINS           
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+IP4    192.168.228.18/32 | 192.168.209.179/25  192.168.41.120  --     --   sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar  192.168.120.79 
+
+GROUP  OPTION                                                                                    
+--------------------------------------------------------------------------------------------------
+DHCP4  dhcp-4-opt-0 = val-0 | dhcp-4-opt-2 = val-2 | dhcp-4-opt-4 = val-4 | dhcp-4-opt-7 = val-7 
+
+GROUP  ADDRESS  GATEWAY  ROUTE                                                           DNS  DOMAIN                                                                                            
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+IP6    --       --       dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086  --   sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar 
+
+GROUP  OPTION                                                                                                           
+-------------------------------------------------------------------------------------------------------------------------
+DHCP6  dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5 
+
+NAME         AVAILABLE-CONNECTION-PATHS                    AVAILABLE-CONNECTIONS                          
+-----------------------------------------------------------------------------------------------------------
+CONNECTIONS  /org/freedesktop/NetworkManager/Settings/{2}  UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-129.expected b/clients/tests/test-client.check-on-disk/test_004-129.expected
new file mode 100644
index 00000000..a9695c82
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-129.expected
@@ -0,0 +1,50 @@
+location: clients/tests/test-client.py:1000:test_004()/129
+cmd: $NMCLI --mode tabular --pretty -f COMMON device show wlan0
+lang: C
+returncode: 0
+stdout: 1554 bytes
+>>>
+==========================
+  Device details (wlan0)
+==========================
+DEVICE 
+--------
+wlan0  
+
+TYPE 
+------
+wifi 
+
+HWADDR            
+-------------------
+13:E0:74:85:7C:D9 
+
+MTU 
+-----
+0   
+
+STATE            
+------------------
+20 (unavailable) 
+
+CONNECTION 
+------------
+con-vpn-1  
+
+CON-PATH                                           
+----------------------------------------------------
+/org/freedesktop/NetworkManager/ActiveConnection/2 
+
+GROUP  ADDRESS                                 GATEWAY         ROUTE  DNS  DOMAIN                                                                            WINS           
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+IP4    192.168.228.18/32 | 192.168.209.179/25  192.168.41.120  --     --   sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar  192.168.120.79 
+
+GROUP  ADDRESS  GATEWAY  ROUTE                                                           DNS  DOMAIN                                                                                            
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+IP6    --       --       dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086  --   sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-130.expected b/clients/tests/test-client.check-on-disk/test_004-130.expected
new file mode 100644
index 00000000..5ded3e2b
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-130.expected
@@ -0,0 +1,50 @@
+location: clients/tests/test-client.py:1000:test_004()/130
+cmd: $NMCLI --mode tabular --pretty -f COMMON device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1584 bytes
+>>>
+===================================
+  Informacje o urządzeniu (wlan0)
+===================================
+DEVICE 
+--------
+wlan0  
+
+TYPE 
+------
+wifi 
+
+HWADDR            
+-------------------
+13:E0:74:85:7C:D9 
+
+MTU 
+-----
+0   
+
+STATE            
+------------------
+20 (niedostępne) 
+
+CONNECTION 
+------------
+con-vpn-1  
+
+CON-PATH                                           
+----------------------------------------------------
+/org/freedesktop/NetworkManager/ActiveConnection/2 
+
+GROUP  ADDRESS                                 GATEWAY         ROUTE  DNS  DOMAIN                                                                            WINS           
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+IP4    192.168.228.18/32 | 192.168.209.179/25  192.168.41.120  --     --   sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar  192.168.120.79 
+
+GROUP  ADDRESS  GATEWAY  ROUTE                                                           DNS  DOMAIN                                                                                            
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+IP6    --       --       dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086  --   sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-131.expected b/clients/tests/test-client.check-on-disk/test_004-131.expected
new file mode 100644
index 00000000..7c7e20c4
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-131.expected
@@ -0,0 +1,52 @@
+location: clients/tests/test-client.py:1002:test_004()/131
+cmd: $NMCLI --mode tabular --pretty -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: C
+returncode: 0
+stdout: 4148 bytes
+>>>
+==========================
+  Device details (wlan0)
+==========================
+NAME     DEVICE  TYPE  NM-TYPE       VENDOR  PRODUCT  DRIVER   DRIVER-VERSION  FIRMWARE-VERSION  HWADDR             MTU  STATE             REASON               UDI                         IP-IFACE  IS-SOFTWARE  NM-MANAGED  AUTOCONNECT  FIRMWARE-MISSING  NM-PLUGIN-MISSING  PHYS-PORT-ID  CONNECTION  CON-UUID                              CON-PATH                                            METERED 
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL  wlan0   wifi  NMDeviceWifi  --      --       virtual  --              --                13:E0:74:85:7C:D9  0    20 (unavailable)  0 (No reason given)  /sys/devices/virtual/wlan0  --        no           yes         yes          no                no                 --            con-vpn-1   UUID-con-vpn-1-REPLACED-REPLACED-REP  /org/freedesktop/NetworkManager/ActiveConnection/2  unknown 
+
+NAME          CARRIER-DETECT  SPEED    IS-SOFTWARE  SRIOV 
+-----------------------------------------------------------
+CAPABILITIES  no              unknown  no           no    
+
+NAME             WEP  WPA  WPA2  TKIP  CCMP  AP   ADHOC  2GHZ     5GHZ    
+---------------------------------------------------------------------------
+WIFI-PROPERTIES  yes  yes  yes   yes   yes   yes  yes    unknown  unknown 
+
+NAME   IN-USE  SSID        MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  
+----------------------------------------------------------------------------
+AP[1]          wlan0-ap-2  Infra  1     54 Mbit/s  92      ****  WPA1 WPA2 
+AP[2]          wlan0-ap-1  Infra  1     54 Mbit/s  81      ****  WPA1 WPA2 
+AP[3]          wlan0-ap-3  Infra  1     54 Mbit/s  55      **    WPA1 WPA2 
+
+GROUP  ADDRESS                                 GATEWAY         ROUTE  DNS  DOMAIN                                                                            WINS           
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+IP4    192.168.228.18/32 | 192.168.209.179/25  192.168.41.120  --     --   sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar  192.168.120.79 
+
+GROUP  OPTION                                                                                    
+--------------------------------------------------------------------------------------------------
+DHCP4  dhcp-4-opt-0 = val-0 | dhcp-4-opt-2 = val-2 | dhcp-4-opt-4 = val-4 | dhcp-4-opt-7 = val-7 
+
+GROUP  ADDRESS  GATEWAY  ROUTE                                                           DNS  DOMAIN                                                                                            
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+IP6    --       --       dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086  --   sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar 
+
+GROUP  OPTION                                                                                                           
+-------------------------------------------------------------------------------------------------------------------------
+DHCP6  dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5 
+
+NAME         AVAILABLE-CONNECTION-PATHS                    AVAILABLE-CONNECTIONS                          
+-----------------------------------------------------------------------------------------------------------
+CONNECTIONS  /org/freedesktop/NetworkManager/Settings/{2}  UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-132.expected b/clients/tests/test-client.check-on-disk/test_004-132.expected
new file mode 100644
index 00000000..e3f6d262
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-132.expected
@@ -0,0 +1,52 @@
+location: clients/tests/test-client.py:1002:test_004()/132
+cmd: $NMCLI --mode tabular --pretty -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 4246 bytes
+>>>
+===================================
+  Informacje o urządzeniu (wlan0)
+===================================
+NAME     DEVICE  TYPE  NM-TYPE       VENDOR  PRODUCT  DRIVER   DRIVER-VERSION  FIRMWARE-VERSION  HWADDR             MTU  STATE             REASON                    UDI                         IP-IFACE  IS-SOFTWARE  NM-MANAGED  AUTOCONNECT  FIRMWARE-MISSING  NM-PLUGIN-MISSING  PHYS-PORT-ID  CONNECTION  CON-UUID                              CON-PATH                                            METERED  
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL  wlan0   wifi  NMDeviceWifi  --      --       virtual  --              --                13:E0:74:85:7C:D9  0    20 (niedostępne)  0 (Nie podano przyczyny)  /sys/devices/virtual/wlan0  --        nie          tak         tak          nie               nie                --            con-vpn-1   UUID-con-vpn-1-REPLACED-REPLACED-REP  /org/freedesktop/NetworkManager/ActiveConnection/2  nieznane 
+
+NAME          CARRIER-DETECT  SPEED     IS-SOFTWARE  SRIOV 
+------------------------------------------------------------
+CAPABILITIES  nie             nieznane  nie          nie   
+
+NAME             WEP  WPA  WPA2  TKIP  CCMP  AP   ADHOC  2GHZ      5GHZ     
+-----------------------------------------------------------------------------
+WIFI-PROPERTIES  tak  tak  tak   tak   tak   tak  tak    nieznane  nieznane 
+
+NAME   IN-USE  SSID        MODE            CHAN  RATE     SIGNAL  BARS  SECURITY  
+-----------------------------------------------------------------------------------
+AP[1]          wlan0-ap-2  Infrastruktura  1     54 Mb/s  92      ****  WPA1 WPA2 
+AP[2]          wlan0-ap-1  Infrastruktura  1     54 Mb/s  81      ****  WPA1 WPA2 
+AP[3]          wlan0-ap-3  Infrastruktura  1     54 Mb/s  55      **    WPA1 WPA2 
+
+GROUP  ADDRESS                                 GATEWAY         ROUTE  DNS  DOMAIN                                                                            WINS           
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+IP4    192.168.228.18/32 | 192.168.209.179/25  192.168.41.120  --     --   sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar  192.168.120.79 
+
+GROUP  OPTION                                                                                    
+--------------------------------------------------------------------------------------------------
+DHCP4  dhcp-4-opt-0 = val-0 | dhcp-4-opt-2 = val-2 | dhcp-4-opt-4 = val-4 | dhcp-4-opt-7 = val-7 
+
+GROUP  ADDRESS  GATEWAY  ROUTE                                                           DNS  DOMAIN                                                                                            
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+IP6    --       --       dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086  --   sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar 
+
+GROUP  OPTION                                                                                                           
+-------------------------------------------------------------------------------------------------------------------------
+DHCP6  dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5 
+
+NAME         AVAILABLE-CONNECTION-PATHS                    AVAILABLE-CONNECTIONS                          
+-----------------------------------------------------------------------------------------------------------
+CONNECTIONS  /org/freedesktop/NetworkManager/Settings/{2}  UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-133.expected b/clients/tests/test-client.check-on-disk/test_004-133.expected
new file mode 100644
index 00000000..48a5c30f
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-133.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:984:test_004()/133
+cmd: $NMCLI --mode tabular --terse -f ALL device wifi list
+lang: C
+returncode: 0
+stdout: 1022 bytes
+>>>
+AP[1]:wlan1-ap-4:776C616E312D61702D34:94\:2B\:E8\:F6\:D2\:86:Infra:1:2412 MHz:54 Mbit/s:48:**  :WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan1:no: :/org/freedesktop/NetworkManager/AccessPoint/4
+
+
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infra:1:2412 MHz:54 Mbit/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/2
+AP[2]:wlan0-ap-1:776C616E302D61702D31:61\:95\:77\:AC\:1E\:4C:Infra:1:2412 MHz:54 Mbit/s:81:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/1
+AP[3]:wlan0-ap-3:776C616E302D61702D33:9B\:F6\:B7\:EC\:97\:76:Infra:1:2412 MHz:54 Mbit/s:55:**  :WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-134.expected b/clients/tests/test-client.check-on-disk/test_004-134.expected
new file mode 100644
index 00000000..3d07f6b6
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-134.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:984:test_004()/134
+cmd: $NMCLI --mode tabular --terse -f ALL device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1070 bytes
+>>>
+AP[1]:wlan1-ap-4:776C616E312D61702D34:94\:2B\:E8\:F6\:D2\:86:Infrastruktura:1:2412 MHz:54 Mb/s:48:**  :WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan1:nie: :/org/freedesktop/NetworkManager/AccessPoint/4
+
+
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infrastruktura:1:2412 MHz:54 Mb/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/2
+AP[2]:wlan0-ap-1:776C616E302D61702D31:61\:95\:77\:AC\:1E\:4C:Infrastruktura:1:2412 MHz:54 Mb/s:81:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/1
+AP[3]:wlan0-ap-3:776C616E302D61702D33:9B\:F6\:B7\:EC\:97\:76:Infrastruktura:1:2412 MHz:54 Mb/s:55:**  :WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-135.expected b/clients/tests/test-client.check-on-disk/test_004-135.expected
new file mode 100644
index 00000000..0ca4d340
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-135.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:986:test_004()/135
+cmd: $NMCLI --mode tabular --terse -f COMMON device wifi list
+lang: C
+returncode: 0
+stdout: 198 bytes
+>>>
+ :wlan1-ap-4:Infra:1:54 Mbit/s:48:**  :WPA1 WPA2
+
+
+ :wlan0-ap-2:Infra:1:54 Mbit/s:92:****:WPA1 WPA2
+ :wlan0-ap-1:Infra:1:54 Mbit/s:81:****:WPA1 WPA2
+ :wlan0-ap-3:Infra:1:54 Mbit/s:55:**  :WPA1 WPA2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-136.expected b/clients/tests/test-client.check-on-disk/test_004-136.expected
new file mode 100644
index 00000000..cebd2975
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-136.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:986:test_004()/136
+cmd: $NMCLI --mode tabular --terse -f COMMON device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 234 bytes
+>>>
+ :wlan1-ap-4:Infrastruktura:1:54 Mb/s:48:**  :WPA1 WPA2
+
+
+ :wlan0-ap-2:Infrastruktura:1:54 Mb/s:92:****:WPA1 WPA2
+ :wlan0-ap-1:Infrastruktura:1:54 Mb/s:81:****:WPA1 WPA2
+ :wlan0-ap-3:Infrastruktura:1:54 Mb/s:55:**  :WPA1 WPA2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-137.expected b/clients/tests/test-client.check-on-disk/test_004-137.expected
new file mode 100644
index 00000000..91db6a46
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-137.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:989:test_004()/137
+cmd: $NMCLI --mode tabular --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: C
+returncode: 0
+stdout: 1022 bytes
+>>>
+AP[1]:wlan1-ap-4:776C616E312D61702D34:94\:2B\:E8\:F6\:D2\:86:Infra:1:2412 MHz:54 Mbit/s:48:**  :WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan1:no: :/org/freedesktop/NetworkManager/AccessPoint/4
+
+
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infra:1:2412 MHz:54 Mbit/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/2
+AP[2]:wlan0-ap-1:776C616E302D61702D31:61\:95\:77\:AC\:1E\:4C:Infra:1:2412 MHz:54 Mbit/s:81:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/1
+AP[3]:wlan0-ap-3:776C616E302D61702D33:9B\:F6\:B7\:EC\:97\:76:Infra:1:2412 MHz:54 Mbit/s:55:**  :WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-138.expected b/clients/tests/test-client.check-on-disk/test_004-138.expected
new file mode 100644
index 00000000..e3b0734d
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-138.expected
@@ -0,0 +1,18 @@
+location: clients/tests/test-client.py:989:test_004()/138
+cmd: $NMCLI --mode tabular --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1070 bytes
+>>>
+AP[1]:wlan1-ap-4:776C616E312D61702D34:94\:2B\:E8\:F6\:D2\:86:Infrastruktura:1:2412 MHz:54 Mb/s:48:**  :WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan1:nie: :/org/freedesktop/NetworkManager/AccessPoint/4
+
+
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infrastruktura:1:2412 MHz:54 Mb/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/2
+AP[2]:wlan0-ap-1:776C616E302D61702D31:61\:95\:77\:AC\:1E\:4C:Infrastruktura:1:2412 MHz:54 Mb/s:81:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/1
+AP[3]:wlan0-ap-3:776C616E302D61702D33:9B\:F6\:B7\:EC\:97\:76:Infrastruktura:1:2412 MHz:54 Mb/s:55:**  :WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-139.expected b/clients/tests/test-client.check-on-disk/test_004-139.expected
new file mode 100644
index 00000000..0d77bad4
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-139.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:991:test_004()/139
+cmd: $NMCLI --mode tabular --terse -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 255 bytes
+>>>
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infra:1:2412 MHz:54 Mbit/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-140.expected b/clients/tests/test-client.check-on-disk/test_004-140.expected
new file mode 100644
index 00000000..453e4685
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-140.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:991:test_004()/140
+cmd: $NMCLI --mode tabular --terse -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 267 bytes
+>>>
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infrastruktura:1:2412 MHz:54 Mb/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-141.expected b/clients/tests/test-client.check-on-disk/test_004-141.expected
new file mode 100644
index 00000000..07347eb8
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-141.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:993:test_004()/141
+cmd: $NMCLI --mode tabular --terse -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 49 bytes
+>>>
+ :wlan0-ap-2:Infra:1:54 Mbit/s:92:****:WPA1 WPA2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-142.expected b/clients/tests/test-client.check-on-disk/test_004-142.expected
new file mode 100644
index 00000000..ea204e7c
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-142.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:993:test_004()/142
+cmd: $NMCLI --mode tabular --terse -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 58 bytes
+>>>
+ :wlan0-ap-2:Infrastruktura:1:54 Mb/s:92:****:WPA1 WPA2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-143.expected b/clients/tests/test-client.check-on-disk/test_004-143.expected
new file mode 100644
index 00000000..e389a5a9
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-143.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:996:test_004()/143
+cmd: $NMCLI --mode tabular --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 255 bytes
+>>>
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infra:1:2412 MHz:54 Mbit/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-144.expected b/clients/tests/test-client.check-on-disk/test_004-144.expected
new file mode 100644
index 00000000..566be378
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-144.expected
@@ -0,0 +1,13 @@
+location: clients/tests/test-client.py:996:test_004()/144
+cmd: $NMCLI --mode tabular --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 267 bytes
+>>>
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infrastruktura:1:2412 MHz:54 Mb/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-145.expected b/clients/tests/test-client.check-on-disk/test_004-145.expected
new file mode 100644
index 00000000..ff8735b0
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-145.expected
@@ -0,0 +1,23 @@
+location: clients/tests/test-client.py:998:test_004()/145
+cmd: $NMCLI --mode tabular --terse -f ALL device show wlan0
+lang: C
+returncode: 0
+stdout: 1164 bytes
+>>>
+GENERAL:wlan0:wifi:NMDeviceWifi:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):/sys/devices/virtual/wlan0::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:unknown:no:no
+WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown
+AP[1]: :wlan0-ap-2:Infra:1:54 Mbit/s:92:****:WPA1 WPA2
+AP[2]: :wlan0-ap-1:Infra:1:54 Mbit/s:81:****:WPA1 WPA2
+AP[3]: :wlan0-ap-3:Infra:1:54 Mbit/s:55:**  :WPA1 WPA2
+IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
+DHCP4:dhcp-4-opt-0 = val-0 | dhcp-4-opt-2 = val-2 | dhcp-4-opt-4 = val-4 | dhcp-4-opt-7 = val-7
+IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
+DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5
+CONNECTIONS:/org/freedesktop/NetworkManager/Settings/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-146.expected b/clients/tests/test-client.check-on-disk/test_004-146.expected
new file mode 100644
index 00000000..4110981f
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-146.expected
@@ -0,0 +1,23 @@
+location: clients/tests/test-client.py:998:test_004()/146
+cmd: $NMCLI --mode tabular --terse -f ALL device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1207 bytes
+>>>
+GENERAL:wlan0:wifi:NMDeviceWifi:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (niedostępne):0 (Nie podano przyczyny):/sys/devices/virtual/wlan0::nie:tak:tak:nie:nie::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:nieznane
+CAPABILITIES:nie:nieznane:nie:nie
+WIFI-PROPERTIES:tak:tak:tak:tak:tak:tak:tak:nieznane:nieznane
+AP[1]: :wlan0-ap-2:Infrastruktura:1:54 Mb/s:92:****:WPA1 WPA2
+AP[2]: :wlan0-ap-1:Infrastruktura:1:54 Mb/s:81:****:WPA1 WPA2
+AP[3]: :wlan0-ap-3:Infrastruktura:1:54 Mb/s:55:**  :WPA1 WPA2
+IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
+DHCP4:dhcp-4-opt-0 = val-0 | dhcp-4-opt-2 = val-2 | dhcp-4-opt-4 = val-4 | dhcp-4-opt-7 = val-7
+IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
+DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5
+CONNECTIONS:/org/freedesktop/NetworkManager/Settings/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-147.expected b/clients/tests/test-client.check-on-disk/test_004-147.expected
new file mode 100644
index 00000000..ec43aefb
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-147.expected
@@ -0,0 +1,21 @@
+location: clients/tests/test-client.py:1000:test_004()/147
+cmd: $NMCLI --mode tabular --terse -f COMMON device show wlan0
+lang: C
+returncode: 0
+stdout: 446 bytes
+>>>
+wlan0
+wifi
+13\:E0\:74\:85\:7C\:D9
+0
+20 (unavailable)
+con-vpn-1
+/org/freedesktop/NetworkManager/ActiveConnection/2
+IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
+IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-148.expected b/clients/tests/test-client.check-on-disk/test_004-148.expected
new file mode 100644
index 00000000..79e266d3
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-148.expected
@@ -0,0 +1,21 @@
+location: clients/tests/test-client.py:1000:test_004()/148
+cmd: $NMCLI --mode tabular --terse -f COMMON device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 447 bytes
+>>>
+wlan0
+wifi
+13\:E0\:74\:85\:7C\:D9
+0
+20 (niedostępne)
+con-vpn-1
+/org/freedesktop/NetworkManager/ActiveConnection/2
+IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
+IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-149.expected b/clients/tests/test-client.check-on-disk/test_004-149.expected
new file mode 100644
index 00000000..f762f005
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-149.expected
@@ -0,0 +1,23 @@
+location: clients/tests/test-client.py:1002:test_004()/149
+cmd: $NMCLI --mode tabular --terse -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: C
+returncode: 0
+stdout: 1164 bytes
+>>>
+GENERAL:wlan0:wifi:NMDeviceWifi:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):/sys/devices/virtual/wlan0::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:unknown:no:no
+WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown
+AP[1]: :wlan0-ap-2:Infra:1:54 Mbit/s:92:****:WPA1 WPA2
+AP[2]: :wlan0-ap-1:Infra:1:54 Mbit/s:81:****:WPA1 WPA2
+AP[3]: :wlan0-ap-3:Infra:1:54 Mbit/s:55:**  :WPA1 WPA2
+IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
+DHCP4:dhcp-4-opt-0 = val-0 | dhcp-4-opt-2 = val-2 | dhcp-4-opt-4 = val-4 | dhcp-4-opt-7 = val-7
+IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
+DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5
+CONNECTIONS:/org/freedesktop/NetworkManager/Settings/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-150.expected b/clients/tests/test-client.check-on-disk/test_004-150.expected
new file mode 100644
index 00000000..68b97c69
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-150.expected
@@ -0,0 +1,23 @@
+location: clients/tests/test-client.py:1002:test_004()/150
+cmd: $NMCLI --mode tabular --terse -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1207 bytes
+>>>
+GENERAL:wlan0:wifi:NMDeviceWifi:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (niedostępne):0 (Nie podano przyczyny):/sys/devices/virtual/wlan0::nie:tak:tak:nie:nie::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:nieznane
+CAPABILITIES:nie:nieznane:nie:nie
+WIFI-PROPERTIES:tak:tak:tak:tak:tak:tak:tak:nieznane:nieznane
+AP[1]: :wlan0-ap-2:Infrastruktura:1:54 Mb/s:92:****:WPA1 WPA2
+AP[2]: :wlan0-ap-1:Infrastruktura:1:54 Mb/s:81:****:WPA1 WPA2
+AP[3]: :wlan0-ap-3:Infrastruktura:1:54 Mb/s:55:**  :WPA1 WPA2
+IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
+DHCP4:dhcp-4-opt-0 = val-0 | dhcp-4-opt-2 = val-2 | dhcp-4-opt-4 = val-4 | dhcp-4-opt-7 = val-7
+IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
+DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5
+CONNECTIONS:/org/freedesktop/NetworkManager/Settings/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-151.expected b/clients/tests/test-client.check-on-disk/test_004-151.expected
new file mode 100644
index 00000000..81040467
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-151.expected
@@ -0,0 +1,82 @@
+location: clients/tests/test-client.py:984:test_004()/151
+cmd: $NMCLI --mode multiline -f ALL device wifi list
+lang: C
+returncode: 0
+stdout: 3722 bytes
+>>>
+NAME:                                   AP[1]
+SSID:                                   wlan1-ap-4
+SSID-HEX:                               776C616E312D61702D34
+BSSID:                                  94:2B:E8:F6:D2:86
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 48
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan1
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/4
+
+
+NAME:                                   AP[1]
+SSID:                                   wlan0-ap-2
+SSID-HEX:                               776C616E302D61702D32
+BSSID:                                  C0:E2:BE:E8:EF:B6
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/2
+NAME:                                   AP[2]
+SSID:                                   wlan0-ap-1
+SSID-HEX:                               776C616E302D61702D31
+BSSID:                                  61:95:77:AC:1E:4C
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 81
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/1
+NAME:                                   AP[3]
+SSID:                                   wlan0-ap-3
+SSID-HEX:                               776C616E302D61702D33
+BSSID:                                  9B:F6:B7:EC:97:76
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 55
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-152.expected b/clients/tests/test-client.check-on-disk/test_004-152.expected
new file mode 100644
index 00000000..20fd9957
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-152.expected
@@ -0,0 +1,82 @@
+location: clients/tests/test-client.py:984:test_004()/152
+cmd: $NMCLI --mode multiline -f ALL device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 3770 bytes
+>>>
+NAME:                                   AP[1]
+SSID:                                   wlan1-ap-4
+SSID-HEX:                               776C616E312D61702D34
+BSSID:                                  94:2B:E8:F6:D2:86
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 48
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan1
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/4
+
+
+NAME:                                   AP[1]
+SSID:                                   wlan0-ap-2
+SSID-HEX:                               776C616E302D61702D32
+BSSID:                                  C0:E2:BE:E8:EF:B6
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/2
+NAME:                                   AP[2]
+SSID:                                   wlan0-ap-1
+SSID-HEX:                               776C616E302D61702D31
+BSSID:                                  61:95:77:AC:1E:4C
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 81
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/1
+NAME:                                   AP[3]
+SSID:                                   wlan0-ap-3
+SSID-HEX:                               776C616E302D61702D33
+BSSID:                                  9B:F6:B7:EC:97:76
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 55
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-153.expected b/clients/tests/test-client.check-on-disk/test_004-153.expected
new file mode 100644
index 00000000..2f536c69
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-153.expected
@@ -0,0 +1,46 @@
+location: clients/tests/test-client.py:986:test_004()/153
+cmd: $NMCLI --mode multiline -f COMMON device wifi list
+lang: C
+returncode: 0
+stdout: 1478 bytes
+>>>
+IN-USE:                                  
+SSID:                                   wlan1-ap-4
+MODE:                                   Infra
+CHAN:                                   1
+RATE:                                   54 Mbit/s
+SIGNAL:                                 48
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+
+
+IN-USE:                                  
+SSID:                                   wlan0-ap-2
+MODE:                                   Infra
+CHAN:                                   1
+RATE:                                   54 Mbit/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+IN-USE:                                  
+SSID:                                   wlan0-ap-1
+MODE:                                   Infra
+CHAN:                                   1
+RATE:                                   54 Mbit/s
+SIGNAL:                                 81
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+IN-USE:                                  
+SSID:                                   wlan0-ap-3
+MODE:                                   Infra
+CHAN:                                   1
+RATE:                                   54 Mbit/s
+SIGNAL:                                 55
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-154.expected b/clients/tests/test-client.check-on-disk/test_004-154.expected
new file mode 100644
index 00000000..03dd63d2
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-154.expected
@@ -0,0 +1,46 @@
+location: clients/tests/test-client.py:986:test_004()/154
+cmd: $NMCLI --mode multiline -f COMMON device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1514 bytes
+>>>
+IN-USE:                                  
+SSID:                                   wlan1-ap-4
+MODE:                                   Infrastruktura
+CHAN:                                   1
+RATE:                                   54 Mb/s
+SIGNAL:                                 48
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+
+
+IN-USE:                                  
+SSID:                                   wlan0-ap-2
+MODE:                                   Infrastruktura
+CHAN:                                   1
+RATE:                                   54 Mb/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+IN-USE:                                  
+SSID:                                   wlan0-ap-1
+MODE:                                   Infrastruktura
+CHAN:                                   1
+RATE:                                   54 Mb/s
+SIGNAL:                                 81
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+IN-USE:                                  
+SSID:                                   wlan0-ap-3
+MODE:                                   Infrastruktura
+CHAN:                                   1
+RATE:                                   54 Mb/s
+SIGNAL:                                 55
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-155.expected b/clients/tests/test-client.check-on-disk/test_004-155.expected
new file mode 100644
index 00000000..2eae8f16
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-155.expected
@@ -0,0 +1,82 @@
+location: clients/tests/test-client.py:989:test_004()/155
+cmd: $NMCLI --mode multiline -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: C
+returncode: 0
+stdout: 3722 bytes
+>>>
+NAME:                                   AP[1]
+SSID:                                   wlan1-ap-4
+SSID-HEX:                               776C616E312D61702D34
+BSSID:                                  94:2B:E8:F6:D2:86
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 48
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan1
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/4
+
+
+NAME:                                   AP[1]
+SSID:                                   wlan0-ap-2
+SSID-HEX:                               776C616E302D61702D32
+BSSID:                                  C0:E2:BE:E8:EF:B6
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/2
+NAME:                                   AP[2]
+SSID:                                   wlan0-ap-1
+SSID-HEX:                               776C616E302D61702D31
+BSSID:                                  61:95:77:AC:1E:4C
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 81
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/1
+NAME:                                   AP[3]
+SSID:                                   wlan0-ap-3
+SSID-HEX:                               776C616E302D61702D33
+BSSID:                                  9B:F6:B7:EC:97:76
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 55
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-156.expected b/clients/tests/test-client.check-on-disk/test_004-156.expected
new file mode 100644
index 00000000..3de2d740
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-156.expected
@@ -0,0 +1,82 @@
+location: clients/tests/test-client.py:989:test_004()/156
+cmd: $NMCLI --mode multiline -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 3770 bytes
+>>>
+NAME:                                   AP[1]
+SSID:                                   wlan1-ap-4
+SSID-HEX:                               776C616E312D61702D34
+BSSID:                                  94:2B:E8:F6:D2:86
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 48
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan1
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/4
+
+
+NAME:                                   AP[1]
+SSID:                                   wlan0-ap-2
+SSID-HEX:                               776C616E302D61702D32
+BSSID:                                  C0:E2:BE:E8:EF:B6
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/2
+NAME:                                   AP[2]
+SSID:                                   wlan0-ap-1
+SSID-HEX:                               776C616E302D61702D31
+BSSID:                                  61:95:77:AC:1E:4C
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 81
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/1
+NAME:                                   AP[3]
+SSID:                                   wlan0-ap-3
+SSID-HEX:                               776C616E302D61702D33
+BSSID:                                  9B:F6:B7:EC:97:76
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 55
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-157.expected b/clients/tests/test-client.check-on-disk/test_004-157.expected
new file mode 100644
index 00000000..6bde4e05
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-157.expected
@@ -0,0 +1,29 @@
+location: clients/tests/test-client.py:991:test_004()/157
+cmd: $NMCLI --mode multiline -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 930 bytes
+>>>
+NAME:                                   AP[1]
+SSID:                                   wlan0-ap-2
+SSID-HEX:                               776C616E302D61702D32
+BSSID:                                  C0:E2:BE:E8:EF:B6
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-158.expected b/clients/tests/test-client.check-on-disk/test_004-158.expected
new file mode 100644
index 00000000..4dda764a
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-158.expected
@@ -0,0 +1,29 @@
+location: clients/tests/test-client.py:991:test_004()/158
+cmd: $NMCLI --mode multiline -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 942 bytes
+>>>
+NAME:                                   AP[1]
+SSID:                                   wlan0-ap-2
+SSID-HEX:                               776C616E302D61702D32
+BSSID:                                  C0:E2:BE:E8:EF:B6
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-159.expected b/clients/tests/test-client.check-on-disk/test_004-159.expected
new file mode 100644
index 00000000..ab27a85c
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-159.expected
@@ -0,0 +1,20 @@
+location: clients/tests/test-client.py:993:test_004()/159
+cmd: $NMCLI --mode multiline -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 369 bytes
+>>>
+IN-USE:                                  
+SSID:                                   wlan0-ap-2
+MODE:                                   Infra
+CHAN:                                   1
+RATE:                                   54 Mbit/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-160.expected b/clients/tests/test-client.check-on-disk/test_004-160.expected
new file mode 100644
index 00000000..7b86148d
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-160.expected
@@ -0,0 +1,20 @@
+location: clients/tests/test-client.py:993:test_004()/160
+cmd: $NMCLI --mode multiline -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 378 bytes
+>>>
+IN-USE:                                  
+SSID:                                   wlan0-ap-2
+MODE:                                   Infrastruktura
+CHAN:                                   1
+RATE:                                   54 Mb/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-161.expected b/clients/tests/test-client.check-on-disk/test_004-161.expected
new file mode 100644
index 00000000..144e13e0
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-161.expected
@@ -0,0 +1,29 @@
+location: clients/tests/test-client.py:996:test_004()/161
+cmd: $NMCLI --mode multiline -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 930 bytes
+>>>
+NAME:                                   AP[1]
+SSID:                                   wlan0-ap-2
+SSID-HEX:                               776C616E302D61702D32
+BSSID:                                  C0:E2:BE:E8:EF:B6
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-162.expected b/clients/tests/test-client.check-on-disk/test_004-162.expected
new file mode 100644
index 00000000..c494d837
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-162.expected
@@ -0,0 +1,29 @@
+location: clients/tests/test-client.py:996:test_004()/162
+cmd: $NMCLI --mode multiline -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 942 bytes
+>>>
+NAME:                                   AP[1]
+SSID:                                   wlan0-ap-2
+SSID-HEX:                               776C616E302D61702D32
+BSSID:                                  C0:E2:BE:E8:EF:B6
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-163.expected b/clients/tests/test-client.check-on-disk/test_004-163.expected
new file mode 100644
index 00000000..342e916e
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-163.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:998:test_004()/163
+cmd: $NMCLI --mode multiline -f ALL device show wlan0
+lang: C
+returncode: 0
+stdout: 4600 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.REASON:                         0 (No reason given)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    no
+GENERAL.NM-MANAGED:                     yes
+GENERAL.AUTOCONNECT:                    yes
+GENERAL.FIRMWARE-MISSING:               no
+GENERAL.NM-PLUGIN-MISSING:              no
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        unknown
+CAPABILITIES.CARRIER-DETECT:            no
+CAPABILITIES.SPEED:                     unknown
+CAPABILITIES.IS-SOFTWARE:               no
+CAPABILITIES.SRIOV:                     no
+WIFI-PROPERTIES.WEP:                    yes
+WIFI-PROPERTIES.WPA:                    yes
+WIFI-PROPERTIES.WPA2:                   yes
+WIFI-PROPERTIES.TKIP:                   yes
+WIFI-PROPERTIES.CCMP:                   yes
+WIFI-PROPERTIES.AP:                     yes
+WIFI-PROPERTIES.ADHOC:                  yes
+WIFI-PROPERTIES.2GHZ:                   unknown
+WIFI-PROPERTIES.5GHZ:                   unknown
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infra
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mbit/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infra
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mbit/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infra
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mbit/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-164.expected b/clients/tests/test-client.check-on-disk/test_004-164.expected
new file mode 100644
index 00000000..bd7da288
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-164.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:998:test_004()/164
+cmd: $NMCLI --mode multiline -f ALL device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 4643 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.REASON:                         0 (Nie podano przyczyny)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    nie
+GENERAL.NM-MANAGED:                     tak
+GENERAL.AUTOCONNECT:                    tak
+GENERAL.FIRMWARE-MISSING:               nie
+GENERAL.NM-PLUGIN-MISSING:              nie
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        nieznane
+CAPABILITIES.CARRIER-DETECT:            nie
+CAPABILITIES.SPEED:                     nieznane
+CAPABILITIES.IS-SOFTWARE:               nie
+CAPABILITIES.SRIOV:                     nie
+WIFI-PROPERTIES.WEP:                    tak
+WIFI-PROPERTIES.WPA:                    tak
+WIFI-PROPERTIES.WPA2:                   tak
+WIFI-PROPERTIES.TKIP:                   tak
+WIFI-PROPERTIES.CCMP:                   tak
+WIFI-PROPERTIES.AP:                     tak
+WIFI-PROPERTIES.ADHOC:                  tak
+WIFI-PROPERTIES.2GHZ:                   nieznane
+WIFI-PROPERTIES.5GHZ:                   nieznane
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infrastruktura
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mb/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infrastruktura
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mb/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infrastruktura
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mb/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-165.expected b/clients/tests/test-client.check-on-disk/test_004-165.expected
new file mode 100644
index 00000000..b1c15fa7
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-165.expected
@@ -0,0 +1,36 @@
+location: clients/tests/test-client.py:1000:test_004()/165
+cmd: $NMCLI --mode multiline -f COMMON device show wlan0
+lang: C
+returncode: 0
+stdout: 1363 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-166.expected b/clients/tests/test-client.check-on-disk/test_004-166.expected
new file mode 100644
index 00000000..798a3c72
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-166.expected
@@ -0,0 +1,36 @@
+location: clients/tests/test-client.py:1000:test_004()/166
+cmd: $NMCLI --mode multiline -f COMMON device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1364 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-167.expected b/clients/tests/test-client.check-on-disk/test_004-167.expected
new file mode 100644
index 00000000..47d0a820
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-167.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:1002:test_004()/167
+cmd: $NMCLI --mode multiline -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: C
+returncode: 0
+stdout: 4600 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.REASON:                         0 (No reason given)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    no
+GENERAL.NM-MANAGED:                     yes
+GENERAL.AUTOCONNECT:                    yes
+GENERAL.FIRMWARE-MISSING:               no
+GENERAL.NM-PLUGIN-MISSING:              no
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        unknown
+CAPABILITIES.CARRIER-DETECT:            no
+CAPABILITIES.SPEED:                     unknown
+CAPABILITIES.IS-SOFTWARE:               no
+CAPABILITIES.SRIOV:                     no
+WIFI-PROPERTIES.WEP:                    yes
+WIFI-PROPERTIES.WPA:                    yes
+WIFI-PROPERTIES.WPA2:                   yes
+WIFI-PROPERTIES.TKIP:                   yes
+WIFI-PROPERTIES.CCMP:                   yes
+WIFI-PROPERTIES.AP:                     yes
+WIFI-PROPERTIES.ADHOC:                  yes
+WIFI-PROPERTIES.2GHZ:                   unknown
+WIFI-PROPERTIES.5GHZ:                   unknown
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infra
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mbit/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infra
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mbit/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infra
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mbit/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-168.expected b/clients/tests/test-client.check-on-disk/test_004-168.expected
new file mode 100644
index 00000000..0066041a
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-168.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:1002:test_004()/168
+cmd: $NMCLI --mode multiline -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 4643 bytes
+>>>
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.REASON:                         0 (Nie podano przyczyny)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    nie
+GENERAL.NM-MANAGED:                     tak
+GENERAL.AUTOCONNECT:                    tak
+GENERAL.FIRMWARE-MISSING:               nie
+GENERAL.NM-PLUGIN-MISSING:              nie
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        nieznane
+CAPABILITIES.CARRIER-DETECT:            nie
+CAPABILITIES.SPEED:                     nieznane
+CAPABILITIES.IS-SOFTWARE:               nie
+CAPABILITIES.SRIOV:                     nie
+WIFI-PROPERTIES.WEP:                    tak
+WIFI-PROPERTIES.WPA:                    tak
+WIFI-PROPERTIES.WPA2:                   tak
+WIFI-PROPERTIES.TKIP:                   tak
+WIFI-PROPERTIES.CCMP:                   tak
+WIFI-PROPERTIES.AP:                     tak
+WIFI-PROPERTIES.ADHOC:                  tak
+WIFI-PROPERTIES.2GHZ:                   nieznane
+WIFI-PROPERTIES.5GHZ:                   nieznane
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infrastruktura
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mb/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infrastruktura
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mb/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infrastruktura
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mb/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-169.expected b/clients/tests/test-client.check-on-disk/test_004-169.expected
new file mode 100644
index 00000000..8154f557
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-169.expected
@@ -0,0 +1,95 @@
+location: clients/tests/test-client.py:984:test_004()/169
+cmd: $NMCLI --mode multiline --pretty -f ALL device wifi list
+lang: C
+returncode: 0
+stdout: 4678 bytes
+>>>
+===============================================================================
+                            Wi-Fi scan list (wlan1)
+===============================================================================
+NAME:                                   AP[1]
+SSID:                                   wlan1-ap-4
+SSID-HEX:                               776C616E312D61702D34
+BSSID:                                  94:2B:E8:F6:D2:86
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 48
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan1
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/4
+-------------------------------------------------------------------------------
+
+===============================================================================
+                            Wi-Fi scan list (wlan1)
+===============================================================================
+
+===============================================================================
+                            Wi-Fi scan list (wlan0)
+===============================================================================
+NAME:                                   AP[1]
+SSID:                                   wlan0-ap-2
+SSID-HEX:                               776C616E302D61702D32
+BSSID:                                  C0:E2:BE:E8:EF:B6
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/2
+-------------------------------------------------------------------------------
+NAME:                                   AP[2]
+SSID:                                   wlan0-ap-1
+SSID-HEX:                               776C616E302D61702D31
+BSSID:                                  61:95:77:AC:1E:4C
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 81
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/1
+-------------------------------------------------------------------------------
+NAME:                                   AP[3]
+SSID:                                   wlan0-ap-3
+SSID-HEX:                               776C616E302D61702D33
+BSSID:                                  9B:F6:B7:EC:97:76
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 55
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/3
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-170.expected b/clients/tests/test-client.check-on-disk/test_004-170.expected
new file mode 100644
index 00000000..f9e7f80e
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-170.expected
@@ -0,0 +1,95 @@
+location: clients/tests/test-client.py:984:test_004()/170
+cmd: $NMCLI --mode multiline --pretty -f ALL device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 4744 bytes
+>>>
+===============================================================================
+                     Lista skanowania sieci Wi-Fi (wlan1)
+===============================================================================
+NAME:                                   AP[1]
+SSID:                                   wlan1-ap-4
+SSID-HEX:                               776C616E312D61702D34
+BSSID:                                  94:2B:E8:F6:D2:86
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 48
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan1
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/4
+-------------------------------------------------------------------------------
+
+===============================================================================
+                     Lista skanowania sieci Wi-Fi (wlan1)
+===============================================================================
+
+===============================================================================
+                     Lista skanowania sieci Wi-Fi (wlan0)
+===============================================================================
+NAME:                                   AP[1]
+SSID:                                   wlan0-ap-2
+SSID-HEX:                               776C616E302D61702D32
+BSSID:                                  C0:E2:BE:E8:EF:B6
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/2
+-------------------------------------------------------------------------------
+NAME:                                   AP[2]
+SSID:                                   wlan0-ap-1
+SSID-HEX:                               776C616E302D61702D31
+BSSID:                                  61:95:77:AC:1E:4C
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 81
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/1
+-------------------------------------------------------------------------------
+NAME:                                   AP[3]
+SSID:                                   wlan0-ap-3
+SSID-HEX:                               776C616E302D61702D33
+BSSID:                                  9B:F6:B7:EC:97:76
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 55
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/3
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-171.expected b/clients/tests/test-client.check-on-disk/test_004-171.expected
new file mode 100644
index 00000000..3f8b9ff3
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-171.expected
@@ -0,0 +1,59 @@
+location: clients/tests/test-client.py:986:test_004()/171
+cmd: $NMCLI --mode multiline --pretty -f COMMON device wifi list
+lang: C
+returncode: 0
+stdout: 2434 bytes
+>>>
+===============================================================================
+                            Wi-Fi scan list (wlan1)
+===============================================================================
+IN-USE:                                  
+SSID:                                   wlan1-ap-4
+MODE:                                   Infra
+CHAN:                                   1
+RATE:                                   54 Mbit/s
+SIGNAL:                                 48
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+-------------------------------------------------------------------------------
+
+===============================================================================
+                            Wi-Fi scan list (wlan1)
+===============================================================================
+
+===============================================================================
+                            Wi-Fi scan list (wlan0)
+===============================================================================
+IN-USE:                                  
+SSID:                                   wlan0-ap-2
+MODE:                                   Infra
+CHAN:                                   1
+RATE:                                   54 Mbit/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+-------------------------------------------------------------------------------
+IN-USE:                                  
+SSID:                                   wlan0-ap-1
+MODE:                                   Infra
+CHAN:                                   1
+RATE:                                   54 Mbit/s
+SIGNAL:                                 81
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+-------------------------------------------------------------------------------
+IN-USE:                                  
+SSID:                                   wlan0-ap-3
+MODE:                                   Infra
+CHAN:                                   1
+RATE:                                   54 Mbit/s
+SIGNAL:                                 55
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-172.expected b/clients/tests/test-client.check-on-disk/test_004-172.expected
new file mode 100644
index 00000000..c4589f47
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-172.expected
@@ -0,0 +1,59 @@
+location: clients/tests/test-client.py:986:test_004()/172
+cmd: $NMCLI --mode multiline --pretty -f COMMON device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 2488 bytes
+>>>
+===============================================================================
+                     Lista skanowania sieci Wi-Fi (wlan1)
+===============================================================================
+IN-USE:                                  
+SSID:                                   wlan1-ap-4
+MODE:                                   Infrastruktura
+CHAN:                                   1
+RATE:                                   54 Mb/s
+SIGNAL:                                 48
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+-------------------------------------------------------------------------------
+
+===============================================================================
+                     Lista skanowania sieci Wi-Fi (wlan1)
+===============================================================================
+
+===============================================================================
+                     Lista skanowania sieci Wi-Fi (wlan0)
+===============================================================================
+IN-USE:                                  
+SSID:                                   wlan0-ap-2
+MODE:                                   Infrastruktura
+CHAN:                                   1
+RATE:                                   54 Mb/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+-------------------------------------------------------------------------------
+IN-USE:                                  
+SSID:                                   wlan0-ap-1
+MODE:                                   Infrastruktura
+CHAN:                                   1
+RATE:                                   54 Mb/s
+SIGNAL:                                 81
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+-------------------------------------------------------------------------------
+IN-USE:                                  
+SSID:                                   wlan0-ap-3
+MODE:                                   Infrastruktura
+CHAN:                                   1
+RATE:                                   54 Mb/s
+SIGNAL:                                 55
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-173.expected b/clients/tests/test-client.check-on-disk/test_004-173.expected
new file mode 100644
index 00000000..d365b536
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-173.expected
@@ -0,0 +1,95 @@
+location: clients/tests/test-client.py:989:test_004()/173
+cmd: $NMCLI --mode multiline --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: C
+returncode: 0
+stdout: 4678 bytes
+>>>
+===============================================================================
+                            Wi-Fi scan list (wlan1)
+===============================================================================
+NAME:                                   AP[1]
+SSID:                                   wlan1-ap-4
+SSID-HEX:                               776C616E312D61702D34
+BSSID:                                  94:2B:E8:F6:D2:86
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 48
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan1
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/4
+-------------------------------------------------------------------------------
+
+===============================================================================
+                            Wi-Fi scan list (wlan1)
+===============================================================================
+
+===============================================================================
+                            Wi-Fi scan list (wlan0)
+===============================================================================
+NAME:                                   AP[1]
+SSID:                                   wlan0-ap-2
+SSID-HEX:                               776C616E302D61702D32
+BSSID:                                  C0:E2:BE:E8:EF:B6
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/2
+-------------------------------------------------------------------------------
+NAME:                                   AP[2]
+SSID:                                   wlan0-ap-1
+SSID-HEX:                               776C616E302D61702D31
+BSSID:                                  61:95:77:AC:1E:4C
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 81
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/1
+-------------------------------------------------------------------------------
+NAME:                                   AP[3]
+SSID:                                   wlan0-ap-3
+SSID-HEX:                               776C616E302D61702D33
+BSSID:                                  9B:F6:B7:EC:97:76
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 55
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/3
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-174.expected b/clients/tests/test-client.check-on-disk/test_004-174.expected
new file mode 100644
index 00000000..359d92a6
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-174.expected
@@ -0,0 +1,95 @@
+location: clients/tests/test-client.py:989:test_004()/174
+cmd: $NMCLI --mode multiline --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 4744 bytes
+>>>
+===============================================================================
+                     Lista skanowania sieci Wi-Fi (wlan1)
+===============================================================================
+NAME:                                   AP[1]
+SSID:                                   wlan1-ap-4
+SSID-HEX:                               776C616E312D61702D34
+BSSID:                                  94:2B:E8:F6:D2:86
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 48
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan1
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/4
+-------------------------------------------------------------------------------
+
+===============================================================================
+                     Lista skanowania sieci Wi-Fi (wlan1)
+===============================================================================
+
+===============================================================================
+                     Lista skanowania sieci Wi-Fi (wlan0)
+===============================================================================
+NAME:                                   AP[1]
+SSID:                                   wlan0-ap-2
+SSID-HEX:                               776C616E302D61702D32
+BSSID:                                  C0:E2:BE:E8:EF:B6
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/2
+-------------------------------------------------------------------------------
+NAME:                                   AP[2]
+SSID:                                   wlan0-ap-1
+SSID-HEX:                               776C616E302D61702D31
+BSSID:                                  61:95:77:AC:1E:4C
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 81
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/1
+-------------------------------------------------------------------------------
+NAME:                                   AP[3]
+SSID:                                   wlan0-ap-3
+SSID-HEX:                               776C616E302D61702D33
+BSSID:                                  9B:F6:B7:EC:97:76
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 55
+BARS:                                   **  
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/3
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-175.expected b/clients/tests/test-client.check-on-disk/test_004-175.expected
new file mode 100644
index 00000000..26f6204e
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-175.expected
@@ -0,0 +1,33 @@
+location: clients/tests/test-client.py:991:test_004()/175
+cmd: $NMCLI --mode multiline --pretty -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 1222 bytes
+>>>
+===============================================================================
+                            Wi-Fi scan list (wlan0)
+===============================================================================
+NAME:                                   AP[1]
+SSID:                                   wlan0-ap-2
+SSID-HEX:                               776C616E302D61702D32
+BSSID:                                  C0:E2:BE:E8:EF:B6
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/2
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-176.expected b/clients/tests/test-client.check-on-disk/test_004-176.expected
new file mode 100644
index 00000000..eff16cb8
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-176.expected
@@ -0,0 +1,33 @@
+location: clients/tests/test-client.py:991:test_004()/176
+cmd: $NMCLI --mode multiline --pretty -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1240 bytes
+>>>
+===============================================================================
+                     Lista skanowania sieci Wi-Fi (wlan0)
+===============================================================================
+NAME:                                   AP[1]
+SSID:                                   wlan0-ap-2
+SSID-HEX:                               776C616E302D61702D32
+BSSID:                                  C0:E2:BE:E8:EF:B6
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/2
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-177.expected b/clients/tests/test-client.check-on-disk/test_004-177.expected
new file mode 100644
index 00000000..7b8b9000
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-177.expected
@@ -0,0 +1,24 @@
+location: clients/tests/test-client.py:993:test_004()/177
+cmd: $NMCLI --mode multiline --pretty -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 661 bytes
+>>>
+===============================================================================
+                            Wi-Fi scan list (wlan0)
+===============================================================================
+IN-USE:                                  
+SSID:                                   wlan0-ap-2
+MODE:                                   Infra
+CHAN:                                   1
+RATE:                                   54 Mbit/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-178.expected b/clients/tests/test-client.check-on-disk/test_004-178.expected
new file mode 100644
index 00000000..2597d073
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-178.expected
@@ -0,0 +1,24 @@
+location: clients/tests/test-client.py:993:test_004()/178
+cmd: $NMCLI --mode multiline --pretty -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 676 bytes
+>>>
+===============================================================================
+                     Lista skanowania sieci Wi-Fi (wlan0)
+===============================================================================
+IN-USE:                                  
+SSID:                                   wlan0-ap-2
+MODE:                                   Infrastruktura
+CHAN:                                   1
+RATE:                                   54 Mb/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-179.expected b/clients/tests/test-client.check-on-disk/test_004-179.expected
new file mode 100644
index 00000000..26bc0af2
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-179.expected
@@ -0,0 +1,33 @@
+location: clients/tests/test-client.py:996:test_004()/179
+cmd: $NMCLI --mode multiline --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 1222 bytes
+>>>
+===============================================================================
+                            Wi-Fi scan list (wlan0)
+===============================================================================
+NAME:                                   AP[1]
+SSID:                                   wlan0-ap-2
+SSID-HEX:                               776C616E302D61702D32
+BSSID:                                  C0:E2:BE:E8:EF:B6
+MODE:                                   Infra
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mbit/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 no
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/2
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-180.expected b/clients/tests/test-client.check-on-disk/test_004-180.expected
new file mode 100644
index 00000000..b2a13197
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-180.expected
@@ -0,0 +1,33 @@
+location: clients/tests/test-client.py:996:test_004()/180
+cmd: $NMCLI --mode multiline --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1240 bytes
+>>>
+===============================================================================
+                     Lista skanowania sieci Wi-Fi (wlan0)
+===============================================================================
+NAME:                                   AP[1]
+SSID:                                   wlan0-ap-2
+SSID-HEX:                               776C616E302D61702D32
+BSSID:                                  C0:E2:BE:E8:EF:B6
+MODE:                                   Infrastruktura
+CHAN:                                   1
+FREQ:                                   2412 MHz
+RATE:                                   54 Mb/s
+SIGNAL:                                 92
+BARS:                                   ****
+SECURITY:                               WPA1 WPA2
+WPA-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:                              pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:                                 wlan0
+ACTIVE:                                 nie
+IN-USE:                                  
+DBUS-PATH:                              /org/freedesktop/NetworkManager/AccessPoint/2
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-181.expected b/clients/tests/test-client.check-on-disk/test_004-181.expected
new file mode 100644
index 00000000..3b18e5b6
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-181.expected
@@ -0,0 +1,115 @@
+location: clients/tests/test-client.py:998:test_004()/181
+cmd: $NMCLI --mode multiline --pretty -f ALL device show wlan0
+lang: C
+returncode: 0
+stdout: 5691 bytes
+>>>
+===============================================================================
+                            Device details (wlan0)
+===============================================================================
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.REASON:                         0 (No reason given)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    no
+GENERAL.NM-MANAGED:                     yes
+GENERAL.AUTOCONNECT:                    yes
+GENERAL.FIRMWARE-MISSING:               no
+GENERAL.NM-PLUGIN-MISSING:              no
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        unknown
+-------------------------------------------------------------------------------
+CAPABILITIES.CARRIER-DETECT:            no
+CAPABILITIES.SPEED:                     unknown
+CAPABILITIES.IS-SOFTWARE:               no
+CAPABILITIES.SRIOV:                     no
+-------------------------------------------------------------------------------
+WIFI-PROPERTIES.WEP:                    yes
+WIFI-PROPERTIES.WPA:                    yes
+WIFI-PROPERTIES.WPA2:                   yes
+WIFI-PROPERTIES.TKIP:                   yes
+WIFI-PROPERTIES.CCMP:                   yes
+WIFI-PROPERTIES.AP:                     yes
+WIFI-PROPERTIES.ADHOC:                  yes
+WIFI-PROPERTIES.2GHZ:                   unknown
+WIFI-PROPERTIES.5GHZ:                   unknown
+-------------------------------------------------------------------------------
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infra
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mbit/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infra
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mbit/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infra
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mbit/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+-------------------------------------------------------------------------------
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+-------------------------------------------------------------------------------
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+-------------------------------------------------------------------------------
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+-------------------------------------------------------------------------------
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-182.expected b/clients/tests/test-client.check-on-disk/test_004-182.expected
new file mode 100644
index 00000000..66d96e74
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-182.expected
@@ -0,0 +1,115 @@
+location: clients/tests/test-client.py:998:test_004()/182
+cmd: $NMCLI --mode multiline --pretty -f ALL device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 5741 bytes
+>>>
+===============================================================================
+                        Informacje o urządzeniu (wlan0)
+===============================================================================
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.REASON:                         0 (Nie podano przyczyny)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    nie
+GENERAL.NM-MANAGED:                     tak
+GENERAL.AUTOCONNECT:                    tak
+GENERAL.FIRMWARE-MISSING:               nie
+GENERAL.NM-PLUGIN-MISSING:              nie
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        nieznane
+-------------------------------------------------------------------------------
+CAPABILITIES.CARRIER-DETECT:            nie
+CAPABILITIES.SPEED:                     nieznane
+CAPABILITIES.IS-SOFTWARE:               nie
+CAPABILITIES.SRIOV:                     nie
+-------------------------------------------------------------------------------
+WIFI-PROPERTIES.WEP:                    tak
+WIFI-PROPERTIES.WPA:                    tak
+WIFI-PROPERTIES.WPA2:                   tak
+WIFI-PROPERTIES.TKIP:                   tak
+WIFI-PROPERTIES.CCMP:                   tak
+WIFI-PROPERTIES.AP:                     tak
+WIFI-PROPERTIES.ADHOC:                  tak
+WIFI-PROPERTIES.2GHZ:                   nieznane
+WIFI-PROPERTIES.5GHZ:                   nieznane
+-------------------------------------------------------------------------------
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infrastruktura
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mb/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infrastruktura
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mb/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infrastruktura
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mb/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+-------------------------------------------------------------------------------
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+-------------------------------------------------------------------------------
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+-------------------------------------------------------------------------------
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+-------------------------------------------------------------------------------
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-183.expected b/clients/tests/test-client.check-on-disk/test_004-183.expected
new file mode 100644
index 00000000..ac5627ed
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-183.expected
@@ -0,0 +1,48 @@
+location: clients/tests/test-client.py:1000:test_004()/183
+cmd: $NMCLI --mode multiline --pretty -f COMMON device show wlan0
+lang: C
+returncode: 0
+stdout: 2294 bytes
+>>>
+===============================================================================
+                            Device details (wlan0)
+===============================================================================
+GENERAL.DEVICE:                         wlan0
+-------------------------------------------------------------------------------
+GENERAL.TYPE:                           wifi
+-------------------------------------------------------------------------------
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+-------------------------------------------------------------------------------
+GENERAL.MTU:                            0
+-------------------------------------------------------------------------------
+GENERAL.STATE:                          20 (unavailable)
+-------------------------------------------------------------------------------
+GENERAL.CONNECTION:                     con-vpn-1
+-------------------------------------------------------------------------------
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+-------------------------------------------------------------------------------
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+-------------------------------------------------------------------------------
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-184.expected b/clients/tests/test-client.check-on-disk/test_004-184.expected
new file mode 100644
index 00000000..a7d2dfa2
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-184.expected
@@ -0,0 +1,48 @@
+location: clients/tests/test-client.py:1000:test_004()/184
+cmd: $NMCLI --mode multiline --pretty -f COMMON device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 2302 bytes
+>>>
+===============================================================================
+                        Informacje o urządzeniu (wlan0)
+===============================================================================
+GENERAL.DEVICE:                         wlan0
+-------------------------------------------------------------------------------
+GENERAL.TYPE:                           wifi
+-------------------------------------------------------------------------------
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+-------------------------------------------------------------------------------
+GENERAL.MTU:                            0
+-------------------------------------------------------------------------------
+GENERAL.STATE:                          20 (niedostępne)
+-------------------------------------------------------------------------------
+GENERAL.CONNECTION:                     con-vpn-1
+-------------------------------------------------------------------------------
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+-------------------------------------------------------------------------------
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+-------------------------------------------------------------------------------
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-185.expected b/clients/tests/test-client.check-on-disk/test_004-185.expected
new file mode 100644
index 00000000..ead7bffe
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-185.expected
@@ -0,0 +1,115 @@
+location: clients/tests/test-client.py:1002:test_004()/185
+cmd: $NMCLI --mode multiline --pretty -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: C
+returncode: 0
+stdout: 5691 bytes
+>>>
+===============================================================================
+                            Device details (wlan0)
+===============================================================================
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (unavailable)
+GENERAL.REASON:                         0 (No reason given)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    no
+GENERAL.NM-MANAGED:                     yes
+GENERAL.AUTOCONNECT:                    yes
+GENERAL.FIRMWARE-MISSING:               no
+GENERAL.NM-PLUGIN-MISSING:              no
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        unknown
+-------------------------------------------------------------------------------
+CAPABILITIES.CARRIER-DETECT:            no
+CAPABILITIES.SPEED:                     unknown
+CAPABILITIES.IS-SOFTWARE:               no
+CAPABILITIES.SRIOV:                     no
+-------------------------------------------------------------------------------
+WIFI-PROPERTIES.WEP:                    yes
+WIFI-PROPERTIES.WPA:                    yes
+WIFI-PROPERTIES.WPA2:                   yes
+WIFI-PROPERTIES.TKIP:                   yes
+WIFI-PROPERTIES.CCMP:                   yes
+WIFI-PROPERTIES.AP:                     yes
+WIFI-PROPERTIES.ADHOC:                  yes
+WIFI-PROPERTIES.2GHZ:                   unknown
+WIFI-PROPERTIES.5GHZ:                   unknown
+-------------------------------------------------------------------------------
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infra
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mbit/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infra
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mbit/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infra
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mbit/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+-------------------------------------------------------------------------------
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+-------------------------------------------------------------------------------
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+-------------------------------------------------------------------------------
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+-------------------------------------------------------------------------------
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-186.expected b/clients/tests/test-client.check-on-disk/test_004-186.expected
new file mode 100644
index 00000000..f09d09c6
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-186.expected
@@ -0,0 +1,115 @@
+location: clients/tests/test-client.py:1002:test_004()/186
+cmd: $NMCLI --mode multiline --pretty -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 5741 bytes
+>>>
+===============================================================================
+                        Informacje o urządzeniu (wlan0)
+===============================================================================
+GENERAL.DEVICE:                         wlan0
+GENERAL.TYPE:                           wifi
+GENERAL.NM-TYPE:                        NMDeviceWifi
+GENERAL.VENDOR:                         --
+GENERAL.PRODUCT:                        --
+GENERAL.DRIVER:                         virtual
+GENERAL.DRIVER-VERSION:                 --
+GENERAL.FIRMWARE-VERSION:               --
+GENERAL.HWADDR:                         13:E0:74:85:7C:D9
+GENERAL.MTU:                            0
+GENERAL.STATE:                          20 (niedostępne)
+GENERAL.REASON:                         0 (Nie podano przyczyny)
+GENERAL.UDI:                            /sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:                       --
+GENERAL.IS-SOFTWARE:                    nie
+GENERAL.NM-MANAGED:                     tak
+GENERAL.AUTOCONNECT:                    tak
+GENERAL.FIRMWARE-MISSING:               nie
+GENERAL.NM-PLUGIN-MISSING:              nie
+GENERAL.PHYS-PORT-ID:                   --
+GENERAL.CONNECTION:                     con-vpn-1
+GENERAL.CON-UUID:                       UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:                        nieznane
+-------------------------------------------------------------------------------
+CAPABILITIES.CARRIER-DETECT:            nie
+CAPABILITIES.SPEED:                     nieznane
+CAPABILITIES.IS-SOFTWARE:               nie
+CAPABILITIES.SRIOV:                     nie
+-------------------------------------------------------------------------------
+WIFI-PROPERTIES.WEP:                    tak
+WIFI-PROPERTIES.WPA:                    tak
+WIFI-PROPERTIES.WPA2:                   tak
+WIFI-PROPERTIES.TKIP:                   tak
+WIFI-PROPERTIES.CCMP:                   tak
+WIFI-PROPERTIES.AP:                     tak
+WIFI-PROPERTIES.ADHOC:                  tak
+WIFI-PROPERTIES.2GHZ:                   nieznane
+WIFI-PROPERTIES.5GHZ:                   nieznane
+-------------------------------------------------------------------------------
+AP[1].IN-USE:                            
+AP[1].SSID:                             wlan0-ap-2
+AP[1].MODE:                             Infrastruktura
+AP[1].CHAN:                             1
+AP[1].RATE:                             54 Mb/s
+AP[1].SIGNAL:                           92
+AP[1].BARS:                             ****
+AP[1].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+AP[2].IN-USE:                            
+AP[2].SSID:                             wlan0-ap-1
+AP[2].MODE:                             Infrastruktura
+AP[2].CHAN:                             1
+AP[2].RATE:                             54 Mb/s
+AP[2].SIGNAL:                           81
+AP[2].BARS:                             ****
+AP[2].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+AP[3].IN-USE:                            
+AP[3].SSID:                             wlan0-ap-3
+AP[3].MODE:                             Infrastruktura
+AP[3].CHAN:                             1
+AP[3].RATE:                             54 Mb/s
+AP[3].SIGNAL:                           55
+AP[3].BARS:                             **  
+AP[3].SECURITY:                         WPA1 WPA2
+-------------------------------------------------------------------------------
+IP4.ADDRESS[1]:                         192.168.228.18/32
+IP4.ADDRESS[2]:                         192.168.209.179/25
+IP4.GATEWAY:                            192.168.41.120
+IP4.DOMAIN[1]:                          sear4.foo2.bar
+IP4.DOMAIN[2]:                          sear4.fo.x.y
+IP4.DOMAIN[3]:                          sear4.foo1.bar
+IP4.DOMAIN[4]:                          sear4.foo4.bar
+IP4.DOMAIN[5]:                          sear4.fo.o.bar
+IP4.WINS[1]:                            192.168.120.79
+-------------------------------------------------------------------------------
+DHCP4.OPTION[1]:                        dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:                        dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:                        dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:                        dhcp-4-opt-7 = val-7
+-------------------------------------------------------------------------------
+IP6.GATEWAY:                            --
+IP6.ROUTE[1]:                           dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:                          sear6.foo2.bar
+IP6.DOMAIN[2]:                          sear6.foo1.bar
+IP6.DOMAIN[3]:                          sear6.fo.x.y
+IP6.DOMAIN[4]:                          sear6.fo.o.bar
+IP6.DOMAIN[5]:                          sear6.foo3.bar
+IP6.DOMAIN[6]:                          sear6.foo4.bar
+-------------------------------------------------------------------------------
+DHCP6.OPTION[1]:                        dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:                        dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:                        dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:                        dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:                        dhcp-6-opt-5 = val-5
+-------------------------------------------------------------------------------
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:   UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+-------------------------------------------------------------------------------
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-187.expected b/clients/tests/test-client.check-on-disk/test_004-187.expected
new file mode 100644
index 00000000..4feaad4f
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-187.expected
@@ -0,0 +1,82 @@
+location: clients/tests/test-client.py:984:test_004()/187
+cmd: $NMCLI --mode multiline --terse -f ALL device wifi list
+lang: C
+returncode: 0
+stdout: 1470 bytes
+>>>
+NAME:AP[1]
+SSID:wlan1-ap-4
+SSID-HEX:776C616E312D61702D34
+BSSID:94:2B:E8:F6:D2:86
+MODE:Infra
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mbit/s
+SIGNAL:48
+BARS:**  
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan1
+ACTIVE:no
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/4
+
+
+NAME:AP[1]
+SSID:wlan0-ap-2
+SSID-HEX:776C616E302D61702D32
+BSSID:C0:E2:BE:E8:EF:B6
+MODE:Infra
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mbit/s
+SIGNAL:92
+BARS:****
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:no
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/2
+NAME:AP[2]
+SSID:wlan0-ap-1
+SSID-HEX:776C616E302D61702D31
+BSSID:61:95:77:AC:1E:4C
+MODE:Infra
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mbit/s
+SIGNAL:81
+BARS:****
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:no
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/1
+NAME:AP[3]
+SSID:wlan0-ap-3
+SSID-HEX:776C616E302D61702D33
+BSSID:9B:F6:B7:EC:97:76
+MODE:Infra
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mbit/s
+SIGNAL:55
+BARS:**  
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:no
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-188.expected b/clients/tests/test-client.check-on-disk/test_004-188.expected
new file mode 100644
index 00000000..d4dfac8b
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-188.expected
@@ -0,0 +1,82 @@
+location: clients/tests/test-client.py:984:test_004()/188
+cmd: $NMCLI --mode multiline --terse -f ALL device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1518 bytes
+>>>
+NAME:AP[1]
+SSID:wlan1-ap-4
+SSID-HEX:776C616E312D61702D34
+BSSID:94:2B:E8:F6:D2:86
+MODE:Infrastruktura
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mb/s
+SIGNAL:48
+BARS:**  
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan1
+ACTIVE:nie
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/4
+
+
+NAME:AP[1]
+SSID:wlan0-ap-2
+SSID-HEX:776C616E302D61702D32
+BSSID:C0:E2:BE:E8:EF:B6
+MODE:Infrastruktura
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mb/s
+SIGNAL:92
+BARS:****
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:nie
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/2
+NAME:AP[2]
+SSID:wlan0-ap-1
+SSID-HEX:776C616E302D61702D31
+BSSID:61:95:77:AC:1E:4C
+MODE:Infrastruktura
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mb/s
+SIGNAL:81
+BARS:****
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:nie
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/1
+NAME:AP[3]
+SSID:wlan0-ap-3
+SSID-HEX:776C616E302D61702D33
+BSSID:9B:F6:B7:EC:97:76
+MODE:Infrastruktura
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mb/s
+SIGNAL:55
+BARS:**  
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:nie
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-189.expected b/clients/tests/test-client.check-on-disk/test_004-189.expected
new file mode 100644
index 00000000..e707c550
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-189.expected
@@ -0,0 +1,46 @@
+location: clients/tests/test-client.py:986:test_004()/189
+cmd: $NMCLI --mode multiline --terse -f COMMON device wifi list
+lang: C
+returncode: 0
+stdout: 390 bytes
+>>>
+IN-USE: 
+SSID:wlan1-ap-4
+MODE:Infra
+CHAN:1
+RATE:54 Mbit/s
+SIGNAL:48
+BARS:**  
+SECURITY:WPA1 WPA2
+
+
+IN-USE: 
+SSID:wlan0-ap-2
+MODE:Infra
+CHAN:1
+RATE:54 Mbit/s
+SIGNAL:92
+BARS:****
+SECURITY:WPA1 WPA2
+IN-USE: 
+SSID:wlan0-ap-1
+MODE:Infra
+CHAN:1
+RATE:54 Mbit/s
+SIGNAL:81
+BARS:****
+SECURITY:WPA1 WPA2
+IN-USE: 
+SSID:wlan0-ap-3
+MODE:Infra
+CHAN:1
+RATE:54 Mbit/s
+SIGNAL:55
+BARS:**  
+SECURITY:WPA1 WPA2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-190.expected b/clients/tests/test-client.check-on-disk/test_004-190.expected
new file mode 100644
index 00000000..720cd91d
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-190.expected
@@ -0,0 +1,46 @@
+location: clients/tests/test-client.py:986:test_004()/190
+cmd: $NMCLI --mode multiline --terse -f COMMON device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 426 bytes
+>>>
+IN-USE: 
+SSID:wlan1-ap-4
+MODE:Infrastruktura
+CHAN:1
+RATE:54 Mb/s
+SIGNAL:48
+BARS:**  
+SECURITY:WPA1 WPA2
+
+
+IN-USE: 
+SSID:wlan0-ap-2
+MODE:Infrastruktura
+CHAN:1
+RATE:54 Mb/s
+SIGNAL:92
+BARS:****
+SECURITY:WPA1 WPA2
+IN-USE: 
+SSID:wlan0-ap-1
+MODE:Infrastruktura
+CHAN:1
+RATE:54 Mb/s
+SIGNAL:81
+BARS:****
+SECURITY:WPA1 WPA2
+IN-USE: 
+SSID:wlan0-ap-3
+MODE:Infrastruktura
+CHAN:1
+RATE:54 Mb/s
+SIGNAL:55
+BARS:**  
+SECURITY:WPA1 WPA2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-191.expected b/clients/tests/test-client.check-on-disk/test_004-191.expected
new file mode 100644
index 00000000..ab3f13b5
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-191.expected
@@ -0,0 +1,82 @@
+location: clients/tests/test-client.py:989:test_004()/191
+cmd: $NMCLI --mode multiline --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: C
+returncode: 0
+stdout: 1470 bytes
+>>>
+NAME:AP[1]
+SSID:wlan1-ap-4
+SSID-HEX:776C616E312D61702D34
+BSSID:94:2B:E8:F6:D2:86
+MODE:Infra
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mbit/s
+SIGNAL:48
+BARS:**  
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan1
+ACTIVE:no
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/4
+
+
+NAME:AP[1]
+SSID:wlan0-ap-2
+SSID-HEX:776C616E302D61702D32
+BSSID:C0:E2:BE:E8:EF:B6
+MODE:Infra
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mbit/s
+SIGNAL:92
+BARS:****
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:no
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/2
+NAME:AP[2]
+SSID:wlan0-ap-1
+SSID-HEX:776C616E302D61702D31
+BSSID:61:95:77:AC:1E:4C
+MODE:Infra
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mbit/s
+SIGNAL:81
+BARS:****
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:no
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/1
+NAME:AP[3]
+SSID:wlan0-ap-3
+SSID-HEX:776C616E302D61702D33
+BSSID:9B:F6:B7:EC:97:76
+MODE:Infra
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mbit/s
+SIGNAL:55
+BARS:**  
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:no
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-192.expected b/clients/tests/test-client.check-on-disk/test_004-192.expected
new file mode 100644
index 00000000..d0448817
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-192.expected
@@ -0,0 +1,82 @@
+location: clients/tests/test-client.py:989:test_004()/192
+cmd: $NMCLI --mode multiline --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 1518 bytes
+>>>
+NAME:AP[1]
+SSID:wlan1-ap-4
+SSID-HEX:776C616E312D61702D34
+BSSID:94:2B:E8:F6:D2:86
+MODE:Infrastruktura
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mb/s
+SIGNAL:48
+BARS:**  
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan1
+ACTIVE:nie
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/4
+
+
+NAME:AP[1]
+SSID:wlan0-ap-2
+SSID-HEX:776C616E302D61702D32
+BSSID:C0:E2:BE:E8:EF:B6
+MODE:Infrastruktura
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mb/s
+SIGNAL:92
+BARS:****
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:nie
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/2
+NAME:AP[2]
+SSID:wlan0-ap-1
+SSID-HEX:776C616E302D61702D31
+BSSID:61:95:77:AC:1E:4C
+MODE:Infrastruktura
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mb/s
+SIGNAL:81
+BARS:****
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:nie
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/1
+NAME:AP[3]
+SSID:wlan0-ap-3
+SSID-HEX:776C616E302D61702D33
+BSSID:9B:F6:B7:EC:97:76
+MODE:Infrastruktura
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mb/s
+SIGNAL:55
+BARS:**  
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:nie
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/3
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-193.expected b/clients/tests/test-client.check-on-disk/test_004-193.expected
new file mode 100644
index 00000000..18ace0c5
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-193.expected
@@ -0,0 +1,29 @@
+location: clients/tests/test-client.py:991:test_004()/193
+cmd: $NMCLI --mode multiline --terse -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 367 bytes
+>>>
+NAME:AP[1]
+SSID:wlan0-ap-2
+SSID-HEX:776C616E302D61702D32
+BSSID:C0:E2:BE:E8:EF:B6
+MODE:Infra
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mbit/s
+SIGNAL:92
+BARS:****
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:no
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-194.expected b/clients/tests/test-client.check-on-disk/test_004-194.expected
new file mode 100644
index 00000000..1604a8bf
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-194.expected
@@ -0,0 +1,29 @@
+location: clients/tests/test-client.py:991:test_004()/194
+cmd: $NMCLI --mode multiline --terse -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 379 bytes
+>>>
+NAME:AP[1]
+SSID:wlan0-ap-2
+SSID-HEX:776C616E302D61702D32
+BSSID:C0:E2:BE:E8:EF:B6
+MODE:Infrastruktura
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mb/s
+SIGNAL:92
+BARS:****
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:nie
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-195.expected b/clients/tests/test-client.check-on-disk/test_004-195.expected
new file mode 100644
index 00000000..89f90be6
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-195.expected
@@ -0,0 +1,20 @@
+location: clients/tests/test-client.py:993:test_004()/195
+cmd: $NMCLI --mode multiline --terse -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 97 bytes
+>>>
+IN-USE: 
+SSID:wlan0-ap-2
+MODE:Infra
+CHAN:1
+RATE:54 Mbit/s
+SIGNAL:92
+BARS:****
+SECURITY:WPA1 WPA2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-196.expected b/clients/tests/test-client.check-on-disk/test_004-196.expected
new file mode 100644
index 00000000..d2f2803c
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-196.expected
@@ -0,0 +1,20 @@
+location: clients/tests/test-client.py:993:test_004()/196
+cmd: $NMCLI --mode multiline --terse -f COMMON device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 106 bytes
+>>>
+IN-USE: 
+SSID:wlan0-ap-2
+MODE:Infrastruktura
+CHAN:1
+RATE:54 Mb/s
+SIGNAL:92
+BARS:****
+SECURITY:WPA1 WPA2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-197.expected b/clients/tests/test-client.check-on-disk/test_004-197.expected
new file mode 100644
index 00000000..2c0e1a2e
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-197.expected
@@ -0,0 +1,29 @@
+location: clients/tests/test-client.py:996:test_004()/197
+cmd: $NMCLI --mode multiline --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: C
+returncode: 0
+stdout: 367 bytes
+>>>
+NAME:AP[1]
+SSID:wlan0-ap-2
+SSID-HEX:776C616E302D61702D32
+BSSID:C0:E2:BE:E8:EF:B6
+MODE:Infra
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mbit/s
+SIGNAL:92
+BARS:****
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:no
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-198.expected b/clients/tests/test-client.check-on-disk/test_004-198.expected
new file mode 100644
index 00000000..b639cf81
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-198.expected
@@ -0,0 +1,29 @@
+location: clients/tests/test-client.py:996:test_004()/198
+cmd: $NMCLI --mode multiline --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 379 bytes
+>>>
+NAME:AP[1]
+SSID:wlan0-ap-2
+SSID-HEX:776C616E302D61702D32
+BSSID:C0:E2:BE:E8:EF:B6
+MODE:Infrastruktura
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mb/s
+SIGNAL:92
+BARS:****
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:nie
+IN-USE: 
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/2
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-199.expected b/clients/tests/test-client.check-on-disk/test_004-199.expected
new file mode 100644
index 00000000..01bbbc72
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-199.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:998:test_004()/199
+cmd: $NMCLI --mode multiline --terse -f ALL device show wlan0
+lang: C
+returncode: 0
+stdout: 2467 bytes
+>>>
+GENERAL.DEVICE:wlan0
+GENERAL.TYPE:wifi
+GENERAL.NM-TYPE:NMDeviceWifi
+GENERAL.VENDOR:
+GENERAL.PRODUCT:
+GENERAL.DRIVER:virtual
+GENERAL.DRIVER-VERSION:
+GENERAL.FIRMWARE-VERSION:
+GENERAL.HWADDR:13:E0:74:85:7C:D9
+GENERAL.MTU:0
+GENERAL.STATE:20 (unavailable)
+GENERAL.REASON:0 (No reason given)
+GENERAL.UDI:/sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:
+GENERAL.IS-SOFTWARE:no
+GENERAL.NM-MANAGED:yes
+GENERAL.AUTOCONNECT:yes
+GENERAL.FIRMWARE-MISSING:no
+GENERAL.NM-PLUGIN-MISSING:no
+GENERAL.PHYS-PORT-ID:
+GENERAL.CONNECTION:con-vpn-1
+GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:unknown
+CAPABILITIES.CARRIER-DETECT:no
+CAPABILITIES.SPEED:unknown
+CAPABILITIES.IS-SOFTWARE:no
+CAPABILITIES.SRIOV:no
+WIFI-PROPERTIES.WEP:yes
+WIFI-PROPERTIES.WPA:yes
+WIFI-PROPERTIES.WPA2:yes
+WIFI-PROPERTIES.TKIP:yes
+WIFI-PROPERTIES.CCMP:yes
+WIFI-PROPERTIES.AP:yes
+WIFI-PROPERTIES.ADHOC:yes
+WIFI-PROPERTIES.2GHZ:unknown
+WIFI-PROPERTIES.5GHZ:unknown
+AP[1].IN-USE: 
+AP[1].SSID:wlan0-ap-2
+AP[1].MODE:Infra
+AP[1].CHAN:1
+AP[1].RATE:54 Mbit/s
+AP[1].SIGNAL:92
+AP[1].BARS:****
+AP[1].SECURITY:WPA1 WPA2
+AP[2].IN-USE: 
+AP[2].SSID:wlan0-ap-1
+AP[2].MODE:Infra
+AP[2].CHAN:1
+AP[2].RATE:54 Mbit/s
+AP[2].SIGNAL:81
+AP[2].BARS:****
+AP[2].SECURITY:WPA1 WPA2
+AP[3].IN-USE: 
+AP[3].SSID:wlan0-ap-3
+AP[3].MODE:Infra
+AP[3].CHAN:1
+AP[3].RATE:54 Mbit/s
+AP[3].SIGNAL:55
+AP[3].BARS:**  
+AP[3].SECURITY:WPA1 WPA2
+IP4.ADDRESS[1]:192.168.228.18/32
+IP4.ADDRESS[2]:192.168.209.179/25
+IP4.GATEWAY:192.168.41.120
+IP4.DOMAIN[1]:sear4.foo2.bar
+IP4.DOMAIN[2]:sear4.fo.x.y
+IP4.DOMAIN[3]:sear4.foo1.bar
+IP4.DOMAIN[4]:sear4.foo4.bar
+IP4.DOMAIN[5]:sear4.fo.o.bar
+IP4.WINS[1]:192.168.120.79
+DHCP4.OPTION[1]:dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:dhcp-4-opt-7 = val-7
+IP6.GATEWAY:
+IP6.ROUTE[1]:dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:sear6.foo2.bar
+IP6.DOMAIN[2]:sear6.foo1.bar
+IP6.DOMAIN[3]:sear6.fo.x.y
+IP6.DOMAIN[4]:sear6.fo.o.bar
+IP6.DOMAIN[5]:sear6.foo3.bar
+IP6.DOMAIN[6]:sear6.foo4.bar
+DHCP6.OPTION[1]:dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-200.expected b/clients/tests/test-client.check-on-disk/test_004-200.expected
new file mode 100644
index 00000000..331d875b
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-200.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:998:test_004()/200
+cmd: $NMCLI --mode multiline --terse -f ALL device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 2510 bytes
+>>>
+GENERAL.DEVICE:wlan0
+GENERAL.TYPE:wifi
+GENERAL.NM-TYPE:NMDeviceWifi
+GENERAL.VENDOR:
+GENERAL.PRODUCT:
+GENERAL.DRIVER:virtual
+GENERAL.DRIVER-VERSION:
+GENERAL.FIRMWARE-VERSION:
+GENERAL.HWADDR:13:E0:74:85:7C:D9
+GENERAL.MTU:0
+GENERAL.STATE:20 (niedostępne)
+GENERAL.REASON:0 (Nie podano przyczyny)
+GENERAL.UDI:/sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:
+GENERAL.IS-SOFTWARE:nie
+GENERAL.NM-MANAGED:tak
+GENERAL.AUTOCONNECT:tak
+GENERAL.FIRMWARE-MISSING:nie
+GENERAL.NM-PLUGIN-MISSING:nie
+GENERAL.PHYS-PORT-ID:
+GENERAL.CONNECTION:con-vpn-1
+GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:nieznane
+CAPABILITIES.CARRIER-DETECT:nie
+CAPABILITIES.SPEED:nieznane
+CAPABILITIES.IS-SOFTWARE:nie
+CAPABILITIES.SRIOV:nie
+WIFI-PROPERTIES.WEP:tak
+WIFI-PROPERTIES.WPA:tak
+WIFI-PROPERTIES.WPA2:tak
+WIFI-PROPERTIES.TKIP:tak
+WIFI-PROPERTIES.CCMP:tak
+WIFI-PROPERTIES.AP:tak
+WIFI-PROPERTIES.ADHOC:tak
+WIFI-PROPERTIES.2GHZ:nieznane
+WIFI-PROPERTIES.5GHZ:nieznane
+AP[1].IN-USE: 
+AP[1].SSID:wlan0-ap-2
+AP[1].MODE:Infrastruktura
+AP[1].CHAN:1
+AP[1].RATE:54 Mb/s
+AP[1].SIGNAL:92
+AP[1].BARS:****
+AP[1].SECURITY:WPA1 WPA2
+AP[2].IN-USE: 
+AP[2].SSID:wlan0-ap-1
+AP[2].MODE:Infrastruktura
+AP[2].CHAN:1
+AP[2].RATE:54 Mb/s
+AP[2].SIGNAL:81
+AP[2].BARS:****
+AP[2].SECURITY:WPA1 WPA2
+AP[3].IN-USE: 
+AP[3].SSID:wlan0-ap-3
+AP[3].MODE:Infrastruktura
+AP[3].CHAN:1
+AP[3].RATE:54 Mb/s
+AP[3].SIGNAL:55
+AP[3].BARS:**  
+AP[3].SECURITY:WPA1 WPA2
+IP4.ADDRESS[1]:192.168.228.18/32
+IP4.ADDRESS[2]:192.168.209.179/25
+IP4.GATEWAY:192.168.41.120
+IP4.DOMAIN[1]:sear4.foo2.bar
+IP4.DOMAIN[2]:sear4.fo.x.y
+IP4.DOMAIN[3]:sear4.foo1.bar
+IP4.DOMAIN[4]:sear4.foo4.bar
+IP4.DOMAIN[5]:sear4.fo.o.bar
+IP4.WINS[1]:192.168.120.79
+DHCP4.OPTION[1]:dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:dhcp-4-opt-7 = val-7
+IP6.GATEWAY:
+IP6.ROUTE[1]:dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:sear6.foo2.bar
+IP6.DOMAIN[2]:sear6.foo1.bar
+IP6.DOMAIN[3]:sear6.fo.x.y
+IP6.DOMAIN[4]:sear6.fo.o.bar
+IP6.DOMAIN[5]:sear6.foo3.bar
+IP6.DOMAIN[6]:sear6.foo4.bar
+DHCP6.OPTION[1]:dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-201.expected b/clients/tests/test-client.check-on-disk/test_004-201.expected
new file mode 100644
index 00000000..4584e502
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-201.expected
@@ -0,0 +1,36 @@
+location: clients/tests/test-client.py:1000:test_004()/201
+cmd: $NMCLI --mode multiline --terse -f COMMON device show wlan0
+lang: C
+returncode: 0
+stdout: 739 bytes
+>>>
+GENERAL.DEVICE:wlan0
+GENERAL.TYPE:wifi
+GENERAL.HWADDR:13:E0:74:85:7C:D9
+GENERAL.MTU:0
+GENERAL.STATE:20 (unavailable)
+GENERAL.CONNECTION:con-vpn-1
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+IP4.ADDRESS[1]:192.168.228.18/32
+IP4.ADDRESS[2]:192.168.209.179/25
+IP4.GATEWAY:192.168.41.120
+IP4.DOMAIN[1]:sear4.foo2.bar
+IP4.DOMAIN[2]:sear4.fo.x.y
+IP4.DOMAIN[3]:sear4.foo1.bar
+IP4.DOMAIN[4]:sear4.foo4.bar
+IP4.DOMAIN[5]:sear4.fo.o.bar
+IP4.WINS[1]:192.168.120.79
+IP6.GATEWAY:
+IP6.ROUTE[1]:dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:sear6.foo2.bar
+IP6.DOMAIN[2]:sear6.foo1.bar
+IP6.DOMAIN[3]:sear6.fo.x.y
+IP6.DOMAIN[4]:sear6.fo.o.bar
+IP6.DOMAIN[5]:sear6.foo3.bar
+IP6.DOMAIN[6]:sear6.foo4.bar
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-202.expected b/clients/tests/test-client.check-on-disk/test_004-202.expected
new file mode 100644
index 00000000..053e07f9
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-202.expected
@@ -0,0 +1,36 @@
+location: clients/tests/test-client.py:1000:test_004()/202
+cmd: $NMCLI --mode multiline --terse -f COMMON device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 740 bytes
+>>>
+GENERAL.DEVICE:wlan0
+GENERAL.TYPE:wifi
+GENERAL.HWADDR:13:E0:74:85:7C:D9
+GENERAL.MTU:0
+GENERAL.STATE:20 (niedostępne)
+GENERAL.CONNECTION:con-vpn-1
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+IP4.ADDRESS[1]:192.168.228.18/32
+IP4.ADDRESS[2]:192.168.209.179/25
+IP4.GATEWAY:192.168.41.120
+IP4.DOMAIN[1]:sear4.foo2.bar
+IP4.DOMAIN[2]:sear4.fo.x.y
+IP4.DOMAIN[3]:sear4.foo1.bar
+IP4.DOMAIN[4]:sear4.foo4.bar
+IP4.DOMAIN[5]:sear4.fo.o.bar
+IP4.WINS[1]:192.168.120.79
+IP6.GATEWAY:
+IP6.ROUTE[1]:dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:sear6.foo2.bar
+IP6.DOMAIN[2]:sear6.foo1.bar
+IP6.DOMAIN[3]:sear6.fo.x.y
+IP6.DOMAIN[4]:sear6.fo.o.bar
+IP6.DOMAIN[5]:sear6.foo3.bar
+IP6.DOMAIN[6]:sear6.foo4.bar
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-203.expected b/clients/tests/test-client.check-on-disk/test_004-203.expected
new file mode 100644
index 00000000..1eb72932
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-203.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:1002:test_004()/203
+cmd: $NMCLI --mode multiline --terse -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: C
+returncode: 0
+stdout: 2467 bytes
+>>>
+GENERAL.DEVICE:wlan0
+GENERAL.TYPE:wifi
+GENERAL.NM-TYPE:NMDeviceWifi
+GENERAL.VENDOR:
+GENERAL.PRODUCT:
+GENERAL.DRIVER:virtual
+GENERAL.DRIVER-VERSION:
+GENERAL.FIRMWARE-VERSION:
+GENERAL.HWADDR:13:E0:74:85:7C:D9
+GENERAL.MTU:0
+GENERAL.STATE:20 (unavailable)
+GENERAL.REASON:0 (No reason given)
+GENERAL.UDI:/sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:
+GENERAL.IS-SOFTWARE:no
+GENERAL.NM-MANAGED:yes
+GENERAL.AUTOCONNECT:yes
+GENERAL.FIRMWARE-MISSING:no
+GENERAL.NM-PLUGIN-MISSING:no
+GENERAL.PHYS-PORT-ID:
+GENERAL.CONNECTION:con-vpn-1
+GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:unknown
+CAPABILITIES.CARRIER-DETECT:no
+CAPABILITIES.SPEED:unknown
+CAPABILITIES.IS-SOFTWARE:no
+CAPABILITIES.SRIOV:no
+WIFI-PROPERTIES.WEP:yes
+WIFI-PROPERTIES.WPA:yes
+WIFI-PROPERTIES.WPA2:yes
+WIFI-PROPERTIES.TKIP:yes
+WIFI-PROPERTIES.CCMP:yes
+WIFI-PROPERTIES.AP:yes
+WIFI-PROPERTIES.ADHOC:yes
+WIFI-PROPERTIES.2GHZ:unknown
+WIFI-PROPERTIES.5GHZ:unknown
+AP[1].IN-USE: 
+AP[1].SSID:wlan0-ap-2
+AP[1].MODE:Infra
+AP[1].CHAN:1
+AP[1].RATE:54 Mbit/s
+AP[1].SIGNAL:92
+AP[1].BARS:****
+AP[1].SECURITY:WPA1 WPA2
+AP[2].IN-USE: 
+AP[2].SSID:wlan0-ap-1
+AP[2].MODE:Infra
+AP[2].CHAN:1
+AP[2].RATE:54 Mbit/s
+AP[2].SIGNAL:81
+AP[2].BARS:****
+AP[2].SECURITY:WPA1 WPA2
+AP[3].IN-USE: 
+AP[3].SSID:wlan0-ap-3
+AP[3].MODE:Infra
+AP[3].CHAN:1
+AP[3].RATE:54 Mbit/s
+AP[3].SIGNAL:55
+AP[3].BARS:**  
+AP[3].SECURITY:WPA1 WPA2
+IP4.ADDRESS[1]:192.168.228.18/32
+IP4.ADDRESS[2]:192.168.209.179/25
+IP4.GATEWAY:192.168.41.120
+IP4.DOMAIN[1]:sear4.foo2.bar
+IP4.DOMAIN[2]:sear4.fo.x.y
+IP4.DOMAIN[3]:sear4.foo1.bar
+IP4.DOMAIN[4]:sear4.foo4.bar
+IP4.DOMAIN[5]:sear4.fo.o.bar
+IP4.WINS[1]:192.168.120.79
+DHCP4.OPTION[1]:dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:dhcp-4-opt-7 = val-7
+IP6.GATEWAY:
+IP6.ROUTE[1]:dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:sear6.foo2.bar
+IP6.DOMAIN[2]:sear6.foo1.bar
+IP6.DOMAIN[3]:sear6.fo.x.y
+IP6.DOMAIN[4]:sear6.fo.o.bar
+IP6.DOMAIN[5]:sear6.foo3.bar
+IP6.DOMAIN[6]:sear6.foo4.bar
+DHCP6.OPTION[1]:dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-204.expected b/clients/tests/test-client.check-on-disk/test_004-204.expected
new file mode 100644
index 00000000..e062a799
--- /dev/null
+++ b/clients/tests/test-client.check-on-disk/test_004-204.expected
@@ -0,0 +1,101 @@
+location: clients/tests/test-client.py:1002:test_004()/204
+cmd: $NMCLI --mode multiline --terse -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
+lang: pl_PL.UTF-8
+returncode: 0
+stdout: 2510 bytes
+>>>
+GENERAL.DEVICE:wlan0
+GENERAL.TYPE:wifi
+GENERAL.NM-TYPE:NMDeviceWifi
+GENERAL.VENDOR:
+GENERAL.PRODUCT:
+GENERAL.DRIVER:virtual
+GENERAL.DRIVER-VERSION:
+GENERAL.FIRMWARE-VERSION:
+GENERAL.HWADDR:13:E0:74:85:7C:D9
+GENERAL.MTU:0
+GENERAL.STATE:20 (niedostępne)
+GENERAL.REASON:0 (Nie podano przyczyny)
+GENERAL.UDI:/sys/devices/virtual/wlan0
+GENERAL.IP-IFACE:
+GENERAL.IS-SOFTWARE:nie
+GENERAL.NM-MANAGED:tak
+GENERAL.AUTOCONNECT:tak
+GENERAL.FIRMWARE-MISSING:nie
+GENERAL.NM-PLUGIN-MISSING:nie
+GENERAL.PHYS-PORT-ID:
+GENERAL.CONNECTION:con-vpn-1
+GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
+GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+GENERAL.METERED:nieznane
+CAPABILITIES.CARRIER-DETECT:nie
+CAPABILITIES.SPEED:nieznane
+CAPABILITIES.IS-SOFTWARE:nie
+CAPABILITIES.SRIOV:nie
+WIFI-PROPERTIES.WEP:tak
+WIFI-PROPERTIES.WPA:tak
+WIFI-PROPERTIES.WPA2:tak
+WIFI-PROPERTIES.TKIP:tak
+WIFI-PROPERTIES.CCMP:tak
+WIFI-PROPERTIES.AP:tak
+WIFI-PROPERTIES.ADHOC:tak
+WIFI-PROPERTIES.2GHZ:nieznane
+WIFI-PROPERTIES.5GHZ:nieznane
+AP[1].IN-USE: 
+AP[1].SSID:wlan0-ap-2
+AP[1].MODE:Infrastruktura
+AP[1].CHAN:1
+AP[1].RATE:54 Mb/s
+AP[1].SIGNAL:92
+AP[1].BARS:****
+AP[1].SECURITY:WPA1 WPA2
+AP[2].IN-USE: 
+AP[2].SSID:wlan0-ap-1
+AP[2].MODE:Infrastruktura
+AP[2].CHAN:1
+AP[2].RATE:54 Mb/s
+AP[2].SIGNAL:81
+AP[2].BARS:****
+AP[2].SECURITY:WPA1 WPA2
+AP[3].IN-USE: 
+AP[3].SSID:wlan0-ap-3
+AP[3].MODE:Infrastruktura
+AP[3].CHAN:1
+AP[3].RATE:54 Mb/s
+AP[3].SIGNAL:55
+AP[3].BARS:**  
+AP[3].SECURITY:WPA1 WPA2
+IP4.ADDRESS[1]:192.168.228.18/32
+IP4.ADDRESS[2]:192.168.209.179/25
+IP4.GATEWAY:192.168.41.120
+IP4.DOMAIN[1]:sear4.foo2.bar
+IP4.DOMAIN[2]:sear4.fo.x.y
+IP4.DOMAIN[3]:sear4.foo1.bar
+IP4.DOMAIN[4]:sear4.foo4.bar
+IP4.DOMAIN[5]:sear4.fo.o.bar
+IP4.WINS[1]:192.168.120.79
+DHCP4.OPTION[1]:dhcp-4-opt-0 = val-0
+DHCP4.OPTION[2]:dhcp-4-opt-2 = val-2
+DHCP4.OPTION[3]:dhcp-4-opt-4 = val-4
+DHCP4.OPTION[4]:dhcp-4-opt-7 = val-7
+IP6.GATEWAY:
+IP6.ROUTE[1]:dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086
+IP6.DOMAIN[1]:sear6.foo2.bar
+IP6.DOMAIN[2]:sear6.foo1.bar
+IP6.DOMAIN[3]:sear6.fo.x.y
+IP6.DOMAIN[4]:sear6.fo.o.bar
+IP6.DOMAIN[5]:sear6.foo3.bar
+IP6.DOMAIN[6]:sear6.foo4.bar
+DHCP6.OPTION[1]:dhcp-6-opt-1 = val-1
+DHCP6.OPTION[2]:dhcp-6-opt-2 = val-2
+DHCP6.OPTION[3]:dhcp-6-opt-3 = val-3
+DHCP6.OPTION[4]:dhcp-6-opt-4 = val-4
+DHCP6.OPTION[5]:dhcp-6-opt-5 = val-5
+CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/{2}
+CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
+
+<<<
+stderr: 0 bytes
+>>>
+
+<<<
diff --git a/clients/tests/test-client.py b/clients/tests/test-client.py
index a8e107a0..74225ccf 100755
--- a/clients/tests/test-client.py
+++ b/clients/tests/test-client.py
@@ -2,6 +2,68 @@
 
 from __future__ import print_function
 
+###############################################################################
+#
+# This test starts NetworkManager stub service in a user D-Bus session,
+# and runs nmcli against it. The output is recorded and compared to a pre-generated
+# expected output (clients/tests/test-client.check-on-disk/*.expected) which
+# is also commited to git.
+#
+###############################################################################
+#
+# HOWTO: Regenerate output
+#
+# When adjusting the tests, or when making changes to nmcli that intentionally
+# change the output, the expected output must be regenerated.
+#
+#  $ make install
+#    # (step not required every time)
+#    # The test also compare the translated output, hence, the translation
+#    # file must be installed at the configured --prefix.
+#    # You don't need to type `make install` every time, but a suitable version
+#    # of translations must be installed. In practice, the tests only care about
+#    # Polish (pl) translations.
+#    # The important part is that translations work. Test
+#    #  $ LANG=pl_PL.UTF-8 ./clients/cli/nmcli --version
+#    # also ensure that `locale -a` reports the Polish locale.
+#  $ rm -rf  clients/tests/test-client.check-on-disk/*.expected
+#    # (step seldomly required)
+#    # Sometimes, if you want to be sure that the test would generate
+#    # exactly the same .expected files, purge the previous version first.
+#    # This is only necessary, when you remove test from this file.
+#  $ NM_TEST_REGENERATE=1 make check-local-clients-tests-test-client
+#    # Set NM_TEST_REGENERATE=1 to regenerate all files.
+#  $ git diff ... ; git add ...
+#    # (optional step)
+#    # Inspect what changed, and whether it makes sense. Then commit changes
+#    # to git.
+#
+###############################################################################
+#
+# Environment variables to configure test:
+
+# (optional) The build dir. Optional, mainly used to find the nmcli binary (in case
+# ENV_NM_TEST_CLIENT_NMCLI_PATH is not set.
+ENV_NM_TEST_CLIENT_BUILDDIR   = 'NM_TEST_CLIENT_BUILDDIR'
+
+# (optional) Path to nmcli. By default, it looks for nmcli in build dir.
+# In particular, you can test also a nmcli binary installed somewhere else.
+ENV_NM_TEST_CLIENT_NMCLI_PATH = 'NM_TEST_CLIENT_NMCLI_PATH'
+
+# (optional) The test also compares tranlsated output (l10n). This requires,
+# that you first install the translation in the right place. So, by default,
+# if a test for a translation fails, it will mark the test as skipped, and not
+# fail the tests. Under the assumption, that the test cannot succeed currently.
+# By setting NM_TEST_CLIENT_CHECK_L10N=1, you can force a failure of the test.
+ENV_NM_TEST_CLIENT_CHECK_L10N = 'NM_TEST_CLIENT_CHECK_L10N'
+
+# Regenerate the .expected files. Instead of asserting, rewrite the files
+# on disk with the expected output.
+ENV_NM_TEST_REGENERATE        = 'NM_TEST_REGENERATE'
+
+#
+###############################################################################
+
 import sys
 
 try:
@@ -27,12 +89,6 @@ import time
 import dbus.service
 import dbus.mainloop.glib
 
-# The test can be configured via the following environment variables:
-ENV_NM_TEST_CLIENT_BUILDDIR   = 'NM_TEST_CLIENT_BUILDDIR'
-ENV_NM_TEST_CLIENT_NMCLI_PATH = 'NM_TEST_CLIENT_NMCLI_PATH'
-ENV_NM_TEST_CLIENT_CHECK_L10N = 'NM_TEST_CLIENT_CHECK_L10N'
-ENV_NM_TEST_REGENERATE        = 'NM_TEST_REGENERATE'
-
 ###############################################################################
 
 class PathConfiguration:
@@ -54,14 +110,18 @@ class PathConfiguration:
         assert os.path.exists(v), ("Cannot find test server at \"%s\"" % (v))
         return v
 
-###############################################################################
+    @staticmethod
+    def canonical_script_filename():
+        p = 'clients/tests/test-client.py'
+        assert (PathConfiguration.top_srcdir() + '/' + p) == os.path.abspath(__file__)
+        return p
 
-os.sys.path.append(os.path.abspath(PathConfiguration.top_srcdir() + '/examples/python'))
-import nmex
+###############################################################################
 
 dbus_session_inited = False
 
 _DEFAULT_ARG = object()
+_UNSTABLE_OUTPUT = object()
 
 ###############################################################################
 
@@ -101,11 +161,11 @@ class Util:
             return p.wait(timeout)
         if timeout is None:
             return p.wait()
-        start = nmex.nm_boot_time_ns()
+        start = NM.utils_get_timestamp_msec()
         while True:
             if p.poll() is not None:
                 return p.returncode
-            if start + (timeout * 1000000000) < nmex.nm_boot_time_ns():
+            if start + (timeout * 1000) < NM.utils_get_timestamp_msec():
                 raise Exception("timeout expired")
             time.sleep(0.05)
 
@@ -162,6 +222,21 @@ class Util:
             text = text2
         return b''.join([(t[0] if isinstance(t, tuple) else t) for t in text])
 
+    @staticmethod
+    def debug_dbus_interface():
+        # this is for printf debugging, not used in actual code.
+        os.system('busctl --user --verbose call org.freedesktop.NetworkManager /org/freedesktop org.freedesktop.DBus.ObjectManager GetManagedObjects | cat')
+
+    @staticmethod
+    def iter_nmcli_output_modes():
+        for mode in [[],
+                     ['--mode', 'tabular'],
+                     ['--mode', 'multiline']]:
+            for fmt in [[],
+                        ['--pretty'],
+                        ['--terse']]:
+                yield mode + fmt
+
 ###############################################################################
 
 class Configuration:
@@ -219,13 +294,16 @@ class NMStubServer:
         except:
             return None
 
-    def __init__(self):
+    def __init__(self, seed):
         service_path = PathConfiguration.test_networkmanager_service_path()
         self._conn = dbus.SessionBus()
+        env = os.environ.copy()
+        env['NM_TEST_NETWORKMANAGER_SERVICE_SEED'] = seed
         p = subprocess.Popen([sys.executable, service_path],
-                             stdin = subprocess.PIPE)
+                             stdin = subprocess.PIPE,
+                             env = env)
 
-        start = nmex.nm_boot_time_ns()
+        start = NM.utils_get_timestamp_msec()
         while True:
             if p.poll() is not None:
                 p.stdin.close()
@@ -235,7 +313,7 @@ class NMStubServer:
             nmobj = self._conn_get_main_object(self._conn)
             if nmobj is not None:
                 break
-            if (nmex.nm_boot_time_ns() - start) / 1000000 >= 2000:
+            if (NM.utils_get_timestamp_msec() - start) >= 2000:
                 p.stdin.close()
                 p.kill()
                 Util.popen_wait(p, 1000)
@@ -280,14 +358,16 @@ class NMStubServer:
             raise AttributeError(member)
         return self._MethodProxy(self, member[3:])
 
-    def addConnection(self, connection, verify_connection = True):
-        return self.op_AddConnection(connection, verify_connection)
+    def addConnection(self, connection, do_verify_strict = True):
+        return self.op_AddConnection(connection, do_verify_strict)
 
-    def findConnectionUuid(self, con_id):
+    def findConnectionUuid(self, con_id, required = True):
         try:
             u = Util.iter_single(self.op_FindConnections(con_id = con_id))[1]
             assert u, ("Invalid uuid %s" % (u))
         except Exception as e:
+            if not required:
+                return None
             raise AssertionError("Unexpectedly not found connection %s: %s" % (con_id, str(e)))
         return u
 
@@ -347,6 +427,7 @@ class TestNmcli(NmTestBase):
     def call_nmcli_l(self,
                      args,
                      check_on_disk = _DEFAULT_ARG,
+                     fatal_warnings = _DEFAULT_ARG,
                      expected_returncode = _DEFAULT_ARG,
                      expected_stdout = _DEFAULT_ARG,
                      expected_stderr = _DEFAULT_ARG,
@@ -360,6 +441,7 @@ class TestNmcli(NmTestBase):
             self._call_nmcli(args,
                              lang,
                              check_on_disk,
+                             fatal_warnings,
                              expected_returncode,
                              expected_stdout,
                              expected_stderr,
@@ -376,6 +458,7 @@ class TestNmcli(NmTestBase):
                    langs = None,
                    lang = None,
                    check_on_disk = _DEFAULT_ARG,
+                   fatal_warnings = _DEFAULT_ARG,
                    expected_returncode = _DEFAULT_ARG,
                    expected_stdout = _DEFAULT_ARG,
                    expected_stderr = _DEFAULT_ARG,
@@ -401,6 +484,7 @@ class TestNmcli(NmTestBase):
             self._call_nmcli(args,
                              lang,
                              check_on_disk,
+                             fatal_warnings,
                              expected_returncode,
                              expected_stdout,
                              expected_stderr,
@@ -415,6 +499,7 @@ class TestNmcli(NmTestBase):
                     args,
                     lang,
                     check_on_disk,
+                    fatal_warnings,
                     expected_returncode,
                     expected_stdout,
                     expected_stderr,
@@ -437,10 +522,9 @@ class TestNmcli(NmTestBase):
         # we cannot use frame.f_code.co_filename directly, because it might be different depending
         # on where the file lies and which is CWD. We still want to give the location of
         # the file, so that the user can easier find the source (when looking at the .expected files)
-        script_filename = 'clients/tests/test-client.py'
-        self.assertTrue(os.path.abspath(frame.f_code.co_filename).endswith(script_filename))
+        self.assertTrue(os.path.abspath(frame.f_code.co_filename).endswith('/'+PathConfiguration.canonical_script_filename()))
 
-        calling_location = '%s:%d:%s()/%d' % (script_filename, frame.f_lineno, frame.f_code.co_name, calling_num)
+        calling_location = '%s:%d:%s()/%d' % (PathConfiguration.canonical_script_filename(), frame.f_lineno, frame.f_code.co_name, calling_num)
 
         if lang is None or lang == 'C':
             lang = 'C'
@@ -468,6 +552,8 @@ class TestNmcli(NmTestBase):
         env['LIBNM_USE_SESSION_BUS'] = '1'
         env['LIBNM_USE_NO_UDEV'] = '1'
         env['TERM'] = 'linux'
+        if fatal_warnings is _DEFAULT_ARG or fatal_warnings:
+            env['G_DEBUG'] = 'fatal-warnings'
 
         args = [conf.get(ENV_NM_TEST_CLIENT_NMCLI_PATH)] + list(args)
 
@@ -478,8 +564,8 @@ class TestNmcli(NmTestBase):
 
         if check_on_disk is _DEFAULT_ARG:
             check_on_disk = (    expected_returncode is _DEFAULT_ARG
-                             and expected_stdout is _DEFAULT_ARG
-                             and expected_stderr is _DEFAULT_ARG)
+                             and (expected_stdout is _DEFAULT_ARG or expected_stdout is _UNSTABLE_OUTPUT)
+                             and (expected_stderr is _DEFAULT_ARG or expected_stderr is _UNSTABLE_OUTPUT))
         if expected_returncode is _DEFAULT_ARG:
             expected_returncode = None
         if expected_stdout is _DEFAULT_ARG:
@@ -492,8 +578,15 @@ class TestNmcli(NmTestBase):
                         stdout,
                         stderr):
 
-            stdout = Util.replace_text(stdout, replace_stdout)
-            stderr = Util.replace_text(stderr, replace_stderr)
+            if expected_stdout is _UNSTABLE_OUTPUT:
+                stdout = '<UNSTABLE OUTPUT>'.encode('utf-8')
+            else:
+                stdout = Util.replace_text(stdout, replace_stdout)
+
+            if expected_stderr is _UNSTABLE_OUTPUT:
+                stderr = '<UNSTABLE OUTPUT>'.encode('utf-8')
+            else:
+                stderr = Util.replace_text(stderr, replace_stderr)
 
             if sort_lines_stdout:
                 stdout = b'\n'.join(sorted(stdout.split(b'\n')))
@@ -501,13 +594,13 @@ class TestNmcli(NmTestBase):
             ignore_l10n_diff = (    lang != 'C'
                                 and not conf.get(ENV_NM_TEST_CLIENT_CHECK_L10N))
 
-            if expected_stderr is not None:
+            if expected_stderr is not None and expected_stderr is not _UNSTABLE_OUTPUT:
                 if expected_stderr != stderr:
                     if ignore_l10n_diff:
                         self._skip_test_for_l10n_diff.append(test_name)
                     else:
                         self.assertEqual(expected_stderr, stderr)
-            if expected_stdout is not None:
+            if expected_stdout is not None and expected_stdout is not _UNSTABLE_OUTPUT:
                 if expected_stdout != stdout:
                     if ignore_l10n_diff:
                         self._skip_test_for_l10n_diff.append(test_name)
@@ -516,6 +609,13 @@ class TestNmcli(NmTestBase):
             if expected_returncode is not None:
                 self.assertEqual(expected_returncode, returncode)
 
+            if fatal_warnings is _DEFAULT_ARG:
+                if expected_returncode != -5:
+                    self.assertNotEqual(returncode, -5)
+            elif fatal_warnings:
+                if expected_returncode is None:
+                   self.assertEqual(returncode, -5)
+
             dirname = PathConfiguration.srcdir() + '/test-client.check-on-disk'
             basename = test_name + '.expected'
             filename = os.path.abspath(dirname + '/' + basename)
@@ -552,7 +652,8 @@ class TestNmcli(NmTestBase):
                     print("\n\n\nThe file '%s' does not have the expected content:" % (filename))
                     print("ACTUAL OUTPUT:\n[[%s]]\n" % (content_new))
                     print("EXPECT OUTPUT:\n[[%s]]\n" % (content_old))
-                    print("Let the test write the file by rerunning with NM_TEST_REGENERATE=1\n\n")
+                    print("Let the test write the file by rerunning with NM_TEST_REGENERATE=1")
+                    print("See howto in %s for details.\n" % (PathConfiguration.canonical_script_filename()))
                     raise AssertionError("Unexpected output of command, expected %s. Rerun test with NM_TEST_REGENERATE=1 to regenerate files" % (filename))
             else:
                 if not w:
@@ -579,7 +680,7 @@ class TestNmcli(NmTestBase):
 
     def async_start(self):
         # limit number parallel running jobs
-        for async_job in self._async_jobs[0:10]:
+        for async_job in self._async_jobs[0:15]:
             async_job.start()
 
     def async_wait(self):
@@ -592,7 +693,7 @@ class TestNmcli(NmTestBase):
             self.skipTest("Own D-Bus session for testing is not initialized. Do you have dbus-run-session available?")
         if NM is None:
             self.skipTest("gi.NM is not available. Did you build with introspection?")
-        self.srv = NMStubServer()
+        self.srv = NMStubServer(self._testMethodName)
         self._calling_num = {}
         self._skip_test_for_l10n_diff = []
         self._async_jobs = []
@@ -656,13 +757,8 @@ class TestNmcli(NmTestBase):
 
         self.call_nmcli_l(['bogus', 's'])
 
-        for mode in [[],
-                     ['--mode', 'tabular'],
-                     ['--mode', 'multiline']]:
-            for fmt in [[],
-                        ['--pretty'],
-                        ['--terse']]:
-                self.call_nmcli_l(mode + fmt + ['general', 'permissions'])
+        for mode in Util.iter_nmcli_output_modes():
+            self.call_nmcli_l(mode + ['general', 'permissions'])
 
     def test_002(self):
         self.init_001()
@@ -733,9 +829,21 @@ class TestNmcli(NmTestBase):
             self.call_nmcli_l(['-f', 'ALL', 'con'],
                               replace_stdout = replace_stdout)
 
+            self.call_nmcli_l(['-f', 'ALL', 'con', 's', '-a'],
+                              replace_stdout = replace_stdout)
+
+            self.call_nmcli_l(['-f', 'ACTIVE-PATH,DEVICE,UUID', 'con', 's', '-act'],
+                              replace_stdout = replace_stdout)
+
+            self.call_nmcli_l(['-f', 'UUID,NAME', 'con', 's', '--active'],
+                              replace_stdout = replace_stdout)
+
             self.call_nmcli_l(['-f', 'ALL', 'con', 's', 'ethernet'],
                               replace_stdout = replace_stdout)
 
+            self.call_nmcli_l(['-f', 'GENERAL.STATE', 'con', 's', 'ethernet'],
+                              replace_stdout = replace_stdout)
+
             self.call_nmcli_l(['con', 's', 'ethernet'],
                               replace_stdout = replace_stdout)
 
@@ -745,38 +853,52 @@ class TestNmcli(NmTestBase):
             self.call_nmcli_l(['-f', 'ALL', 'dev', 'show', 'eth0'],
                               replace_stdout = replace_stdout)
 
+            self.call_nmcli_l(['-f', 'ALL', '-t', 'dev', 'show', 'eth0'],
+                              replace_stdout = replace_stdout)
+
         self.async_wait()
 
         self.srv.setProperty('/org/freedesktop/NetworkManager/ActiveConnection/1',
                              'State',
                              dbus.UInt32(NM.ActiveConnectionState.DEACTIVATING))
 
-        self.call_nmcli_l(['-f', 'ALL', 'con'],
-                          replace_stdout = replace_stdout)
+        for i in [0, 1]:
+            if i == 1:
+                self.async_wait()
+                self.srv.op_ConnectionSetVisible(False, con_id = 'ethernet')
 
-        self.call_nmcli_l(['-f', 'UUID,TYPE', 'con'],
-                          replace_stdout = replace_stdout)
+            self.call_nmcli_l(['-f', 'ALL', 'con'],
+                              replace_stdout = replace_stdout)
 
-        self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'multiline', 'con'],
-                          replace_stdout = replace_stdout)
+            self.call_nmcli_l(['-f', 'UUID,TYPE', 'con'],
+                              replace_stdout = replace_stdout)
 
-        self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'multiline', '--terse', 'con'],
-                          replace_stdout = replace_stdout)
+            self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'multiline', 'con'],
+                              replace_stdout = replace_stdout)
 
-        self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'multiline', '--pretty', 'con'],
-                          replace_stdout = replace_stdout)
+            self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'multiline', '--terse', 'con'],
+                              replace_stdout = replace_stdout)
 
-        self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'tabular', 'con'],
-                          replace_stdout = replace_stdout)
+            self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'multiline', '--pretty', 'con'],
+                              replace_stdout = replace_stdout)
 
-        self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'tabular', '--terse', 'con'],
-                          replace_stdout = replace_stdout)
+            self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'tabular', 'con'],
+                              replace_stdout = replace_stdout)
 
-        self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'tabular', '--pretty', 'con'],
-                          replace_stdout = replace_stdout)
+            self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'tabular', '--terse', 'con'],
+                              replace_stdout = replace_stdout)
 
-        self.call_nmcli_l(['con', 's', 'ethernet'],
-                          replace_stdout = replace_stdout)
+            self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'tabular', '--pretty', 'con'],
+                              replace_stdout = replace_stdout)
+
+            self.call_nmcli_l(['con', 's', 'ethernet'],
+                              replace_stdout = replace_stdout)
+
+            self.call_nmcli_l(['c', 's', '/org/freedesktop/NetworkManager/ActiveConnection/1'],
+                              replace_stdout = replace_stdout)
+
+            self.call_nmcli_l(['-f', 'all', 'dev', 'show', 'eth0'],
+                              replace_stdout = replace_stdout)
 
     def test_004(self):
         self.init_001()
@@ -789,10 +911,95 @@ class TestNmcli(NmTestBase):
                         replace_stdout = replace_stdout)
 
         self.call_nmcli(['connection', 'mod', 'con-xx1', 'ip.gateway', ''])
-        self.call_nmcli(['connection', 'mod', 'con-xx1', 'ipv4.gateway', '172.16.0.1'])
+        self.call_nmcli(['connection', 'mod', 'con-xx1', 'ipv4.gateway', '172.16.0.1'], lang = 'pl')
         self.call_nmcli(['connection', 'mod', 'con-xx1', 'ipv6.gateway', '::99'])
         self.call_nmcli(['connection', 'mod', 'con-xx1', '802.abc', ''])
         self.call_nmcli(['connection', 'mod', 'con-xx1', '802-11-wireless.band', 'a'])
+        self.call_nmcli(['connection', 'mod', 'con-xx1', 'ipv4.addresses', '192.168.77.5/24', 'ipv4.routes', '2.3.4.5/32 192.168.77.1', 'ipv6.addresses', '1:2:3:4::6/64', 'ipv6.routes', '1:2:3:4:5:6::5/128'])
+        self.call_nmcli_l(['con', 's', 'con-xx1'],
+                          replace_stdout = replace_stdout)
+
+        self.async_wait()
+
+        replace_stdout.append((lambda: self.srv.findConnectionUuid('con-vpn-1'), 'UUID-con-vpn-1-REPLACED-REPLACED-REP'))
+
+        self.call_nmcli(['connection', 'add', 'type', 'vpn', 'con-name', 'con-vpn-1', 'ifname', '*', 'vpn-type', 'openvpn', 'vpn.data', 'key1 = val1,   key2  = val2, key3=val3'],
+                        replace_stdout = replace_stdout)
+
+        self.call_nmcli_l(['con', 's'],
+                          replace_stdout = replace_stdout)
+        self.call_nmcli_l(['con', 's', 'con-vpn-1'],
+                          replace_stdout = replace_stdout)
+
+        self.call_nmcli(['con', 'up', 'con-xx1'])
+        self.call_nmcli_l(['con', 's'],
+                          replace_stdout = replace_stdout)
+
+        self.call_nmcli(['con', 'up', 'con-vpn-1'])
+        self.call_nmcli_l(['con', 's'],
+                          replace_stdout = replace_stdout)
+        self.call_nmcli_l(['con', 's', 'con-vpn-1'],
+                          replace_stdout = replace_stdout)
+
+        self.async_wait()
+
+        self.srv.setProperty('/org/freedesktop/NetworkManager/ActiveConnection/2',
+                             'VpnState',
+                             dbus.UInt32(NM.VpnConnectionState.ACTIVATED))
+
+        self.call_nmcli_l(['con', 's', 'con-vpn-1'],
+                          replace_stdout = replace_stdout)
+        self.call_nmcli_l(['-t', 'con', 's', 'con-vpn-1'],
+                          replace_stdout = replace_stdout)
+
+        self.call_nmcli_l(['-f', 'ALL', 'con', 's', 'con-vpn-1'],
+                          replace_stdout = replace_stdout)
+
+        # This only filters 'vpn' settings from the connection profile.
+        # Contrary to '-f GENERAL' below, it does not show the properties of
+        # the activated VPN connection. This is a nmcli bug.
+        self.call_nmcli_l(['-f', 'VPN', 'con', 's', 'con-vpn-1'],
+                          replace_stdout = replace_stdout)
+
+        self.call_nmcli_l(['-f', 'GENERAL', 'con', 's', 'con-vpn-1'],
+                          replace_stdout = replace_stdout)
+
+        self.call_nmcli_l(['dev', 'show', 'wlan0'],
+                          replace_stdout = replace_stdout)
+
+        self.call_nmcli_l(['-f', 'all', 'dev', 'show', 'wlan0'],
+                          replace_stdout = replace_stdout)
+
+        self.call_nmcli_l(['-f', 'GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES', 'dev', 'show', 'wlan0'],
+                          replace_stdout = replace_stdout)
+
+        self.call_nmcli_l(['-f', 'GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES', '-t', 'dev', 'show', 'wlan0'],
+                          replace_stdout = replace_stdout)
+
+        self.call_nmcli_l(['-f', 'DEVICE,TYPE,DBUS-PATH', 'dev'],
+                          replace_stdout = replace_stdout)
+
+        for mode in Util.iter_nmcli_output_modes():
+             self.call_nmcli_l(mode + ['-f', 'ALL', 'device', 'wifi', 'list' ],
+                               replace_stdout = replace_stdout)
+             self.call_nmcli_l(mode + ['-f', 'COMMON', 'device', 'wifi', 'list' ],
+                               replace_stdout = replace_stdout)
+             self.call_nmcli_l(mode + ['-f', 'NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH',
+                               'device', 'wifi', 'list'],
+                               replace_stdout = replace_stdout)
+             self.call_nmcli_l(mode + ['-f', 'ALL', 'device', 'wifi', 'list', 'bssid', 'C0:E2:BE:E8:EF:B6'],
+                               replace_stdout = replace_stdout)
+             self.call_nmcli_l(mode + ['-f', 'COMMON', 'device', 'wifi', 'list', 'bssid', 'C0:E2:BE:E8:EF:B6'],
+                               replace_stdout = replace_stdout)
+             self.call_nmcli_l(mode + ['-f', 'NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH',
+                               'device', 'wifi', 'list', 'bssid', 'C0:E2:BE:E8:EF:B6'],
+                               replace_stdout = replace_stdout)
+             self.call_nmcli_l(mode + ['-f', 'ALL', 'device', 'show', 'wlan0' ],
+                               replace_stdout = replace_stdout)
+             self.call_nmcli_l(mode + ['-f', 'COMMON', 'device', 'show', 'wlan0' ],
+                               replace_stdout = replace_stdout)
+             self.call_nmcli_l(mode + ['-f', 'GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS', 'device', 'show', 'wlan0' ],
+                               replace_stdout = replace_stdout)
 
 ###############################################################################
 
@@ -841,6 +1048,7 @@ def main():
     if conf.get(ENV_NM_TEST_REGENERATE):
         make_filename = PathConfiguration.srcdir() + '/test-client.check-on-disk/Makefile.am'
         s_new = '# generated with `NM_TEST_REGENERATE=1 make check`\n' + \
+                '# See howto in "' + PathConfiguration.canonical_script_filename() + '"\n' + \
                 '\n' + \
                 'clients_tests_expected_files = \\\n' + \
                 ''.join([('\tclients/tests/test-client.check-on-disk/%s \\\n' % f) for f in sorted(file_list)]) + \
diff --git a/configure b/configure
index af82cd5f..d5f1a82d 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for NetworkManager 1.11.4.
+# Generated by GNU Autoconf 2.69 for NetworkManager 1.11.90.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager>.
 #
@@ -591,8 +591,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='NetworkManager'
 PACKAGE_TARNAME='NetworkManager'
-PACKAGE_VERSION='1.11.4'
-PACKAGE_STRING='NetworkManager 1.11.4'
+PACKAGE_VERSION='1.11.90'
+PACKAGE_STRING='NetworkManager 1.11.90'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager'
 PACKAGE_URL=''
 
@@ -1727,7 +1727,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures NetworkManager 1.11.4 to adapt to many kinds of systems.
+\`configure' configures NetworkManager 1.11.90 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1797,7 +1797,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of NetworkManager 1.11.4:";;
+     short | recursive ) echo "Configuration of NetworkManager 1.11.90:";;
    esac
   cat <<\_ACEOF
 
@@ -1887,7 +1887,7 @@ Optional Packages:
   --with-wext=yes         Enable or disable Linux Wireless Extensions
   --with-iwd=yes          Support IWD as wifi-backend in addition to
                           wpa_supplicant (experimental)
-  --without-libnm-glib    don"'"t build legacy libraries
+  --with-libnm-glib       build legacy libraries
   --with-udev-dir=DIR     Absolute path of the udev base directory. Set to
                           'no' not to install the udev rules
   --with-systemdsystemunitdir=DIR
@@ -2138,7 +2138,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-NetworkManager configure 1.11.4
+NetworkManager configure 1.11.90
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2911,7 +2911,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by NetworkManager $as_me 1.11.4, which was
+It was created by NetworkManager $as_me 1.11.90, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3781,7 +3781,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='NetworkManager'
- VERSION='1.11.4'
+ VERSION='1.11.90'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -17965,8 +17965,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 NM_MAJOR_VERSION=1
 NM_MINOR_VERSION=11
-NM_MICRO_VERSION=4
-NM_VERSION=1.11.4
+NM_MICRO_VERSION=90
+NM_VERSION=1.11.90
 
 
 
@@ -17974,7 +17974,7 @@ NM_VERSION=1.11.4
 
 
 
-NM_GIT_SHA=960632ee7bf3c4fcfe06f9222e70f15ac00f8b07
+NM_GIT_SHA=e0d7e2933432bcf3f2c421b242084552b6783b95
 
 if test """" != "no-config-h" ; then
 
@@ -21892,7 +21892,7 @@ if test "${with_libnm_glib+set}" = set; then :
 fi
 
 fake_typelibs=no
-if test "$with_libnm_glib" != "no"; then
+if test "$with_libnm_glib" == "yes"; then
 
 pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS" >&5
@@ -21977,8 +21977,6 @@ $as_echo "yes" >&6; }
 	:
 fi
 
-	with_libnm_glib=yes
-
 	if test "${found_introspection}" = "yes"; then
 		# Extract the first word of "glib-compile-resources", so it can be a program name with args.
 set dummy glib-compile-resources; ac_word=$2
@@ -22024,8 +22022,10 @@ fi
 			fake_typelibs=yes
 		fi
 	fi
+else
+	with_libnm_glib=no
 fi
- if test "$with_libnm_glib" != "no"; then
+ if test "$with_libnm_glib" == "yes"; then
   WITH_LEGACY_LIBRARIES_TRUE=
   WITH_LEGACY_LIBRARIES_FALSE='#'
 else
@@ -29277,7 +29277,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by NetworkManager $as_me 1.11.4, which was
+This file was extended by NetworkManager $as_me 1.11.90, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -29343,7 +29343,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-NetworkManager config.status 1.11.4
+NetworkManager config.status 1.11.90
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 23cf8019..641af9bf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8,7 +8,7 @@ dnl    "shared/nm-version-macros.h.in"
 dnl  - update number in meson.build
 m4_define([nm_major_version], [1])
 m4_define([nm_minor_version], [11])
-m4_define([nm_micro_version], [4])
+m4_define([nm_micro_version], [90])
 m4_define([nm_version],
           [nm_major_version.nm_minor_version.nm_micro_version])
 
@@ -256,26 +256,26 @@ AC_SUBST(GLIB_LIBS)
 GOBJECT_INTROSPECTION_CHECK([0.9.6])
 
 AC_ARG_WITH(libnm-glib,
-            AS_HELP_STRING([--without-libnm-glib],
-                           [don"'"t build legacy libraries]))
+            AS_HELP_STRING([--with-libnm-glib],
+                           [build legacy libraries]))
 fake_typelibs=no
-if test "$with_libnm_glib" != "no"; then
+if test "$with_libnm_glib" == "yes"; then
 	PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.1 dbus-glib-1 >= 0.94, :,
 	                  [AC_MSG_FAILURE([$DBUS_PKG_ERRORS
 
 Configure with --without-libnm-glib if you do not need the legacy libraries])
 	                  ])
 
-	with_libnm_glib=yes
-
 	if test "${found_introspection}" = "yes"; then
 		AC_PATH_PROG(GLIB_COMPILE_RESOURCES, glib-compile-resources)
 		if ! test x"$GLIB_COMPILE_RESOURCES" = x""; then
 			fake_typelibs=yes
 		fi
 	fi
+else
+	with_libnm_glib=no
 fi
-AM_CONDITIONAL(WITH_LEGACY_LIBRARIES, test "$with_libnm_glib" != "no")
+AM_CONDITIONAL(WITH_LEGACY_LIBRARIES, test "$with_libnm_glib" == "yes")
 if test "$fake_typelibs" = "yes"; then
 	AC_DEFINE(WITH_FAKE_TYPELIBS, 1, [Define for libnm to prevent GIR from loading libnm-glib])
 else
diff --git a/docs/api/dbus-org.freedesktop.NetworkManager.Device.Wireless.xml b/docs/api/dbus-org.freedesktop.NetworkManager.Device.Wireless.xml
index 19519dde..d478c7db 100644
--- a/docs/api/dbus-org.freedesktop.NetworkManager.Device.Wireless.xml
+++ b/docs/api/dbus-org.freedesktop.NetworkManager.Device.Wireless.xml
@@ -31,6 +31,7 @@
 <link linkend="gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.AccessPoints">AccessPoints</link>          readable   ao
 <link linkend="gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.ActiveAccessPoint">ActiveAccessPoint</link>     readable   o
 <link linkend="gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.WirelessCapabilities">WirelessCapabilities</link>  readable   u
+<link linkend="gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.LastScan">LastScan</link>              readable   x
 </synopsis>
   </refsect1>
 <refsect1 role="desc" id="gdbus-interface-org-freedesktop-NetworkManager-Device-Wireless">
@@ -205,6 +206,17 @@ WirelessCapabilities  readable   u
 </para><para>        Returns: <link linkend="NMDeviceWifiCapabilities">NMDeviceWifiCapabilities</link>
 </para>
 </refsect2>
+<refsect2 role="property" id="gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.LastScan">
+  <title>The "LastScan" property</title>
+  <indexterm zone="gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.LastScan"><primary sortas="DeviceWifi:LastScan">org.freedesktop.NetworkManager.Device.Wireless:LastScan</primary></indexterm>
+<programlisting>
+LastScan  readable   x
+</programlisting>
+<para>        The timestamp (in CLOCK_BOOTTIME milliseconds) for the last finished network scan.
+        A value of -1 means the device never scanned for access points.
+</para><para>        Since: 1.12
+</para>
+</refsect2>
 </refsect1>
 </refentry>
 
diff --git a/docs/api/dbus-org.freedesktop.NetworkManager.Settings.Connection.xml b/docs/api/dbus-org.freedesktop.NetworkManager.Settings.Connection.xml
index 8ebe1047..5e08acf5 100644
--- a/docs/api/dbus-org.freedesktop.NetworkManager.Settings.Connection.xml
+++ b/docs/api/dbus-org.freedesktop.NetworkManager.Settings.Connection.xml
@@ -33,8 +33,9 @@
   <refsect1 role="properties">
     <title role="properties.title">Properties</title>
     <synopsis>
-<link linkend="gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Unsaved">Unsaved</link>  readable   b
-<link linkend="gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Flags">Flags</link>    readable   u
+<link linkend="gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Unsaved">Unsaved</link>   readable   b
+<link linkend="gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Flags">Flags</link>     readable   u
+<link linkend="gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Filename">Filename</link>  readable   s
 </synopsis>
   </refsect1>
 <refsect1 role="desc" id="gdbus-interface-org-freedesktop-NetworkManager-Settings-Connection">
@@ -275,6 +276,16 @@ Flags  readable   u
 </para><para>        Since: 1.12
 </para>
 </refsect2>
+<refsect2 role="property" id="gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Filename">
+  <title>The "Filename" property</title>
+  <indexterm zone="gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Filename"><primary sortas=".Settings.Connection:Filename">org.freedesktop.NetworkManager.Settings.Connection:Filename</primary></indexterm>
+<programlisting>
+Filename  readable   s
+</programlisting>
+<para>        File that stores the connection in case the connection is file-backed.
+</para><para>        Since: 1.12
+</para>
+</refsect2>
 </refsect1>
 </refentry>
 
diff --git a/docs/api/html/NetworkManager.conf.html b/docs/api/html/NetworkManager.conf.html
index c592fb9b..e4b7fe25 100644
--- a/docs/api/html/NetworkManager.conf.html
+++ b/docs/api/html/NetworkManager.conf.html
@@ -125,7 +125,7 @@ plugins-=remove-me
 <p>
             Lists system settings plugin names separated by ','. These
             plugins are used to read and write system-wide
-            connections. When multiple plugins are specified, the
+            connection profiles. When multiple plugins are specified, the
             connections are read from all listed plugins. When writing
             connections, the plugins will be asked to save the
             connection in the order listed here; if the first plugin
@@ -135,15 +135,12 @@ plugins-=remove-me
             to the user.
           </p>
 <p>
-            If NetworkManager defines a distro-specific
-            network-configuration plugin for your system, then that
-            will normally be listed here. (See below for the available
-            plugins.) Note that the <code class="literal">keyfile</code> plugin
-            is always appended to the end of this list (if it doesn't
-            already appear earlier in the list), so if there is no
-            distro-specific plugin for your system then you can leave
-            this key unset and NetworkManager will fall back to using
-            <code class="literal">keyfile</code>.
+            The default value and the number of available plugins is
+            distro-specific. See <a class="xref" href="NetworkManager.conf.html#settings-plugins" title="Plugins">the section called “Plugins”</a>
+            below for the available plugins.
+            Note that NetworkManager's native <code class="literal">keyfile</code>
+            plugin is always appended to the end of this list (if it doesn't
+            already appear earlier in the list).
           </p>
 </td>
 </tr>
@@ -357,8 +354,11 @@ no-auto-default=*
         a symlink.</p>
 <p><code class="literal">file</code>: NetworkManager will write
         <code class="filename">/etc/resolv.conf</code> as file. If it finds
-        a symlink, it will follow the symlink and update the target
-        instead.</p>
+        a symlink to an existing target, it will follow the symlink and
+        update the target instead. In no case will an existing symlink
+        be replaced by a file. Note that older versions of NetworkManager
+        behaved differently and would replace dangling symlinks with a
+        plain file.</p>
 <p><code class="literal">resolvconf</code>: NetworkManager will run
         resolvconf to update the DNS configuration.</p>
 <p><code class="literal">netconfig</code>: NetworkManager will run
@@ -674,6 +674,10 @@ ipv6.ip6-privacy=0
           </p></td>
 </tr>
 <tr>
+<td><p><span class="term"><code class="varname">ipv6.dhcp-duid</code></span></p></td>
+<td><p>If left unspecified, it defaults to "lease".</p></td>
+</tr>
+<tr>
 <td><p><span class="term"><code class="varname">ipv6.dhcp-timeout</code></span></p></td>
 <td><p>If left unspecified, the default value for
            the interface type is used.</p></td>
@@ -1180,7 +1184,11 @@ enable=nm-version-min:1.3,nm-version-min:1.2.6,nm-version-min:1.0.16
     </p>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.17"></a><h2>Plugins</h2>
+<a name="settings-plugins"></a><h2>Plugins</h2>
+<p>
+      Settings plugins for reading and writing connection profiles. The number of
+      available plugins is distribution specific.
+    </p>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -1196,6 +1204,8 @@ enable=nm-version-min:1.3,nm-version-min:1.2.6,nm-version-min:1.0.16
             capabilities that NetworkManager has. It writes files out
             in an .ini-style format in
             <code class="filename">/etc/NetworkManager/system-connections</code>.
+            See <a class="link" href="nm-settings-keyfile.html" title="nm-settings-keyfile"><span class="citerefentry"><span class="refentrytitle">nm-settings-keyfile</span>(5)</span></a>
+            for details about the file format.
           </p>
 <p>
             The stored connection file may contain passwords, secrets and
@@ -1224,6 +1234,9 @@ enable=nm-version-min:1.3,nm-version-min:1.2.6,nm-version-min:1.0.16
             Enabling <code class="literal">ifcfg-rh</code> implicitly enables
             <code class="literal">ibft</code> plugin, if it is available.
             This can be disabled by adding <code class="literal">no-ibft</code>.
+            See <code class="filename">/usr/share/doc/initscripts/sysconfig.txt</code>
+            and <a class="link" href="nm-settings-ifcfg-rh.html" title="nm-settings-ifcfg-rh"><span class="citerefentry"><span class="refentrytitle">nm-settings-ifcfg-rh</span>(5)</span></a>
+            for more information about the ifcfg file format.
           </p></td>
 </tr>
 <tr>
diff --git a/docs/api/html/NetworkManager.devhelp2 b/docs/api/html/NetworkManager.devhelp2
index b9113657..b253093e 100644
--- a/docs/api/html/NetworkManager.devhelp2
+++ b/docs/api/html/NetworkManager.devhelp2
@@ -216,6 +216,7 @@
     <keyword type="signal" name="The &quot;PropertiesChanged&quot; signal" link="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-Settings-Connection.PropertiesChanged"/>
     <keyword type="property" name="The &quot;Unsaved&quot; property" link="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Unsaved"/>
     <keyword type="property" name="The &quot;Flags&quot; property" link="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Flags"/>
+    <keyword type="property" name="The &quot;Filename&quot; property" link="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Filename"/>
     <keyword type="method" name="The Reapply() method" link="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-method-org-freedesktop-NetworkManager-Device.Reapply"/>
     <keyword type="method" name="The GetAppliedConnection() method" link="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-method-org-freedesktop-NetworkManager-Device.GetAppliedConnection"/>
     <keyword type="method" name="The Disconnect() method" link="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-method-org-freedesktop-NetworkManager-Device.Disconnect"/>
@@ -369,6 +370,7 @@
     <keyword type="property" name="The &quot;AccessPoints&quot; property" link="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.AccessPoints"/>
     <keyword type="property" name="The &quot;ActiveAccessPoint&quot; property" link="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.ActiveAccessPoint"/>
     <keyword type="property" name="The &quot;WirelessCapabilities&quot; property" link="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.WirelessCapabilities"/>
+    <keyword type="property" name="The &quot;LastScan&quot; property" link="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.LastScan"/>
     <keyword type="method" name="The GetNspList() method" link="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-method-org-freedesktop-NetworkManager-Device-WiMax.GetNspList"/>
     <keyword type="signal" name="The &quot;PropertiesChanged&quot; signal" link="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-signal-org-freedesktop-NetworkManager-Device-WiMax.PropertiesChanged"/>
     <keyword type="signal" name="The &quot;NspAdded&quot; signal" link="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-signal-org-freedesktop-NetworkManager-Device-WiMax.NspAdded"/>
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html
index 574942ca..055196df 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html
@@ -59,6 +59,7 @@
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.AccessPoints" title='The "AccessPoints" property'>AccessPoints</a>          readable   ao
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.ActiveAccessPoint" title='The "ActiveAccessPoint" property'>ActiveAccessPoint</a>     readable   o
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.WirelessCapabilities" title='The "WirelessCapabilities" property'>WirelessCapabilities</a>  readable   u
+<a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.LastScan" title='The "LastScan" property'>LastScan</a>              readable   x
 </pre>
 </div>
 <div class="refsect1">
@@ -256,6 +257,18 @@ WirelessCapabilities  readable   u
 <p>        Returns: <a class="link" href="nm-dbus-types.html#NMDeviceWifiCapabilities" title="enum NMDeviceWifiCapabilities">NMDeviceWifiCapabilities</a>
 </p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.LastScan"></a><h3>The "LastScan" property</h3>
+<pre class="programlisting">
+LastScan  readable   x
+</pre>
+<p>        The timestamp (in CLOCK_BOOTTIME milliseconds) for the last finished network scan.
+        A value of -1 means the device never scanned for access points.
+</p>
+<p>        Since: 1.12
+</p>
+</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.Connection.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.Connection.html
index d8fa9874..4a7189b6 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.Connection.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.Connection.html
@@ -61,8 +61,9 @@
 <div class="refsect1">
 <a name="id-1.4.7.2.5"></a><h2>Properties</h2>
 <pre class="synopsis">
-<a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Unsaved" title='The "Unsaved" property'>Unsaved</a>  readable   b
-<a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Flags" title='The "Flags" property'>Flags</a>    readable   u
+<a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Unsaved" title='The "Unsaved" property'>Unsaved</a>   readable   b
+<a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Flags" title='The "Flags" property'>Flags</a>     readable   u
+<a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Filename" title='The "Filename" property'>Filename</a>  readable   s
 </pre>
 </div>
 <div class="refsect1">
@@ -333,6 +334,17 @@ Flags  readable   u
 <p>        Since: 1.12
 </p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Filename"></a><h3>The "Filename" property</h3>
+<pre class="programlisting">
+Filename  readable   s
+</pre>
+<p>        File that stores the connection in case the connection is file-backed.
+</p>
+<p>        Since: 1.12
+</p>
+</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/api/html/index.html b/docs/api/html/index.html
index 9115ed15..f471513e 100644
--- a/docs/api/html/index.html
+++ b/docs/api/html/index.html
@@ -16,7 +16,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">NetworkManager Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for NetworkManager 1.11.4
+      for NetworkManager 1.11.90
 
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="https://developer.gnome.org/NetworkManager/stable/" target="_top">https://developer.gnome.org/NetworkManager/stable/</a>.
diff --git a/docs/api/html/ix01.html b/docs/api/html/ix01.html
index c02efd08..eb7b1136 100644
--- a/docs/api/html/ix01.html
+++ b/docs/api/html/ix01.html
@@ -26,1467 +26,1477 @@
 <div class="indexdiv">
 <h3>Symbols</h3>
 <dl>
-<dt id="ientry-idm45308860912576">org.freedesktop.NetworkManager.AccessPoint, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-interface-org-freedesktop-NetworkManager-AccessPoint.top_of_page">org.freedesktop.NetworkManager.AccessPoint</a>
+<dt id="ientry-idm45223147440528">org.freedesktop.NetworkManager.AccessPoint, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-interface-org-freedesktop-NetworkManager-AccessPoint.top_of_page">org.freedesktop.NetworkManager.AccessPoint</a>
 </dt>
-<dt id="ientry-idm45308864596512">org.freedesktop.NetworkManager.AccessPoint::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-signal-org-freedesktop-NetworkManager-AccessPoint.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223148297776">org.freedesktop.NetworkManager.AccessPoint::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-signal-org-freedesktop-NetworkManager-AccessPoint.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308855359024">org.freedesktop.NetworkManager.AccessPoint:Flags, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.Flags">The "Flags" property</a>
+<dt id="ientry-idm45223148261952">org.freedesktop.NetworkManager.AccessPoint:Flags, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.Flags">The "Flags" property</a>
 </dt>
-<dt id="ientry-idm45308864121216">org.freedesktop.NetworkManager.AccessPoint:Frequency, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.Frequency">The "Frequency" property</a>
+<dt id="ientry-idm45223145444720">org.freedesktop.NetworkManager.AccessPoint:Frequency, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.Frequency">The "Frequency" property</a>
 </dt>
-<dt id="ientry-idm45308862069488">org.freedesktop.NetworkManager.AccessPoint:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.HwAddress">The "HwAddress" property</a>
+<dt id="ientry-idm45223145440528">org.freedesktop.NetworkManager.AccessPoint:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.HwAddress">The "HwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308865202480">org.freedesktop.NetworkManager.AccessPoint:LastSeen, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.LastSeen">The "LastSeen" property</a>
+<dt id="ientry-idm45223145422656">org.freedesktop.NetworkManager.AccessPoint:LastSeen, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.LastSeen">The "LastSeen" property</a>
 </dt>
-<dt id="ientry-idm45308865857552">org.freedesktop.NetworkManager.AccessPoint:MaxBitrate, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.MaxBitrate">The "MaxBitrate" property</a>
+<dt id="ientry-idm45223145431104">org.freedesktop.NetworkManager.AccessPoint:MaxBitrate, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.MaxBitrate">The "MaxBitrate" property</a>
 </dt>
-<dt id="ientry-idm45308856468704">org.freedesktop.NetworkManager.AccessPoint:Mode, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.Mode">The "Mode" property</a>
+<dt id="ientry-idm45223145436320">org.freedesktop.NetworkManager.AccessPoint:Mode, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.Mode">The "Mode" property</a>
 </dt>
-<dt id="ientry-idm45308862599520">org.freedesktop.NetworkManager.AccessPoint:RsnFlags, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.RsnFlags">The "RsnFlags" property</a>
+<dt id="ientry-idm45223148480096">org.freedesktop.NetworkManager.AccessPoint:RsnFlags, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.RsnFlags">The "RsnFlags" property</a>
 </dt>
-<dt id="ientry-idm45308856467040">org.freedesktop.NetworkManager.AccessPoint:Ssid, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.Ssid">The "Ssid" property</a>
+<dt id="ientry-idm45223148474864">org.freedesktop.NetworkManager.AccessPoint:Ssid, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.Ssid">The "Ssid" property</a>
 </dt>
-<dt id="ientry-idm45308858694224">org.freedesktop.NetworkManager.AccessPoint:Strength, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.Strength">The "Strength" property</a>
+<dt id="ientry-idm45223145426864">org.freedesktop.NetworkManager.AccessPoint:Strength, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.Strength">The "Strength" property</a>
 </dt>
-<dt id="ientry-idm45308866289664">org.freedesktop.NetworkManager.AccessPoint:WpaFlags, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.WpaFlags">The "WpaFlags" property</a>
+<dt id="ientry-idm45223148485312">org.freedesktop.NetworkManager.AccessPoint:WpaFlags, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.WpaFlags">The "WpaFlags" property</a>
 </dt>
-<dt id="ientry-idm45308861135824">org.freedesktop.NetworkManager.AgentManager, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AgentManager.html#gdbus-interface-org-freedesktop-NetworkManager-AgentManager.top_of_page">org.freedesktop.NetworkManager.AgentManager</a>
+<dt id="ientry-idm45223157522464">org.freedesktop.NetworkManager.AgentManager, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AgentManager.html#gdbus-interface-org-freedesktop-NetworkManager-AgentManager.top_of_page">org.freedesktop.NetworkManager.AgentManager</a>
 </dt>
-<dt id="ientry-idm45308866127760">org.freedesktop.NetworkManager.AgentManager.Register(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AgentManager.html#gdbus-method-org-freedesktop-NetworkManager-AgentManager.Register">The Register() method</a>
+<dt id="ientry-idm45223158502912">org.freedesktop.NetworkManager.AgentManager.Register(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AgentManager.html#gdbus-method-org-freedesktop-NetworkManager-AgentManager.Register">The Register() method</a>
 </dt>
-<dt id="ientry-idm45308863606448">org.freedesktop.NetworkManager.AgentManager.RegisterWithCapabilities(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AgentManager.html#gdbus-method-org-freedesktop-NetworkManager-AgentManager.RegisterWithCapabilities">The RegisterWithCapabilities() method</a>
+<dt id="ientry-idm45223153025008">org.freedesktop.NetworkManager.AgentManager.RegisterWithCapabilities(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AgentManager.html#gdbus-method-org-freedesktop-NetworkManager-AgentManager.RegisterWithCapabilities">The RegisterWithCapabilities() method</a>
 </dt>
-<dt id="ientry-idm45308862506592">org.freedesktop.NetworkManager.AgentManager.Unregister(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AgentManager.html#gdbus-method-org-freedesktop-NetworkManager-AgentManager.Unregister">The Unregister() method</a>
+<dt id="ientry-idm45223153228896">org.freedesktop.NetworkManager.AgentManager.Unregister(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.AgentManager.html#gdbus-method-org-freedesktop-NetworkManager-AgentManager.Unregister">The Unregister() method</a>
 </dt>
-<dt id="ientry-idm45308864204720">org.freedesktop.NetworkManager.Device, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-interface-org-freedesktop-NetworkManager-Device.top_of_page">org.freedesktop.NetworkManager.Device</a>
+<dt id="ientry-idm45223157324192">org.freedesktop.NetworkManager.Device, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-interface-org-freedesktop-NetworkManager-Device.top_of_page">org.freedesktop.NetworkManager.Device</a>
 </dt>
-<dt id="ientry-idm45308866657328">org.freedesktop.NetworkManager.Device.Adsl, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Adsl.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Adsl.top_of_page">org.freedesktop.NetworkManager.Device.Adsl</a>
+<dt id="ientry-idm45223154343168">org.freedesktop.NetworkManager.Device.Adsl, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Adsl.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Adsl.top_of_page">org.freedesktop.NetworkManager.Device.Adsl</a>
 </dt>
-<dt id="ientry-idm45308862530304">org.freedesktop.NetworkManager.Device.Adsl::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Adsl.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Adsl.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223155136096">org.freedesktop.NetworkManager.Device.Adsl::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Adsl.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Adsl.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308864620112">org.freedesktop.NetworkManager.Device.Adsl:Carrier, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Adsl.html#gdbus-property-org-freedesktop-NetworkManager-Device-Adsl.Carrier">The "Carrier" property</a>
+<dt id="ientry-idm45223158265328">org.freedesktop.NetworkManager.Device.Adsl:Carrier, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Adsl.html#gdbus-property-org-freedesktop-NetworkManager-Device-Adsl.Carrier">The "Carrier" property</a>
 </dt>
-<dt id="ientry-idm45308862583216">org.freedesktop.NetworkManager.Device.Bluetooth, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Bluetooth.top_of_page">org.freedesktop.NetworkManager.Device.Bluetooth</a>
+<dt id="ientry-idm45223156183360">org.freedesktop.NetworkManager.Device.Bluetooth, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Bluetooth.top_of_page">org.freedesktop.NetworkManager.Device.Bluetooth</a>
 </dt>
-<dt id="ientry-idm45308855151360">org.freedesktop.NetworkManager.Device.Bluetooth::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Bluetooth.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223150498528">org.freedesktop.NetworkManager.Device.Bluetooth::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Bluetooth.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308858603456">org.freedesktop.NetworkManager.Device.Bluetooth:BtCapabilities, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bluetooth.BtCapabilities">The "BtCapabilities" property</a>
+<dt id="ientry-idm45223150269696">org.freedesktop.NetworkManager.Device.Bluetooth:BtCapabilities, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bluetooth.BtCapabilities">The "BtCapabilities" property</a>
 </dt>
-<dt id="ientry-idm45308858114912">org.freedesktop.NetworkManager.Device.Bluetooth:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bluetooth.HwAddress">The "HwAddress" property</a>
+<dt id="ientry-idm45223150168112">org.freedesktop.NetworkManager.Device.Bluetooth:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bluetooth.HwAddress">The "HwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308858607680">org.freedesktop.NetworkManager.Device.Bluetooth:Name, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bluetooth.Name">The "Name" property</a>
+<dt id="ientry-idm45223150164304">org.freedesktop.NetworkManager.Device.Bluetooth:Name, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bluetooth.Name">The "Name" property</a>
 </dt>
-<dt id="ientry-idm45308866062176">org.freedesktop.NetworkManager.Device.Bond, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Bond.top_of_page">org.freedesktop.NetworkManager.Device.Bond</a>
+<dt id="ientry-idm45223155688576">org.freedesktop.NetworkManager.Device.Bond, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Bond.top_of_page">org.freedesktop.NetworkManager.Device.Bond</a>
 </dt>
-<dt id="ientry-idm45308865906352">org.freedesktop.NetworkManager.Device.Bond::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Bond.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223150487440">org.freedesktop.NetworkManager.Device.Bond::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Bond.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308861124144">org.freedesktop.NetworkManager.Device.Bond:Carrier, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bond.Carrier">The "Carrier" property</a>
+<dt id="ientry-idm45223157155984">org.freedesktop.NetworkManager.Device.Bond:Carrier, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bond.Carrier">The "Carrier" property</a>
 </dt>
-<dt id="ientry-idm45308864547552">org.freedesktop.NetworkManager.Device.Bond:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bond.HwAddress">The "HwAddress" property</a>
+<dt id="ientry-idm45223150066704">org.freedesktop.NetworkManager.Device.Bond:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bond.HwAddress">The "HwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308863367952">org.freedesktop.NetworkManager.Device.Bond:Slaves, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bond.Slaves">The "Slaves" property</a>
+<dt id="ientry-idm45223157151984">org.freedesktop.NetworkManager.Device.Bond:Slaves, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bond.Slaves">The "Slaves" property</a>
 </dt>
-<dt id="ientry-idm45308863138368">org.freedesktop.NetworkManager.Device.Bridge, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Bridge.top_of_page">org.freedesktop.NetworkManager.Device.Bridge</a>
+<dt id="ientry-idm45223155824048">org.freedesktop.NetworkManager.Device.Bridge, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Bridge.top_of_page">org.freedesktop.NetworkManager.Device.Bridge</a>
 </dt>
-<dt id="ientry-idm45308863832176">org.freedesktop.NetworkManager.Device.Bridge::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Bridge.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223150468416">org.freedesktop.NetworkManager.Device.Bridge::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Bridge.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308861678000">org.freedesktop.NetworkManager.Device.Bridge:Carrier, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bridge.Carrier">The "Carrier" property</a>
+<dt id="ientry-idm45223150478208">org.freedesktop.NetworkManager.Device.Bridge:Carrier, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bridge.Carrier">The "Carrier" property</a>
 </dt>
-<dt id="ientry-idm45308863693680">org.freedesktop.NetworkManager.Device.Bridge:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bridge.HwAddress">The "HwAddress" property</a>
+<dt id="ientry-idm45223150482016">org.freedesktop.NetworkManager.Device.Bridge:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bridge.HwAddress">The "HwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308861674112">org.freedesktop.NetworkManager.Device.Bridge:Slaves, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bridge.Slaves">The "Slaves" property</a>
+<dt id="ientry-idm45223157185376">org.freedesktop.NetworkManager.Device.Bridge:Slaves, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bridge.Slaves">The "Slaves" property</a>
 </dt>
-<dt id="ientry-idm45308855264720">org.freedesktop.NetworkManager.Device.Delete(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-method-org-freedesktop-NetworkManager-Device.Delete">The Delete() method</a>
+<dt id="ientry-idm45223149994736">org.freedesktop.NetworkManager.Device.Delete(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-method-org-freedesktop-NetworkManager-Device.Delete">The Delete() method</a>
 </dt>
-<dt id="ientry-idm45308855268992">org.freedesktop.NetworkManager.Device.Disconnect(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-method-org-freedesktop-NetworkManager-Device.Disconnect">The Disconnect() method</a>
+<dt id="ientry-idm45223149999008">org.freedesktop.NetworkManager.Device.Disconnect(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-method-org-freedesktop-NetworkManager-Device.Disconnect">The Disconnect() method</a>
 </dt>
-<dt id="ientry-idm45308865736336">org.freedesktop.NetworkManager.Device.Dummy, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Dummy.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Dummy.top_of_page">org.freedesktop.NetworkManager.Device.Dummy</a>
+<dt id="ientry-idm45223157629584">org.freedesktop.NetworkManager.Device.Dummy, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Dummy.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Dummy.top_of_page">org.freedesktop.NetworkManager.Device.Dummy</a>
 </dt>
-<dt id="ientry-idm45308864639232">org.freedesktop.NetworkManager.Device.Dummy::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Dummy.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Dummy.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223152841920">org.freedesktop.NetworkManager.Device.Dummy::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Dummy.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Dummy.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308864622864">org.freedesktop.NetworkManager.Device.Dummy:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Dummy.html#gdbus-property-org-freedesktop-NetworkManager-Device-Dummy.HwAddress">The "HwAddress" property</a>
+<dt id="ientry-idm45223153814144">org.freedesktop.NetworkManager.Device.Dummy:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Dummy.html#gdbus-property-org-freedesktop-NetworkManager-Device-Dummy.HwAddress">The "HwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308864859472">org.freedesktop.NetworkManager.Device.Generic, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Generic.top_of_page">org.freedesktop.NetworkManager.Device.Generic</a>
+<dt id="ientry-idm45223152261776">org.freedesktop.NetworkManager.Device.Generic, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Generic.top_of_page">org.freedesktop.NetworkManager.Device.Generic</a>
 </dt>
-<dt id="ientry-idm45308858726640">org.freedesktop.NetworkManager.Device.Generic::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Generic.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223150245232">org.freedesktop.NetworkManager.Device.Generic::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Generic.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308855379568">org.freedesktop.NetworkManager.Device.Generic:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html#gdbus-property-org-freedesktop-NetworkManager-Device-Generic.HwAddress">The "HwAddress" property</a>
+<dt id="ientry-idm45223147480992">org.freedesktop.NetworkManager.Device.Generic:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html#gdbus-property-org-freedesktop-NetworkManager-Device-Generic.HwAddress">The "HwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308858636688">org.freedesktop.NetworkManager.Device.Generic:TypeDescription, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html#gdbus-property-org-freedesktop-NetworkManager-Device-Generic.TypeDescription">The "TypeDescription" property</a>
+<dt id="ientry-idm45223147476928">org.freedesktop.NetworkManager.Device.Generic:TypeDescription, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html#gdbus-property-org-freedesktop-NetworkManager-Device-Generic.TypeDescription">The "TypeDescription" property</a>
 </dt>
-<dt id="ientry-idm45308855281888">org.freedesktop.NetworkManager.Device.GetAppliedConnection(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-method-org-freedesktop-NetworkManager-Device.GetAppliedConnection">The GetAppliedConnection() method</a>
+<dt id="ientry-idm45223157199024">org.freedesktop.NetworkManager.Device.GetAppliedConnection(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-method-org-freedesktop-NetworkManager-Device.GetAppliedConnection">The GetAppliedConnection() method</a>
 </dt>
-<dt id="ientry-idm45308865995792">org.freedesktop.NetworkManager.Device.Infiniband, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Infiniband.top_of_page">org.freedesktop.NetworkManager.Device.Infiniband</a>
+<dt id="ientry-idm45223154529136">org.freedesktop.NetworkManager.Device.Infiniband, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Infiniband.top_of_page">org.freedesktop.NetworkManager.Device.Infiniband</a>
 </dt>
-<dt id="ientry-idm45308855184208">org.freedesktop.NetworkManager.Device.Infiniband::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Infiniband.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223147522288">org.freedesktop.NetworkManager.Device.Infiniband::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Infiniband.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308855212432">org.freedesktop.NetworkManager.Device.Infiniband:Carrier, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html#gdbus-property-org-freedesktop-NetworkManager-Device-Infiniband.Carrier">The "Carrier" property</a>
+<dt id="ientry-idm45223146905136">org.freedesktop.NetworkManager.Device.Infiniband:Carrier, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html#gdbus-property-org-freedesktop-NetworkManager-Device-Infiniband.Carrier">The "Carrier" property</a>
 </dt>
-<dt id="ientry-idm45308855216240">org.freedesktop.NetworkManager.Device.Infiniband:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html#gdbus-property-org-freedesktop-NetworkManager-Device-Infiniband.HwAddress">The "HwAddress" property</a>
+<dt id="ientry-idm45223146908944">org.freedesktop.NetworkManager.Device.Infiniband:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html#gdbus-property-org-freedesktop-NetworkManager-Device-Infiniband.HwAddress">The "HwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308862112448">org.freedesktop.NetworkManager.Device.IPTunnel, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-interface-org-freedesktop-NetworkManager-Device-IPTunnel.top_of_page">org.freedesktop.NetworkManager.Device.IPTunnel</a>
+<dt id="ientry-idm45223152984992">org.freedesktop.NetworkManager.Device.IPTunnel, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-interface-org-freedesktop-NetworkManager-Device-IPTunnel.top_of_page">org.freedesktop.NetworkManager.Device.IPTunnel</a>
 </dt>
-<dt id="ientry-idm45308856063104">org.freedesktop.NetworkManager.Device.IPTunnel::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-signal-org-freedesktop-NetworkManager-Device-IPTunnel.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223147432000">org.freedesktop.NetworkManager.Device.IPTunnel::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-signal-org-freedesktop-NetworkManager-Device-IPTunnel.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308855650640">org.freedesktop.NetworkManager.Device.IPTunnel:EncapsulationLimit, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.EncapsulationLimit">The "EncapsulationLimit" property</a>
+<dt id="ientry-idm45223150129392">org.freedesktop.NetworkManager.Device.IPTunnel:EncapsulationLimit, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.EncapsulationLimit">The "EncapsulationLimit" property</a>
 </dt>
-<dt id="ientry-idm45308855377616">org.freedesktop.NetworkManager.Device.IPTunnel:Flags, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Flags">The "Flags" property</a>
+<dt id="ientry-idm45223147145568">org.freedesktop.NetworkManager.Device.IPTunnel:Flags, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Flags">The "Flags" property</a>
 </dt>
-<dt id="ientry-idm45308855646240">org.freedesktop.NetworkManager.Device.IPTunnel:FlowLabel, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.FlowLabel">The "FlowLabel" property</a>
+<dt id="ientry-idm45223147149920">org.freedesktop.NetworkManager.Device.IPTunnel:FlowLabel, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.FlowLabel">The "FlowLabel" property</a>
 </dt>
-<dt id="ientry-idm45308855659088">org.freedesktop.NetworkManager.Device.IPTunnel:InputKey, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.InputKey">The "InputKey" property</a>
+<dt id="ientry-idm45223150137840">org.freedesktop.NetworkManager.Device.IPTunnel:InputKey, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.InputKey">The "InputKey" property</a>
 </dt>
-<dt id="ientry-idm45308858709920">org.freedesktop.NetworkManager.Device.IPTunnel:Local, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Local">The "Local" property</a>
+<dt id="ientry-idm45223147501632">org.freedesktop.NetworkManager.Device.IPTunnel:Local, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Local">The "Local" property</a>
 </dt>
-<dt id="ientry-idm45308858718144">org.freedesktop.NetworkManager.Device.IPTunnel:Mode, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Mode">The "Mode" property</a>
+<dt id="ientry-idm45223150194464">org.freedesktop.NetworkManager.Device.IPTunnel:Mode, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Mode">The "Mode" property</a>
 </dt>
-<dt id="ientry-idm45308855654928">org.freedesktop.NetworkManager.Device.IPTunnel:OutputKey, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.OutputKey">The "OutputKey" property</a>
+<dt id="ientry-idm45223150133680">org.freedesktop.NetworkManager.Device.IPTunnel:OutputKey, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.OutputKey">The "OutputKey" property</a>
 </dt>
-<dt id="ientry-idm45308858714032">org.freedesktop.NetworkManager.Device.IPTunnel:Parent, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Parent">The "Parent" property</a>
+<dt id="ientry-idm45223147505744">org.freedesktop.NetworkManager.Device.IPTunnel:Parent, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Parent">The "Parent" property</a>
 </dt>
-<dt id="ientry-idm45308855663392">org.freedesktop.NetworkManager.Device.IPTunnel:PathMtuDiscovery, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.PathMtuDiscovery">The "PathMtuDiscovery" property</a>
+<dt id="ientry-idm45223150142144">org.freedesktop.NetworkManager.Device.IPTunnel:PathMtuDiscovery, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.PathMtuDiscovery">The "PathMtuDiscovery" property</a>
 </dt>
-<dt id="ientry-idm45308858705808">org.freedesktop.NetworkManager.Device.IPTunnel:Remote, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Remote">The "Remote" property</a>
+<dt id="ientry-idm45223147497520">org.freedesktop.NetworkManager.Device.IPTunnel:Remote, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Remote">The "Remote" property</a>
 </dt>
-<dt id="ientry-idm45308855667680">org.freedesktop.NetworkManager.Device.IPTunnel:Tos, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Tos">The "Tos" property</a>
+<dt id="ientry-idm45223150146336">org.freedesktop.NetworkManager.Device.IPTunnel:Tos, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Tos">The "Tos" property</a>
 </dt>
-<dt id="ientry-idm45308858701696">org.freedesktop.NetworkManager.Device.IPTunnel:Ttl, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Ttl">The "Ttl" property</a>
+<dt id="ientry-idm45223147493408">org.freedesktop.NetworkManager.Device.IPTunnel:Ttl, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Ttl">The "Ttl" property</a>
 </dt>
-<dt id="ientry-idm45308867120208">org.freedesktop.NetworkManager.Device.Macsec, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Macsec.top_of_page">org.freedesktop.NetworkManager.Device.Macsec</a>
+<dt id="ientry-idm45223155680080">org.freedesktop.NetworkManager.Device.Macsec, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Macsec.top_of_page">org.freedesktop.NetworkManager.Device.Macsec</a>
 </dt>
-<dt id="ientry-idm45308863668416">org.freedesktop.NetworkManager.Device.Macsec::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Macsec.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223147071216">org.freedesktop.NetworkManager.Device.Macsec::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Macsec.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308866343696">org.freedesktop.NetworkManager.Device.Macsec:CipherSuite, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.CipherSuite">The "CipherSuite" property</a>
+<dt id="ientry-idm45223147129728">org.freedesktop.NetworkManager.Device.Macsec:CipherSuite, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.CipherSuite">The "CipherSuite" property</a>
 </dt>
-<dt id="ientry-idm45308858193344">org.freedesktop.NetworkManager.Device.Macsec:EncodingSa, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.EncodingSa">The "EncodingSa" property</a>
+<dt id="ientry-idm45223147121360">org.freedesktop.NetworkManager.Device.Macsec:EncodingSa, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.EncodingSa">The "EncodingSa" property</a>
 </dt>
-<dt id="ientry-idm45308860976368">org.freedesktop.NetworkManager.Device.Macsec:Encrypt, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.Encrypt">The "Encrypt" property</a>
+<dt id="ientry-idm45223147112848">org.freedesktop.NetworkManager.Device.Macsec:Encrypt, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.Encrypt">The "Encrypt" property</a>
 </dt>
-<dt id="ientry-idm45308862745712">org.freedesktop.NetworkManager.Device.Macsec:Es, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.Es">The "Es" property</a>
+<dt id="ientry-idm45223146966912">org.freedesktop.NetworkManager.Device.Macsec:Es, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.Es">The "Es" property</a>
 </dt>
-<dt id="ientry-idm45308862189600">org.freedesktop.NetworkManager.Device.Macsec:IcvLength, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.IcvLength">The "IcvLength" property</a>
+<dt id="ientry-idm45223147133744">org.freedesktop.NetworkManager.Device.Macsec:IcvLength, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.IcvLength">The "IcvLength" property</a>
 </dt>
-<dt id="ientry-idm45308862151264">org.freedesktop.NetworkManager.Device.Macsec:IncludeSci, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.IncludeSci">The "IncludeSci" property</a>
+<dt id="ientry-idm45223146971152">org.freedesktop.NetworkManager.Device.Macsec:IncludeSci, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.IncludeSci">The "IncludeSci" property</a>
 </dt>
-<dt id="ientry-idm45308862205600">org.freedesktop.NetworkManager.Device.Macsec:Parent, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.Parent">The "Parent" property</a>
+<dt id="ientry-idm45223147141856">org.freedesktop.NetworkManager.Device.Macsec:Parent, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.Parent">The "Parent" property</a>
 </dt>
-<dt id="ientry-idm45308858311888">org.freedesktop.NetworkManager.Device.Macsec:Protect, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.Protect">The "Protect" property</a>
+<dt id="ientry-idm45223146975360">org.freedesktop.NetworkManager.Device.Macsec:Protect, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.Protect">The "Protect" property</a>
 </dt>
-<dt id="ientry-idm45308855329568">org.freedesktop.NetworkManager.Device.Macsec:ReplayProtect, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.ReplayProtect">The "ReplayProtect" property</a>
+<dt id="ientry-idm45223146958384">org.freedesktop.NetworkManager.Device.Macsec:ReplayProtect, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.ReplayProtect">The "ReplayProtect" property</a>
 </dt>
-<dt id="ientry-idm45308856058784">org.freedesktop.NetworkManager.Device.Macsec:Scb, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.Scb">The "Scb" property</a>
+<dt id="ientry-idm45223146962688">org.freedesktop.NetworkManager.Device.Macsec:Scb, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.Scb">The "Scb" property</a>
 </dt>
-<dt id="ientry-idm45308864601296">org.freedesktop.NetworkManager.Device.Macsec:Sci, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.Sci">The "Sci" property</a>
+<dt id="ientry-idm45223147137824">org.freedesktop.NetworkManager.Device.Macsec:Sci, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.Sci">The "Sci" property</a>
 </dt>
-<dt id="ientry-idm45308863810736">org.freedesktop.NetworkManager.Device.Macsec:Validation, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.Validation">The "Validation" property</a>
+<dt id="ientry-idm45223147117088">org.freedesktop.NetworkManager.Device.Macsec:Validation, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.Validation">The "Validation" property</a>
 </dt>
-<dt id="ientry-idm45308863912416">org.freedesktop.NetworkManager.Device.Macsec:Window, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.Window">The "Window" property</a>
+<dt id="ientry-idm45223147125488">org.freedesktop.NetworkManager.Device.Macsec:Window, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macsec.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macsec.Window">The "Window" property</a>
 </dt>
-<dt id="ientry-idm45308858131824">org.freedesktop.NetworkManager.Device.Macvlan, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Macvlan.top_of_page">org.freedesktop.NetworkManager.Device.Macvlan</a>
+<dt id="ientry-idm45223156967968">org.freedesktop.NetworkManager.Device.Macvlan, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Macvlan.top_of_page">org.freedesktop.NetworkManager.Device.Macvlan</a>
 </dt>
-<dt id="ientry-idm45308856039408">org.freedesktop.NetworkManager.Device.Macvlan::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Macvlan.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223150207552">org.freedesktop.NetworkManager.Device.Macvlan::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Macvlan.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308856050336">org.freedesktop.NetworkManager.Device.Macvlan:Mode, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macvlan.Mode">The "Mode" property</a>
+<dt id="ientry-idm45223147096192">org.freedesktop.NetworkManager.Device.Macvlan:Mode, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macvlan.Mode">The "Mode" property</a>
 </dt>
-<dt id="ientry-idm45308858224048">org.freedesktop.NetworkManager.Device.Macvlan:NoPromisc, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macvlan.NoPromisc">The "NoPromisc" property</a>
+<dt id="ientry-idm45223146990576">org.freedesktop.NetworkManager.Device.Macvlan:NoPromisc, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macvlan.NoPromisc">The "NoPromisc" property</a>
 </dt>
-<dt id="ientry-idm45308856054208">org.freedesktop.NetworkManager.Device.Macvlan:Parent, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macvlan.Parent">The "Parent" property</a>
+<dt id="ientry-idm45223147100064">org.freedesktop.NetworkManager.Device.Macvlan:Parent, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macvlan.Parent">The "Parent" property</a>
 </dt>
-<dt id="ientry-idm45308858220144">org.freedesktop.NetworkManager.Device.Macvlan:Tap, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macvlan.Tap">The "Tap" property</a>
+<dt id="ientry-idm45223146986672">org.freedesktop.NetworkManager.Device.Macvlan:Tap, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macvlan.Tap">The "Tap" property</a>
 </dt>
-<dt id="ientry-idm45308863559632">org.freedesktop.NetworkManager.Device.Modem, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Modem.top_of_page">org.freedesktop.NetworkManager.Device.Modem</a>
+<dt id="ientry-idm45223153296880">org.freedesktop.NetworkManager.Device.Modem, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Modem.top_of_page">org.freedesktop.NetworkManager.Device.Modem</a>
 </dt>
-<dt id="ientry-idm45308861973344">org.freedesktop.NetworkManager.Device.Modem::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Modem.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223147103904">org.freedesktop.NetworkManager.Device.Modem::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Modem.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308858690208">org.freedesktop.NetworkManager.Device.Modem:CurrentCapabilities, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html#gdbus-property-org-freedesktop-NetworkManager-Device-Modem.CurrentCapabilities">The "CurrentCapabilities" property</a>
+<dt id="ientry-idm45223147088272">org.freedesktop.NetworkManager.Device.Modem:CurrentCapabilities, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html#gdbus-property-org-freedesktop-NetworkManager-Device-Modem.CurrentCapabilities">The "CurrentCapabilities" property</a>
 </dt>
-<dt id="ientry-idm45308862314000">org.freedesktop.NetworkManager.Device.Modem:ModemCapabilities, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html#gdbus-property-org-freedesktop-NetworkManager-Device-Modem.ModemCapabilities">The "ModemCapabilities" property</a>
+<dt id="ientry-idm45223147093168">org.freedesktop.NetworkManager.Device.Modem:ModemCapabilities, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html#gdbus-property-org-freedesktop-NetworkManager-Device-Modem.ModemCapabilities">The "ModemCapabilities" property</a>
 </dt>
-<dt id="ientry-idm45308861967520">org.freedesktop.NetworkManager.Device.OlpcMesh, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html#gdbus-interface-org-freedesktop-NetworkManager-Device-OlpcMesh.top_of_page">org.freedesktop.NetworkManager.Device.OlpcMesh</a>
+<dt id="ientry-idm45223155154960">org.freedesktop.NetworkManager.Device.OlpcMesh, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html#gdbus-interface-org-freedesktop-NetworkManager-Device-OlpcMesh.top_of_page">org.freedesktop.NetworkManager.Device.OlpcMesh</a>
 </dt>
-<dt id="ientry-idm45308855341824">org.freedesktop.NetworkManager.Device.OlpcMesh::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html#gdbus-signal-org-freedesktop-NetworkManager-Device-OlpcMesh.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223147893264">org.freedesktop.NetworkManager.Device.OlpcMesh::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html#gdbus-signal-org-freedesktop-NetworkManager-Device-OlpcMesh.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308858179216">org.freedesktop.NetworkManager.Device.OlpcMesh:ActiveChannel, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html#gdbus-property-org-freedesktop-NetworkManager-Device-OlpcMesh.ActiveChannel">The "ActiveChannel" property</a>
+<dt id="ientry-idm45223146952736">org.freedesktop.NetworkManager.Device.OlpcMesh:ActiveChannel, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html#gdbus-property-org-freedesktop-NetworkManager-Device-OlpcMesh.ActiveChannel">The "ActiveChannel" property</a>
 </dt>
-<dt id="ientry-idm45308858187520">org.freedesktop.NetworkManager.Device.OlpcMesh:Companion, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html#gdbus-property-org-freedesktop-NetworkManager-Device-OlpcMesh.Companion">The "Companion" property</a>
+<dt id="ientry-idm45223147854416">org.freedesktop.NetworkManager.Device.OlpcMesh:Companion, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html#gdbus-property-org-freedesktop-NetworkManager-Device-OlpcMesh.Companion">The "Companion" property</a>
 </dt>
-<dt id="ientry-idm45308858191344">org.freedesktop.NetworkManager.Device.OlpcMesh:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html#gdbus-property-org-freedesktop-NetworkManager-Device-OlpcMesh.HwAddress">The "HwAddress" property</a>
+<dt id="ientry-idm45223147858288">org.freedesktop.NetworkManager.Device.OlpcMesh:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html#gdbus-property-org-freedesktop-NetworkManager-Device-OlpcMesh.HwAddress">The "HwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308864652912">org.freedesktop.NetworkManager.Device.Reapply(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-method-org-freedesktop-NetworkManager-Device.Reapply">The Reapply() method</a>
+<dt id="ientry-idm45223157213360">org.freedesktop.NetworkManager.Device.Reapply(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-method-org-freedesktop-NetworkManager-Device.Reapply">The Reapply() method</a>
 </dt>
-<dt id="ientry-idm45308862173488">org.freedesktop.NetworkManager.Device.Statistics, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Statistics.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Statistics.top_of_page">org.freedesktop.NetworkManager.Device.Statistics</a>
+<dt id="ientry-idm45223154374592">org.freedesktop.NetworkManager.Device.Statistics, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Statistics.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Statistics.top_of_page">org.freedesktop.NetworkManager.Device.Statistics</a>
 </dt>
-<dt id="ientry-idm45308861701232">org.freedesktop.NetworkManager.Device.Statistics::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Statistics.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Statistics.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223153731264">org.freedesktop.NetworkManager.Device.Statistics::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Statistics.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Statistics.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308862652800">org.freedesktop.NetworkManager.Device.Statistics:RefreshRateMs, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Statistics.html#gdbus-property-org-freedesktop-NetworkManager-Device-Statistics.RefreshRateMs">The "RefreshRateMs" property</a>
+<dt id="ientry-idm45223157264272">org.freedesktop.NetworkManager.Device.Statistics:RefreshRateMs, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Statistics.html#gdbus-property-org-freedesktop-NetworkManager-Device-Statistics.RefreshRateMs">The "RefreshRateMs" property</a>
 </dt>
-<dt id="ientry-idm45308861214624">org.freedesktop.NetworkManager.Device.Statistics:RxBytes, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Statistics.html#gdbus-property-org-freedesktop-NetworkManager-Device-Statistics.RxBytes">The "RxBytes" property</a>
+<dt id="ientry-idm45223154784592">org.freedesktop.NetworkManager.Device.Statistics:RxBytes, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Statistics.html#gdbus-property-org-freedesktop-NetworkManager-Device-Statistics.RxBytes">The "RxBytes" property</a>
 </dt>
-<dt id="ientry-idm45308862648992">org.freedesktop.NetworkManager.Device.Statistics:TxBytes, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Statistics.html#gdbus-property-org-freedesktop-NetworkManager-Device-Statistics.TxBytes">The "TxBytes" property</a>
+<dt id="ientry-idm45223154788432">org.freedesktop.NetworkManager.Device.Statistics:TxBytes, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Statistics.html#gdbus-property-org-freedesktop-NetworkManager-Device-Statistics.TxBytes">The "TxBytes" property</a>
 </dt>
-<dt id="ientry-idm45308862715968">org.freedesktop.NetworkManager.Device.Team, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Team.top_of_page">org.freedesktop.NetworkManager.Device.Team</a>
+<dt id="ientry-idm45223158863072">org.freedesktop.NetworkManager.Device.Team, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Team.top_of_page">org.freedesktop.NetworkManager.Device.Team</a>
 </dt>
-<dt id="ientry-idm45308855368240">org.freedesktop.NetworkManager.Device.Team::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Team.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223147869568">org.freedesktop.NetworkManager.Device.Team::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Team.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308855892608">org.freedesktop.NetworkManager.Device.Team:Carrier, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-property-org-freedesktop-NetworkManager-Device-Team.Carrier">The "Carrier" property</a>
+<dt id="ientry-idm45223146938176">org.freedesktop.NetworkManager.Device.Team:Carrier, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-property-org-freedesktop-NetworkManager-Device-Team.Carrier">The "Carrier" property</a>
 </dt>
-<dt id="ientry-idm45308858249776">org.freedesktop.NetworkManager.Device.Team:Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-property-org-freedesktop-NetworkManager-Device-Team.Config">The "Config" property</a>
+<dt id="ientry-idm45223146930192">org.freedesktop.NetworkManager.Device.Team:Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-property-org-freedesktop-NetworkManager-Device-Team.Config">The "Config" property</a>
 </dt>
-<dt id="ientry-idm45308855896688">org.freedesktop.NetworkManager.Device.Team:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-property-org-freedesktop-NetworkManager-Device-Team.HwAddress">The "HwAddress" property</a>
+<dt id="ientry-idm45223146942016">org.freedesktop.NetworkManager.Device.Team:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-property-org-freedesktop-NetworkManager-Device-Team.HwAddress">The "HwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308858254000">org.freedesktop.NetworkManager.Device.Team:Slaves, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-property-org-freedesktop-NetworkManager-Device-Team.Slaves">The "Slaves" property</a>
+<dt id="ientry-idm45223146934176">org.freedesktop.NetworkManager.Device.Team:Slaves, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-property-org-freedesktop-NetworkManager-Device-Team.Slaves">The "Slaves" property</a>
 </dt>
-<dt id="ientry-idm45308863389104">org.freedesktop.NetworkManager.Device.Tun, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Tun.top_of_page">org.freedesktop.NetworkManager.Device.Tun</a>
+<dt id="ientry-idm45223154816400">org.freedesktop.NetworkManager.Device.Tun, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Tun.top_of_page">org.freedesktop.NetworkManager.Device.Tun</a>
 </dt>
-<dt id="ientry-idm45308855950144">org.freedesktop.NetworkManager.Device.Tun::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Tun.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223147816384">org.freedesktop.NetworkManager.Device.Tun::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Tun.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308855882528">org.freedesktop.NetworkManager.Device.Tun:Group, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.Group">The "Group" property</a>
+<dt id="ientry-idm45223147846672">org.freedesktop.NetworkManager.Device.Tun:Group, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.Group">The "Group" property</a>
 </dt>
-<dt id="ientry-idm45308855759248">org.freedesktop.NetworkManager.Device.Tun:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.HwAddress">The "HwAddress" property</a>
+<dt id="ientry-idm45223147589232">org.freedesktop.NetworkManager.Device.Tun:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.HwAddress">The "HwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308856000464">org.freedesktop.NetworkManager.Device.Tun:Mode, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.Mode">The "Mode" property</a>
+<dt id="ientry-idm45223147842480">org.freedesktop.NetworkManager.Device.Tun:Mode, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.Mode">The "Mode" property</a>
 </dt>
-<dt id="ientry-idm45308855763456">org.freedesktop.NetworkManager.Device.Tun:MultiQueue, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.MultiQueue">The "MultiQueue" property</a>
+<dt id="ientry-idm45223147829920">org.freedesktop.NetworkManager.Device.Tun:MultiQueue, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.MultiQueue">The "MultiQueue" property</a>
 </dt>
-<dt id="ientry-idm45308855996352">org.freedesktop.NetworkManager.Device.Tun:NoPi, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.NoPi">The "NoPi" property</a>
+<dt id="ientry-idm45223147838368">org.freedesktop.NetworkManager.Device.Tun:NoPi, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.NoPi">The "NoPi" property</a>
 </dt>
-<dt id="ientry-idm45308855886720">org.freedesktop.NetworkManager.Device.Tun:Owner, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.Owner">The "Owner" property</a>
+<dt id="ientry-idm45223147850864">org.freedesktop.NetworkManager.Device.Tun:Owner, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.Owner">The "Owner" property</a>
 </dt>
-<dt id="ientry-idm45308855992112">org.freedesktop.NetworkManager.Device.Tun:VnetHdr, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.VnetHdr">The "VnetHdr" property</a>
+<dt id="ientry-idm45223147834128">org.freedesktop.NetworkManager.Device.Tun:VnetHdr, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.VnetHdr">The "VnetHdr" property</a>
 </dt>
-<dt id="ientry-idm45308862462080">org.freedesktop.NetworkManager.Device.Veth, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Veth.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Veth.top_of_page">org.freedesktop.NetworkManager.Device.Veth</a>
+<dt id="ientry-idm45223155699792">org.freedesktop.NetworkManager.Device.Veth, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Veth.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Veth.top_of_page">org.freedesktop.NetworkManager.Device.Veth</a>
 </dt>
-<dt id="ientry-idm45308858172688">org.freedesktop.NetworkManager.Device.Veth::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Veth.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Veth.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223146921856">org.freedesktop.NetworkManager.Device.Veth::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Veth.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Veth.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308855963648">org.freedesktop.NetworkManager.Device.Veth:Peer, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Veth.html#gdbus-property-org-freedesktop-NetworkManager-Device-Veth.Peer">The "Peer" property</a>
+<dt id="ientry-idm45223146997968">org.freedesktop.NetworkManager.Device.Veth:Peer, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Veth.html#gdbus-property-org-freedesktop-NetworkManager-Device-Veth.Peer">The "Peer" property</a>
 </dt>
-<dt id="ientry-idm45308866096544">org.freedesktop.NetworkManager.Device.Vlan, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Vlan.top_of_page">org.freedesktop.NetworkManager.Device.Vlan</a>
+<dt id="ientry-idm45223158443504">org.freedesktop.NetworkManager.Device.Vlan, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Vlan.top_of_page">org.freedesktop.NetworkManager.Device.Vlan</a>
 </dt>
-<dt id="ientry-idm45308861016992">org.freedesktop.NetworkManager.Device.Vlan::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Vlan.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223147579472">org.freedesktop.NetworkManager.Device.Vlan::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Vlan.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308855766832">org.freedesktop.NetworkManager.Device.Vlan:Carrier, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vlan.Carrier">The "Carrier" property</a>
+<dt id="ientry-idm45223147805040">org.freedesktop.NetworkManager.Device.Vlan:Carrier, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vlan.Carrier">The "Carrier" property</a>
 </dt>
-<dt id="ientry-idm45308858205872">org.freedesktop.NetworkManager.Device.Vlan:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vlan.HwAddress">The "HwAddress" property</a>
+<dt id="ientry-idm45223147808880">org.freedesktop.NetworkManager.Device.Vlan:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vlan.HwAddress">The "HwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308855682976">org.freedesktop.NetworkManager.Device.Vlan:Parent, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vlan.Parent">The "Parent" property</a>
+<dt id="ientry-idm45223147021088">org.freedesktop.NetworkManager.Device.Vlan:Parent, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vlan.Parent">The "Parent" property</a>
 </dt>
-<dt id="ientry-idm45308856015056">org.freedesktop.NetworkManager.Device.Vlan:VlanId, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vlan.VlanId">The "VlanId" property</a>
+<dt id="ientry-idm45223147017328">org.freedesktop.NetworkManager.Device.Vlan:VlanId, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vlan.VlanId">The "VlanId" property</a>
 </dt>
-<dt id="ientry-idm45308862376480">org.freedesktop.NetworkManager.Device.Vxlan, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Vxlan.top_of_page">org.freedesktop.NetworkManager.Device.Vxlan</a>
+<dt id="ientry-idm45223155744800">org.freedesktop.NetworkManager.Device.Vxlan, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Vxlan.top_of_page">org.freedesktop.NetworkManager.Device.Vxlan</a>
 </dt>
-<dt id="ientry-idm45308855876928">org.freedesktop.NetworkManager.Device.Vxlan::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Vxlan.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223147029088">org.freedesktop.NetworkManager.Device.Vxlan::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Vxlan.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308855822176">org.freedesktop.NetworkManager.Device.Vxlan:Ageing, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Ageing">The "Ageing" property</a>
+<dt id="ientry-idm45223148611616">org.freedesktop.NetworkManager.Device.Vxlan:Ageing, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Ageing">The "Ageing" property</a>
 </dt>
-<dt id="ientry-idm45308855777232">org.freedesktop.NetworkManager.Device.Vxlan:DstPort, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.DstPort">The "DstPort" property</a>
+<dt id="ientry-idm45223148603184">org.freedesktop.NetworkManager.Device.Vxlan:DstPort, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.DstPort">The "DstPort" property</a>
 </dt>
-<dt id="ientry-idm45308858237200">org.freedesktop.NetworkManager.Device.Vxlan:Group, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Group">The "Group" property</a>
+<dt id="ientry-idm45223147784496">org.freedesktop.NetworkManager.Device.Vxlan:Group, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Group">The "Group" property</a>
 </dt>
-<dt id="ientry-idm45308855908848">org.freedesktop.NetworkManager.Device.Vxlan:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.HwAddress">The "HwAddress" property</a>
+<dt id="ientry-idm45223147733728">org.freedesktop.NetworkManager.Device.Vxlan:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.HwAddress">The "HwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308855904720">org.freedesktop.NetworkManager.Device.Vxlan:Id, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Id">The "Id" property</a>
+<dt id="ientry-idm45223147729648">org.freedesktop.NetworkManager.Device.Vxlan:Id, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Id">The "Id" property</a>
 </dt>
-<dt id="ientry-idm45308856999824">org.freedesktop.NetworkManager.Device.Vxlan:L2miss, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.L2miss">The "L2miss" property</a>
+<dt id="ientry-idm45223148582112">org.freedesktop.NetworkManager.Device.Vxlan:L2miss, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.L2miss">The "L2miss" property</a>
 </dt>
-<dt id="ientry-idm45308855697088">org.freedesktop.NetworkManager.Device.Vxlan:L3miss, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.L3miss">The "L3miss" property</a>
+<dt id="ientry-idm45223148577904">org.freedesktop.NetworkManager.Device.Vxlan:L3miss, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.L3miss">The "L3miss" property</a>
 </dt>
-<dt id="ientry-idm45308855826384">org.freedesktop.NetworkManager.Device.Vxlan:Learning, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Learning">The "Learning" property</a>
+<dt id="ientry-idm45223148615776">org.freedesktop.NetworkManager.Device.Vxlan:Learning, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Learning">The "Learning" property</a>
 </dt>
-<dt id="ientry-idm45308855781456">org.freedesktop.NetworkManager.Device.Vxlan:Limit, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Limit">The "Limit" property</a>
+<dt id="ientry-idm45223148607408">org.freedesktop.NetworkManager.Device.Vxlan:Limit, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Limit">The "Limit" property</a>
 </dt>
-<dt id="ientry-idm45308855979152">org.freedesktop.NetworkManager.Device.Vxlan:Local, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Local">The "Local" property</a>
+<dt id="ientry-idm45223147780256">org.freedesktop.NetworkManager.Device.Vxlan:Local, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Local">The "Local" property</a>
 </dt>
-<dt id="ientry-idm45308856007536">org.freedesktop.NetworkManager.Device.Vxlan:Parent, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Parent">The "Parent" property</a>
+<dt id="ientry-idm45223147737936">org.freedesktop.NetworkManager.Device.Vxlan:Parent, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Parent">The "Parent" property</a>
 </dt>
-<dt id="ientry-idm45308857008272">org.freedesktop.NetworkManager.Device.Vxlan:Proxy, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Proxy">The "Proxy" property</a>
+<dt id="ientry-idm45223148590560">org.freedesktop.NetworkManager.Device.Vxlan:Proxy, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Proxy">The "Proxy" property</a>
 </dt>
-<dt id="ientry-idm45308857004064">org.freedesktop.NetworkManager.Device.Vxlan:Rsc, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Rsc">The "Rsc" property</a>
+<dt id="ientry-idm45223148586352">org.freedesktop.NetworkManager.Device.Vxlan:Rsc, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Rsc">The "Rsc" property</a>
 </dt>
-<dt id="ientry-idm45308855801312">org.freedesktop.NetworkManager.Device.Vxlan:SrcPortMax, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.SrcPortMax">The "SrcPortMax" property</a>
+<dt id="ientry-idm45223148594800">org.freedesktop.NetworkManager.Device.Vxlan:SrcPortMax, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.SrcPortMax">The "SrcPortMax" property</a>
 </dt>
-<dt id="ientry-idm45308855805472">org.freedesktop.NetworkManager.Device.Vxlan:SrcPortMin, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.SrcPortMin">The "SrcPortMin" property</a>
+<dt id="ientry-idm45223148599056">org.freedesktop.NetworkManager.Device.Vxlan:SrcPortMin, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.SrcPortMin">The "SrcPortMin" property</a>
 </dt>
-<dt id="ientry-idm45308855974912">org.freedesktop.NetworkManager.Device.Vxlan:Tos, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Tos">The "Tos" property</a>
+<dt id="ientry-idm45223147776016">org.freedesktop.NetworkManager.Device.Vxlan:Tos, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Tos">The "Tos" property</a>
 </dt>
-<dt id="ientry-idm45308858243168">org.freedesktop.NetworkManager.Device.Vxlan:Ttl, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Ttl">The "Ttl" property</a>
+<dt id="ientry-idm45223147771792">org.freedesktop.NetworkManager.Device.Vxlan:Ttl, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Ttl">The "Ttl" property</a>
 </dt>
-<dt id="ientry-idm45308862244528">org.freedesktop.NetworkManager.Device.WiMax, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-interface-org-freedesktop-NetworkManager-Device-WiMax.top_of_page">org.freedesktop.NetworkManager.Device.WiMax</a>
+<dt id="ientry-idm45223154059456">org.freedesktop.NetworkManager.Device.WiMax, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-interface-org-freedesktop-NetworkManager-Device-WiMax.top_of_page">org.freedesktop.NetworkManager.Device.WiMax</a>
 </dt>
-<dt id="ientry-idm45308855785200">org.freedesktop.NetworkManager.Device.WiMax.GetNspList(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-method-org-freedesktop-NetworkManager-Device-WiMax.GetNspList">The GetNspList() method</a>
+<dt id="ientry-idm45223158941536">org.freedesktop.NetworkManager.Device.WiMax.GetNspList(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-method-org-freedesktop-NetworkManager-Device-WiMax.GetNspList">The GetNspList() method</a>
 </dt>
-<dt id="ientry-idm45308856983728">org.freedesktop.NetworkManager.Device.WiMax::NspAdded, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-signal-org-freedesktop-NetworkManager-Device-WiMax.NspAdded">The "NspAdded" signal</a>
+<dt id="ientry-idm45223155621792">org.freedesktop.NetworkManager.Device.WiMax::NspAdded, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-signal-org-freedesktop-NetworkManager-Device-WiMax.NspAdded">The "NspAdded" signal</a>
 </dt>
-<dt id="ientry-idm45308856976288">org.freedesktop.NetworkManager.Device.WiMax::NspRemoved, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-signal-org-freedesktop-NetworkManager-Device-WiMax.NspRemoved">The "NspRemoved" signal</a>
+<dt id="ientry-idm45223147789696">org.freedesktop.NetworkManager.Device.WiMax::NspRemoved, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-signal-org-freedesktop-NetworkManager-Device-WiMax.NspRemoved">The "NspRemoved" signal</a>
 </dt>
-<dt id="ientry-idm45308856991184">org.freedesktop.NetworkManager.Device.WiMax::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-signal-org-freedesktop-NetworkManager-Device-WiMax.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223156032032">org.freedesktop.NetworkManager.Device.WiMax::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-signal-org-freedesktop-NetworkManager-Device-WiMax.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308856163968">org.freedesktop.NetworkManager.Device.WiMax:ActiveNsp, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.ActiveNsp">The "ActiveNsp" property</a>
+<dt id="ientry-idm45223156240272">org.freedesktop.NetworkManager.Device.WiMax:ActiveNsp, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.ActiveNsp">The "ActiveNsp" property</a>
 </dt>
-<dt id="ientry-idm45308856168240">org.freedesktop.NetworkManager.Device.WiMax:Bsid, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.Bsid">The "Bsid" property</a>
+<dt id="ientry-idm45223158065200">org.freedesktop.NetworkManager.Device.WiMax:Bsid, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.Bsid">The "Bsid" property</a>
 </dt>
-<dt id="ientry-idm45308856184800">org.freedesktop.NetworkManager.Device.WiMax:CenterFrequency, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.CenterFrequency">The "CenterFrequency" property</a>
+<dt id="ientry-idm45223155297968">org.freedesktop.NetworkManager.Device.WiMax:CenterFrequency, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.CenterFrequency">The "CenterFrequency" property</a>
 </dt>
-<dt id="ientry-idm45308856176464">org.freedesktop.NetworkManager.Device.WiMax:Cinr, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.Cinr">The "Cinr" property</a>
+<dt id="ientry-idm45223156838704">org.freedesktop.NetworkManager.Device.WiMax:Cinr, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.Cinr">The "Cinr" property</a>
 </dt>
-<dt id="ientry-idm45308856188992">org.freedesktop.NetworkManager.Device.WiMax:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.HwAddress">The "HwAddress" property</a>
+<dt id="ientry-idm45223158901936">org.freedesktop.NetworkManager.Device.WiMax:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.HwAddress">The "HwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308856193232">org.freedesktop.NetworkManager.Device.WiMax:Nsps, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.Nsps">The "Nsps" property</a>
+<dt id="ientry-idm45223154200432">org.freedesktop.NetworkManager.Device.WiMax:Nsps, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.Nsps">The "Nsps" property</a>
 </dt>
-<dt id="ientry-idm45308856180576">org.freedesktop.NetworkManager.Device.WiMax:Rssi, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.Rssi">The "Rssi" property</a>
+<dt id="ientry-idm45223147443664">org.freedesktop.NetworkManager.Device.WiMax:Rssi, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.Rssi">The "Rssi" property</a>
 </dt>
-<dt id="ientry-idm45308856172352">org.freedesktop.NetworkManager.Device.WiMax:TxPower, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.TxPower">The "TxPower" property</a>
+<dt id="ientry-idm45223157799296">org.freedesktop.NetworkManager.Device.WiMax:TxPower, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.TxPower">The "TxPower" property</a>
 </dt>
-<dt id="ientry-idm45308855258912">org.freedesktop.NetworkManager.Device::StateChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-signal-org-freedesktop-NetworkManager-Device.StateChanged">The "StateChanged" signal</a>
+<dt id="ientry-idm45223149988928">org.freedesktop.NetworkManager.Device::StateChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-signal-org-freedesktop-NetworkManager-Device.StateChanged">The "StateChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308861828624">org.freedesktop.NetworkManager.Device:ActiveConnection, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.ActiveConnection">The "ActiveConnection" property</a>
+<dt id="ientry-idm45223153934720">org.freedesktop.NetworkManager.Device:ActiveConnection, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.ActiveConnection">The "ActiveConnection" property</a>
 </dt>
-<dt id="ientry-idm45308858519568">org.freedesktop.NetworkManager.Device:Autoconnect, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Autoconnect">The "Autoconnect" property</a>
+<dt id="ientry-idm45223153909488">org.freedesktop.NetworkManager.Device:Autoconnect, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Autoconnect">The "Autoconnect" property</a>
 </dt>
-<dt id="ientry-idm45308858501792">org.freedesktop.NetworkManager.Device:AvailableConnections, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.AvailableConnections">The "AvailableConnections" property</a>
+<dt id="ientry-idm45223147549472">org.freedesktop.NetworkManager.Device:AvailableConnections, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.AvailableConnections">The "AvailableConnections" property</a>
 </dt>
-<dt id="ientry-idm45308861849200">org.freedesktop.NetworkManager.Device:Capabilities, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Capabilities">The "Capabilities" property</a>
+<dt id="ientry-idm45223153955296">org.freedesktop.NetworkManager.Device:Capabilities, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Capabilities">The "Capabilities" property</a>
 </dt>
-<dt id="ientry-idm45308858506896">org.freedesktop.NetworkManager.Device:DeviceType, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.DeviceType">The "DeviceType" property</a>
+<dt id="ientry-idm45223147554352">org.freedesktop.NetworkManager.Device:DeviceType, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.DeviceType">The "DeviceType" property</a>
 </dt>
-<dt id="ientry-idm45308861820128">org.freedesktop.NetworkManager.Device:Dhcp4Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Dhcp4Config">The "Dhcp4Config" property</a>
+<dt id="ientry-idm45223153926224">org.freedesktop.NetworkManager.Device:Dhcp4Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Dhcp4Config">The "Dhcp4Config" property</a>
 </dt>
-<dt id="ientry-idm45308858527824">org.freedesktop.NetworkManager.Device:Dhcp6Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Dhcp6Config">The "Dhcp6Config" property</a>
+<dt id="ientry-idm45223153917744">org.freedesktop.NetworkManager.Device:Dhcp6Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Dhcp6Config">The "Dhcp6Config" property</a>
 </dt>
-<dt id="ientry-idm45308861862064">org.freedesktop.NetworkManager.Device:Driver, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Driver">The "Driver" property</a>
+<dt id="ientry-idm45223153968160">org.freedesktop.NetworkManager.Device:Driver, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Driver">The "Driver" property</a>
 </dt>
-<dt id="ientry-idm45308861857792">org.freedesktop.NetworkManager.Device:DriverVersion, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.DriverVersion">The "DriverVersion" property</a>
+<dt id="ientry-idm45223153963888">org.freedesktop.NetworkManager.Device:DriverVersion, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.DriverVersion">The "DriverVersion" property</a>
 </dt>
-<dt id="ientry-idm45308858515424">org.freedesktop.NetworkManager.Device:FirmwareMissing, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.FirmwareMissing">The "FirmwareMissing" property</a>
+<dt id="ientry-idm45223153905344">org.freedesktop.NetworkManager.Device:FirmwareMissing, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.FirmwareMissing">The "FirmwareMissing" property</a>
 </dt>
-<dt id="ientry-idm45308861853488">org.freedesktop.NetworkManager.Device:FirmwareVersion, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.FirmwareVersion">The "FirmwareVersion" property</a>
+<dt id="ientry-idm45223153959584">org.freedesktop.NetworkManager.Device:FirmwareVersion, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.FirmwareVersion">The "FirmwareVersion" property</a>
 </dt>
-<dt id="ientry-idm45308861870592">org.freedesktop.NetworkManager.Device:Interface, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Interface">The "Interface" property</a>
+<dt id="ientry-idm45223149968064">org.freedesktop.NetworkManager.Device:Interface, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Interface">The "Interface" property</a>
 </dt>
-<dt id="ientry-idm45308861843968">org.freedesktop.NetworkManager.Device:Ip4Address, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Ip4Address">The "Ip4Address" property</a>
+<dt id="ientry-idm45223153950064">org.freedesktop.NetworkManager.Device:Ip4Address, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Ip4Address">The "Ip4Address" property</a>
 </dt>
-<dt id="ientry-idm45308861824464">org.freedesktop.NetworkManager.Device:Ip4Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Ip4Config">The "Ip4Config" property</a>
+<dt id="ientry-idm45223153930560">org.freedesktop.NetworkManager.Device:Ip4Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Ip4Config">The "Ip4Config" property</a>
 </dt>
-<dt id="ientry-idm45308858532160">org.freedesktop.NetworkManager.Device:Ip6Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Ip6Config">The "Ip6Config" property</a>
+<dt id="ientry-idm45223153922080">org.freedesktop.NetworkManager.Device:Ip6Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Ip6Config">The "Ip6Config" property</a>
 </dt>
-<dt id="ientry-idm45308861866192">org.freedesktop.NetworkManager.Device:IpInterface, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.IpInterface">The "IpInterface" property</a>
+<dt id="ientry-idm45223149963664">org.freedesktop.NetworkManager.Device:IpInterface, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.IpInterface">The "IpInterface" property</a>
 </dt>
-<dt id="ientry-idm45308858483872">org.freedesktop.NetworkManager.Device:LldpNeighbors, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.LldpNeighbors">The "LldpNeighbors" property</a>
+<dt id="ientry-idm45223147531552">org.freedesktop.NetworkManager.Device:LldpNeighbors, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.LldpNeighbors">The "LldpNeighbors" property</a>
 </dt>
-<dt id="ientry-idm45308858523696">org.freedesktop.NetworkManager.Device:Managed, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Managed">The "Managed" property</a>
+<dt id="ientry-idm45223153913616">org.freedesktop.NetworkManager.Device:Managed, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Managed">The "Managed" property</a>
 </dt>
-<dt id="ientry-idm45308858489168">org.freedesktop.NetworkManager.Device:Metered, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Metered">The "Metered" property</a>
+<dt id="ientry-idm45223147536848">org.freedesktop.NetworkManager.Device:Metered, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Metered">The "Metered" property</a>
 </dt>
-<dt id="ientry-idm45308858493280">org.freedesktop.NetworkManager.Device:Mtu, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Mtu">The "Mtu" property</a>
+<dt id="ientry-idm45223147540960">org.freedesktop.NetworkManager.Device:Mtu, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Mtu">The "Mtu" property</a>
 </dt>
-<dt id="ientry-idm45308858511168">org.freedesktop.NetworkManager.Device:NmPluginMissing, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.NmPluginMissing">The "NmPluginMissing" property</a>
+<dt id="ientry-idm45223153901088">org.freedesktop.NetworkManager.Device:NmPluginMissing, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.NmPluginMissing">The "NmPluginMissing" property</a>
 </dt>
-<dt id="ientry-idm45308858497408">org.freedesktop.NetworkManager.Device:PhysicalPortId, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.PhysicalPortId">The "PhysicalPortId" property</a>
+<dt id="ientry-idm45223147545088">org.freedesktop.NetworkManager.Device:PhysicalPortId, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.PhysicalPortId">The "PhysicalPortId" property</a>
 </dt>
-<dt id="ientry-idm45308858479616">org.freedesktop.NetworkManager.Device:Real, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Real">The "Real" property</a>
+<dt id="ientry-idm45223147527296">org.freedesktop.NetworkManager.Device:Real, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Real">The "Real" property</a>
 </dt>
-<dt id="ientry-idm45308861839728">org.freedesktop.NetworkManager.Device:State, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.State">The "State" property</a>
+<dt id="ientry-idm45223153945824">org.freedesktop.NetworkManager.Device:State, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.State">The "State" property</a>
 </dt>
-<dt id="ientry-idm45308861834592">org.freedesktop.NetworkManager.Device:StateReason, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.StateReason">The "StateReason" property</a>
+<dt id="ientry-idm45223153940688">org.freedesktop.NetworkManager.Device:StateReason, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.StateReason">The "StateReason" property</a>
 </dt>
-<dt id="ientry-idm45308861875120">org.freedesktop.NetworkManager.Device:Udi, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Udi">The "Udi" property</a>
+<dt id="ientry-idm45223149972592">org.freedesktop.NetworkManager.Device:Udi, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Udi">The "Udi" property</a>
 </dt>
-<dt id="ientry-idm45308866602976">org.freedesktop.NetworkManager.DnsManager, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DnsManager.html#gdbus-interface-org-freedesktop-NetworkManager-DnsManager.top_of_page">org.freedesktop.NetworkManager.DnsManager</a>
+<dt id="ientry-idm45223155031072">org.freedesktop.NetworkManager.DnsManager, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DnsManager.html#gdbus-interface-org-freedesktop-NetworkManager-DnsManager.top_of_page">org.freedesktop.NetworkManager.DnsManager</a>
 </dt>
-<dt id="ientry-idm45308866520736">org.freedesktop.NetworkManager.DnsManager:Configuration, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DnsManager.html#gdbus-property-org-freedesktop-NetworkManager-DnsManager.Configuration">The "Configuration" property</a>
+<dt id="ientry-idm45223153838048">org.freedesktop.NetworkManager.DnsManager:Configuration, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DnsManager.html#gdbus-property-org-freedesktop-NetworkManager-DnsManager.Configuration">The "Configuration" property</a>
 </dt>
-<dt id="ientry-idm45308862921760">org.freedesktop.NetworkManager.DnsManager:Mode, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DnsManager.html#gdbus-property-org-freedesktop-NetworkManager-DnsManager.Mode">The "Mode" property</a>
+<dt id="ientry-idm45223157871760">org.freedesktop.NetworkManager.DnsManager:Mode, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DnsManager.html#gdbus-property-org-freedesktop-NetworkManager-DnsManager.Mode">The "Mode" property</a>
 </dt>
-<dt id="ientry-idm45308862225216">org.freedesktop.NetworkManager.DnsManager:RcManager, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DnsManager.html#gdbus-property-org-freedesktop-NetworkManager-DnsManager.RcManager">The "RcManager" property</a>
+<dt id="ientry-idm45223153841856">org.freedesktop.NetworkManager.DnsManager:RcManager, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DnsManager.html#gdbus-property-org-freedesktop-NetworkManager-DnsManager.RcManager">The "RcManager" property</a>
 </dt>
-<dt id="ientry-idm45308862102672">org.freedesktop.NetworkManager.IP4Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-interface-org-freedesktop-NetworkManager-IP4Config.top_of_page">org.freedesktop.NetworkManager.IP4Config</a>
+<dt id="ientry-idm45223158026224">org.freedesktop.NetworkManager.IP4Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-interface-org-freedesktop-NetworkManager-IP4Config.top_of_page">org.freedesktop.NetworkManager.IP4Config</a>
 </dt>
-<dt id="ientry-idm45308867091168">org.freedesktop.NetworkManager.IP4Config::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-signal-org-freedesktop-NetworkManager-IP4Config.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223148520320">org.freedesktop.NetworkManager.IP4Config::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-signal-org-freedesktop-NetworkManager-IP4Config.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308856238784">org.freedesktop.NetworkManager.IP4Config:AddressData, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.AddressData">The "AddressData" property</a>
+<dt id="ientry-idm45223148348928">org.freedesktop.NetworkManager.IP4Config:AddressData, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.AddressData">The "AddressData" property</a>
 </dt>
-<dt id="ientry-idm45308855308272">org.freedesktop.NetworkManager.IP4Config:Addresses, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.Addresses">The "Addresses" property</a>
+<dt id="ientry-idm45223148353232">org.freedesktop.NetworkManager.IP4Config:Addresses, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.Addresses">The "Addresses" property</a>
 </dt>
-<dt id="ientry-idm45308856207280">org.freedesktop.NetworkManager.IP4Config:DnsOptions, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.DnsOptions">The "DnsOptions" property</a>
+<dt id="ientry-idm45223148420544">org.freedesktop.NetworkManager.IP4Config:DnsOptions, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.DnsOptions">The "DnsOptions" property</a>
 </dt>
-<dt id="ientry-idm45308856091152">org.freedesktop.NetworkManager.IP4Config:DnsPriority, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.DnsPriority">The "DnsPriority" property</a>
+<dt id="ientry-idm45223148416240">org.freedesktop.NetworkManager.IP4Config:DnsPriority, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.DnsPriority">The "DnsPriority" property</a>
 </dt>
-<dt id="ientry-idm45308856253664">org.freedesktop.NetworkManager.IP4Config:Domains, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.Domains">The "Domains" property</a>
+<dt id="ientry-idm45223148428864">org.freedesktop.NetworkManager.IP4Config:Domains, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.Domains">The "Domains" property</a>
 </dt>
-<dt id="ientry-idm45308855676592">org.freedesktop.NetworkManager.IP4Config:Gateway, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.Gateway">The "Gateway" property</a>
+<dt id="ientry-idm45223148344848">org.freedesktop.NetworkManager.IP4Config:Gateway, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.Gateway">The "Gateway" property</a>
 </dt>
-<dt id="ientry-idm45308856219504">org.freedesktop.NetworkManager.IP4Config:Nameservers, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.Nameservers">The "Nameservers" property</a>
+<dt id="ientry-idm45223148432944">org.freedesktop.NetworkManager.IP4Config:Nameservers, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.Nameservers">The "Nameservers" property</a>
 </dt>
-<dt id="ientry-idm45308864188720">org.freedesktop.NetworkManager.IP4Config:RouteData, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.RouteData">The "RouteData" property</a>
+<dt id="ientry-idm45223148336688">org.freedesktop.NetworkManager.IP4Config:RouteData, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.RouteData">The "RouteData" property</a>
 </dt>
-<dt id="ientry-idm45308856783328">org.freedesktop.NetworkManager.IP4Config:Routes, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.Routes">The "Routes" property</a>
+<dt id="ientry-idm45223148340736">org.freedesktop.NetworkManager.IP4Config:Routes, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.Routes">The "Routes" property</a>
 </dt>
-<dt id="ientry-idm45308855916272">org.freedesktop.NetworkManager.IP4Config:Searches, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.Searches">The "Searches" property</a>
+<dt id="ientry-idm45223148424736">org.freedesktop.NetworkManager.IP4Config:Searches, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.Searches">The "Searches" property</a>
 </dt>
-<dt id="ientry-idm45308855363808">org.freedesktop.NetworkManager.IP4Config:WinsServers, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.WinsServers">The "WinsServers" property</a>
+<dt id="ientry-idm45223148412096">org.freedesktop.NetworkManager.IP4Config:WinsServers, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.WinsServers">The "WinsServers" property</a>
 </dt>
-<dt id="ientry-idm45308863545040">org.freedesktop.NetworkManager.IP6Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-interface-org-freedesktop-NetworkManager-IP6Config.top_of_page">org.freedesktop.NetworkManager.IP6Config</a>
+<dt id="ientry-idm45223155228384">org.freedesktop.NetworkManager.IP6Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-interface-org-freedesktop-NetworkManager-IP6Config.top_of_page">org.freedesktop.NetworkManager.IP6Config</a>
 </dt>
-<dt id="ientry-idm45308856767312">org.freedesktop.NetworkManager.IP6Config::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-signal-org-freedesktop-NetworkManager-IP6Config.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223155971760">org.freedesktop.NetworkManager.IP6Config::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-signal-org-freedesktop-NetworkManager-IP6Config.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308856870352">org.freedesktop.NetworkManager.IP6Config:AddressData, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.AddressData">The "AddressData" property</a>
+<dt id="ientry-idm45223154352016">org.freedesktop.NetworkManager.IP6Config:AddressData, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.AddressData">The "AddressData" property</a>
 </dt>
-<dt id="ientry-idm45308856900592">org.freedesktop.NetworkManager.IP6Config:Addresses, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.Addresses">The "Addresses" property</a>
+<dt id="ientry-idm45223154117568">org.freedesktop.NetworkManager.IP6Config:Addresses, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.Addresses">The "Addresses" property</a>
 </dt>
-<dt id="ientry-idm45308853698896">org.freedesktop.NetworkManager.IP6Config:DnsOptions, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.DnsOptions">The "DnsOptions" property</a>
+<dt id="ientry-idm45223150429504">org.freedesktop.NetworkManager.IP6Config:DnsOptions, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.DnsOptions">The "DnsOptions" property</a>
 </dt>
-<dt id="ientry-idm45308853694592">org.freedesktop.NetworkManager.IP6Config:DnsPriority, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.DnsPriority">The "DnsPriority" property</a>
+<dt id="ientry-idm45223154666768">org.freedesktop.NetworkManager.IP6Config:DnsPriority, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.DnsPriority">The "DnsPriority" property</a>
 </dt>
-<dt id="ientry-idm45308853707216">org.freedesktop.NetworkManager.IP6Config:Domains, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.Domains">The "Domains" property</a>
+<dt id="ientry-idm45223154087072">org.freedesktop.NetworkManager.IP6Config:Domains, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.Domains">The "Domains" property</a>
 </dt>
-<dt id="ientry-idm45308856866272">org.freedesktop.NetworkManager.IP6Config:Gateway, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.Gateway">The "Gateway" property</a>
+<dt id="ientry-idm45223150272400">org.freedesktop.NetworkManager.IP6Config:Gateway, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.Gateway">The "Gateway" property</a>
 </dt>
-<dt id="ientry-idm45308853711392">org.freedesktop.NetworkManager.IP6Config:Nameservers, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.Nameservers">The "Nameservers" property</a>
+<dt id="ientry-idm45223154970784">org.freedesktop.NetworkManager.IP6Config:Nameservers, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.Nameservers">The "Nameservers" property</a>
 </dt>
-<dt id="ientry-idm45308856858112">org.freedesktop.NetworkManager.IP6Config:RouteData, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.RouteData">The "RouteData" property</a>
+<dt id="ientry-idm45223157950160">org.freedesktop.NetworkManager.IP6Config:RouteData, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.RouteData">The "RouteData" property</a>
 </dt>
-<dt id="ientry-idm45308856862160">org.freedesktop.NetworkManager.IP6Config:Routes, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.Routes">The "Routes" property</a>
+<dt id="ientry-idm45223147058160">org.freedesktop.NetworkManager.IP6Config:Routes, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.Routes">The "Routes" property</a>
 </dt>
-<dt id="ientry-idm45308853703088">org.freedesktop.NetworkManager.IP6Config:Searches, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.Searches">The "Searches" property</a>
+<dt id="ientry-idm45223152896272">org.freedesktop.NetworkManager.IP6Config:Searches, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.Searches">The "Searches" property</a>
 </dt>
-<dt id="ientry-idm45308860490736">org.freedesktop.NetworkManager.SecretAgent, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.SecretAgent.html#gdbus-interface-org-freedesktop-NetworkManager-SecretAgent.top_of_page">org.freedesktop.NetworkManager.SecretAgent</a>
+<dt id="ientry-idm45223156897776">org.freedesktop.NetworkManager.SecretAgent, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.SecretAgent.html#gdbus-interface-org-freedesktop-NetworkManager-SecretAgent.top_of_page">org.freedesktop.NetworkManager.SecretAgent</a>
 </dt>
-<dt id="ientry-idm45308853087904">org.freedesktop.NetworkManager.SecretAgent.CancelGetSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.SecretAgent.html#gdbus-method-org-freedesktop-NetworkManager-SecretAgent.CancelGetSecrets">The CancelGetSecrets() method</a>
+<dt id="ientry-idm45223154460208">org.freedesktop.NetworkManager.SecretAgent.CancelGetSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.SecretAgent.html#gdbus-method-org-freedesktop-NetworkManager-SecretAgent.CancelGetSecrets">The CancelGetSecrets() method</a>
 </dt>
-<dt id="ientry-idm45308853544272">org.freedesktop.NetworkManager.SecretAgent.DeleteSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.SecretAgent.html#gdbus-method-org-freedesktop-NetworkManager-SecretAgent.DeleteSecrets">The DeleteSecrets() method</a>
+<dt id="ientry-idm45223148334784">org.freedesktop.NetworkManager.SecretAgent.DeleteSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.SecretAgent.html#gdbus-method-org-freedesktop-NetworkManager-SecretAgent.DeleteSecrets">The DeleteSecrets() method</a>
 </dt>
-<dt id="ientry-idm45308853109040">org.freedesktop.NetworkManager.SecretAgent.GetSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.SecretAgent.html#gdbus-method-org-freedesktop-NetworkManager-SecretAgent.GetSecrets">The GetSecrets() method</a>
+<dt id="ientry-idm45223153101216">org.freedesktop.NetworkManager.SecretAgent.GetSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.SecretAgent.html#gdbus-method-org-freedesktop-NetworkManager-SecretAgent.GetSecrets">The GetSecrets() method</a>
 </dt>
-<dt id="ientry-idm45308853554096">org.freedesktop.NetworkManager.SecretAgent.SaveSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.SecretAgent.html#gdbus-method-org-freedesktop-NetworkManager-SecretAgent.SaveSecrets">The SaveSecrets() method</a>
+<dt id="ientry-idm45223147711984">org.freedesktop.NetworkManager.SecretAgent.SaveSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.SecretAgent.html#gdbus-method-org-freedesktop-NetworkManager-SecretAgent.SaveSecrets">The SaveSecrets() method</a>
 </dt>
-<dt id="ientry-idm45308864112688">org.freedesktop.NetworkManager.Settings, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-interface-org-freedesktop-NetworkManager-Settings.top_of_page">org.freedesktop.NetworkManager.Settings</a>
+<dt id="ientry-idm45223156575728">org.freedesktop.NetworkManager.Settings, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-interface-org-freedesktop-NetworkManager-Settings.top_of_page">org.freedesktop.NetworkManager.Settings</a>
 </dt>
-<dt id="ientry-idm45308866237424">org.freedesktop.NetworkManager.Settings.AddConnection(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-method-org-freedesktop-NetworkManager-Settings.AddConnection">The AddConnection() method</a>
+<dt id="ientry-idm45223153058624">org.freedesktop.NetworkManager.Settings.AddConnection(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-method-org-freedesktop-NetworkManager-Settings.AddConnection">The AddConnection() method</a>
 </dt>
-<dt id="ientry-idm45308861896352">org.freedesktop.NetworkManager.Settings.AddConnectionUnsaved(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-method-org-freedesktop-NetworkManager-Settings.AddConnectionUnsaved">The AddConnectionUnsaved() method</a>
+<dt id="ientry-idm45223154730288">org.freedesktop.NetworkManager.Settings.AddConnectionUnsaved(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-method-org-freedesktop-NetworkManager-Settings.AddConnectionUnsaved">The AddConnectionUnsaved() method</a>
 </dt>
-<dt id="ientry-idm45308862767760">org.freedesktop.NetworkManager.Settings.Connection, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-interface-org-freedesktop-NetworkManager-Settings-Connection.top_of_page">org.freedesktop.NetworkManager.Settings.Connection</a>
+<dt id="ientry-idm45223152978208">org.freedesktop.NetworkManager.Settings.Connection, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-interface-org-freedesktop-NetworkManager-Settings-Connection.top_of_page">org.freedesktop.NetworkManager.Settings.Connection</a>
 </dt>
-<dt id="ientry-idm45308858590672">org.freedesktop.NetworkManager.Settings.Connection.ClearSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-method-org-freedesktop-NetworkManager-Settings-Connection.ClearSecrets">The ClearSecrets() method</a>
+<dt id="ientry-idm45223158236160">org.freedesktop.NetworkManager.Settings.Connection.ClearSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-method-org-freedesktop-NetworkManager-Settings-Connection.ClearSecrets">The ClearSecrets() method</a>
 </dt>
-<dt id="ientry-idm45308858098352">org.freedesktop.NetworkManager.Settings.Connection.Delete(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-method-org-freedesktop-NetworkManager-Settings-Connection.Delete">The Delete() method</a>
+<dt id="ientry-idm45223150045776">org.freedesktop.NetworkManager.Settings.Connection.Delete(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-method-org-freedesktop-NetworkManager-Settings-Connection.Delete">The Delete() method</a>
 </dt>
-<dt id="ientry-idm45308858086720">org.freedesktop.NetworkManager.Settings.Connection.GetSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-method-org-freedesktop-NetworkManager-Settings-Connection.GetSecrets">The GetSecrets() method</a>
+<dt id="ientry-idm45223152315984">org.freedesktop.NetworkManager.Settings.Connection.GetSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-method-org-freedesktop-NetworkManager-Settings-Connection.GetSecrets">The GetSecrets() method</a>
 </dt>
-<dt id="ientry-idm45308858094176">org.freedesktop.NetworkManager.Settings.Connection.GetSettings(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-method-org-freedesktop-NetworkManager-Settings-Connection.GetSettings">The GetSettings() method</a>
+<dt id="ientry-idm45223150041600">org.freedesktop.NetworkManager.Settings.Connection.GetSettings(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-method-org-freedesktop-NetworkManager-Settings-Connection.GetSettings">The GetSettings() method</a>
 </dt>
-<dt id="ientry-idm45308858586448">org.freedesktop.NetworkManager.Settings.Connection.Save(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-method-org-freedesktop-NetworkManager-Settings-Connection.Save">The Save() method</a>
+<dt id="ientry-idm45223158231904">org.freedesktop.NetworkManager.Settings.Connection.Save(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-method-org-freedesktop-NetworkManager-Settings-Connection.Save">The Save() method</a>
 </dt>
-<dt id="ientry-idm45308864610768">org.freedesktop.NetworkManager.Settings.Connection.Update(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-method-org-freedesktop-NetworkManager-Settings-Connection.Update">The Update() method</a>
+<dt id="ientry-idm45223149806416">org.freedesktop.NetworkManager.Settings.Connection.Update(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-method-org-freedesktop-NetworkManager-Settings-Connection.Update">The Update() method</a>
 </dt>
-<dt id="ientry-idm45308858582096">org.freedesktop.NetworkManager.Settings.Connection.Update2(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-method-org-freedesktop-NetworkManager-Settings-Connection.Update2">The Update2() method</a>
+<dt id="ientry-idm45223150399424">org.freedesktop.NetworkManager.Settings.Connection.Update2(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-method-org-freedesktop-NetworkManager-Settings-Connection.Update2">The Update2() method</a>
 </dt>
-<dt id="ientry-idm45308858320736">org.freedesktop.NetworkManager.Settings.Connection.UpdateUnsaved(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-method-org-freedesktop-NetworkManager-Settings-Connection.UpdateUnsaved">The UpdateUnsaved() method</a>
+<dt id="ientry-idm45223150452032">org.freedesktop.NetworkManager.Settings.Connection.UpdateUnsaved(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-method-org-freedesktop-NetworkManager-Settings-Connection.UpdateUnsaved">The UpdateUnsaved() method</a>
 </dt>
-<dt id="ientry-idm45308858736464">org.freedesktop.NetworkManager.Settings.Connection::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-Settings-Connection.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223150279984">org.freedesktop.NetworkManager.Settings.Connection::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-Settings-Connection.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308858741056">org.freedesktop.NetworkManager.Settings.Connection::Removed, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-Settings-Connection.Removed">The "Removed" signal</a>
+<dt id="ientry-idm45223150284256">org.freedesktop.NetworkManager.Settings.Connection::Removed, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-Settings-Connection.Removed">The "Removed" signal</a>
 </dt>
-<dt id="ientry-idm45308858745552">org.freedesktop.NetworkManager.Settings.Connection::Updated, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-Settings-Connection.Updated">The "Updated" signal</a>
+<dt id="ientry-idm45223150288464">org.freedesktop.NetworkManager.Settings.Connection::Updated, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-Settings-Connection.Updated">The "Updated" signal</a>
 </dt>
-<dt id="ientry-idm45308855168992">org.freedesktop.NetworkManager.Settings.Connection:Flags, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Flags">The "Flags" property</a>
+<dt id="ientry-idm45223150077264">org.freedesktop.NetworkManager.Settings.Connection:Filename, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Filename">The "Filename" property</a>
 </dt>
-<dt id="ientry-idm45308855173440">org.freedesktop.NetworkManager.Settings.Connection:Unsaved, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Unsaved">The "Unsaved" property</a>
+<dt id="ientry-idm45223150082848">org.freedesktop.NetworkManager.Settings.Connection:Flags, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Flags">The "Flags" property</a>
 </dt>
-<dt id="ientry-idm45308858287568">org.freedesktop.NetworkManager.Settings.GetConnectionByUuid(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-method-org-freedesktop-NetworkManager-Settings.GetConnectionByUuid">The GetConnectionByUuid() method</a>
+<dt id="ientry-idm45223150086976">org.freedesktop.NetworkManager.Settings.Connection:Unsaved, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Unsaved">The "Unsaved" property</a>
 </dt>
-<dt id="ientry-idm45308866342080">org.freedesktop.NetworkManager.Settings.ListConnections(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-method-org-freedesktop-NetworkManager-Settings.ListConnections">The ListConnections() method</a>
+<dt id="ientry-idm45223153238016">org.freedesktop.NetworkManager.Settings.GetConnectionByUuid(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-method-org-freedesktop-NetworkManager-Settings.GetConnectionByUuid">The GetConnectionByUuid() method</a>
 </dt>
-<dt id="ientry-idm45308857954096">org.freedesktop.NetworkManager.Settings.LoadConnections(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-method-org-freedesktop-NetworkManager-Settings.LoadConnections">The LoadConnections() method</a>
+<dt id="ientry-idm45223152857776">org.freedesktop.NetworkManager.Settings.ListConnections(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-method-org-freedesktop-NetworkManager-Settings.ListConnections">The ListConnections() method</a>
 </dt>
-<dt id="ientry-idm45308858005072">org.freedesktop.NetworkManager.Settings.ReloadConnections(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-method-org-freedesktop-NetworkManager-Settings.ReloadConnections">The ReloadConnections() method</a>
+<dt id="ientry-idm45223152880960">org.freedesktop.NetworkManager.Settings.LoadConnections(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-method-org-freedesktop-NetworkManager-Settings.LoadConnections">The LoadConnections() method</a>
 </dt>
-<dt id="ientry-idm45308861904240">org.freedesktop.NetworkManager.Settings.SaveHostname(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-method-org-freedesktop-NetworkManager-Settings.SaveHostname">The SaveHostname() method</a>
+<dt id="ientry-idm45223153995568">org.freedesktop.NetworkManager.Settings.ReloadConnections(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-method-org-freedesktop-NetworkManager-Settings.ReloadConnections">The ReloadConnections() method</a>
 </dt>
-<dt id="ientry-idm45308858300144">org.freedesktop.NetworkManager.Settings::ConnectionRemoved, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-signal-org-freedesktop-NetworkManager-Settings.ConnectionRemoved">The "ConnectionRemoved" signal</a>
+<dt id="ientry-idm45223153975424">org.freedesktop.NetworkManager.Settings.SaveHostname(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-method-org-freedesktop-NetworkManager-Settings.SaveHostname">The SaveHostname() method</a>
 </dt>
-<dt id="ientry-idm45308864323296">org.freedesktop.NetworkManager.Settings::NewConnection, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-signal-org-freedesktop-NetworkManager-Settings.NewConnection">The "NewConnection" signal</a>
+<dt id="ientry-idm45223153170784">org.freedesktop.NetworkManager.Settings::ConnectionRemoved, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-signal-org-freedesktop-NetworkManager-Settings.ConnectionRemoved">The "ConnectionRemoved" signal</a>
 </dt>
-<dt id="ientry-idm45308860566528">org.freedesktop.NetworkManager.Settings::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-signal-org-freedesktop-NetworkManager-Settings.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223152808560">org.freedesktop.NetworkManager.Settings::NewConnection, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-signal-org-freedesktop-NetworkManager-Settings.NewConnection">The "NewConnection" signal</a>
 </dt>
-<dt id="ientry-idm45308858024976">org.freedesktop.NetworkManager.Settings:CanModify, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-property-org-freedesktop-NetworkManager-Settings.CanModify">The "CanModify" property</a>
+<dt id="ientry-idm45223152945456">org.freedesktop.NetworkManager.Settings::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-signal-org-freedesktop-NetworkManager-Settings.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308858290384">org.freedesktop.NetworkManager.Settings:Connections, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-property-org-freedesktop-NetworkManager-Settings.Connections">The "Connections" property</a>
+<dt id="ientry-idm45223153141104">org.freedesktop.NetworkManager.Settings:CanModify, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-property-org-freedesktop-NetworkManager-Settings.CanModify">The "CanModify" property</a>
 </dt>
-<dt id="ientry-idm45308858029200">org.freedesktop.NetworkManager.Settings:Hostname, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-property-org-freedesktop-NetworkManager-Settings.Hostname">The "Hostname" property</a>
+<dt id="ientry-idm45223153799168">org.freedesktop.NetworkManager.Settings:Connections, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-property-org-freedesktop-NetworkManager-Settings.Connections">The "Connections" property</a>
+</dt>
+<dt id="ientry-idm45223153145328">org.freedesktop.NetworkManager.Settings:Hostname, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-property-org-freedesktop-NetworkManager-Settings.Hostname">The "Hostname" property</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>A</h3>
 <dl>
-<dt id="ientry-idm45308860396096">org.freedesktop.NetworkManager.Connection.Active, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-interface-org-freedesktop-NetworkManager-Connection-Active.top_of_page">org.freedesktop.NetworkManager.Connection.Active</a>
+<dt id="ientry-idm45223156778272">org.freedesktop.NetworkManager.Connection.Active, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-interface-org-freedesktop-NetworkManager-Connection-Active.top_of_page">org.freedesktop.NetworkManager.Connection.Active</a>
 </dt>
-<dt id="ientry-idm45308856826304">org.freedesktop.NetworkManager.Connection.Active::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-signal-org-freedesktop-NetworkManager-Connection-Active.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223148690304">org.freedesktop.NetworkManager.Connection.Active::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-signal-org-freedesktop-NetworkManager-Connection-Active.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308856232928">org.freedesktop.NetworkManager.Connection.Active::StateChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-signal-org-freedesktop-NetworkManager-Connection-Active.StateChanged">The "StateChanged" signal</a>
+<dt id="ientry-idm45223148672144">org.freedesktop.NetworkManager.Connection.Active::StateChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-signal-org-freedesktop-NetworkManager-Connection-Active.StateChanged">The "StateChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308856817184">org.freedesktop.NetworkManager.Connection.Active:Connection, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Connection">The "Connection" property</a>
+<dt id="ientry-idm45223148681136">org.freedesktop.NetworkManager.Connection.Active:Connection, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Connection">The "Connection" property</a>
 </dt>
-<dt id="ientry-idm45308856614288">org.freedesktop.NetworkManager.Connection.Active:Default, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Default">The "Default" property</a>
+<dt id="ientry-idm45223148220528">org.freedesktop.NetworkManager.Connection.Active:Default, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Default">The "Default" property</a>
 </dt>
-<dt id="ientry-idm45308871660384">org.freedesktop.NetworkManager.Connection.Active:Default6, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Default6">The "Default6" property</a>
+<dt id="ientry-idm45223148207296">org.freedesktop.NetworkManager.Connection.Active:Default6, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Default6">The "Default6" property</a>
 </dt>
-<dt id="ientry-idm45308856629040">org.freedesktop.NetworkManager.Connection.Active:Devices, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Devices">The "Devices" property</a>
+<dt id="ientry-idm45223148235280">org.freedesktop.NetworkManager.Connection.Active:Devices, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Devices">The "Devices" property</a>
 </dt>
-<dt id="ientry-idm45308856605584">org.freedesktop.NetworkManager.Connection.Active:Dhcp4Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Dhcp4Config">The "Dhcp4Config" property</a>
+<dt id="ientry-idm45223148211824">org.freedesktop.NetworkManager.Connection.Active:Dhcp4Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Dhcp4Config">The "Dhcp4Config" property</a>
 </dt>
-<dt id="ientry-idm45308871651664">org.freedesktop.NetworkManager.Connection.Active:Dhcp6Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Dhcp6Config">The "Dhcp6Config" property</a>
+<dt id="ientry-idm45223148198576">org.freedesktop.NetworkManager.Connection.Active:Dhcp6Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Dhcp6Config">The "Dhcp6Config" property</a>
 </dt>
-<dt id="ientry-idm45308856641808">org.freedesktop.NetworkManager.Connection.Active:Id, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Id">The "Id" property</a>
+<dt id="ientry-idm45223148248048">org.freedesktop.NetworkManager.Connection.Active:Id, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Id">The "Id" property</a>
 </dt>
-<dt id="ientry-idm45308856609872">org.freedesktop.NetworkManager.Connection.Active:Ip4Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Ip4Config">The "Ip4Config" property</a>
+<dt id="ientry-idm45223148216112">org.freedesktop.NetworkManager.Connection.Active:Ip4Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Ip4Config">The "Ip4Config" property</a>
 </dt>
-<dt id="ientry-idm45308871655952">org.freedesktop.NetworkManager.Connection.Active:Ip6Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Ip6Config">The "Ip6Config" property</a>
+<dt id="ientry-idm45223148202864">org.freedesktop.NetworkManager.Connection.Active:Ip6Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Ip6Config">The "Ip6Config" property</a>
 </dt>
-<dt id="ientry-idm45308856497696">org.freedesktop.NetworkManager.Connection.Active:Master, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Master">The "Master" property</a>
+<dt id="ientry-idm45223148189904">org.freedesktop.NetworkManager.Connection.Active:Master, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Master">The "Master" property</a>
 </dt>
-<dt id="ientry-idm45308856645872">org.freedesktop.NetworkManager.Connection.Active:SpecificObject, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.SpecificObject">The "SpecificObject" property</a>
+<dt id="ientry-idm45223148252272">org.freedesktop.NetworkManager.Connection.Active:SpecificObject, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.SpecificObject">The "SpecificObject" property</a>
 </dt>
-<dt id="ientry-idm45308856624704">org.freedesktop.NetworkManager.Connection.Active:State, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.State">The "State" property</a>
+<dt id="ientry-idm45223148230944">org.freedesktop.NetworkManager.Connection.Active:State, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.State">The "State" property</a>
 </dt>
-<dt id="ientry-idm45308856619520">org.freedesktop.NetworkManager.Connection.Active:StateFlags, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.StateFlags">The "StateFlags" property</a>
+<dt id="ientry-idm45223148225760">org.freedesktop.NetworkManager.Connection.Active:StateFlags, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.StateFlags">The "StateFlags" property</a>
 </dt>
-<dt id="ientry-idm45308856633296">org.freedesktop.NetworkManager.Connection.Active:Type, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Type">The "Type" property</a>
+<dt id="ientry-idm45223148239536">org.freedesktop.NetworkManager.Connection.Active:Type, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Type">The "Type" property</a>
 </dt>
-<dt id="ientry-idm45308856637552">org.freedesktop.NetworkManager.Connection.Active:Uuid, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Uuid">The "Uuid" property</a>
+<dt id="ientry-idm45223148243792">org.freedesktop.NetworkManager.Connection.Active:Uuid, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Uuid">The "Uuid" property</a>
 </dt>
-<dt id="ientry-idm45308856501888">org.freedesktop.NetworkManager.Connection.Active:Vpn, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Vpn">The "Vpn" property</a>
+<dt id="ientry-idm45223148194096">org.freedesktop.NetworkManager.Connection.Active:Vpn, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Vpn">The "Vpn" property</a>
 </dt>
-<dt id="ientry-idm45308854775424">addr-gen-mode, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146525664">addr-gen-mode, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854865184">address-data, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146616048">address-data, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854861584">addresses, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146612448">addresses, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854048096">ageing, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
+<dt id="ientry-idm45223145791552">ageing, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
 </dt>
-<dt id="ientry-idm45308855110464">ageing-time, <a class="indexterm" href="settings-bridge.html">bridge</a>
+<dt id="ientry-idm45223146861168">ageing-time, <a class="indexterm" href="settings-bridge.html">bridge</a>
 </dt>
-<dt id="ientry-idm45308858963904">altsubject-matches, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150710768">altsubject-matches, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858959840">anonymous-identity, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150706704">anonymous-identity, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308854944752">apn, <a class="indexterm" href="settings-gsm.html">gsm</a>
+<dt id="ientry-idm45223146695616">apn, <a class="indexterm" href="settings-gsm.html">gsm</a>
 </dt>
-<dt id="ientry-idm45308855023120">app-fcoe-flags, <a class="indexterm" href="settings-dcb.html">dcb</a>
+<dt id="ientry-idm45223146773824">app-fcoe-flags, <a class="indexterm" href="settings-dcb.html">dcb</a>
 </dt>
-<dt id="ientry-idm45308855019536">app-fcoe-mode, <a class="indexterm" href="settings-dcb.html">dcb</a>
+<dt id="ientry-idm45223146770240">app-fcoe-mode, <a class="indexterm" href="settings-dcb.html">dcb</a>
 </dt>
-<dt id="ientry-idm45308855016048">app-fcoe-priority, <a class="indexterm" href="settings-dcb.html">dcb</a>
+<dt id="ientry-idm45223146766752">app-fcoe-priority, <a class="indexterm" href="settings-dcb.html">dcb</a>
 </dt>
-<dt id="ientry-idm45308855012352">app-fip-flags, <a class="indexterm" href="settings-dcb.html">dcb</a>
+<dt id="ientry-idm45223146763056">app-fip-flags, <a class="indexterm" href="settings-dcb.html">dcb</a>
 </dt>
-<dt id="ientry-idm45308855008768">app-fip-priority, <a class="indexterm" href="settings-dcb.html">dcb</a>
+<dt id="ientry-idm45223146759472">app-fip-priority, <a class="indexterm" href="settings-dcb.html">dcb</a>
 </dt>
-<dt id="ientry-idm45308855005072">app-iscsi-flags, <a class="indexterm" href="settings-dcb.html">dcb</a>
+<dt id="ientry-idm45223146755776">app-iscsi-flags, <a class="indexterm" href="settings-dcb.html">dcb</a>
 </dt>
-<dt id="ientry-idm45308855001488">app-iscsi-priority, <a class="indexterm" href="settings-dcb.html">dcb</a>
+<dt id="ientry-idm45223146752192">app-iscsi-priority, <a class="indexterm" href="settings-dcb.html">dcb</a>
 </dt>
-<dt id="ientry-idm45308853959904">assigned-mac-address, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223145703360">assigned-mac-address, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308853807920">auth-alg, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145545248">auth-alg, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308863090112">auth-retries, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223149925472">auth-retries, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
-<dt id="ientry-idm45308858956160">auth-timeout, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150703024">auth-timeout, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308853956224">auto-negotiate, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
+<dt id="ientry-idm45223145699680">auto-negotiate, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
 </dt>
-<dt id="ientry-idm45308866384448">autoconnect, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223153882688">autoconnect, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
-<dt id="ientry-idm45308864362800">autoconnect-priority, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223153879120">autoconnect-priority, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
-<dt id="ientry-idm45308862134032">autoconnect-retries, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223155885856">autoconnect-retries, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
-<dt id="ientry-idm45308862130192">autoconnect-slaves, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223155882016">autoconnect-slaves, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>B</h3>
 <dl>
-<dt id="ientry-idm45308853886464">band, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223145628400">band, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308854449856">baud, <a class="indexterm" href="settings-ppp.html">ppp</a>, <a class="indexterm" href="settings-serial.html">serial</a>
+<dt id="ientry-idm45223146193504">baud, <a class="indexterm" href="settings-ppp.html">ppp</a>, <a class="indexterm" href="settings-serial.html">serial</a>
 </dt>
-<dt id="ientry-idm45308855140032">bdaddr, <a class="indexterm" href="settings-bluetooth.html">bluetooth</a>
+<dt id="ientry-idm45223146890736">bdaddr, <a class="indexterm" href="settings-bluetooth.html">bluetooth</a>
 </dt>
-<dt id="ientry-idm45308854313056">bits, <a class="indexterm" href="settings-serial.html">serial</a>
+<dt id="ientry-idm45223146056576">bits, <a class="indexterm" href="settings-serial.html">serial</a>
 </dt>
-<dt id="ientry-idm45308854481760">bond-downdelay, <a class="indexterm" href="settings-ovs-port.html">ovs-port</a>
+<dt id="ientry-idm45223146225472">bond-downdelay, <a class="indexterm" href="settings-ovs-port.html">ovs-port</a>
 </dt>
-<dt id="ientry-idm45308854477840">bond-mode, <a class="indexterm" href="settings-ovs-port.html">ovs-port</a>
+<dt id="ientry-idm45223146221552">bond-mode, <a class="indexterm" href="settings-ovs-port.html">ovs-port</a>
 </dt>
-<dt id="ientry-idm45308854474080">bond-updelay, <a class="indexterm" href="settings-ovs-port.html">ovs-port</a>
+<dt id="ientry-idm45223146217792">bond-updelay, <a class="indexterm" href="settings-ovs-port.html">ovs-port</a>
 </dt>
-<dt id="ientry-idm45308854341392">browser-only, <a class="indexterm" href="settings-proxy.html">proxy</a>
+<dt id="ientry-idm45223146084912">browser-only, <a class="indexterm" href="settings-proxy.html">proxy</a>
 </dt>
-<dt id="ientry-idm45308853882352">bssid, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223145624288">bssid, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>C</h3>
 <dl>
-<dt id="ientry-idm45308858952160">ca-cert, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150699024">ca-cert, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858948480">ca-cert-password, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150695344">ca-cert-password, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858944800">ca-cert-password-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150691664">ca-cert-password-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858941152">ca-path, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150688016">ca-path, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308854551920">channel, <a class="indexterm" href="settings-802-11-olpc-mesh.html">802-11-olpc-mesh</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223146295504">channel, <a class="indexterm" href="settings-802-11-olpc-mesh.html">802-11-olpc-mesh</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308858937264">client-cert, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150684128">client-cert, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858933584">client-cert-password, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150680448">client-cert-password, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858929744">client-cert-password-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150676608">client-cert-password-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308853952208">cloned-mac-address, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223145695376">cloned-mac-address, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308854271808">config, <a class="indexterm" href="settings-team.html">team</a>, <a class="indexterm" href="settings-team-port.html">team-port</a>
+<dt id="ientry-idm45223146015264">config, <a class="indexterm" href="settings-team.html">team</a>, <a class="indexterm" href="settings-team-port.html">team-port</a>
 </dt>
-<dt id="ientry-idm45308854446016">crtscts, <a class="indexterm" href="settings-ppp.html">ppp</a>
+<dt id="ientry-idm45223146189664">crtscts, <a class="indexterm" href="settings-ppp.html">ppp</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>D</h3>
 <dl>
-<dt id="ientry-idm45308854858096">dad-timeout, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146608960">dad-timeout, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+</dt>
+<dt id="ientry-idm45223145870080">data, <a class="indexterm" href="settings-user.html">user</a>, <a class="indexterm" href="settings-vpn.html">vpn</a>
+</dt>
+<dt id="ientry-idm45223145787632">destination-port, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
 </dt>
-<dt id="ientry-idm45308854126688">data, <a class="indexterm" href="settings-user.html">user</a>, <a class="indexterm" href="settings-vpn.html">vpn</a>
+<dt id="ientry-idm45223146691792">device-id, <a class="indexterm" href="settings-gsm.html">gsm</a>
 </dt>
-<dt id="ientry-idm45308854044176">destination-port, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
+<dt id="ientry-idm45223155340048">org.freedesktop.NetworkManager.Device.Wired, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Wired.top_of_page">org.freedesktop.NetworkManager.Device.Wired</a>
 </dt>
-<dt id="ientry-idm45308854940928">device-id, <a class="indexterm" href="settings-gsm.html">gsm</a>
+<dt id="ientry-idm45223157176384">org.freedesktop.NetworkManager.Device.Wired::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Wired.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308858013952">org.freedesktop.NetworkManager.Device.Wired, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Wired.top_of_page">org.freedesktop.NetworkManager.Device.Wired</a>
+<dt id="ientry-idm45223150437952">org.freedesktop.NetworkManager.Device.Wired:Carrier, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wired.Carrier">The "Carrier" property</a>
 </dt>
-<dt id="ientry-idm45308858142560">org.freedesktop.NetworkManager.Device.Wired::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Wired.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223157167648">org.freedesktop.NetworkManager.Device.Wired:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wired.HwAddress">The "HwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308858642720">org.freedesktop.NetworkManager.Device.Wired:Carrier, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wired.Carrier">The "Carrier" property</a>
+<dt id="ientry-idm45223157163584">org.freedesktop.NetworkManager.Device.Wired:PermHwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wired.PermHwAddress">The "PermHwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308858076320">org.freedesktop.NetworkManager.Device.Wired:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wired.HwAddress">The "HwAddress" property</a>
+<dt id="ientry-idm45223150441952">org.freedesktop.NetworkManager.Device.Wired:S390Subchannels, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wired.S390Subchannels">The "S390Subchannels" property</a>
 </dt>
-<dt id="ientry-idm45308858072256">org.freedesktop.NetworkManager.Device.Wired:PermHwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wired.PermHwAddress">The "PermHwAddress" property</a>
+<dt id="ientry-idm45223150446128">org.freedesktop.NetworkManager.Device.Wired:Speed, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wired.Speed">The "Speed" property</a>
 </dt>
-<dt id="ientry-idm45308858619472">org.freedesktop.NetworkManager.Device.Wired:S390Subchannels, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wired.S390Subchannels">The "S390Subchannels" property</a>
+<dt id="ientry-idm45223153891488">org.freedesktop.NetworkManager.Device.Wireless, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Wireless.top_of_page">org.freedesktop.NetworkManager.Device.Wireless</a>
 </dt>
-<dt id="ientry-idm45308858623648">org.freedesktop.NetworkManager.Device.Wired:Speed, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wired.Speed">The "Speed" property</a>
+<dt id="ientry-idm45223148744512">org.freedesktop.NetworkManager.Device.Wireless.GetAccessPoints(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-method-org-freedesktop-NetworkManager-Device-Wireless.GetAccessPoints">The GetAccessPoints() method</a>
 </dt>
-<dt id="ientry-idm45308858678064">org.freedesktop.NetworkManager.Device.Wireless, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-interface-org-freedesktop-NetworkManager-Device-Wireless.top_of_page">org.freedesktop.NetworkManager.Device.Wireless</a>
+<dt id="ientry-idm45223148735168">org.freedesktop.NetworkManager.Device.Wireless.GetAllAccessPoints(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-method-org-freedesktop-NetworkManager-Device-Wireless.GetAllAccessPoints">The GetAllAccessPoints() method</a>
 </dt>
-<dt id="ientry-idm45308855690064">org.freedesktop.NetworkManager.Device.Wireless.GetAccessPoints(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-method-org-freedesktop-NetworkManager-Device-Wireless.GetAccessPoints">The GetAccessPoints() method</a>
+<dt id="ientry-idm45223147692160">org.freedesktop.NetworkManager.Device.Wireless.RequestScan(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-method-org-freedesktop-NetworkManager-Device-Wireless.RequestScan">The RequestScan() method</a>
 </dt>
-<dt id="ientry-idm45308855817808">org.freedesktop.NetworkManager.Device.Wireless.GetAllAccessPoints(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-method-org-freedesktop-NetworkManager-Device-Wireless.GetAllAccessPoints">The GetAllAccessPoints() method</a>
+<dt id="ientry-idm45223147655872">org.freedesktop.NetworkManager.Device.Wireless::AccessPointAdded, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Wireless.AccessPointAdded">The "AccessPointAdded" signal</a>
 </dt>
-<dt id="ientry-idm45308855867744">org.freedesktop.NetworkManager.Device.Wireless.RequestScan(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-method-org-freedesktop-NetworkManager-Device-Wireless.RequestScan">The RequestScan() method</a>
+<dt id="ientry-idm45223147648304">org.freedesktop.NetworkManager.Device.Wireless::AccessPointRemoved, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Wireless.AccessPointRemoved">The "AccessPointRemoved" signal</a>
 </dt>
-<dt id="ientry-idm45308855722272">org.freedesktop.NetworkManager.Device.Wireless::AccessPointAdded, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Wireless.AccessPointAdded">The "AccessPointAdded" signal</a>
+<dt id="ientry-idm45223147682784">org.freedesktop.NetworkManager.Device.Wireless::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Wireless.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308855714784">org.freedesktop.NetworkManager.Device.Wireless::AccessPointRemoved, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Wireless.AccessPointRemoved">The "AccessPointRemoved" signal</a>
+<dt id="ientry-idm45223148712576">org.freedesktop.NetworkManager.Device.Wireless:AccessPoints, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.AccessPoints">The "AccessPoints" property</a>
 </dt>
-<dt id="ientry-idm45308855858448">org.freedesktop.NetworkManager.Device.Wireless::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Wireless.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223148708208">org.freedesktop.NetworkManager.Device.Wireless:ActiveAccessPoint, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.ActiveAccessPoint">The "ActiveAccessPoint" property</a>
 </dt>
-<dt id="ientry-idm45308856934928">org.freedesktop.NetworkManager.Device.Wireless:AccessPoints, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.AccessPoints">The "AccessPoints" property</a>
+<dt id="ientry-idm45223148716768">org.freedesktop.NetworkManager.Device.Wireless:Bitrate, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.Bitrate">The "Bitrate" property</a>
 </dt>
-<dt id="ientry-idm45308856930560">org.freedesktop.NetworkManager.Device.Wireless:ActiveAccessPoint, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.ActiveAccessPoint">The "ActiveAccessPoint" property</a>
+<dt id="ientry-idm45223147638768">org.freedesktop.NetworkManager.Device.Wireless:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.HwAddress">The "HwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308856939216">org.freedesktop.NetworkManager.Device.Wireless:Bitrate, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.Bitrate">The "Bitrate" property</a>
+<dt id="ientry-idm45223148698560">org.freedesktop.NetworkManager.Device.Wireless:LastScan, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.LastScan">The "LastScan" property</a>
 </dt>
-<dt id="ientry-idm45308855705248">org.freedesktop.NetworkManager.Device.Wireless:HwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.HwAddress">The "HwAddress" property</a>
+<dt id="ientry-idm45223147630272">org.freedesktop.NetworkManager.Device.Wireless:Mode, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.Mode">The "Mode" property</a>
 </dt>
-<dt id="ientry-idm45308856944336">org.freedesktop.NetworkManager.Device.Wireless:Mode, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.Mode">The "Mode" property</a>
+<dt id="ientry-idm45223147634496">org.freedesktop.NetworkManager.Device.Wireless:PermHwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.PermHwAddress">The "PermHwAddress" property</a>
 </dt>
-<dt id="ientry-idm45308855700976">org.freedesktop.NetworkManager.Device.Wireless:PermHwAddress, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.PermHwAddress">The "PermHwAddress" property</a>
+<dt id="ientry-idm45223148703824">org.freedesktop.NetworkManager.Device.Wireless:WirelessCapabilities, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.WirelessCapabilities">The "WirelessCapabilities" property</a>
 </dt>
-<dt id="ientry-idm45308856926176">org.freedesktop.NetworkManager.Device.Wireless:WirelessCapabilities, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.WirelessCapabilities">The "WirelessCapabilities" property</a>
+<dt id="ientry-idm45223146291584">dhcp-anycast-address, <a class="indexterm" href="settings-802-11-olpc-mesh.html">802-11-olpc-mesh</a>
 </dt>
-<dt id="ientry-idm45308854548000">dhcp-anycast-address, <a class="indexterm" href="settings-802-11-olpc-mesh.html">802-11-olpc-mesh</a>
+<dt id="ientry-idm45223146605472">dhcp-client-id, <a class="indexterm" href="settings-ipv4.html">ipv4</a>
 </dt>
-<dt id="ientry-idm45308854854608">dhcp-client-id, <a class="indexterm" href="settings-ipv4.html">ipv4</a>
+<dt id="ientry-idm45223146509392">dhcp-duid, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854850144">dhcp-fqdn, <a class="indexterm" href="settings-ipv4.html">ipv4</a>
+<dt id="ientry-idm45223146601008">dhcp-fqdn, <a class="indexterm" href="settings-ipv4.html">ipv4</a>
 </dt>
-<dt id="ientry-idm45308854846544">dhcp-hostname, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146597408">dhcp-hostname, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854842960">dhcp-send-hostname, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146593824">dhcp-send-hostname, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854839136">dhcp-timeout, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146590000">dhcp-timeout, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308867120608">org.freedesktop.NetworkManager.DHCP4Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DHCP4Config.html#gdbus-interface-org-freedesktop-NetworkManager-DHCP4Config.top_of_page">org.freedesktop.NetworkManager.DHCP4Config</a>
+<dt id="ientry-idm45223158783456">org.freedesktop.NetworkManager.DHCP4Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DHCP4Config.html#gdbus-interface-org-freedesktop-NetworkManager-DHCP4Config.top_of_page">org.freedesktop.NetworkManager.DHCP4Config</a>
 </dt>
-<dt id="ientry-idm45308856131424">org.freedesktop.NetworkManager.DHCP4Config::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DHCP4Config.html#gdbus-signal-org-freedesktop-NetworkManager-DHCP4Config.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223157816016">org.freedesktop.NetworkManager.DHCP4Config::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DHCP4Config.html#gdbus-signal-org-freedesktop-NetworkManager-DHCP4Config.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308856116624">org.freedesktop.NetworkManager.DHCP4Config:Options, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DHCP4Config.html#gdbus-property-org-freedesktop-NetworkManager-DHCP4Config.Options">The "Options" property</a>
+<dt id="ientry-idm45223158077648">org.freedesktop.NetworkManager.DHCP4Config:Options, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DHCP4Config.html#gdbus-property-org-freedesktop-NetworkManager-DHCP4Config.Options">The "Options" property</a>
 </dt>
-<dt id="ientry-idm45308865461696">org.freedesktop.NetworkManager.DHCP6Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DHCP6Config.html#gdbus-interface-org-freedesktop-NetworkManager-DHCP6Config.top_of_page">org.freedesktop.NetworkManager.DHCP6Config</a>
+<dt id="ientry-idm45223158471472">org.freedesktop.NetworkManager.DHCP6Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DHCP6Config.html#gdbus-interface-org-freedesktop-NetworkManager-DHCP6Config.top_of_page">org.freedesktop.NetworkManager.DHCP6Config</a>
 </dt>
-<dt id="ientry-idm45308856685872">org.freedesktop.NetworkManager.DHCP6Config::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DHCP6Config.html#gdbus-signal-org-freedesktop-NetworkManager-DHCP6Config.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223148282880">org.freedesktop.NetworkManager.DHCP6Config::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DHCP6Config.html#gdbus-signal-org-freedesktop-NetworkManager-DHCP6Config.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308856102608">org.freedesktop.NetworkManager.DHCP6Config:Options, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DHCP6Config.html#gdbus-property-org-freedesktop-NetworkManager-DHCP6Config.Options">The "Options" property</a>
+<dt id="ientry-idm45223148270928">org.freedesktop.NetworkManager.DHCP6Config:Options, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.DHCP6Config.html#gdbus-property-org-freedesktop-NetworkManager-DHCP6Config.Options">The "Options" property</a>
 </dt>
-<dt id="ientry-idm45308854835648">dns, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146586512">dns, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854832160">dns-options, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146582944">dns-options, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854828432">dns-priority, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146579216">dns-priority, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854823376">dns-search, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146574160">dns-search, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308858926160">domain-suffix-match, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150673024">domain-suffix-match, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308853948304">duplex, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
+<dt id="ientry-idm45223145691472">duplex, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>E</h3>
 <dl>
-<dt id="ientry-idm45308858922112">eap, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150668976">eap, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308854113600">egress-priority-map, <a class="indexterm" href="settings-vlan.html">vlan</a>
+<dt id="ientry-idm45223145857056">egress-priority-map, <a class="indexterm" href="settings-vlan.html">vlan</a>
 </dt>
-<dt id="ientry-idm45308858783792">encapsulation, <a class="indexterm" href="settings-adsl.html">adsl</a>
+<dt id="ientry-idm45223150530144">encapsulation, <a class="indexterm" href="settings-adsl.html">adsl</a>
 </dt>
-<dt id="ientry-idm45308854676560">encapsulation-limit, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>
+<dt id="ientry-idm45223146423888">encapsulation-limit, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>
 </dt>
-<dt id="ientry-idm45308854616608">encrypt, <a class="indexterm" href="settings-macsec.html">macsec</a>
+<dt id="ientry-idm45223146363936">encrypt, <a class="indexterm" href="settings-macsec.html">macsec</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>F</h3>
 <dl>
-<dt id="ientry-idm45308854531568">fail-mode, <a class="indexterm" href="settings-ovs-bridge.html">ovs-bridge</a>
+<dt id="ientry-idm45223146275216">fail-mode, <a class="indexterm" href="settings-ovs-bridge.html">ovs-bridge</a>
 </dt>
-<dt id="ientry-idm45308853803856">fils, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145541184">fils, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308854672576">flags, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-vlan.html">vlan</a>
+<dt id="ientry-idm45223146419904">flags, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-vlan.html">vlan</a>
 </dt>
-<dt id="ientry-idm45308854668352">flow-label, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>
+<dt id="ientry-idm45223146415680">flow-label, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>
 </dt>
-<dt id="ientry-idm45308855106976">forward-delay, <a class="indexterm" href="settings-bridge.html">bridge</a>
+<dt id="ientry-idm45223146857680">forward-delay, <a class="indexterm" href="settings-bridge.html">bridge</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>G</h3>
 <dl>
-<dt id="ientry-idm45308854819648">gateway, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146570432">gateway, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308858552464">gateway-ping-timeout, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223155878368">gateway-ping-timeout, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
-<dt id="ientry-idm45308853944608">generate-mac-address-mask, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223145687024">generate-mac-address-mask, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308854159248">group, <a class="indexterm" href="settings-tun.html">tun</a>, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145902640">group, <a class="indexterm" href="settings-tun.html">tun</a>, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308855103488">group-forward-mask, <a class="indexterm" href="settings-bridge.html">bridge</a>
+<dt id="ientry-idm45223146854192">group-forward-mask, <a class="indexterm" href="settings-bridge.html">bridge</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>H</h3>
 <dl>
-<dt id="ientry-idm45308855066976">hairpin-mode, <a class="indexterm" href="settings-bridge-port.html">bridge-port</a>
+<dt id="ientry-idm45223146817680">hairpin-mode, <a class="indexterm" href="settings-bridge-port.html">bridge-port</a>
 </dt>
-<dt id="ientry-idm45308855099616">hello-time, <a class="indexterm" href="settings-bridge.html">bridge</a>
+<dt id="ientry-idm45223146850320">hello-time, <a class="indexterm" href="settings-bridge.html">bridge</a>
 </dt>
-<dt id="ientry-idm45308853864944">hidden, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223145606880">hidden, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308854937376">home-only, <a class="indexterm" href="settings-gsm.html">gsm</a>
+<dt id="ientry-idm45223146688240">home-only, <a class="indexterm" href="settings-gsm.html">gsm</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>I</h3>
 <dl>
-<dt id="ientry-idm45308858548480">id, <a class="indexterm" href="settings-connection.html">connection</a>, <a class="indexterm" href="settings-vlan.html">vlan</a>, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
+<dt id="ientry-idm45223150061744">id, <a class="indexterm" href="settings-connection.html">connection</a>, <a class="indexterm" href="settings-vlan.html">vlan</a>, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
 </dt>
-<dt id="ientry-idm45308858918272">identity, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150665136">identity, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308854816176">ignore-auto-dns, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146566960">ignore-auto-dns, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854812432">ignore-auto-routes, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146563216">ignore-auto-routes, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854101872">ingress-priority-map, <a class="indexterm" href="settings-vlan.html">vlan</a>
+<dt id="ientry-idm45223145845328">ingress-priority-map, <a class="indexterm" href="settings-vlan.html">vlan</a>
 </dt>
-<dt id="ientry-idm45308854664416">input-key, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>
+<dt id="ientry-idm45223146411744">input-key, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>
 </dt>
-<dt id="ientry-idm45308858544688">interface-name, <a class="indexterm" href="settings-connection.html">connection</a>, <a class="indexterm" href="settings-bond.html">bond</a>, <a class="indexterm" href="settings-bridge.html">bridge</a>, <a class="indexterm" href="settings-team.html">team</a>, <a class="indexterm" href="settings-vlan.html">vlan</a>
+<dt id="ientry-idm45223150057952">interface-name, <a class="indexterm" href="settings-connection.html">connection</a>, <a class="indexterm" href="settings-bond.html">bond</a>, <a class="indexterm" href="settings-bridge.html">bridge</a>, <a class="indexterm" href="settings-team.html">team</a>, <a class="indexterm" href="settings-vlan.html">vlan</a>
 </dt>
-<dt id="ientry-idm45308854721216">ip6-privacy, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146466512">ip6-privacy, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>K</h3>
-<dl><dt id="ientry-idm45308853795280">key-mgmt, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dl><dt id="ientry-idm45223145532608">key-mgmt, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt></dl>
 </div>
 <div class="indexdiv">
 <h3>L</h3>
 <dl>
-<dt id="ientry-idm45308854036304">l2-miss, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
+<dt id="ientry-idm45223145779760">l2-miss, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
 </dt>
-<dt id="ientry-idm45308854032384">l3-miss, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
+<dt id="ientry-idm45223145775840">l3-miss, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
 </dt>
-<dt id="ientry-idm45308854470160">lacp, <a class="indexterm" href="settings-ovs-port.html">ovs-port</a>
+<dt id="ientry-idm45223146213872">lacp, <a class="indexterm" href="settings-ovs-port.html">ovs-port</a>
 </dt>
-<dt id="ientry-idm45308854192112">lacp-key, <a class="indexterm" href="settings-team-port.html">team-port</a>
+<dt id="ientry-idm45223145935568">lacp-key, <a class="indexterm" href="settings-team-port.html">team-port</a>
 </dt>
-<dt id="ientry-idm45308854188208">lacp-prio, <a class="indexterm" href="settings-team-port.html">team-port</a>
+<dt id="ientry-idm45223145931664">lacp-prio, <a class="indexterm" href="settings-team-port.html">team-port</a>
 </dt>
-<dt id="ientry-idm45308854442000">lcp-echo-failure, <a class="indexterm" href="settings-ppp.html">ppp</a>
+<dt id="ientry-idm45223146185648">lcp-echo-failure, <a class="indexterm" href="settings-ppp.html">ppp</a>
 </dt>
-<dt id="ientry-idm45308854437904">lcp-echo-interval, <a class="indexterm" href="settings-ppp.html">ppp</a>
+<dt id="ientry-idm45223146181552">lcp-echo-interval, <a class="indexterm" href="settings-ppp.html">ppp</a>
 </dt>
-<dt id="ientry-idm45308853791312">leap-password, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145528640">leap-password, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308853787504">leap-password-flags, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145524832">leap-password-flags, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308853783712">leap-username, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145521040">leap-username, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308854028464">learning, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
+<dt id="ientry-idm45223145771920">learning, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
 </dt>
-<dt id="ientry-idm45308854024480">limit, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
+<dt id="ientry-idm45223145767936">limit, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
 </dt>
-<dt id="ientry-idm45308854264000">link-watchers, <a class="indexterm" href="settings-team.html">team</a>, <a class="indexterm" href="settings-team-port.html">team-port</a>
+<dt id="ientry-idm45223146007456">link-watchers, <a class="indexterm" href="settings-team.html">team</a>, <a class="indexterm" href="settings-team-port.html">team-port</a>
 </dt>
-<dt id="ientry-idm45308858541008">lldp, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223150054272">lldp, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
-<dt id="ientry-idm45308854660592">local, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
+<dt id="ientry-idm45223146407920">local, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>M</h3>
 <dl>
-<dt id="ientry-idm45308855092608">mac-address, <a class="indexterm" href="settings-bridge.html">bridge</a>, <a class="indexterm" href="settings-infiniband.html">infiniband</a>, <a class="indexterm" href="settings-wimax.html">wimax</a>, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223146843312">mac-address, <a class="indexterm" href="settings-bridge.html">bridge</a>, <a class="indexterm" href="settings-infiniband.html">infiniband</a>, <a class="indexterm" href="settings-wimax.html">wimax</a>, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308853935376">mac-address-blacklist, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223145677792">mac-address-blacklist, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308853853104">mac-address-randomization, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223145595040">mac-address-randomization, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308863401648">org.freedesktop.NetworkManager, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-interface-org-freedesktop-NetworkManager.top_of_page">org.freedesktop.NetworkManager</a>
+<dt id="ientry-idm45223156653632">org.freedesktop.NetworkManager, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-interface-org-freedesktop-NetworkManager.top_of_page">org.freedesktop.NetworkManager</a>
 </dt>
-<dt id="ientry-idm45308860906672">org.freedesktop.NetworkManager.ActivateConnection(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.ActivateConnection">The ActivateConnection() method</a>
+<dt id="ientry-idm45223152988864">org.freedesktop.NetworkManager.ActivateConnection(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.ActivateConnection">The ActivateConnection() method</a>
 </dt>
-<dt id="ientry-idm45308861242000">org.freedesktop.NetworkManager.AddAndActivateConnection(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.AddAndActivateConnection">The AddAndActivateConnection() method</a>
+<dt id="ientry-idm45223158281232">org.freedesktop.NetworkManager.AddAndActivateConnection(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.AddAndActivateConnection">The AddAndActivateConnection() method</a>
 </dt>
-<dt id="ientry-idm45308864568640">org.freedesktop.NetworkManager.CheckConnectivity(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.CheckConnectivity">The CheckConnectivity() method</a>
+<dt id="ientry-idm45223153034720">org.freedesktop.NetworkManager.CheckConnectivity(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.CheckConnectivity">The CheckConnectivity() method</a>
 </dt>
-<dt id="ientry-idm45308866728640">org.freedesktop.NetworkManager.CheckpointAdjustRollbackTimeout(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.CheckpointAdjustRollbackTimeout">The CheckpointAdjustRollbackTimeout() method</a>
+<dt id="ientry-idm45223149789952">org.freedesktop.NetworkManager.CheckpointAdjustRollbackTimeout(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.CheckpointAdjustRollbackTimeout">The CheckpointAdjustRollbackTimeout() method</a>
 </dt>
-<dt id="ientry-idm45308861167488">org.freedesktop.NetworkManager.CheckpointCreate(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.CheckpointCreate">The CheckpointCreate() method</a>
+<dt id="ientry-idm45223150033776">org.freedesktop.NetworkManager.CheckpointCreate(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.CheckpointCreate">The CheckpointCreate() method</a>
 </dt>
-<dt id="ientry-idm45308862270944">org.freedesktop.NetworkManager.CheckpointDestroy(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.CheckpointDestroy">The CheckpointDestroy() method</a>
+<dt id="ientry-idm45223157220288">org.freedesktop.NetworkManager.CheckpointDestroy(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.CheckpointDestroy">The CheckpointDestroy() method</a>
 </dt>
-<dt id="ientry-idm45308860535552">org.freedesktop.NetworkManager.CheckpointRollback(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.CheckpointRollback">The CheckpointRollback() method</a>
+<dt id="ientry-idm45223150304688">org.freedesktop.NetworkManager.CheckpointRollback(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.CheckpointRollback">The CheckpointRollback() method</a>
 </dt>
-<dt id="ientry-idm45308862165712">org.freedesktop.NetworkManager.DeactivateConnection(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.DeactivateConnection">The DeactivateConnection() method</a>
+<dt id="ientry-idm45223150119200">org.freedesktop.NetworkManager.DeactivateConnection(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.DeactivateConnection">The DeactivateConnection() method</a>
 </dt>
-<dt id="ientry-idm45308861049184">org.freedesktop.NetworkManager.Enable(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.Enable">The Enable() method</a>
+<dt id="ientry-idm45223157651920">org.freedesktop.NetworkManager.Enable(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.Enable">The Enable() method</a>
 </dt>
-<dt id="ientry-idm45308865806080">org.freedesktop.NetworkManager.GetAllDevices(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.GetAllDevices">The GetAllDevices() method</a>
+<dt id="ientry-idm45223157476384">org.freedesktop.NetworkManager.GetAllDevices(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.GetAllDevices">The GetAllDevices() method</a>
 </dt>
-<dt id="ientry-idm45308866388416">org.freedesktop.NetworkManager.GetDeviceByIpIface(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.GetDeviceByIpIface">The GetDeviceByIpIface() method</a>
+<dt id="ientry-idm45223158478560">org.freedesktop.NetworkManager.GetDeviceByIpIface(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.GetDeviceByIpIface">The GetDeviceByIpIface() method</a>
 </dt>
-<dt id="ientry-idm45308858659280">org.freedesktop.NetworkManager.GetDevices(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.GetDevices">The GetDevices() method</a>
+<dt id="ientry-idm45223157483952">org.freedesktop.NetworkManager.GetDevices(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.GetDevices">The GetDevices() method</a>
 </dt>
-<dt id="ientry-idm45308863270448">org.freedesktop.NetworkManager.GetLogging(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.GetLogging">The GetLogging() method</a>
+<dt id="ientry-idm45223153183472">org.freedesktop.NetworkManager.GetLogging(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.GetLogging">The GetLogging() method</a>
 </dt>
-<dt id="ientry-idm45308863660656">org.freedesktop.NetworkManager.GetPermissions(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.GetPermissions">The GetPermissions() method</a>
+<dt id="ientry-idm45223154067920">org.freedesktop.NetworkManager.GetPermissions(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.GetPermissions">The GetPermissions() method</a>
 </dt>
-<dt id="ientry-idm45308862756608">org.freedesktop.NetworkManager.Reload(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.Reload">The Reload() method</a>
+<dt id="ientry-idm45223153157136">org.freedesktop.NetworkManager.Reload(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.Reload">The Reload() method</a>
 </dt>
-<dt id="ientry-idm45308861039392">org.freedesktop.NetworkManager.SetLogging(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.SetLogging">The SetLogging() method</a>
+<dt id="ientry-idm45223154060800">org.freedesktop.NetworkManager.SetLogging(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.SetLogging">The SetLogging() method</a>
 </dt>
-<dt id="ientry-idm45308862408528">org.freedesktop.NetworkManager.Sleep(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.Sleep">The Sleep() method</a>
+<dt id="ientry-idm45223150112064">org.freedesktop.NetworkManager.Sleep(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.Sleep">The Sleep() method</a>
 </dt>
-<dt id="ientry-idm45308860584704">org.freedesktop.NetworkManager.state(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.state">The state() method</a>
+<dt id="ientry-idm45223150341056">org.freedesktop.NetworkManager.state(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-method-org-freedesktop-NetworkManager.state">The state() method</a>
 </dt>
-<dt id="ientry-idm45308865972880">org.freedesktop.NetworkManager::CheckPermissions, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-signal-org-freedesktop-NetworkManager.CheckPermissions">The "CheckPermissions" signal</a>
+<dt id="ientry-idm45223152287792">org.freedesktop.NetworkManager::CheckPermissions, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-signal-org-freedesktop-NetworkManager.CheckPermissions">The "CheckPermissions" signal</a>
 </dt>
-<dt id="ientry-idm45308861227312">org.freedesktop.NetworkManager::DeviceAdded, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-signal-org-freedesktop-NetworkManager.DeviceAdded">The "DeviceAdded" signal</a>
+<dt id="ientry-idm45223153662016">org.freedesktop.NetworkManager::DeviceAdded, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-signal-org-freedesktop-NetworkManager.DeviceAdded">The "DeviceAdded" signal</a>
 </dt>
-<dt id="ientry-idm45308862258800">org.freedesktop.NetworkManager::DeviceRemoved, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-signal-org-freedesktop-NetworkManager.DeviceRemoved">The "DeviceRemoved" signal</a>
+<dt id="ientry-idm45223153654592">org.freedesktop.NetworkManager::DeviceRemoved, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-signal-org-freedesktop-NetworkManager.DeviceRemoved">The "DeviceRemoved" signal</a>
 </dt>
-<dt id="ientry-idm45308866316720">org.freedesktop.NetworkManager::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-signal-org-freedesktop-NetworkManager.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223150326304">org.freedesktop.NetworkManager::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-signal-org-freedesktop-NetworkManager.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308865968576">org.freedesktop.NetworkManager::StateChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-signal-org-freedesktop-NetworkManager.StateChanged">The "StateChanged" signal</a>
+<dt id="ientry-idm45223152283488">org.freedesktop.NetworkManager::StateChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-signal-org-freedesktop-NetworkManager.StateChanged">The "StateChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308862520992">org.freedesktop.NetworkManager:ActivatingConnection, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.ActivatingConnection">The "ActivatingConnection" property</a>
+<dt id="ientry-idm45223149764848">org.freedesktop.NetworkManager:ActivatingConnection, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.ActivatingConnection">The "ActivatingConnection" property</a>
 </dt>
-<dt id="ientry-idm45308867104160">org.freedesktop.NetworkManager:ActiveConnections, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.ActiveConnections">The "ActiveConnections" property</a>
+<dt id="ientry-idm45223152764208">org.freedesktop.NetworkManager:ActiveConnections, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.ActiveConnections">The "ActiveConnections" property</a>
 </dt>
-<dt id="ientry-idm45308866735712">org.freedesktop.NetworkManager:AllDevices, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.AllDevices">The "AllDevices" property</a>
+<dt id="ientry-idm45223156157632">org.freedesktop.NetworkManager:AllDevices, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.AllDevices">The "AllDevices" property</a>
 </dt>
-<dt id="ientry-idm45308866766096">org.freedesktop.NetworkManager:Capabilities, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.Capabilities">The "Capabilities" property</a>
+<dt id="ientry-idm45223150106736">org.freedesktop.NetworkManager:Capabilities, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.Capabilities">The "Capabilities" property</a>
 </dt>
-<dt id="ientry-idm45308861185600">org.freedesktop.NetworkManager:Checkpoints, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.Checkpoints">The "Checkpoints" property</a>
+<dt id="ientry-idm45223158454720">org.freedesktop.NetworkManager:Checkpoints, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.Checkpoints">The "Checkpoints" property</a>
 </dt>
-<dt id="ientry-idm45308864685568">org.freedesktop.NetworkManager:Connectivity, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.Connectivity">The "Connectivity" property</a>
+<dt id="ientry-idm45223150096240">org.freedesktop.NetworkManager:Connectivity, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.Connectivity">The "Connectivity" property</a>
 </dt>
-<dt id="ientry-idm45308864679472">org.freedesktop.NetworkManager:ConnectivityCheckAvailable, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.ConnectivityCheckAvailable">The "ConnectivityCheckAvailable" property</a>
+<dt id="ientry-idm45223149745584">org.freedesktop.NetworkManager:ConnectivityCheckAvailable, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.ConnectivityCheckAvailable">The "ConnectivityCheckAvailable" property</a>
 </dt>
-<dt id="ientry-idm45308861261296">org.freedesktop.NetworkManager:ConnectivityCheckEnabled, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.ConnectivityCheckEnabled">The "ConnectivityCheckEnabled" property</a>
+<dt id="ientry-idm45223149741136">org.freedesktop.NetworkManager:ConnectivityCheckEnabled, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.ConnectivityCheckEnabled">The "ConnectivityCheckEnabled" property</a>
 </dt>
-<dt id="ientry-idm45308866740112">org.freedesktop.NetworkManager:Devices, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.Devices">The "Devices" property</a>
+<dt id="ientry-idm45223156162032">org.freedesktop.NetworkManager:Devices, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.Devices">The "Devices" property</a>
 </dt>
-<dt id="ientry-idm45308861256976">org.freedesktop.NetworkManager:GlobalDnsConfiguration, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.GlobalDnsConfiguration">The "GlobalDnsConfiguration" property</a>
+<dt id="ientry-idm45223149736816">org.freedesktop.NetworkManager:GlobalDnsConfiguration, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.GlobalDnsConfiguration">The "GlobalDnsConfiguration" property</a>
 </dt>
-<dt id="ientry-idm45308865301872">org.freedesktop.NetworkManager:Metered, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.Metered">The "Metered" property</a>
+<dt id="ientry-idm45223149717104">org.freedesktop.NetworkManager:Metered, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.Metered">The "Metered" property</a>
 </dt>
-<dt id="ientry-idm45308861181456">org.freedesktop.NetworkManager:NetworkingEnabled, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.NetworkingEnabled">The "NetworkingEnabled" property</a>
+<dt id="ientry-idm45223158450576">org.freedesktop.NetworkManager:NetworkingEnabled, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.NetworkingEnabled">The "NetworkingEnabled" property</a>
 </dt>
-<dt id="ientry-idm45308865310064">org.freedesktop.NetworkManager:PrimaryConnection, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.PrimaryConnection">The "PrimaryConnection" property</a>
+<dt id="ientry-idm45223149725376">org.freedesktop.NetworkManager:PrimaryConnection, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.PrimaryConnection">The "PrimaryConnection" property</a>
 </dt>
-<dt id="ientry-idm45308865305984">org.freedesktop.NetworkManager:PrimaryConnectionType, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.PrimaryConnectionType">The "PrimaryConnectionType" property</a>
+<dt id="ientry-idm45223149721216">org.freedesktop.NetworkManager:PrimaryConnectionType, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.PrimaryConnectionType">The "PrimaryConnectionType" property</a>
 </dt>
-<dt id="ientry-idm45308862516880">org.freedesktop.NetworkManager:Startup, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.Startup">The "Startup" property</a>
+<dt id="ientry-idm45223149760736">org.freedesktop.NetworkManager:Startup, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.Startup">The "Startup" property</a>
 </dt>
-<dt id="ientry-idm45308866761376">org.freedesktop.NetworkManager:State, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.State">The "State" property</a>
+<dt id="ientry-idm45223150102016">org.freedesktop.NetworkManager:State, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.State">The "State" property</a>
 </dt>
-<dt id="ientry-idm45308866770320">org.freedesktop.NetworkManager:Version, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.Version">The "Version" property</a>
+<dt id="ientry-idm45223149756608">org.freedesktop.NetworkManager:Version, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.Version">The "Version" property</a>
 </dt>
-<dt id="ientry-idm45308865604112">org.freedesktop.NetworkManager:WimaxEnabled, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.WimaxEnabled">The "WimaxEnabled" property</a>
+<dt id="ientry-idm45223152772720">org.freedesktop.NetworkManager:WimaxEnabled, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.WimaxEnabled">The "WimaxEnabled" property</a>
 </dt>
-<dt id="ientry-idm45308867108448">org.freedesktop.NetworkManager:WimaxHardwareEnabled, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.WimaxHardwareEnabled">The "WimaxHardwareEnabled" property</a>
+<dt id="ientry-idm45223152768496">org.freedesktop.NetworkManager:WimaxHardwareEnabled, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.WimaxHardwareEnabled">The "WimaxHardwareEnabled" property</a>
 </dt>
-<dt id="ientry-idm45308863577472">org.freedesktop.NetworkManager:WirelessEnabled, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.WirelessEnabled">The "WirelessEnabled" property</a>
+<dt id="ientry-idm45223158446304">org.freedesktop.NetworkManager:WirelessEnabled, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.WirelessEnabled">The "WirelessEnabled" property</a>
 </dt>
-<dt id="ientry-idm45308863573248">org.freedesktop.NetworkManager:WirelessHardwareEnabled, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.WirelessHardwareEnabled">The "WirelessHardwareEnabled" property</a>
+<dt id="ientry-idm45223149778720">org.freedesktop.NetworkManager:WirelessHardwareEnabled, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.WirelessHardwareEnabled">The "WirelessHardwareEnabled" property</a>
 </dt>
-<dt id="ientry-idm45308863568960">org.freedesktop.NetworkManager:WwanEnabled, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.WwanEnabled">The "WwanEnabled" property</a>
+<dt id="ientry-idm45223149774432">org.freedesktop.NetworkManager:WwanEnabled, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.WwanEnabled">The "WwanEnabled" property</a>
 </dt>
-<dt id="ientry-idm45308865608400">org.freedesktop.NetworkManager:WwanHardwareEnabled, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.WwanHardwareEnabled">The "WwanHardwareEnabled" property</a>
+<dt id="ientry-idm45223149770192">org.freedesktop.NetworkManager:WwanHardwareEnabled, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.WwanHardwareEnabled">The "WwanHardwareEnabled" property</a>
 </dt>
-<dt id="ientry-idm45308858537168">master, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223150050432">master, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
-<dt id="ientry-idm45308855089248">max-age, <a class="indexterm" href="settings-bridge.html">bridge</a>
+<dt id="ientry-idm45223146839952">max-age, <a class="indexterm" href="settings-bridge.html">bridge</a>
 </dt>
-<dt id="ientry-idm45308854808752">may-fail, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146559536">may-fail, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854259600">mcast-rejoin-count, <a class="indexterm" href="settings-team.html">team</a>
+<dt id="ientry-idm45223146003056">mcast-rejoin-count, <a class="indexterm" href="settings-team.html">team</a>
 </dt>
-<dt id="ientry-idm45308854255696">mcast-rejoin-interval, <a class="indexterm" href="settings-team.html">team</a>
+<dt id="ientry-idm45223145999152">mcast-rejoin-interval, <a class="indexterm" href="settings-team.html">team</a>
 </dt>
-<dt id="ientry-idm45308854527808">mcast-snooping-enable, <a class="indexterm" href="settings-ovs-bridge.html">ovs-bridge</a>
+<dt id="ientry-idm45223146271456">mcast-snooping-enable, <a class="indexterm" href="settings-ovs-bridge.html">ovs-bridge</a>
 </dt>
-<dt id="ientry-idm45308861158944">mdns, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223149941136">mdns, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
-<dt id="ientry-idm45308861155104">metered, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223149937296">metered, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
-<dt id="ientry-idm45308854804800">method, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>, <a class="indexterm" href="settings-proxy.html">proxy</a>
+<dt id="ientry-idm45223146555584">method, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>, <a class="indexterm" href="settings-proxy.html">proxy</a>
 </dt>
-<dt id="ientry-idm45308854612704">mka-cak, <a class="indexterm" href="settings-macsec.html">macsec</a>
+<dt id="ientry-idm45223146360032">mka-cak, <a class="indexterm" href="settings-macsec.html">macsec</a>
 </dt>
-<dt id="ientry-idm45308854608928">mka-cak-flags, <a class="indexterm" href="settings-macsec.html">macsec</a>
+<dt id="ientry-idm45223146356256">mka-cak-flags, <a class="indexterm" href="settings-macsec.html">macsec</a>
 </dt>
-<dt id="ientry-idm45308854605168">mka-ckn, <a class="indexterm" href="settings-macsec.html">macsec</a>
+<dt id="ientry-idm45223146352496">mka-ckn, <a class="indexterm" href="settings-macsec.html">macsec</a>
 </dt>
-<dt id="ientry-idm45308854656784">mode, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-macsec.html">macsec</a>, <a class="indexterm" href="settings-macvlan.html">macvlan</a>, <a class="indexterm" href="settings-tun.html">tun</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223146404112">mode, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-macsec.html">macsec</a>, <a class="indexterm" href="settings-macvlan.html">macvlan</a>, <a class="indexterm" href="settings-tun.html">tun</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308854433808">mppe-stateful, <a class="indexterm" href="settings-ppp.html">ppp</a>
+<dt id="ientry-idm45223146177456">mppe-stateful, <a class="indexterm" href="settings-ppp.html">ppp</a>
 </dt>
-<dt id="ientry-idm45308854429856">mru, <a class="indexterm" href="settings-ppp.html">ppp</a>
+<dt id="ientry-idm45223146173504">mru, <a class="indexterm" href="settings-ppp.html">ppp</a>
 </dt>
-<dt id="ientry-idm45308855048432">mtu, <a class="indexterm" href="settings-cdma.html">cdma</a>, <a class="indexterm" href="settings-gsm.html">gsm</a>, <a class="indexterm" href="settings-infiniband.html">infiniband</a>, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-ppp.html">ppp</a>, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223146799136">mtu, <a class="indexterm" href="settings-cdma.html">cdma</a>, <a class="indexterm" href="settings-gsm.html">gsm</a>, <a class="indexterm" href="settings-infiniband.html">infiniband</a>, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-ppp.html">ppp</a>, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308854151408">multi-queue, <a class="indexterm" href="settings-tun.html">tun</a>
+<dt id="ientry-idm45223145894800">multi-queue, <a class="indexterm" href="settings-tun.html">tun</a>
 </dt>
-<dt id="ientry-idm45308855085760">multicast-snooping, <a class="indexterm" href="settings-bridge.html">bridge</a>
+<dt id="ientry-idm45223146836464">multicast-snooping, <a class="indexterm" href="settings-bridge.html">bridge</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>N</h3>
 <dl>
-<dt id="ientry-idm45308861151264">name, <a class="indexterm" href="settings-connection.html">connection</a>, <a class="indexterm" href="settings-802-1x.html">802-1x</a>, <a class="indexterm" href="settings-adsl.html">adsl</a>, <a class="indexterm" href="settings-bluetooth.html">bluetooth</a>, <a class="indexterm" href="settings-bond.html">bond</a>, <a class="indexterm" href="settings-bridge.html">bridge</a>, <a class="indexterm" href="settings-bridge-port.html">bridge-port</a>, <a class="indexterm" href="settings-cdma.html">cdma</a>, <a class="indexterm" href="settings-dcb.html">dcb</a>, <a class="indexterm" href="settings-dummy.html">dummy</a>, <a class="indexterm" href="settings-generic.html">generic</a>, <a class="indexterm" href="settings-gsm.html">gsm</a>, <a class="indexterm" href="settings-infiniband.html">infiniband</a>, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-macsec.html">macsec</a>, <a class="indexterm" href="settings-macvlan.html">macvlan</a>, <a class="indexterm" href="settings-802-11-olpc-mesh.html">802-11-olpc-mesh</a>, <a class="indexterm" href="settings-ovs-bridge.html">ovs-bridge</a>, <a class="indexterm" href="settings-ovs-interface.html">ovs-interface</a>, <a class="indexterm" href="settings-ovs-patch.html">ovs-patch</a>, <a class="indexterm" href="settings-ovs-port.html">ovs-port</a>, <a class="indexterm" href="settings-ppp.html">ppp</a>, <a class="indexterm" href="settings-pppoe.html">pppoe</a>, <a class="indexterm" href="settings-proxy.html">proxy</a>, <a class="indexterm" href="settings-serial.html">serial</a>, <a class="indexterm" href="settings-tc.html">tc</a>, <a class="indexterm" href="settings-team.html">team</a>, <a class="indexterm" href="settings-team-port.html">team-port</a>, <a class="indexterm" href="settings-tun.html">tun</a>, <a class="indexterm" href="settings-user.html">user</a>, <a class="indexterm" href="settings-vlan.html">vlan</a>, <a class="indexterm" href="settings-vpn.html">vpn</a>, <a class="indexterm" href="settings-vxlan.html">vxlan</a>, <a class="indexterm" href="settings-wimax.html">wimax</a>, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223149933456">name, <a class="indexterm" href="settings-connection.html">connection</a>, <a class="indexterm" href="settings-802-1x.html">802-1x</a>, <a class="indexterm" href="settings-adsl.html">adsl</a>, <a class="indexterm" href="settings-bluetooth.html">bluetooth</a>, <a class="indexterm" href="settings-bond.html">bond</a>, <a class="indexterm" href="settings-bridge.html">bridge</a>, <a class="indexterm" href="settings-bridge-port.html">bridge-port</a>, <a class="indexterm" href="settings-cdma.html">cdma</a>, <a class="indexterm" href="settings-dcb.html">dcb</a>, <a class="indexterm" href="settings-dummy.html">dummy</a>, <a class="indexterm" href="settings-generic.html">generic</a>, <a class="indexterm" href="settings-gsm.html">gsm</a>, <a class="indexterm" href="settings-infiniband.html">infiniband</a>, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-macsec.html">macsec</a>, <a class="indexterm" href="settings-macvlan.html">macvlan</a>, <a class="indexterm" href="settings-802-11-olpc-mesh.html">802-11-olpc-mesh</a>, <a class="indexterm" href="settings-ovs-bridge.html">ovs-bridge</a>, <a class="indexterm" href="settings-ovs-interface.html">ovs-interface</a>, <a class="indexterm" href="settings-ovs-patch.html">ovs-patch</a>, <a class="indexterm" href="settings-ovs-port.html">ovs-port</a>, <a class="indexterm" href="settings-ppp.html">ppp</a>, <a class="indexterm" href="settings-pppoe.html">pppoe</a>, <a class="indexterm" href="settings-proxy.html">proxy</a>, <a class="indexterm" href="settings-serial.html">serial</a>, <a class="indexterm" href="settings-tc.html">tc</a>, <a class="indexterm" href="settings-team.html">team</a>, <a class="indexterm" href="settings-team-port.html">team-port</a>, <a class="indexterm" href="settings-tun.html">tun</a>, <a class="indexterm" href="settings-user.html">user</a>, <a class="indexterm" href="settings-vlan.html">vlan</a>, <a class="indexterm" href="settings-vpn.html">vpn</a>, <a class="indexterm" href="settings-vxlan.html">vxlan</a>, <a class="indexterm" href="settings-wimax.html">wimax</a>, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308854926464">network-id, <a class="indexterm" href="settings-gsm.html">gsm</a>
+<dt id="ientry-idm45223146677328">network-id, <a class="indexterm" href="settings-gsm.html">gsm</a>
 </dt>
-<dt id="ientry-idm45308853968640">network-name, <a class="indexterm" href="settings-wimax.html">wimax</a>
+<dt id="ientry-idm45223145712096">network-name, <a class="indexterm" href="settings-wimax.html">wimax</a>
 </dt>
-<dt id="ientry-idm45308854797760">never-default, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146548544">never-default, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308851865536">NM80211ApFlags, <a class="indexterm" href="nm-dbus-types.html#NM80211ApFlags">enum NM80211ApFlags</a>
+<dt id="ientry-idm45223143647952">NM80211ApFlags, <a class="indexterm" href="nm-dbus-types.html#NM80211ApFlags">enum NM80211ApFlags</a>
 </dt>
-<dt id="ientry-idm45308851838512">NM80211ApSecurityFlags, <a class="indexterm" href="nm-dbus-types.html#NM80211ApSecurityFlags">enum NM80211ApSecurityFlags</a>
+<dt id="ientry-idm45223143620928">NM80211ApSecurityFlags, <a class="indexterm" href="nm-dbus-types.html#NM80211ApSecurityFlags">enum NM80211ApSecurityFlags</a>
 </dt>
-<dt id="ientry-idm45308851788736">NM80211Mode, <a class="indexterm" href="nm-dbus-types.html#NM80211Mode">enum NM80211Mode</a>
+<dt id="ientry-idm45223143571152">NM80211Mode, <a class="indexterm" href="nm-dbus-types.html#NM80211Mode">enum NM80211Mode</a>
 </dt>
-<dt id="ientry-idm45308851041632">NMActivationStateFlags, <a class="indexterm" href="nm-dbus-types.html#NMActivationStateFlags">enum NMActivationStateFlags</a>
+<dt id="ientry-idm45223142818096">NMActivationStateFlags, <a class="indexterm" href="nm-dbus-types.html#NMActivationStateFlags">enum NMActivationStateFlags</a>
 </dt>
-<dt id="ientry-idm45308851343104">NMActiveConnectionState, <a class="indexterm" href="nm-dbus-types.html#NMActiveConnectionState">enum NMActiveConnectionState</a>
+<dt id="ientry-idm45223143120032">NMActiveConnectionState, <a class="indexterm" href="nm-dbus-types.html#NMActiveConnectionState">enum NMActiveConnectionState</a>
 </dt>
-<dt id="ientry-idm45308851311760">NMActiveConnectionStateReason, <a class="indexterm" href="nm-dbus-types.html#NMActiveConnectionStateReason">enum NMActiveConnectionStateReason</a>
+<dt id="ientry-idm45223143088624">NMActiveConnectionStateReason, <a class="indexterm" href="nm-dbus-types.html#NMActiveConnectionStateReason">enum NMActiveConnectionStateReason</a>
 </dt>
-<dt id="ientry-idm45308851764912">NMBluetoothCapabilities, <a class="indexterm" href="nm-dbus-types.html#NMBluetoothCapabilities">enum NMBluetoothCapabilities</a>
+<dt id="ientry-idm45223143547328">NMBluetoothCapabilities, <a class="indexterm" href="nm-dbus-types.html#NMBluetoothCapabilities">enum NMBluetoothCapabilities</a>
 </dt>
-<dt id="ientry-idm45308863895968">NMCapability, <a class="indexterm" href="nm-dbus-types.html#NMCapability">enum NMCapability</a>
+<dt id="ientry-idm45223156223664">NMCapability, <a class="indexterm" href="nm-dbus-types.html#NMCapability">enum NMCapability</a>
 </dt>
-<dt id="ientry-idm45308851126752">NMCheckpointCreateFlags, <a class="indexterm" href="nm-dbus-types.html#NMCheckpointCreateFlags">enum NMCheckpointCreateFlags</a>
+<dt id="ientry-idm45223142903280">NMCheckpointCreateFlags, <a class="indexterm" href="nm-dbus-types.html#NMCheckpointCreateFlags">enum NMCheckpointCreateFlags</a>
 </dt>
-<dt id="ientry-idm45308853436352">NMConnectivityState, <a class="indexterm" href="nm-dbus-types.html#NMConnectivityState">enum NMConnectivityState</a>
+<dt id="ientry-idm45223145070592">NMConnectivityState, <a class="indexterm" href="nm-dbus-types.html#NMConnectivityState">enum NMConnectivityState</a>
 </dt>
-<dt id="ientry-idm45308853282608">NMDeviceCapabilities, <a class="indexterm" href="nm-dbus-types.html#NMDeviceCapabilities">enum NMDeviceCapabilities</a>
+<dt id="ientry-idm45223144916752">NMDeviceCapabilities, <a class="indexterm" href="nm-dbus-types.html#NMDeviceCapabilities">enum NMDeviceCapabilities</a>
 </dt>
-<dt id="ientry-idm45308851744912">NMDeviceModemCapabilities, <a class="indexterm" href="nm-dbus-types.html#NMDeviceModemCapabilities">enum NMDeviceModemCapabilities</a>
+<dt id="ientry-idm45223143527328">NMDeviceModemCapabilities, <a class="indexterm" href="nm-dbus-types.html#NMDeviceModemCapabilities">enum NMDeviceModemCapabilities</a>
 </dt>
-<dt id="ientry-idm45308851693888">NMDeviceState, <a class="indexterm" href="nm-dbus-types.html#NMDeviceState">enum NMDeviceState</a>
+<dt id="ientry-idm45223143476304">NMDeviceState, <a class="indexterm" href="nm-dbus-types.html#NMDeviceState">enum NMDeviceState</a>
 </dt>
-<dt id="ientry-idm45308851636048">NMDeviceStateReason, <a class="indexterm" href="nm-dbus-types.html#NMDeviceStateReason">enum NMDeviceStateReason</a>
+<dt id="ientry-idm45223143418464">NMDeviceStateReason, <a class="indexterm" href="nm-dbus-types.html#NMDeviceStateReason">enum NMDeviceStateReason</a>
 </dt>
-<dt id="ientry-idm45308853406208">NMDeviceType, <a class="indexterm" href="nm-dbus-types.html#NMDeviceType">enum NMDeviceType</a>
+<dt id="ientry-idm45223145040448">NMDeviceType, <a class="indexterm" href="nm-dbus-types.html#NMDeviceType">enum NMDeviceType</a>
 </dt>
-<dt id="ientry-idm45308853251968">NMDeviceWifiCapabilities, <a class="indexterm" href="nm-dbus-types.html#NMDeviceWifiCapabilities">enum NMDeviceWifiCapabilities</a>
+<dt id="ientry-idm45223144886112">NMDeviceWifiCapabilities, <a class="indexterm" href="nm-dbus-types.html#NMDeviceWifiCapabilities">enum NMDeviceWifiCapabilities</a>
 </dt>
-<dt id="ientry-idm45308851178736">NMIPTunnelMode, <a class="indexterm" href="nm-dbus-types.html#NMIPTunnelMode">enum NMIPTunnelMode</a>
+<dt id="ientry-idm45223142955328">NMIPTunnelMode, <a class="indexterm" href="nm-dbus-types.html#NMIPTunnelMode">enum NMIPTunnelMode</a>
 </dt>
-<dt id="ientry-idm45308851373776">NMMetered, <a class="indexterm" href="nm-dbus-types.html#NMMetered">enum NMMetered</a>
+<dt id="ientry-idm45223143150768">NMMetered, <a class="indexterm" href="nm-dbus-types.html#NMMetered">enum NMMetered</a>
 </dt>
-<dt id="ientry-idm45308851095584">NMRollbackResult, <a class="indexterm" href="nm-dbus-types.html#NMRollbackResult">enum NMRollbackResult</a>
+<dt id="ientry-idm45223142872048">NMRollbackResult, <a class="indexterm" href="nm-dbus-types.html#NMRollbackResult">enum NMRollbackResult</a>
 </dt>
-<dt id="ientry-idm45308851197440">NMSecretAgentCapabilities, <a class="indexterm" href="nm-dbus-types.html#NMSecretAgentCapabilities">enum NMSecretAgentCapabilities</a>
+<dt id="ientry-idm45223142974096">NMSecretAgentCapabilities, <a class="indexterm" href="nm-dbus-types.html#NMSecretAgentCapabilities">enum NMSecretAgentCapabilities</a>
 </dt>
-<dt id="ientry-idm45308851237744">NMSecretAgentGetSecretsFlags, <a class="indexterm" href="nm-dbus-types.html#NMSecretAgentGetSecretsFlags">enum NMSecretAgentGetSecretsFlags</a>
+<dt id="ientry-idm45223143014464">NMSecretAgentGetSecretsFlags, <a class="indexterm" href="nm-dbus-types.html#NMSecretAgentGetSecretsFlags">enum NMSecretAgentGetSecretsFlags</a>
 </dt>
-<dt id="ientry-idm45308851068688">NMSettingsConnectionFlags, <a class="indexterm" href="nm-dbus-types.html#NMSettingsConnectionFlags">enum NMSettingsConnectionFlags</a>
+<dt id="ientry-idm45223142845152">NMSettingsConnectionFlags, <a class="indexterm" href="nm-dbus-types.html#NMSettingsConnectionFlags">enum NMSettingsConnectionFlags</a>
 </dt>
-<dt id="ientry-idm45308851001968">NMSettingsUpdate2Flags, <a class="indexterm" href="nm-dbus-types.html#NMSettingsUpdate2Flags">enum NMSettingsUpdate2Flags</a>
+<dt id="ientry-idm45223142778432">NMSettingsUpdate2Flags, <a class="indexterm" href="nm-dbus-types.html#NMSettingsUpdate2Flags">enum NMSettingsUpdate2Flags</a>
 </dt>
-<dt id="ientry-idm45308856475760">NMState, <a class="indexterm" href="nm-dbus-types.html#NMState">enum NMState</a>
+<dt id="ientry-idm45223147942528">NMState, <a class="indexterm" href="nm-dbus-types.html#NMState">enum NMState</a>
 </dt>
-<dt id="ientry-idm45308851896000">NMVpnConnectionState, <a class="indexterm" href="nm-vpn-dbus-types.html#NMVpnConnectionState">enum NMVpnConnectionState</a>
+<dt id="ientry-idm45223148053520">NMVpnConnectionState, <a class="indexterm" href="nm-vpn-dbus-types.html#NMVpnConnectionState">enum NMVpnConnectionState</a>
 </dt>
-<dt id="ientry-idm45308852817584">NMVpnConnectionStateReason, <a class="indexterm" href="nm-vpn-dbus-types.html#NMVpnConnectionStateReason">enum NMVpnConnectionStateReason</a>
+<dt id="ientry-idm45223144696832">NMVpnConnectionStateReason, <a class="indexterm" href="nm-vpn-dbus-types.html#NMVpnConnectionStateReason">enum NMVpnConnectionStateReason</a>
 </dt>
-<dt id="ientry-idm45308852758592">NMVpnPluginFailure, <a class="indexterm" href="nm-vpn-dbus-types.html#NMVpnPluginFailure">enum NMVpnPluginFailure</a>
+<dt id="ientry-idm45223144637840">NMVpnPluginFailure, <a class="indexterm" href="nm-vpn-dbus-types.html#NMVpnPluginFailure">enum NMVpnPluginFailure</a>
 </dt>
-<dt id="ientry-idm45308856809184">NMVpnServiceState, <a class="indexterm" href="nm-vpn-dbus-types.html#NMVpnServiceState">enum NMVpnServiceState</a>
+<dt id="ientry-idm45223154553648">NMVpnServiceState, <a class="indexterm" href="nm-vpn-dbus-types.html#NMVpnServiceState">enum NMVpnServiceState</a>
 </dt>
-<dt id="ientry-idm45308851717152">NMWimaxNspNetworkType, <a class="indexterm" href="nm-dbus-types.html#NMWimaxNspNetworkType">enum NMWimaxNspNetworkType</a>
+<dt id="ientry-idm45223143499568">NMWimaxNspNetworkType, <a class="indexterm" href="nm-dbus-types.html#NMWimaxNspNetworkType">enum NMWimaxNspNetworkType</a>
 </dt>
-<dt id="ientry-idm45308854417872">no-vj-comp, <a class="indexterm" href="settings-ppp.html">ppp</a>
+<dt id="ientry-idm45223146161520">no-vj-comp, <a class="indexterm" href="settings-ppp.html">ppp</a>
 </dt>
-<dt id="ientry-idm45308854413952">noauth, <a class="indexterm" href="settings-ppp.html">ppp</a>
+<dt id="ientry-idm45223146157600">noauth, <a class="indexterm" href="settings-ppp.html">ppp</a>
 </dt>
-<dt id="ientry-idm45308854409888">nobsdcomp, <a class="indexterm" href="settings-ppp.html">ppp</a>
+<dt id="ientry-idm45223146153536">nobsdcomp, <a class="indexterm" href="settings-ppp.html">ppp</a>
 </dt>
-<dt id="ientry-idm45308854405984">nodeflate, <a class="indexterm" href="settings-ppp.html">ppp</a>
+<dt id="ientry-idm45223146149632">nodeflate, <a class="indexterm" href="settings-ppp.html">ppp</a>
 </dt>
-<dt id="ientry-idm45308854247760">notify-peers-count, <a class="indexterm" href="settings-team.html">team</a>
+<dt id="ientry-idm45223145991216">notify-peers-count, <a class="indexterm" href="settings-team.html">team</a>
 </dt>
-<dt id="ientry-idm45308854243856">notify-peers-interval, <a class="indexterm" href="settings-team.html">team</a>
+<dt id="ientry-idm45223145987312">notify-peers-interval, <a class="indexterm" href="settings-team.html">team</a>
 </dt>
-<dt id="ientry-idm45308855041136">number, <a class="indexterm" href="settings-cdma.html">cdma</a>, <a class="indexterm" href="settings-gsm.html">gsm</a>
+<dt id="ientry-idm45223146791840">number, <a class="indexterm" href="settings-cdma.html">cdma</a>, <a class="indexterm" href="settings-gsm.html">gsm</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>O</h3>
 <dl>
-<dt id="ientry-idm45308855118112">options, <a class="indexterm" href="settings-bond.html">bond</a>
+<dt id="ientry-idm45223146868816">options, <a class="indexterm" href="settings-bond.html">bond</a>
 </dt>
-<dt id="ientry-idm45308854644816">output-key, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>
+<dt id="ientry-idm45223146392144">output-key, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>
 </dt>
-<dt id="ientry-idm45308854143328">owner, <a class="indexterm" href="settings-tun.html">tun</a>
+<dt id="ientry-idm45223145886720">owner, <a class="indexterm" href="settings-tun.html">tun</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>P</h3>
 <dl>
-<dt id="ientry-idm45308854880096">p-key, <a class="indexterm" href="settings-infiniband.html">infiniband</a>
+<dt id="ientry-idm45223146630960">p-key, <a class="indexterm" href="settings-infiniband.html">infiniband</a>
 </dt>
-<dt id="ientry-idm45308858910560">pac-file, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150657424">pac-file, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308854329520">pac-script, <a class="indexterm" href="settings-proxy.html">proxy</a>
+<dt id="ientry-idm45223146073040">pac-script, <a class="indexterm" href="settings-proxy.html">proxy</a>
 </dt>
-<dt id="ientry-idm45308854325792">pac-url, <a class="indexterm" href="settings-proxy.html">proxy</a>
+<dt id="ientry-idm45223146069312">pac-url, <a class="indexterm" href="settings-proxy.html">proxy</a>
 </dt>
-<dt id="ientry-idm45308853775840">pairwise, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145513168">pairwise, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308854876368">parent, <a class="indexterm" href="settings-infiniband.html">infiniband</a>, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-macsec.html">macsec</a>, <a class="indexterm" href="settings-macvlan.html">macvlan</a>, <a class="indexterm" href="settings-pppoe.html">pppoe</a>, <a class="indexterm" href="settings-vlan.html">vlan</a>, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
+<dt id="ientry-idm45223146627232">parent, <a class="indexterm" href="settings-infiniband.html">infiniband</a>, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-macsec.html">macsec</a>, <a class="indexterm" href="settings-macvlan.html">macvlan</a>, <a class="indexterm" href="settings-pppoe.html">pppoe</a>, <a class="indexterm" href="settings-vlan.html">vlan</a>, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
 </dt>
-<dt id="ientry-idm45308854305104">parity, <a class="indexterm" href="settings-serial.html">serial</a>
+<dt id="ientry-idm45223146048624">parity, <a class="indexterm" href="settings-serial.html">serial</a>
 </dt>
-<dt id="ientry-idm45308858906880">password, <a class="indexterm" href="settings-802-1x.html">802-1x</a>, <a class="indexterm" href="settings-adsl.html">adsl</a>, <a class="indexterm" href="settings-cdma.html">cdma</a>, <a class="indexterm" href="settings-gsm.html">gsm</a>, <a class="indexterm" href="settings-pppoe.html">pppoe</a>
+<dt id="ientry-idm45223150653744">password, <a class="indexterm" href="settings-802-1x.html">802-1x</a>, <a class="indexterm" href="settings-adsl.html">adsl</a>, <a class="indexterm" href="settings-cdma.html">cdma</a>, <a class="indexterm" href="settings-gsm.html">gsm</a>, <a class="indexterm" href="settings-pppoe.html">pppoe</a>
 </dt>
-<dt id="ientry-idm45308858903200">password-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>, <a class="indexterm" href="settings-adsl.html">adsl</a>, <a class="indexterm" href="settings-cdma.html">cdma</a>, <a class="indexterm" href="settings-gsm.html">gsm</a>, <a class="indexterm" href="settings-pppoe.html">pppoe</a>
+<dt id="ientry-idm45223150650064">password-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>, <a class="indexterm" href="settings-adsl.html">adsl</a>, <a class="indexterm" href="settings-cdma.html">cdma</a>, <a class="indexterm" href="settings-gsm.html">gsm</a>, <a class="indexterm" href="settings-pppoe.html">pppoe</a>
 </dt>
-<dt id="ientry-idm45308858899504">password-raw, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150646416">password-raw, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858895568">password-raw-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150642480">password-raw-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308855059664">path-cost, <a class="indexterm" href="settings-bridge-port.html">bridge-port</a>
+<dt id="ientry-idm45223146810368">path-cost, <a class="indexterm" href="settings-bridge-port.html">bridge-port</a>
 </dt>
-<dt id="ientry-idm45308854637120">path-mtu-discovery, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>
+<dt id="ientry-idm45223146384448">path-mtu-discovery, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>
 </dt>
-<dt id="ientry-idm45308854490496">peer, <a class="indexterm" href="settings-ovs-patch.html">ovs-patch</a>
+<dt id="ientry-idm45223146234208">peer, <a class="indexterm" href="settings-ovs-patch.html">ovs-patch</a>
 </dt>
-<dt id="ientry-idm45308861147232">permissions, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223149929424">permissions, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
-<dt id="ientry-idm45308854073104">persistent, <a class="indexterm" href="settings-vpn.html">vpn</a>
+<dt id="ientry-idm45223145816560">persistent, <a class="indexterm" href="settings-vpn.html">vpn</a>
 </dt>
-<dt id="ientry-idm45308858891872">phase1-auth-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150638832">phase1-auth-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858887632">phase1-fast-provisioning, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150634640">phase1-fast-provisioning, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858883536">phase1-peaplabel, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150630592">phase1-peaplabel, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858879856">phase1-peapver, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150626912">phase1-peapver, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858875792">phase2-altsubject-matches, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150622848">phase2-altsubject-matches, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858871648">phase2-auth, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150618704">phase2-auth, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858867968">phase2-autheap, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150615024">phase2-autheap, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858863888">phase2-ca-cert, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150610944">phase2-ca-cert, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858860208">phase2-ca-cert-password, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150606560">phase2-ca-cert-password, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858856320">phase2-ca-cert-password-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150602672">phase2-ca-cert-password-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858852592">phase2-ca-path, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150598944">phase2-ca-path, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858848704">phase2-client-cert, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150595056">phase2-client-cert, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858844304">phase2-client-cert-password, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150590656">phase2-client-cert-password, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858840368">phase2-client-cert-password-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150586720">phase2-client-cert-password-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858836624">phase2-domain-suffix-match, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150582976">phase2-domain-suffix-match, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858832912">phase2-private-key, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150579264">phase2-private-key, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858828128">phase2-private-key-password, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150574480">phase2-private-key-password, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858824208">phase2-private-key-password-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150570560">phase2-private-key-password-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858820384">phase2-subject-match, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150566736">phase2-subject-match, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308854139536">pi, <a class="indexterm" href="settings-tun.html">tun</a>
+<dt id="ientry-idm45223145882928">pi, <a class="indexterm" href="settings-tun.html">tun</a>
 </dt>
-<dt id="ientry-idm45308858816320">pin, <a class="indexterm" href="settings-802-1x.html">802-1x</a>, <a class="indexterm" href="settings-gsm.html">gsm</a>
+<dt id="ientry-idm45223150562672">pin, <a class="indexterm" href="settings-802-1x.html">802-1x</a>, <a class="indexterm" href="settings-gsm.html">gsm</a>
 </dt>
-<dt id="ientry-idm45308858812640">pin-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>, <a class="indexterm" href="settings-gsm.html">gsm</a>
+<dt id="ientry-idm45223150558992">pin-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>, <a class="indexterm" href="settings-gsm.html">gsm</a>
 </dt>
-<dt id="ientry-idm45308853771728">pmf, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145509056">pmf, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308854589472">port, <a class="indexterm" href="settings-macsec.html">macsec</a>, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
+<dt id="ientry-idm45223146336800">port, <a class="indexterm" href="settings-macsec.html">macsec</a>, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
 </dt>
-<dt id="ientry-idm45308853836960">powersave, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223145578896">powersave, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308864617008">org.freedesktop.NetworkManager.PPP, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.PPP.html#gdbus-interface-org-freedesktop-NetworkManager-PPP.top_of_page">org.freedesktop.NetworkManager.PPP</a>
+<dt id="ientry-idm45223154725664">org.freedesktop.NetworkManager.PPP, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.PPP.html#gdbus-interface-org-freedesktop-NetworkManager-PPP.top_of_page">org.freedesktop.NetworkManager.PPP</a>
 </dt>
-<dt id="ientry-idm45308855870816">org.freedesktop.NetworkManager.PPP.NeedSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.PPP.html#gdbus-method-org-freedesktop-NetworkManager-PPP.NeedSecrets">The NeedSecrets() method</a>
+<dt id="ientry-idm45223147620304">org.freedesktop.NetworkManager.PPP.NeedSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.PPP.html#gdbus-method-org-freedesktop-NetworkManager-PPP.NeedSecrets">The NeedSecrets() method</a>
 </dt>
-<dt id="ientry-idm45308862594400">org.freedesktop.NetworkManager.PPP.SetIfindex(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.PPP.html#gdbus-method-org-freedesktop-NetworkManager-PPP.SetIfindex">The SetIfindex() method</a>
+<dt id="ientry-idm45223148648112">org.freedesktop.NetworkManager.PPP.SetIfindex(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.PPP.html#gdbus-method-org-freedesktop-NetworkManager-PPP.SetIfindex">The SetIfindex() method</a>
 </dt>
-<dt id="ientry-idm45308866496688">org.freedesktop.NetworkManager.PPP.SetIp4Config(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.PPP.html#gdbus-method-org-freedesktop-NetworkManager-PPP.SetIp4Config">The SetIp4Config() method</a>
+<dt id="ientry-idm45223148625136">org.freedesktop.NetworkManager.PPP.SetIp4Config(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.PPP.html#gdbus-method-org-freedesktop-NetworkManager-PPP.SetIp4Config">The SetIp4Config() method</a>
 </dt>
-<dt id="ientry-idm45308867321184">org.freedesktop.NetworkManager.PPP.SetIp6Config(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.PPP.html#gdbus-method-org-freedesktop-NetworkManager-PPP.SetIp6Config">The SetIp6Config() method</a>
+<dt id="ientry-idm45223147718096">org.freedesktop.NetworkManager.PPP.SetIp6Config(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.PPP.html#gdbus-method-org-freedesktop-NetworkManager-PPP.SetIp6Config">The SetIp6Config() method</a>
 </dt>
-<dt id="ientry-idm45308855986976">org.freedesktop.NetworkManager.PPP.SetState(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.PPP.html#gdbus-method-org-freedesktop-NetworkManager-PPP.SetState">The SetState() method</a>
+<dt id="ientry-idm45223148654976">org.freedesktop.NetworkManager.PPP.SetState(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.PPP.html#gdbus-method-org-freedesktop-NetworkManager-PPP.SetState">The SetState() method</a>
 </dt>
-<dt id="ientry-idm45308854175872">prio, <a class="indexterm" href="settings-team-port.html">team-port</a>
+<dt id="ientry-idm45223145919328">prio, <a class="indexterm" href="settings-team-port.html">team-port</a>
 </dt>
-<dt id="ientry-idm45308855078368">priority, <a class="indexterm" href="settings-bridge.html">bridge</a>, <a class="indexterm" href="settings-bridge-port.html">bridge-port</a>
+<dt id="ientry-idm45223146829072">priority, <a class="indexterm" href="settings-bridge.html">bridge</a>, <a class="indexterm" href="settings-bridge-port.html">bridge-port</a>
 </dt>
-<dt id="ientry-idm45308854994112">priority-bandwidth, <a class="indexterm" href="settings-dcb.html">dcb</a>
+<dt id="ientry-idm45223146744816">priority-bandwidth, <a class="indexterm" href="settings-dcb.html">dcb</a>
 </dt>
-<dt id="ientry-idm45308854990304">priority-flow-control, <a class="indexterm" href="settings-dcb.html">dcb</a>
+<dt id="ientry-idm45223146741328">priority-flow-control, <a class="indexterm" href="settings-dcb.html">dcb</a>
 </dt>
-<dt id="ientry-idm45308854986608">priority-flow-control-flags, <a class="indexterm" href="settings-dcb.html">dcb</a>
+<dt id="ientry-idm45223146737552">priority-flow-control-flags, <a class="indexterm" href="settings-dcb.html">dcb</a>
 </dt>
-<dt id="ientry-idm45308854983024">priority-group-bandwidth, <a class="indexterm" href="settings-dcb.html">dcb</a>
+<dt id="ientry-idm45223146733968">priority-group-bandwidth, <a class="indexterm" href="settings-dcb.html">dcb</a>
 </dt>
-<dt id="ientry-idm45308854979264">priority-group-flags, <a class="indexterm" href="settings-dcb.html">dcb</a>
+<dt id="ientry-idm45223146730208">priority-group-flags, <a class="indexterm" href="settings-dcb.html">dcb</a>
 </dt>
-<dt id="ientry-idm45308854975696">priority-group-id, <a class="indexterm" href="settings-dcb.html">dcb</a>
+<dt id="ientry-idm45223146726640">priority-group-id, <a class="indexterm" href="settings-dcb.html">dcb</a>
 </dt>
-<dt id="ientry-idm45308854971984">priority-strict-bandwidth, <a class="indexterm" href="settings-dcb.html">dcb</a>
+<dt id="ientry-idm45223146722928">priority-strict-bandwidth, <a class="indexterm" href="settings-dcb.html">dcb</a>
 </dt>
-<dt id="ientry-idm45308854968272">priority-traffic-class, <a class="indexterm" href="settings-dcb.html">dcb</a>
+<dt id="ientry-idm45223146719136">priority-traffic-class, <a class="indexterm" href="settings-dcb.html">dcb</a>
 </dt>
-<dt id="ientry-idm45308858808944">private-key, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150555296">private-key, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858803952">private-key-password, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150550304">private-key-password, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308858800064">private-key-password-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150546416">private-key-password-flags, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
-<dt id="ientry-idm45308854564736">promiscuous, <a class="indexterm" href="settings-macvlan.html">macvlan</a>
+<dt id="ientry-idm45223146308256">promiscuous, <a class="indexterm" href="settings-macvlan.html">macvlan</a>
 </dt>
-<dt id="ientry-idm45308853767312">proto, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145504640">proto, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308858768704">protocol, <a class="indexterm" href="settings-adsl.html">adsl</a>
+<dt id="ientry-idm45223150515056">protocol, <a class="indexterm" href="settings-adsl.html">adsl</a>
 </dt>
-<dt id="ientry-idm45308854008944">proxy, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
+<dt id="ientry-idm45223145752400">proxy, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
 </dt>
-<dt id="ientry-idm45308853763248">psk, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145500576">psk, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308853759152">psk-flags, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145496480">psk-flags, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>Q</h3>
 <dl>
-<dt id="ientry-idm45308854284464">qdiscs, <a class="indexterm" href="settings-tc.html">tc</a>
+<dt id="ientry-idm45223146027984">qdiscs, <a class="indexterm" href="settings-tc.html">tc</a>
 </dt>
-<dt id="ientry-idm45308854171968">queue-id, <a class="indexterm" href="settings-team-port.html">team-port</a>
+<dt id="ientry-idm45223145915424">queue-id, <a class="indexterm" href="settings-team-port.html">team-port</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>R</h3>
 <dl>
-<dt id="ientry-idm45308853832736">rate, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223145574672">rate, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308859002304">read-only, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223150748896">read-only, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
-<dt id="ientry-idm45308854402080">refuse-chap, <a class="indexterm" href="settings-ppp.html">ppp</a>
+<dt id="ientry-idm45223146145728">refuse-chap, <a class="indexterm" href="settings-ppp.html">ppp</a>
 </dt>
-<dt id="ientry-idm45308854398160">refuse-eap, <a class="indexterm" href="settings-ppp.html">ppp</a>
+<dt id="ientry-idm45223146141808">refuse-eap, <a class="indexterm" href="settings-ppp.html">ppp</a>
 </dt>
-<dt id="ientry-idm45308854394240">refuse-mschap, <a class="indexterm" href="settings-ppp.html">ppp</a>
+<dt id="ientry-idm45223146137888">refuse-mschap, <a class="indexterm" href="settings-ppp.html">ppp</a>
 </dt>
-<dt id="ientry-idm45308854390320">refuse-mschapv2, <a class="indexterm" href="settings-ppp.html">ppp</a>
+<dt id="ientry-idm45223146133968">refuse-mschapv2, <a class="indexterm" href="settings-ppp.html">ppp</a>
 </dt>
-<dt id="ientry-idm45308854386400">refuse-pap, <a class="indexterm" href="settings-ppp.html">ppp</a>
+<dt id="ientry-idm45223146130048">refuse-pap, <a class="indexterm" href="settings-ppp.html">ppp</a>
 </dt>
-<dt id="ientry-idm45308854633216">remote, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
+<dt id="ientry-idm45223146380544">remote, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
 </dt>
-<dt id="ientry-idm45308854382480">require-mppe, <a class="indexterm" href="settings-ppp.html">ppp</a>
+<dt id="ientry-idm45223146126128">require-mppe, <a class="indexterm" href="settings-ppp.html">ppp</a>
 </dt>
-<dt id="ientry-idm45308854378400">require-mppe-128, <a class="indexterm" href="settings-ppp.html">ppp</a>
+<dt id="ientry-idm45223146122048">require-mppe-128, <a class="indexterm" href="settings-ppp.html">ppp</a>
 </dt>
-<dt id="ientry-idm45308854794112">route-data, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146544896">route-data, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854790752">route-metric, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146541536">route-metric, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854787264">route-table, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146537504">route-table, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854783776">routes, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146534016">routes, <a class="indexterm" href="settings-ipv4.html">ipv4</a>, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854001136">rsc, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
+<dt id="ientry-idm45223145744592">rsc, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
 </dt>
-<dt id="ientry-idm45308854519888">rstp-enable, <a class="indexterm" href="settings-ovs-bridge.html">ovs-bridge</a>
+<dt id="ientry-idm45223146263536">rstp-enable, <a class="indexterm" href="settings-ovs-bridge.html">ovs-bridge</a>
 </dt>
-<dt id="ientry-idm45308854239952">runner, <a class="indexterm" href="settings-team.html">team</a>
+<dt id="ientry-idm45223145983408">runner, <a class="indexterm" href="settings-team.html">team</a>
 </dt>
-<dt id="ientry-idm45308854235744">runner-active, <a class="indexterm" href="settings-team.html">team</a>
+<dt id="ientry-idm45223145979200">runner-active, <a class="indexterm" href="settings-team.html">team</a>
 </dt>
-<dt id="ientry-idm45308854231840">runner-agg-select-policy, <a class="indexterm" href="settings-team.html">team</a>
+<dt id="ientry-idm45223145975296">runner-agg-select-policy, <a class="indexterm" href="settings-team.html">team</a>
 </dt>
-<dt id="ientry-idm45308854228064">runner-fast-rate, <a class="indexterm" href="settings-team.html">team</a>
+<dt id="ientry-idm45223145971520">runner-fast-rate, <a class="indexterm" href="settings-team.html">team</a>
 </dt>
-<dt id="ientry-idm45308854224160">runner-hwaddr-policy, <a class="indexterm" href="settings-team.html">team</a>
+<dt id="ientry-idm45223145967616">runner-hwaddr-policy, <a class="indexterm" href="settings-team.html">team</a>
 </dt>
-<dt id="ientry-idm45308854220416">runner-min-ports, <a class="indexterm" href="settings-team.html">team</a>
+<dt id="ientry-idm45223145963872">runner-min-ports, <a class="indexterm" href="settings-team.html">team</a>
 </dt>
-<dt id="ientry-idm45308854216512">runner-sys-prio, <a class="indexterm" href="settings-team.html">team</a>
+<dt id="ientry-idm45223145959968">runner-sys-prio, <a class="indexterm" href="settings-team.html">team</a>
 </dt>
-<dt id="ientry-idm45308854212608">runner-tx-balancer, <a class="indexterm" href="settings-team.html">team</a>
+<dt id="ientry-idm45223145956064">runner-tx-balancer, <a class="indexterm" href="settings-team.html">team</a>
 </dt>
-<dt id="ientry-idm45308854208848">runner-tx-balancer-interval, <a class="indexterm" href="settings-team.html">team</a>
+<dt id="ientry-idm45223145952304">runner-tx-balancer-interval, <a class="indexterm" href="settings-team.html">team</a>
 </dt>
-<dt id="ientry-idm45308854204912">runner-tx-hash, <a class="indexterm" href="settings-team.html">team</a>
+<dt id="ientry-idm45223145948368">runner-tx-hash, <a class="indexterm" href="settings-team.html">team</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>S</h3>
 <dl>
-<dt id="ientry-idm45308853919312">s390-nettype, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
+<dt id="ientry-idm45223145661728">s390-nettype, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
 </dt>
-<dt id="ientry-idm45308853915472">s390-options, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
+<dt id="ientry-idm45223145657888">s390-options, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
 </dt>
-<dt id="ientry-idm45308853911344">s390-subchannels, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
+<dt id="ientry-idm45223145653760">s390-subchannels, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
 </dt>
-<dt id="ientry-idm45308858998272">secondaries, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223150744864">secondaries, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
-<dt id="ientry-idm45308854069072">secrets, <a class="indexterm" href="settings-vpn.html">vpn</a>
+<dt id="ientry-idm45223145812528">secrets, <a class="indexterm" href="settings-vpn.html">vpn</a>
 </dt>
-<dt id="ientry-idm45308853828624">security, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223145570560">security, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308853824688">seen-bssids, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223145566624">seen-bssids, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308854301296">send-delay, <a class="indexterm" href="settings-serial.html">serial</a>
+<dt id="ientry-idm45223146044816">send-delay, <a class="indexterm" href="settings-serial.html">serial</a>
 </dt>
-<dt id="ientry-idm45308854353920">service, <a class="indexterm" href="settings-pppoe.html">pppoe</a>
+<dt id="ientry-idm45223146332864">send-sci, <a class="indexterm" href="settings-macsec.html">macsec</a>
 </dt>
-<dt id="ientry-idm45308854065072">service-type, <a class="indexterm" href="settings-vpn.html">vpn</a>
+<dt id="ientry-idm45223146097568">service, <a class="indexterm" href="settings-pppoe.html">pppoe</a>
 </dt>
-<dt id="ientry-idm45308854905936">sim-id, <a class="indexterm" href="settings-gsm.html">gsm</a>
+<dt id="ientry-idm45223145808528">service-type, <a class="indexterm" href="settings-vpn.html">vpn</a>
 </dt>
-<dt id="ientry-idm45308854902320">sim-operator-id, <a class="indexterm" href="settings-gsm.html">gsm</a>
+<dt id="ientry-idm45223146656800">sim-id, <a class="indexterm" href="settings-gsm.html">gsm</a>
 </dt>
-<dt id="ientry-idm45308858994272">slave-type, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223146653184">sim-operator-id, <a class="indexterm" href="settings-gsm.html">gsm</a>
 </dt>
-<dt id="ientry-idm45308853997232">source-port-max, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
+<dt id="ientry-idm45223150740864">slave-type, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
-<dt id="ientry-idm45308853993280">source-port-min, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
+<dt id="ientry-idm45223145740688">source-port-max, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
 </dt>
-<dt id="ientry-idm45308853907504">speed, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
+<dt id="ientry-idm45223145736736">source-port-min, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
 </dt>
-<dt id="ientry-idm45308854540256">ssid, <a class="indexterm" href="settings-802-11-olpc-mesh.html">802-11-olpc-mesh</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223145649920">speed, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
 </dt>
-<dt id="ientry-idm45308858990448">stable-id, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223146283840">ssid, <a class="indexterm" href="settings-802-11-olpc-mesh.html">802-11-olpc-mesh</a>, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308854168000">sticky, <a class="indexterm" href="settings-team-port.html">team-port</a>
+<dt id="ientry-idm45223150737040">stable-id, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
-<dt id="ientry-idm45308854297376">stopbits, <a class="indexterm" href="settings-serial.html">serial</a>
+<dt id="ientry-idm45223145911456">sticky, <a class="indexterm" href="settings-team-port.html">team-port</a>
 </dt>
-<dt id="ientry-idm45308855074720">stp, <a class="indexterm" href="settings-bridge.html">bridge</a>
+<dt id="ientry-idm45223146040896">stopbits, <a class="indexterm" href="settings-serial.html">serial</a>
 </dt>
-<dt id="ientry-idm45308854516016">stp-enable, <a class="indexterm" href="settings-ovs-bridge.html">ovs-bridge</a>
+<dt id="ientry-idm45223146825424">stp, <a class="indexterm" href="settings-bridge.html">bridge</a>
 </dt>
-<dt id="ientry-idm45308858796336">subject-match, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223146259664">stp-enable, <a class="indexterm" href="settings-ovs-bridge.html">ovs-bridge</a>
 </dt>
-<dt id="ientry-idm45308858792320">system-ca-certs, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+<dt id="ientry-idm45223150542688">subject-match, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
+</dt>
+<dt id="ientry-idm45223150538672">system-ca-certs, <a class="indexterm" href="settings-802-1x.html">802-1x</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>T</h3>
 <dl>
-<dt id="ientry-idm45308854462384">tag, <a class="indexterm" href="settings-ovs-port.html">ovs-port</a>
+<dt id="ientry-idm45223146206096">tag, <a class="indexterm" href="settings-ovs-port.html">ovs-port</a>
 </dt>
-<dt id="ientry-idm45308854560816">tap, <a class="indexterm" href="settings-macvlan.html">macvlan</a>
+<dt id="ientry-idm45223146304336">tap, <a class="indexterm" href="settings-macvlan.html">macvlan</a>
 </dt>
-<dt id="ientry-idm45308854280576">tfilters, <a class="indexterm" href="settings-tc.html">tc</a>
+<dt id="ientry-idm45223146024096">tfilters, <a class="indexterm" href="settings-tc.html">tc</a>
 </dt>
-<dt id="ientry-idm45308854061232">timeout, <a class="indexterm" href="settings-vpn.html">vpn</a>
+<dt id="ientry-idm45223145804688">timeout, <a class="indexterm" href="settings-vpn.html">vpn</a>
 </dt>
-<dt id="ientry-idm45308858984944">timestamp, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223150731472">timestamp, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
-<dt id="ientry-idm45308854685280">token, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
+<dt id="ientry-idm45223146432608">token, <a class="indexterm" href="settings-ipv6.html">ipv6</a>
 </dt>
-<dt id="ientry-idm45308854629440">tos, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
+<dt id="ientry-idm45223146376768">tos, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
 </dt>
-<dt id="ientry-idm45308854872800">transport-mode, <a class="indexterm" href="settings-infiniband.html">infiniband</a>
+<dt id="ientry-idm45223146623664">transport-mode, <a class="indexterm" href="settings-infiniband.html">infiniband</a>
 </dt>
-<dt id="ientry-idm45308854625504">ttl, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
+<dt id="ientry-idm45223146372832">ttl, <a class="indexterm" href="settings-ip-tunnel.html">ip-tunnel</a>, <a class="indexterm" href="settings-vxlan.html">vxlan</a>
 </dt>
-<dt id="ientry-idm45308853817072">tx-power, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
+<dt id="ientry-idm45223145559008">tx-power, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308858980736">type, <a class="indexterm" href="settings-connection.html">connection</a>, <a class="indexterm" href="settings-bluetooth.html">bluetooth</a>, <a class="indexterm" href="settings-ovs-interface.html">ovs-interface</a>
+<dt id="ientry-idm45223150727264">type, <a class="indexterm" href="settings-connection.html">connection</a>, <a class="indexterm" href="settings-bluetooth.html">bluetooth</a>, <a class="indexterm" href="settings-ovs-interface.html">ovs-interface</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>U</h3>
 <dl>
-<dt id="ientry-idm45308854057104">user-name, <a class="indexterm" href="settings-vpn.html">vpn</a>
+<dt id="ientry-idm45223145800560">user-name, <a class="indexterm" href="settings-vpn.html">vpn</a>
 </dt>
-<dt id="ientry-idm45308858765024">username, <a class="indexterm" href="settings-adsl.html">adsl</a>, <a class="indexterm" href="settings-cdma.html">cdma</a>, <a class="indexterm" href="settings-gsm.html">gsm</a>, <a class="indexterm" href="settings-pppoe.html">pppoe</a>
+<dt id="ientry-idm45223150511376">username, <a class="indexterm" href="settings-adsl.html">adsl</a>, <a class="indexterm" href="settings-cdma.html">cdma</a>, <a class="indexterm" href="settings-gsm.html">gsm</a>, <a class="indexterm" href="settings-pppoe.html">pppoe</a>
 </dt>
-<dt id="ientry-idm45308858976688">uuid, <a class="indexterm" href="settings-connection.html">connection</a>
+<dt id="ientry-idm45223150723216">uuid, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>V</h3>
 <dl>
-<dt id="ientry-idm45308854585536">validation, <a class="indexterm" href="settings-macsec.html">macsec</a>
+<dt id="ientry-idm45223146328928">validation, <a class="indexterm" href="settings-macsec.html">macsec</a>
 </dt>
-<dt id="ientry-idm45308858761344">vci, <a class="indexterm" href="settings-adsl.html">adsl</a>
+<dt id="ientry-idm45223150507696">vci, <a class="indexterm" href="settings-adsl.html">adsl</a>
 </dt>
-<dt id="ientry-idm45308854458496">vlan-mode, <a class="indexterm" href="settings-ovs-port.html">ovs-port</a>
+<dt id="ientry-idm45223146202208">vlan-mode, <a class="indexterm" href="settings-ovs-port.html">ovs-port</a>
 </dt>
-<dt id="ientry-idm45308854135584">vnet-hdr, <a class="indexterm" href="settings-tun.html">tun</a>
+<dt id="ientry-idm45223145878976">vnet-hdr, <a class="indexterm" href="settings-tun.html">tun</a>
 </dt>
-<dt id="ientry-idm45308855147680">vpi, <a class="indexterm" href="settings-adsl.html">adsl</a>
+<dt id="ientry-idm45223146898384">vpi, <a class="indexterm" href="settings-adsl.html">adsl</a>
 </dt>
-<dt id="ientry-idm45308863238400">org.freedesktop.NetworkManager.VPN.Connection, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-interface-org-freedesktop-NetworkManager-VPN-Connection.top_of_page">org.freedesktop.NetworkManager.VPN.Connection</a>
+<dt id="ientry-idm45223153686080">org.freedesktop.NetworkManager.VPN.Connection, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-interface-org-freedesktop-NetworkManager-VPN-Connection.top_of_page">org.freedesktop.NetworkManager.VPN.Connection</a>
 </dt>
-<dt id="ientry-idm45308856793744">org.freedesktop.NetworkManager.VPN.Connection::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Connection.PropertiesChanged">The "PropertiesChanged" signal</a>
+<dt id="ientry-idm45223148370912">org.freedesktop.NetworkManager.VPN.Connection::PropertiesChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Connection.PropertiesChanged">The "PropertiesChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308855755392">org.freedesktop.NetworkManager.VPN.Connection::VpnStateChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Connection.VpnStateChanged">The "VpnStateChanged" signal</a>
+<dt id="ientry-idm45223148497152">org.freedesktop.NetworkManager.VPN.Connection::VpnStateChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Connection.VpnStateChanged">The "VpnStateChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308856775664">org.freedesktop.NetworkManager.VPN.Connection:Banner, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-property-org-freedesktop-NetworkManager-VPN-Connection.Banner">The "Banner" property</a>
+<dt id="ientry-idm45223148397104">org.freedesktop.NetworkManager.VPN.Connection:Banner, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-property-org-freedesktop-NetworkManager-VPN-Connection.Banner">The "Banner" property</a>
 </dt>
-<dt id="ientry-idm45308853717104">org.freedesktop.NetworkManager.VPN.Connection:VpnState, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-property-org-freedesktop-NetworkManager-VPN-Connection.VpnState">The "VpnState" property</a>
+<dt id="ientry-idm45223148401952">org.freedesktop.NetworkManager.VPN.Connection:VpnState, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-property-org-freedesktop-NetworkManager-VPN-Connection.VpnState">The "VpnState" property</a>
 </dt>
-<dt id="ientry-idm45308858123424">org.freedesktop.NetworkManager.VPN.Plugin, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-interface-org-freedesktop-NetworkManager-VPN-Plugin.top_of_page">org.freedesktop.NetworkManager.VPN.Plugin</a>
+<dt id="ientry-idm45223156129232">org.freedesktop.NetworkManager.VPN.Plugin, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-interface-org-freedesktop-NetworkManager-VPN-Plugin.top_of_page">org.freedesktop.NetworkManager.VPN.Plugin</a>
 </dt>
-<dt id="ientry-idm45308853023712">org.freedesktop.NetworkManager.VPN.Plugin.Connect(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.Connect">The Connect() method</a>
+<dt id="ientry-idm45223147998992">org.freedesktop.NetworkManager.VPN.Plugin.Connect(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.Connect">The Connect() method</a>
 </dt>
-<dt id="ientry-idm45308853134912">org.freedesktop.NetworkManager.VPN.Plugin.ConnectInteractive(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.ConnectInteractive">The ConnectInteractive() method</a>
+<dt id="ientry-idm45223145115264">org.freedesktop.NetworkManager.VPN.Plugin.ConnectInteractive(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.ConnectInteractive">The ConnectInteractive() method</a>
 </dt>
-<dt id="ientry-idm45308856453856">org.freedesktop.NetworkManager.VPN.Plugin.Disconnect(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.Disconnect">The Disconnect() method</a>
+<dt id="ientry-idm45223148027248">org.freedesktop.NetworkManager.VPN.Plugin.Disconnect(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.Disconnect">The Disconnect() method</a>
 </dt>
-<dt id="ientry-idm45308853124608">org.freedesktop.NetworkManager.VPN.Plugin.NeedSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.NeedSecrets">The NeedSecrets() method</a>
+<dt id="ientry-idm45223144791008">org.freedesktop.NetworkManager.VPN.Plugin.NeedSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.NeedSecrets">The NeedSecrets() method</a>
 </dt>
-<dt id="ientry-idm45308851978560">org.freedesktop.NetworkManager.VPN.Plugin.NewSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.NewSecrets">The NewSecrets() method</a>
+<dt id="ientry-idm45223144797760">org.freedesktop.NetworkManager.VPN.Plugin.NewSecrets(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.NewSecrets">The NewSecrets() method</a>
 </dt>
-<dt id="ientry-idm45308856449744">org.freedesktop.NetworkManager.VPN.Plugin.SetConfig(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.SetConfig">The SetConfig() method</a>
+<dt id="ientry-idm45223148023088">org.freedesktop.NetworkManager.VPN.Plugin.SetConfig(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.SetConfig">The SetConfig() method</a>
 </dt>
-<dt id="ientry-idm45308856427056">org.freedesktop.NetworkManager.VPN.Plugin.SetFailure(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.SetFailure">The SetFailure() method</a>
+<dt id="ientry-idm45223144805216">org.freedesktop.NetworkManager.VPN.Plugin.SetFailure(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.SetFailure">The SetFailure() method</a>
 </dt>
-<dt id="ientry-idm45308856442240">org.freedesktop.NetworkManager.VPN.Plugin.SetIp4Config(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.SetIp4Config">The SetIp4Config() method</a>
+<dt id="ientry-idm45223144779136">org.freedesktop.NetworkManager.VPN.Plugin.SetIp4Config(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.SetIp4Config">The SetIp4Config() method</a>
 </dt>
-<dt id="ientry-idm45308856434640">org.freedesktop.NetworkManager.VPN.Plugin.SetIp6Config(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.SetIp6Config">The SetIp6Config() method</a>
+<dt id="ientry-idm45223144771536">org.freedesktop.NetworkManager.VPN.Plugin.SetIp6Config(), <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-method-org-freedesktop-NetworkManager-VPN-Plugin.SetIp6Config">The SetIp6Config() method</a>
 </dt>
-<dt id="ientry-idm45308851950816">org.freedesktop.NetworkManager.VPN.Plugin::Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.Config">The "Config" signal</a>
+<dt id="ientry-idm45223144739920">org.freedesktop.NetworkManager.VPN.Plugin::Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.Config">The "Config" signal</a>
 </dt>
-<dt id="ientry-idm45308851920832">org.freedesktop.NetworkManager.VPN.Plugin::Failure, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.Failure">The "Failure" signal</a>
+<dt id="ientry-idm45223145200592">org.freedesktop.NetworkManager.VPN.Plugin::Failure, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.Failure">The "Failure" signal</a>
 </dt>
-<dt id="ientry-idm45308851943280">org.freedesktop.NetworkManager.VPN.Plugin::Ip4Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.Ip4Config">The "Ip4Config" signal</a>
+<dt id="ientry-idm45223148097408">org.freedesktop.NetworkManager.VPN.Plugin::Ip4Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.Ip4Config">The "Ip4Config" signal</a>
 </dt>
-<dt id="ientry-idm45308851935840">org.freedesktop.NetworkManager.VPN.Plugin::Ip6Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.Ip6Config">The "Ip6Config" signal</a>
+<dt id="ientry-idm45223148089968">org.freedesktop.NetworkManager.VPN.Plugin::Ip6Config, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.Ip6Config">The "Ip6Config" signal</a>
 </dt>
-<dt id="ientry-idm45308851928384">org.freedesktop.NetworkManager.VPN.Plugin::LoginBanner, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.LoginBanner">The "LoginBanner" signal</a>
+<dt id="ientry-idm45223145208048">org.freedesktop.NetworkManager.VPN.Plugin::LoginBanner, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.LoginBanner">The "LoginBanner" signal</a>
 </dt>
-<dt id="ientry-idm45308851961168">org.freedesktop.NetworkManager.VPN.Plugin::SecretsRequired, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.SecretsRequired">The "SecretsRequired" signal</a>
+<dt id="ientry-idm45223144750272">org.freedesktop.NetworkManager.VPN.Plugin::SecretsRequired, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.SecretsRequired">The "SecretsRequired" signal</a>
 </dt>
-<dt id="ientry-idm45308851969360">org.freedesktop.NetworkManager.VPN.Plugin::StateChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.StateChanged">The "StateChanged" signal</a>
+<dt id="ientry-idm45223147974800">org.freedesktop.NetworkManager.VPN.Plugin::StateChanged, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.StateChanged">The "StateChanged" signal</a>
 </dt>
-<dt id="ientry-idm45308851910752">org.freedesktop.NetworkManager.VPN.Plugin:State, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-property-org-freedesktop-NetworkManager-VPN-Plugin.State">The "State" property</a>
+<dt id="ientry-idm45223145188464">org.freedesktop.NetworkManager.VPN.Plugin:State, <a class="indexterm" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-property-org-freedesktop-NetworkManager-VPN-Plugin.State">The "State" property</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>W</h3>
 <dl>
-<dt id="ientry-idm45308853903328">wake-on-lan, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
+<dt id="ientry-idm45223145645328">wake-on-lan, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
+</dt>
+<dt id="ientry-idm45223145640912">wake-on-lan-password, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
 </dt>
-<dt id="ientry-idm45308853898912">wake-on-lan-password, <a class="indexterm" href="settings-802-3-ethernet.html">802-3-ethernet</a>
+<dt id="ientry-idm45223145554944">wake-on-wlan, <a class="indexterm" href="settings-802-11-wireless.html">802-11-wireless</a>
 </dt>
-<dt id="ientry-idm45308853755440">wep-key-flags, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145492768">wep-key-flags, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308853751616">wep-key-type, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145488944">wep-key-type, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308853747536">wep-key0, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145484864">wep-key0, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308853743680">wep-key1, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145481008">wep-key1, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308853739824">wep-key2, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145477152">wep-key2, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308853735968">wep-key3, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145473296">wep-key3, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308853732112">wep-tx-keyidx, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145469440">wep-tx-keyidx, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
-<dt id="ientry-idm45308853727984">wps-method, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
+<dt id="ientry-idm45223145465312">wps-method, <a class="indexterm" href="settings-802-11-wireless-security.html">802-11-wireless-security</a>
 </dt>
 </dl>
 </div>
 <div class="indexdiv">
 <h3>Z</h3>
-<dl><dt id="ientry-idm45308858972432">zone, <a class="indexterm" href="settings-connection.html">connection</a>
+<dl><dt id="ientry-idm45223150718960">zone, <a class="indexterm" href="settings-connection.html">connection</a>
 </dt></dl>
 </div>
 </div>
diff --git a/docs/api/html/nm-settings-ifcfg-rh.html b/docs/api/html/nm-settings-ifcfg-rh.html
index 5912fb6b..5436d35d 100644
--- a/docs/api/html/nm-settings-ifcfg-rh.html
+++ b/docs/api/html/nm-settings-ifcfg-rh.html
@@ -1378,6 +1378,15 @@ Allowed values: </strong></span>IPV6_ADDR_GEN_MODE: eui64, stable-privacy</td>
 
 Example: </strong></span>IPV6_TOKEN=::53</td>
 </tr>
+<tr>
+<td align="left">dhcp-duid</td>
+<td align="left">DHCPV6_DUID<span class="emphasis"><em>(+)</em></span>
+</td>
+<td align="left"> </td>
+<td align="left">A string sent to the DHCPv6 server to identify the local machine. Apart from the special values "lease", "stable-llt", "stable-ll", "stable-uuid", "llt" and "ll" a binary value in hex format is expected. An hex string where each octet is separated by a colon is also accepted.<span class="bold"><strong>
+
+Example: </strong></span>DHCPV6_DUID=LL; DHCPV6_DUID=0301deadbeef0001; DHCPV6_DUID=03:01:de:ad:be:ef:00:01</td>
+</tr>
 </tbody>
 </table></div>
 </div>
diff --git a/docs/api/html/nm-settings.html b/docs/api/html/nm-settings.html
index 48bc3ec9..2977d308 100644
--- a/docs/api/html/nm-settings.html
+++ b/docs/api/html/nm-settings.html
@@ -234,7 +234,7 @@
 <a name="nm-settings.property.connection.stable-id"></a>stable-id</td>
 <td align="left">string</td>
 <td align="left"> </td>
-<td>This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The '$' character is treated special to perform dynamic substitutions at runtime. Currently supported are "${CONNECTION}", "${DEVICE}", "${BOOT}", "${RANDOM}". These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that "${DEVICE}" corresponds the the interface name of the device. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as "$$". For example, set it to "${CONNECTION}-${BOOT}-${DEVICE}" to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to "${CONNECTION}" and uses a unique, fixed ID for the connection.</td>
+<td>This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable and to derive the DHCP DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid]. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The '$' character is treated special to perform dynamic substitutions at runtime. Currently supported are "${CONNECTION}", "${DEVICE}", "${BOOT}", "${RANDOM}". These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that "${DEVICE}" corresponds the the interface name of the device. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as "$$". For example, set it to "${CONNECTION}-${BOOT}-${DEVICE}" to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to "${CONNECTION}" and uses a unique, fixed ID for the connection.</td>
 </tr>
 <tr>
 <td align="left">
@@ -1571,6 +1571,13 @@
 </tr>
 <tr>
 <td align="left">
+<a name="nm-settings.property.ipv6.dhcp-duid"></a>dhcp-duid</td>
+<td align="left">string</td>
+<td align="left"> </td>
+<td>A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp client to identify itself to DHCPv6 servers (RFC 3315). The DUID is carried in the Client Identifier option. If the property is a hex string ('aa:bb:cc') it is interpreted as a binary DUID and filled as an opaque value in the Client Identifier option. The special value "lease" will retrieve the DUID previously used from the lease file belonging to the connection. If no DUID is found and "dhclient" is the configured dhcp client, the DUID is searched in the system-wide dhclient lease file. If still no DUID is found, or another dhcp client is used, a global and permanent DUID-UUID (RFC 6355) will be generated based on the machine-id. The special values "llt" and "ll" will generate a DUID of type LLT or LL (see RFC 3315) based on the current MAC address of the device. In order to try providing a stable DUID-LLT, the time field will contain a constant timestamp that is used globally (for all profiles) and persisted to disk. The special values "stable-llt", "stable-ll" and "stable-uuid" will generate a DUID of the corresponding type, derived from the connection's stable-id and a per-host unique key. So, the link-layer address of "stable-ll" and "stable-llt" will be a generated address derived from the stable id. The DUID-LLT time value in the "stable-llt" option will be picked among a static timespan of three years (the upper bound of the interval is the same constant timestamp used in "llt"). When the property is unset, the global value provided for "ipv6.dhcp-duid" is used. If no global value is provided, the default "lease" value is assumed.</td>
+</tr>
+<tr>
+<td align="left">
 <a name="nm-settings.property.ipv6.dhcp-hostname"></a>dhcp-hostname</td>
 <td align="left">string</td>
 <td align="left"> </td>
@@ -1907,6 +1914,13 @@
 </tr>
 <tr>
 <td align="left">
+<a name="nm-settings.property.macsec.send-sci"></a>send-sci</td>
+<td align="left">boolean</td>
+<td align="left">TRUE</td>
+<td>Specifies whether the SCI (Secure Channel Identifier) is included in every packet.</td>
+</tr>
+<tr>
+<td align="left">
 <a name="nm-settings.property.macsec.validation"></a>validation</td>
 <td align="left">int32</td>
 <td align="left">2</td>
@@ -2673,7 +2687,7 @@
 <a name="nm-settings.property.team.runner"></a>runner</td>
 <td align="left">string</td>
 <td align="left">"roundrobin"</td>
-<td>Corresponds to the teamd runner.name. Permitted values are: "roundrobin", "broadcast", "activebackup", "loadbalance", "lacp". When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value).</td>
+<td>Corresponds to the teamd runner.name. Permitted values are: "roundrobin", "broadcast", "activebackup", "loadbalance", "lacp", "random". When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value).</td>
 </tr>
 <tr>
 <td align="left">
@@ -3275,7 +3289,7 @@
 <a name="nm-settings.property.802-3-ethernet.auto-negotiate"></a>auto-negotiate</td>
 <td align="left">boolean</td>
 <td align="left">FALSE</td>
-<td>If TRUE, enforce auto-negotiation of port speed and duplex mode.  If FALSE, "speed" and "duplex" properties should be both set or link configuration will be skipped.</td>
+<td>When TRUE, enforce auto-negotiation of speed and duplex mode. If "speed" and "duplex" properties are both specified, only that single mode will be advertised and accepted during the link auto-negotiation process: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. When FALSE, "speed" and "duplex" properties should be both set or link configuration will be skipped.</td>
 </tr>
 <tr>
 <td align="left">
@@ -3289,7 +3303,7 @@
 <a name="nm-settings.property.802-3-ethernet.duplex"></a>duplex</td>
 <td align="left">string</td>
 <td align="left"> </td>
-<td>Can be specified only when "auto-negotiate" is "off". In that case, statically configures the device to use that specified duplex mode, either "half" or "full". Must be set together with the "speed" property if specified. Before specifying a duplex mode be sure your device supports it.</td>
+<td>When a value is set, either "half" or "full", configures the device to use the specified duplex mode. If "auto-negotiate" is "yes" the specified duplex mode will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. If the value is unset (the default), the link configuration will be either skipped (if "auto-negotiate" is "no", the default) or will be auto-negotiated (if "auto-negotiate" is "yes") and the local device will advertise all the supported duplex modes. Must be set together with the "speed" property if specified. Before specifying a duplex mode be sure your device supports it.</td>
 </tr>
 <tr>
 <td align="left">
@@ -3359,7 +3373,7 @@
 <a name="nm-settings.property.802-3-ethernet.speed"></a>speed</td>
 <td align="left">uint32</td>
 <td align="left">0</td>
-<td>Can be set to a value greater than zero only when "auto-negotiate" is "off". In that case, statically configures the device to use that specified speed. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the "duplex" property when non-zero. Before specifying a speed value be sure your device supports it.</td>
+<td>When a value grater than 0 is set, configures the device to use the specified speed. If "auto-negotiate" is "yes" the specified speed will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabit speeds, as in this case link negotiation is mandatory. If the value is unset (0, the default), the link configuration will be either skipped (if "auto-negotiate" is "no", the default) or will be auto-negotiated (if "auto-negotiate" is "yes") and the local device will advertise all the supported speeds. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the "duplex" property when non-zero. Before specifying a speed value be sure your device supports it.</td>
 </tr>
 <tr>
 <td align="left">
@@ -3529,6 +3543,13 @@
 <td align="left">0</td>
 <td>If non-zero, directs the device to use the specified transmit power. Units are dBm.  This property is highly driver dependent and not all devices support setting a static transmit power.</td>
 </tr>
+<tr>
+<td align="left">
+<a name="nm-settings.property.802-11-wireless.wake-on-wlan"></a>wake-on-wlan</td>
+<td align="left">uint32</td>
+<td align="left">1</td>
+<td>The NMSettingWirelessWakeOnWLan options to enable. Not all devices support all options. May be any combination of NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY (0x2), NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT (0x4), NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC (0x8), NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE (0x10), NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST (0x20), NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE (0x40), NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE (0x80), NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP (0x100) or the special values NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE (0x8000) (to disable management of Wake-on-LAN in NetworkManager).</td>
+</tr>
 </tbody>
 </table></div>
 </div>
diff --git a/docs/api/html/nmcli.html b/docs/api/html/nmcli.html
index 29e3f10a..3063f728 100644
--- a/docs/api/html/nmcli.html
+++ b/docs/api/html/nmcli.html
@@ -981,13 +981,20 @@
           <span class="command"><strong>wifi</strong></span>
            [
             <span class="command"><strong>list</strong></span>
+             [<code class="option">--rescan</code> |   <code class="option">auto</code>  |   <code class="option">no</code>  |   <code class="option">yes</code> ]
              [<code class="option">ifname</code> <em class="replaceable"><code>ifname</code></em>]
              [<code class="option">bssid</code> <em class="replaceable"><code>BSSID</code></em>]
           ]
         </span></p></td>
-<td><p>List available Wi-Fi access points. The <code class="option">ifname</code> and
+<td>
+<p>List available Wi-Fi access points. The <code class="option">ifname</code> and
           <code class="option">bssid</code> options can be used to list APs for a particular
-          interface or with a specific BSSID, respectively.</p></td>
+          interface or with a specific BSSID, respectively.</p>
+<p>By default, <span class="command"><strong>nmcli</strong></span> ensures that the access point list
+          is no older than 30 seconds and triggers a network scan if necessary. The
+          <code class="option">--rescan</code> can be used to either force or disable the scan
+          regardless of how fresh the access point list is.</p>
+</td>
 </tr>
 <tr>
 <td><p><span class="term">
diff --git a/docs/api/html/settings-802-11-wireless.html b/docs/api/html/settings-802-11-wireless.html
index 3dfad741..7eb8cc26 100644
--- a/docs/api/html/settings-802-11-wireless.html
+++ b/docs/api/html/settings-802-11-wireless.html
@@ -167,6 +167,12 @@
 <td><pre class="screen">0</pre></td>
 <td>If non-zero, directs the device to use the specified transmit power. Units are dBm.  This property is highly driver dependent and not all devices support setting a static transmit power.</td>
 </tr>
+<tr>
+<td><pre class="screen">wake-on-wlan</pre></td>
+<td><pre class="screen">uint32</pre></td>
+<td><pre class="screen">1</pre></td>
+<td>The NMSettingWirelessWakeOnWLan options to enable. Not all devices support all options. May be any combination of NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY (0x2), NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT (0x4), NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC (0x8), NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE (0x10), NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST (0x20), NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE (0x40), NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE (0x80), NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP (0x100) or the special values NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE (0x8000) (to disable management of Wake-on-LAN in NetworkManager).</td>
+</tr>
 </tbody>
 </table></div>
 </div>
diff --git a/docs/api/html/settings-802-3-ethernet.html b/docs/api/html/settings-802-3-ethernet.html
index 40594446..75382df3 100644
--- a/docs/api/html/settings-802-3-ethernet.html
+++ b/docs/api/html/settings-802-3-ethernet.html
@@ -63,7 +63,7 @@
 <td><pre class="screen">auto-negotiate</pre></td>
 <td><pre class="screen">boolean</pre></td>
 <td><pre class="screen">FALSE</pre></td>
-<td>If TRUE, enforce auto-negotiation of port speed and duplex mode.  If FALSE, "speed" and "duplex" properties should be both set or link configuration will be skipped.</td>
+<td>When TRUE, enforce auto-negotiation of speed and duplex mode. If "speed" and "duplex" properties are both specified, only that single mode will be advertised and accepted during the link auto-negotiation process: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. When FALSE, "speed" and "duplex" properties should be both set or link configuration will be skipped.</td>
 </tr>
 <tr>
 <td><pre class="screen">cloned-mac-address</pre></td>
@@ -75,7 +75,7 @@
 <td><pre class="screen">duplex</pre></td>
 <td><pre class="screen">string</pre></td>
 <td><pre class="screen"></pre></td>
-<td>Can be specified only when "auto-negotiate" is "off". In that case, statically configures the device to use that specified duplex mode, either "half" or "full". Must be set together with the "speed" property if specified. Before specifying a duplex mode be sure your device supports it.</td>
+<td>When a value is set, either "half" or "full", configures the device to use the specified duplex mode. If "auto-negotiate" is "yes" the specified duplex mode will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. If the value is unset (the default), the link configuration will be either skipped (if "auto-negotiate" is "no", the default) or will be auto-negotiated (if "auto-negotiate" is "yes") and the local device will advertise all the supported duplex modes. Must be set together with the "speed" property if specified. Before specifying a duplex mode be sure your device supports it.</td>
 </tr>
 <tr>
 <td><pre class="screen">generate-mac-address-mask</pre></td>
@@ -135,7 +135,7 @@
 <td><pre class="screen">speed</pre></td>
 <td><pre class="screen">uint32</pre></td>
 <td><pre class="screen">0</pre></td>
-<td>Can be set to a value greater than zero only when "auto-negotiate" is "off". In that case, statically configures the device to use that specified speed. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the "duplex" property when non-zero. Before specifying a speed value be sure your device supports it.</td>
+<td>When a value grater than 0 is set, configures the device to use the specified speed. If "auto-negotiate" is "yes" the specified speed will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabit speeds, as in this case link negotiation is mandatory. If the value is unset (0, the default), the link configuration will be either skipped (if "auto-negotiate" is "no", the default) or will be auto-negotiated (if "auto-negotiate" is "yes") and the local device will advertise all the supported speeds. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the "duplex" property when non-zero. Before specifying a speed value be sure your device supports it.</td>
 </tr>
 <tr>
 <td><pre class="screen">wake-on-lan</pre></td>
diff --git a/docs/api/html/settings-connection.html b/docs/api/html/settings-connection.html
index a5909455..ebd2d739 100644
--- a/docs/api/html/settings-connection.html
+++ b/docs/api/html/settings-connection.html
@@ -159,7 +159,7 @@
 <td><pre class="screen">stable-id</pre></td>
 <td><pre class="screen">string</pre></td>
 <td><pre class="screen"></pre></td>
-<td>This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The '$' character is treated special to perform dynamic substitutions at runtime. Currently supported are "${CONNECTION}", "${DEVICE}", "${BOOT}", "${RANDOM}". These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that "${DEVICE}" corresponds the the interface name of the device. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as "$$". For example, set it to "${CONNECTION}-${BOOT}-${DEVICE}" to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to "${CONNECTION}" and uses a unique, fixed ID for the connection.</td>
+<td>This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable and to derive the DHCP DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid]. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The '$' character is treated special to perform dynamic substitutions at runtime. Currently supported are "${CONNECTION}", "${DEVICE}", "${BOOT}", "${RANDOM}". These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that "${DEVICE}" corresponds the the interface name of the device. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as "$$". For example, set it to "${CONNECTION}-${BOOT}-${DEVICE}" to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to "${CONNECTION}" and uses a unique, fixed ID for the connection.</td>
 </tr>
 <tr>
 <td><pre class="screen">timestamp</pre></td>
diff --git a/docs/api/html/settings-ipv6.html b/docs/api/html/settings-ipv6.html
index 2f6f8548..b3a2caca 100644
--- a/docs/api/html/settings-ipv6.html
+++ b/docs/api/html/settings-ipv6.html
@@ -78,6 +78,12 @@
 <td>Timeout in milliseconds used to check for the presence of duplicate IP addresses on the network.  If an address conflict is detected, the activation will fail.  A zero value means that no duplicate address detection is performed, -1 means the default value (either configuration ipvx.dad-timeout override or zero).  A value greater than zero is a timeout in milliseconds. The property is currently implemented only for IPv4.</td>
 </tr>
 <tr>
+<td><pre class="screen">dhcp-duid</pre></td>
+<td><pre class="screen">string</pre></td>
+<td><pre class="screen"></pre></td>
+<td>A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp client to identify itself to DHCPv6 servers (RFC 3315). The DUID is carried in the Client Identifier option. If the property is a hex string ('aa:bb:cc') it is interpreted as a binary DUID and filled as an opaque value in the Client Identifier option. The special value "lease" will retrieve the DUID previously used from the lease file belonging to the connection. If no DUID is found and "dhclient" is the configured dhcp client, the DUID is searched in the system-wide dhclient lease file. If still no DUID is found, or another dhcp client is used, a global and permanent DUID-UUID (RFC 6355) will be generated based on the machine-id. The special values "llt" and "ll" will generate a DUID of type LLT or LL (see RFC 3315) based on the current MAC address of the device. In order to try providing a stable DUID-LLT, the time field will contain a constant timestamp that is used globally (for all profiles) and persisted to disk. The special values "stable-llt", "stable-ll" and "stable-uuid" will generate a DUID of the corresponding type, derived from the connection's stable-id and a per-host unique key. So, the link-layer address of "stable-ll" and "stable-llt" will be a generated address derived from the stable id. The DUID-LLT time value in the "stable-llt" option will be picked among a static timespan of three years (the upper bound of the interval is the same constant timestamp used in "llt"). When the property is unset, the global value provided for "ipv6.dhcp-duid" is used. If no global value is provided, the default "lease" value is assumed.</td>
+</tr>
+<tr>
 <td><pre class="screen">dhcp-hostname</pre></td>
 <td><pre class="screen">string</pre></td>
 <td><pre class="screen"></pre></td>
diff --git a/docs/api/html/settings-macsec.html b/docs/api/html/settings-macsec.html
index 1ee29d71..f7320920 100644
--- a/docs/api/html/settings-macsec.html
+++ b/docs/api/html/settings-macsec.html
@@ -102,6 +102,12 @@
 <td>The port component of the SCI (Secure Channel Identifier), between 1 and 65534.</td>
 </tr>
 <tr>
+<td><pre class="screen">send-sci</pre></td>
+<td><pre class="screen">boolean</pre></td>
+<td><pre class="screen">TRUE</pre></td>
+<td>Specifies whether the SCI (Secure Channel Identifier) is included in every packet.</td>
+</tr>
+<tr>
 <td><pre class="screen">validation</pre></td>
 <td><pre class="screen">int32</pre></td>
 <td><pre class="screen">2</pre></td>
diff --git a/docs/api/html/settings-team.html b/docs/api/html/settings-team.html
index ce5ae3cd..5c9e29e5 100644
--- a/docs/api/html/settings-team.html
+++ b/docs/api/html/settings-team.html
@@ -105,7 +105,7 @@
 <td><pre class="screen">runner</pre></td>
 <td><pre class="screen">string</pre></td>
 <td><pre class="screen">"roundrobin"</pre></td>
-<td>Corresponds to the teamd runner.name. Permitted values are: "roundrobin", "broadcast", "activebackup", "loadbalance", "lacp". When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value).</td>
+<td>Corresponds to the teamd runner.name. Permitted values are: "roundrobin", "broadcast", "activebackup", "loadbalance", "lacp", "random". When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value).</td>
 </tr>
 <tr>
 <td><pre class="screen">runner-active</pre></td>
diff --git a/docs/api/settings-spec.xml b/docs/api/settings-spec.xml
index 38382d39..23a74135 100644
--- a/docs/api/settings-spec.xml
+++ b/docs/api/settings-spec.xml
@@ -21,7 +21,7 @@
     <row><entry><screen>read-only<indexterm zone="settings-connection"><primary sortas="read-only">read-only</primary></indexterm></screen></entry><entry><screen>boolean</screen></entry><entry><screen>FALSE</screen></entry><entry>FALSE if the connection can be modified using the provided settings service's D-Bus interface with the right privileges, or TRUE if the connection is read-only and cannot be modified.</entry></row>
     <row><entry><screen>secondaries<indexterm zone="settings-connection"><primary sortas="secondaries">secondaries</primary></indexterm></screen></entry><entry><screen>array of string</screen></entry><entry><screen>[]</screen></entry><entry>List of connection UUIDs that should be activated when the base connection itself is activated. Currently only VPN connections are supported.</entry></row>
     <row><entry><screen>slave-type<indexterm zone="settings-connection"><primary sortas="slave-type">slave-type</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen/></entry><entry>Setting name of the device type of this slave's master connection (eg, "bond"), or NULL if this connection is not a slave.</entry></row>
-    <row><entry><screen>stable-id<indexterm zone="settings-connection"><primary sortas="stable-id">stable-id</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen/></entry><entry>This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The '$' character is treated special to perform dynamic substitutions at runtime. Currently supported are "${CONNECTION}", "${DEVICE}", "${BOOT}", "${RANDOM}". These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that "${DEVICE}" corresponds the the interface name of the device. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as "$$". For example, set it to "${CONNECTION}-${BOOT}-${DEVICE}" to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to "${CONNECTION}" and uses a unique, fixed ID for the connection.</entry></row>
+    <row><entry><screen>stable-id<indexterm zone="settings-connection"><primary sortas="stable-id">stable-id</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen/></entry><entry>This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable and to derive the DHCP DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid]. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The '$' character is treated special to perform dynamic substitutions at runtime. Currently supported are "${CONNECTION}", "${DEVICE}", "${BOOT}", "${RANDOM}". These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that "${DEVICE}" corresponds the the interface name of the device. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as "$$". For example, set it to "${CONNECTION}-${BOOT}-${DEVICE}" to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to "${CONNECTION}" and uses a unique, fixed ID for the connection.</entry></row>
     <row><entry><screen>timestamp<indexterm zone="settings-connection"><primary sortas="timestamp">timestamp</primary></indexterm></screen></entry><entry><screen>uint64</screen></entry><entry><screen>0</screen></entry><entry>The time, in seconds since the Unix Epoch, that the connection was last _successfully_ fully activated. NetworkManager updates the connection timestamp periodically when the connection is active to ensure that an active connection has the latest timestamp. The property is only meant for reading (changes to this property will not be preserved).</entry></row>
     <row><entry><screen>type<indexterm zone="settings-connection"><primary sortas="type">type</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen/></entry><entry>Base type of the connection. For hardware-dependent connections, should contain the setting name of the hardware-type specific setting (ie, "802-3-ethernet" or "802-11-wireless" or "bluetooth", etc), and for non-hardware dependent connections like VPN or otherwise, should contain the setting name of that setting type (ie, "vpn" or "bridge", etc).</entry></row>
     <row><entry><screen>uuid<indexterm zone="settings-connection"><primary sortas="uuid">uuid</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen/></entry><entry>A universally unique identifier for the connection, for example generated with libuuid.  It should be assigned when the connection is created, and never changed as long as the connection still applies to the same network.  For example, it should not be changed when the "id" property or NMSettingIP4Config changes, but might need to be re-created when the Wi-Fi SSID, mobile broadband network provider, or "type" property changes. The UUID must be in the format "2815492f-7e56-435e-b2e9-246bd7cdc664" (ie, contains only hexadecimal characters and "-").</entry></row>
@@ -227,6 +227,7 @@
     <row><entry><screen>address-data<indexterm zone="settings-ipv6"><primary sortas="address-data">address-data</primary></indexterm></screen></entry><entry><screen>array of vardict</screen></entry><entry><screen/></entry><entry>Array of IPv6 addresses. Each address dictionary contains at least 'address' and 'prefix' entries, containing the IP address as a string, and the prefix length as a uint32. Additional attributes may also exist on some addresses.</entry></row>
     <row><entry><screen>addresses<indexterm zone="settings-ipv6"><primary sortas="addresses">addresses</primary></indexterm></screen></entry><entry><screen>array of legacy IPv6 address struct (a(ayuay))</screen></entry><entry><screen>[]</screen></entry><entry>Deprecated in favor of the 'address-data' and 'gateway' properties, but this can be used for backward-compatibility with older daemons. Note that if you send this property the daemon will ignore 'address-data' and 'gateway'.  Array of IPv6 address structures.  Each IPv6 address structure is composed of an IPv6 address, a prefix length (1 - 128), and an IPv6 gateway address. The gateway may be zeroed out if no gateway exists for that subnet.</entry></row>
     <row><entry><screen>dad-timeout<indexterm zone="settings-ipv6"><primary sortas="dad-timeout">dad-timeout</primary></indexterm></screen></entry><entry><screen>int32</screen></entry><entry><screen>-1</screen></entry><entry>Timeout in milliseconds used to check for the presence of duplicate IP addresses on the network.  If an address conflict is detected, the activation will fail.  A zero value means that no duplicate address detection is performed, -1 means the default value (either configuration ipvx.dad-timeout override or zero).  A value greater than zero is a timeout in milliseconds. The property is currently implemented only for IPv4.</entry></row>
+    <row><entry><screen>dhcp-duid<indexterm zone="settings-ipv6"><primary sortas="dhcp-duid">dhcp-duid</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen/></entry><entry>A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp client to identify itself to DHCPv6 servers (RFC 3315). The DUID is carried in the Client Identifier option. If the property is a hex string ('aa:bb:cc') it is interpreted as a binary DUID and filled as an opaque value in the Client Identifier option. The special value "lease" will retrieve the DUID previously used from the lease file belonging to the connection. If no DUID is found and "dhclient" is the configured dhcp client, the DUID is searched in the system-wide dhclient lease file. If still no DUID is found, or another dhcp client is used, a global and permanent DUID-UUID (RFC 6355) will be generated based on the machine-id. The special values "llt" and "ll" will generate a DUID of type LLT or LL (see RFC 3315) based on the current MAC address of the device. In order to try providing a stable DUID-LLT, the time field will contain a constant timestamp that is used globally (for all profiles) and persisted to disk. The special values "stable-llt", "stable-ll" and "stable-uuid" will generate a DUID of the corresponding type, derived from the connection's stable-id and a per-host unique key. So, the link-layer address of "stable-ll" and "stable-llt" will be a generated address derived from the stable id. The DUID-LLT time value in the "stable-llt" option will be picked among a static timespan of three years (the upper bound of the interval is the same constant timestamp used in "llt"). When the property is unset, the global value provided for "ipv6.dhcp-duid" is used. If no global value is provided, the default "lease" value is assumed.</entry></row>
     <row><entry><screen>dhcp-hostname<indexterm zone="settings-ipv6"><primary sortas="dhcp-hostname">dhcp-hostname</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen/></entry><entry>If the "dhcp-send-hostname" property is TRUE, then the specified name will be sent to the DHCP server when acquiring a lease. This property and "dhcp-fqdn" are mutually exclusive and cannot be set at the same time.</entry></row>
     <row><entry><screen>dhcp-send-hostname<indexterm zone="settings-ipv6"><primary sortas="dhcp-send-hostname">dhcp-send-hostname</primary></indexterm></screen></entry><entry><screen>boolean</screen></entry><entry><screen>TRUE</screen></entry><entry>If TRUE, a hostname is sent to the DHCP server when acquiring a lease. Some DHCP servers use this hostname to update DNS databases, essentially providing a static hostname for the computer.  If the "dhcp-hostname" property is NULL and this property is TRUE, the current persistent hostname of the computer is sent.</entry></row>
     <row><entry><screen>dhcp-timeout<indexterm zone="settings-ipv6"><primary sortas="dhcp-timeout">dhcp-timeout</primary></indexterm></screen></entry><entry><screen>int32</screen></entry><entry><screen>0</screen></entry><entry>A timeout for a DHCP transaction in seconds.</entry></row>
@@ -277,6 +278,7 @@
     <row><entry><screen>name<indexterm zone="settings-macsec"><primary sortas="name">name</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen>macsec</screen></entry><entry>The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example "ppp" or "wireless" or "wired".</entry></row>
     <row><entry><screen>parent<indexterm zone="settings-macsec"><primary sortas="parent">parent</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen/></entry><entry>If given, specifies the parent interface name or parent connection UUID from which this MACSEC interface should be created.  If this property is not specified, the connection must contain an "802-3-ethernet" setting with a "mac-address" property.</entry></row>
     <row><entry><screen>port<indexterm zone="settings-macsec"><primary sortas="port">port</primary></indexterm></screen></entry><entry><screen>int32</screen></entry><entry><screen>1</screen></entry><entry>The port component of the SCI (Secure Channel Identifier), between 1 and 65534.</entry></row>
+    <row><entry><screen>send-sci<indexterm zone="settings-macsec"><primary sortas="send-sci">send-sci</primary></indexterm></screen></entry><entry><screen>boolean</screen></entry><entry><screen>TRUE</screen></entry><entry>Specifies whether the SCI (Secure Channel Identifier) is included in every packet.</entry></row>
     <row><entry><screen>validation<indexterm zone="settings-macsec"><primary sortas="validation">validation</primary></indexterm></screen></entry><entry><screen>int32</screen></entry><entry><screen>2</screen></entry><entry>Specifies the validation mode for incoming frames.</entry></row>
   </tbody></tgroup></table></para></refsect1></refentry>
   <refentry id="settings-macvlan"><refnamediv><refname>macvlan</refname><refpurpose>MAC VLAN Settings</refpurpose></refnamediv><refsect1 role="properties"><title id="settings-macvlan.properties">
@@ -398,7 +400,7 @@
     <row><entry><screen>name<indexterm zone="settings-team"><primary sortas="name">name</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen>team</screen></entry><entry>The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example "ppp" or "wireless" or "wired".</entry></row>
     <row><entry><screen>notify-peers-count<indexterm zone="settings-team"><primary sortas="notify-peers-count">notify-peers-count</primary></indexterm></screen></entry><entry><screen>int32</screen></entry><entry><screen>0</screen></entry><entry>Corresponds to the teamd notify_peers.count.</entry></row>
     <row><entry><screen>notify-peers-interval<indexterm zone="settings-team"><primary sortas="notify-peers-interval">notify-peers-interval</primary></indexterm></screen></entry><entry><screen>int32</screen></entry><entry><screen>0</screen></entry><entry>Corresponds to the teamd notify_peers.interval.</entry></row>
-    <row><entry><screen>runner<indexterm zone="settings-team"><primary sortas="runner">runner</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen>"roundrobin"</screen></entry><entry>Corresponds to the teamd runner.name. Permitted values are: "roundrobin", "broadcast", "activebackup", "loadbalance", "lacp". When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value).</entry></row>
+    <row><entry><screen>runner<indexterm zone="settings-team"><primary sortas="runner">runner</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen>"roundrobin"</screen></entry><entry>Corresponds to the teamd runner.name. Permitted values are: "roundrobin", "broadcast", "activebackup", "loadbalance", "lacp", "random". When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value).</entry></row>
     <row><entry><screen>runner-active<indexterm zone="settings-team"><primary sortas="runner-active">runner-active</primary></indexterm></screen></entry><entry><screen>boolean</screen></entry><entry><screen>FALSE</screen></entry><entry>Corresponds to the teamd runner.active.</entry></row>
     <row><entry><screen>runner-agg-select-policy<indexterm zone="settings-team"><primary sortas="runner-agg-select-policy">runner-agg-select-policy</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen/></entry><entry>Corresponds to the teamd runner.agg_select_policy.</entry></row>
     <row><entry><screen>runner-fast-rate<indexterm zone="settings-team"><primary sortas="runner-fast-rate">runner-fast-rate</primary></indexterm></screen></entry><entry><screen>boolean</screen></entry><entry><screen>FALSE</screen></entry><entry>Corresponds to the teamd runner.fast_rate.</entry></row>
@@ -492,9 +494,9 @@
             Properties
         </title><para><table><tgroup cols="4"><thead><row><entry>Key Name</entry><entry>Value Type</entry><entry>Default Value</entry><entry>Value Description</entry></row></thead><tbody>
     <row><entry><screen>assigned-mac-address<indexterm zone="settings-802-3-ethernet"><primary sortas="assigned-mac-address">assigned-mac-address</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen/></entry><entry>The new field for the cloned MAC address. It can be either a hardware address in ASCII representation, or one of the special values "preserve", "permanent", "random" or "stable". This field replaces the deprecated "cloned-mac-address" on D-Bus, which can only contain explict hardware addresses. Note that this property only exists in D-Bus API. libnm and nmcli continue to call this property "cloned-mac-address".</entry></row>
-    <row><entry><screen>auto-negotiate<indexterm zone="settings-802-3-ethernet"><primary sortas="auto-negotiate">auto-negotiate</primary></indexterm></screen></entry><entry><screen>boolean</screen></entry><entry><screen>FALSE</screen></entry><entry>If TRUE, enforce auto-negotiation of port speed and duplex mode.  If FALSE, "speed" and "duplex" properties should be both set or link configuration will be skipped.</entry></row>
+    <row><entry><screen>auto-negotiate<indexterm zone="settings-802-3-ethernet"><primary sortas="auto-negotiate">auto-negotiate</primary></indexterm></screen></entry><entry><screen>boolean</screen></entry><entry><screen>FALSE</screen></entry><entry>When TRUE, enforce auto-negotiation of speed and duplex mode. If "speed" and "duplex" properties are both specified, only that single mode will be advertised and accepted during the link auto-negotiation process: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. When FALSE, "speed" and "duplex" properties should be both set or link configuration will be skipped.</entry></row>
     <row><entry><screen>cloned-mac-address<indexterm zone="settings-802-3-ethernet"><primary sortas="cloned-mac-address">cloned-mac-address</primary></indexterm></screen></entry><entry><screen>byte array</screen></entry><entry><screen/></entry><entry>This D-Bus field is deprecated in favor of "assigned-mac-address" which is more flexible and allows specifying special variants like "random". For libnm and nmcli, this field is called "cloned-mac-address".</entry></row>
-    <row><entry><screen>duplex<indexterm zone="settings-802-3-ethernet"><primary sortas="duplex">duplex</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen/></entry><entry>Can be specified only when "auto-negotiate" is "off". In that case, statically configures the device to use that specified duplex mode, either "half" or "full". Must be set together with the "speed" property if specified. Before specifying a duplex mode be sure your device supports it.</entry></row>
+    <row><entry><screen>duplex<indexterm zone="settings-802-3-ethernet"><primary sortas="duplex">duplex</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen/></entry><entry>When a value is set, either "half" or "full", configures the device to use the specified duplex mode. If "auto-negotiate" is "yes" the specified duplex mode will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. If the value is unset (the default), the link configuration will be either skipped (if "auto-negotiate" is "no", the default) or will be auto-negotiated (if "auto-negotiate" is "yes") and the local device will advertise all the supported duplex modes. Must be set together with the "speed" property if specified. Before specifying a duplex mode be sure your device supports it.</entry></row>
     <row><entry><screen>generate-mac-address-mask<indexterm zone="settings-802-3-ethernet"><primary sortas="generate-mac-address-mask">generate-mac-address-mask</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen/></entry><entry>With "cloned-mac-address" setting "random" or "stable", by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting "FE:FF:FF:00:00:00" means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the "random" or "stable" algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of "FE:FF:FF:00:00:00 68:F7:28:00:00:00" will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of "02:00:00:00:00:00 00:00:00:00:00:00" will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, "02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00" will create a fully scrambled MAC address, randomly locally or globally administered.</entry></row>
     <row><entry><screen>mac-address<indexterm zone="settings-802-3-ethernet"><primary sortas="mac-address">mac-address</primary></indexterm></screen></entry><entry><screen>byte array</screen></entry><entry><screen/></entry><entry>If specified, this connection will only apply to the Ethernet device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing).</entry></row>
     <row><entry><screen>mac-address-blacklist<indexterm zone="settings-802-3-ethernet"><primary sortas="mac-address-blacklist">mac-address-blacklist</primary></indexterm></screen></entry><entry><screen>array of string</screen></entry><entry><screen>[]</screen></entry><entry>If specified, this connection will never apply to the Ethernet device whose permanent MAC address matches an address in the list.  Each MAC address is in the standard hex-digits-and-colons notation (00:11:22:33:44:55).</entry></row>
@@ -504,7 +506,7 @@
     <row><entry><screen>s390-nettype<indexterm zone="settings-802-3-ethernet"><primary sortas="s390-nettype">s390-nettype</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen/></entry><entry>s390 network device type; one of "qeth", "lcs", or "ctc", representing the different types of virtual network devices available on s390 systems.</entry></row>
     <row><entry><screen>s390-options<indexterm zone="settings-802-3-ethernet"><primary sortas="s390-options">s390-options</primary></indexterm></screen></entry><entry><screen>dict of string to string</screen></entry><entry><screen>{}</screen></entry><entry>Dictionary of key/value pairs of s390-specific device options.  Both keys and values must be strings.  Allowed keys include "portno", "layer2", "portname", "protocol", among others.  Key names must contain only alphanumeric characters (ie, [a-zA-Z0-9]).</entry></row>
     <row><entry><screen>s390-subchannels<indexterm zone="settings-802-3-ethernet"><primary sortas="s390-subchannels">s390-subchannels</primary></indexterm></screen></entry><entry><screen>array of string</screen></entry><entry><screen>[]</screen></entry><entry>Identifies specific subchannels that this network device uses for communication with z/VM or s390 host.  Like the "mac-address" property for non-z/VM devices, this property can be used to ensure this connection only applies to the network device that uses these subchannels.  The list should contain exactly 3 strings, and each string may only be composed of hexadecimal characters and the period (.) character.</entry></row>
-    <row><entry><screen>speed<indexterm zone="settings-802-3-ethernet"><primary sortas="speed">speed</primary></indexterm></screen></entry><entry><screen>uint32</screen></entry><entry><screen>0</screen></entry><entry>Can be set to a value greater than zero only when "auto-negotiate" is "off". In that case, statically configures the device to use that specified speed. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the "duplex" property when non-zero. Before specifying a speed value be sure your device supports it.</entry></row>
+    <row><entry><screen>speed<indexterm zone="settings-802-3-ethernet"><primary sortas="speed">speed</primary></indexterm></screen></entry><entry><screen>uint32</screen></entry><entry><screen>0</screen></entry><entry>When a value grater than 0 is set, configures the device to use the specified speed. If "auto-negotiate" is "yes" the specified speed will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabit speeds, as in this case link negotiation is mandatory. If the value is unset (0, the default), the link configuration will be either skipped (if "auto-negotiate" is "no", the default) or will be auto-negotiated (if "auto-negotiate" is "yes") and the local device will advertise all the supported speeds. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the "duplex" property when non-zero. Before specifying a speed value be sure your device supports it.</entry></row>
     <row><entry><screen>wake-on-lan<indexterm zone="settings-802-3-ethernet"><primary sortas="wake-on-lan">wake-on-lan</primary></indexterm></screen></entry><entry><screen>uint32</screen></entry><entry><screen>1</screen></entry><entry>The NMSettingWiredWakeOnLan options to enable. Not all devices support all options. May be any combination of NM_SETTING_WIRED_WAKE_ON_LAN_PHY (0x2), NM_SETTING_WIRED_WAKE_ON_LAN_UNICAST (0x4), NM_SETTING_WIRED_WAKE_ON_LAN_MULTICAST (0x8), NM_SETTING_WIRED_WAKE_ON_LAN_BROADCAST (0x10), NM_SETTING_WIRED_WAKE_ON_LAN_ARP (0x20), NM_SETTING_WIRED_WAKE_ON_LAN_MAGIC (0x40) or the special values NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE (0x8000) (to disable management of Wake-on-LAN in NetworkManager).</entry></row>
     <row><entry><screen>wake-on-lan-password<indexterm zone="settings-802-3-ethernet"><primary sortas="wake-on-lan-password">wake-on-lan-password</primary></indexterm></screen></entry><entry><screen>string</screen></entry><entry><screen/></entry><entry>If specified, the password used with magic-packet-based Wake-on-LAN, represented as an Ethernet MAC address.  If NULL, no password will be required.</entry></row>
   </tbody></tgroup></table></para></refsect1></refentry>
@@ -530,6 +532,7 @@
     <row><entry><screen>seen-bssids<indexterm zone="settings-802-11-wireless"><primary sortas="seen-bssids">seen-bssids</primary></indexterm></screen></entry><entry><screen>array of string</screen></entry><entry><screen>[]</screen></entry><entry>A list of BSSIDs (each BSSID formatted as a MAC address like "00:11:22:33:44:55") that have been detected as part of the Wi-Fi network.  NetworkManager internally tracks previously seen BSSIDs. The property is only meant for reading and reflects the BSSID list of NetworkManager. The changes you make to this property will not be preserved.</entry></row>
     <row><entry><screen>ssid<indexterm zone="settings-802-11-wireless"><primary sortas="ssid">ssid</primary></indexterm></screen></entry><entry><screen>byte array</screen></entry><entry><screen/></entry><entry>SSID of the Wi-Fi network. Must be specified.</entry></row>
     <row><entry><screen>tx-power<indexterm zone="settings-802-11-wireless"><primary sortas="tx-power">tx-power</primary></indexterm></screen></entry><entry><screen>uint32</screen></entry><entry><screen>0</screen></entry><entry>If non-zero, directs the device to use the specified transmit power. Units are dBm.  This property is highly driver dependent and not all devices support setting a static transmit power.</entry></row>
+    <row><entry><screen>wake-on-wlan<indexterm zone="settings-802-11-wireless"><primary sortas="wake-on-wlan">wake-on-wlan</primary></indexterm></screen></entry><entry><screen>uint32</screen></entry><entry><screen>1</screen></entry><entry>The NMSettingWirelessWakeOnWLan options to enable. Not all devices support all options. May be any combination of NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY (0x2), NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT (0x4), NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC (0x8), NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE (0x10), NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST (0x20), NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE (0x40), NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE (0x80), NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP (0x100) or the special values NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE (0x8000) (to disable management of Wake-on-LAN in NetworkManager).</entry></row>
   </tbody></tgroup></table></para></refsect1></refentry>
   <refentry id="settings-802-11-wireless-security"><refnamediv><refname>802-11-wireless-security</refname><refpurpose>Wi-Fi Security Settings</refpurpose></refnamediv><refsect1 role="properties"><title id="settings-802-11-wireless-security.properties">
             Properties
diff --git a/docs/api/version.xml b/docs/api/version.xml
index 3d0e6231..2d784e44 100644
--- a/docs/api/version.xml
+++ b/docs/api/version.xml
@@ -1 +1 @@
-1.11.4
+1.11.90
diff --git a/docs/libnm-glib/html/index.html b/docs/libnm-glib/html/index.html
index 61ce204d..4846a2b6 100644
--- a/docs/libnm-glib/html/index.html
+++ b/docs/libnm-glib/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libnm-glib Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for libnm-glib 1.11.4
+      for libnm-glib 1.11.90
 
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="https://developer.gnome.org/libnm-glib/stable/" target="_top">https://developer.gnome.org/libnm-glib/stable/</a>.
diff --git a/docs/libnm-glib/version.xml b/docs/libnm-glib/version.xml
index 3d0e6231..2d784e44 100644
--- a/docs/libnm-glib/version.xml
+++ b/docs/libnm-glib/version.xml
@@ -1 +1 @@
-1.11.4
+1.11.90
diff --git a/docs/libnm-util/html/index.html b/docs/libnm-util/html/index.html
index 0b3606ae..10df37e5 100644
--- a/docs/libnm-util/html/index.html
+++ b/docs/libnm-util/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libnm-util Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for libnm-util 1.11.4
+      for libnm-util 1.11.90
 
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="https://developer.gnome.org/libnm-util/stable/" target="_top">https://developer.gnome.org/libnm-util/stable/</a>.
diff --git a/docs/libnm-util/version.xml b/docs/libnm-util/version.xml
index 3d0e6231..2d784e44 100644
--- a/docs/libnm-util/version.xml
+++ b/docs/libnm-util/version.xml
@@ -1 +1 @@
-1.11.4
+1.11.90
diff --git a/docs/libnm/html/NMDeviceWifi.html b/docs/libnm/html/NMDeviceWifi.html
index ad301451..ba3a213b 100644
--- a/docs/libnm/html/NMDeviceWifi.html
+++ b/docs/libnm/html/NMDeviceWifi.html
@@ -106,6 +106,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="NMDeviceWifi.html#nm-device-wifi-get-last-scan" title="nm_device_wifi_get_last_scan ()">nm_device_wifi_get_last_scan</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 </td>
 <td class="function_name">
@@ -180,6 +188,11 @@
 <td class="property_flags">Read</td>
 </tr>
 <tr>
+<td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint64"><span class="type">gint64</span></a></td>
+<td class="property_name"><a class="link" href="NMDeviceWifi.html#NMDeviceWifi--last-scan" title="The “last-scan” property">last-scan</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
 <td class="property_type"><a class="link" href="libnm-nm-dbus-interface.html#NM80211Mode" title="enum NM80211Mode"><span class="type">NM80211Mode</span></a></td>
 <td class="property_name"><a class="link" href="NMDeviceWifi.html#NMDeviceWifi--mode" title="The “mode” property">mode</a></td>
 <td class="property_flags">Read</td>
@@ -257,6 +270,10 @@
 <td class="function_name"><a class="link" href="NMDeviceWifi.html#NM-DEVICE-WIFI-ACCESS-POINTS:CAPS" title="NM_DEVICE_WIFI_ACCESS_POINTS">NM_DEVICE_WIFI_ACCESS_POINTS</a></td>
 </tr>
 <tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="NMDeviceWifi.html#NM-DEVICE-WIFI-LAST-SCAN:CAPS" title="NM_DEVICE_WIFI_LAST_SCAN">NM_DEVICE_WIFI_LAST_SCAN</a></td>
+</tr>
+<tr>
 <td class="datatype_keyword"> </td>
 <td class="function_name"><a class="link" href="NMDeviceWifi.html#NMDeviceWifi-struct" title="NMDeviceWifi">NMDeviceWifi</a></td>
 </tr>
@@ -509,6 +526,36 @@ The returned array is owned by the client and should not be modified. </p>
 </div>
 <hr>
 <div class="refsect2">
+<a name="nm-device-wifi-get-last-scan"></a><h3>nm_device_wifi_get_last_scan ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a>
+nm_device_wifi_get_last_scan (<em class="parameter"><code><a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi"><span class="type">NMDeviceWifi</span></a> *device</code></em>);</pre>
+<p>Returns the timestamp (in CLOCK_BOOTTIME milliseconds) for the last finished
+network scan. A value of -1 means the device never scanned for access points.</p>
+<p>Use <a class="link" href="libnm-nm-utils.html#nm-utils-get-timestamp-msec" title="nm_utils_get_timestamp_msec ()"><code class="function">nm_utils_get_timestamp_msec()</code></a> to obtain current time value suitable for
+comparing to this value.</p>
+<div class="refsect3">
+<a name="nm-device-wifi-get-last-scan.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>device</p></td>
+<td class="parameter_description"><p>a <a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi"><span class="type">NMDeviceWifi</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="nm-device-wifi-get-last-scan.returns"></a><h4>Returns</h4>
+<p> the last scan time in seconds</p>
+</div>
+<p class="since">Since: 1.12</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-device-wifi-request-scan"></a><h3>nm_device_wifi_request_scan ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 nm_device_wifi_request_scan (<em class="parameter"><code><a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi"><span class="type">NMDeviceWifi</span></a> *device</code></em>,
@@ -806,6 +853,12 @@ set.</p>
 </div>
 <hr>
 <div class="refsect2">
+<a name="NM-DEVICE-WIFI-LAST-SCAN:CAPS"></a><h3>NM_DEVICE_WIFI_LAST_SCAN</h3>
+<pre class="programlisting">#define NM_DEVICE_WIFI_LAST_SCAN           "last-scan"
+</pre>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NMDeviceWifi-struct"></a><h3>NMDeviceWifi</h3>
 <pre class="programlisting">typedef struct _NMDeviceWifi NMDeviceWifi;</pre>
 </div>
@@ -844,6 +897,18 @@ set.</p>
 </div>
 <hr>
 <div class="refsect2">
+<a name="NMDeviceWifi--last-scan"></a><h3>The <code class="literal">“last-scan”</code> property</h3>
+<pre class="programlisting">  “last-scan”                <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint64"><span class="type">gint64</span></a></pre>
+<p>The timestamp (in CLOCK_BOOTTIME seconds) for the last finished
+network scan. A value of -1 means the device never scanned for
+access points.</p>
+<p>Flags: Read</p>
+<p>Allowed values: &gt;= -1</p>
+<p>Default value: -1</p>
+<p class="since">Since: 1.12</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NMDeviceWifi--mode"></a><h3>The <code class="literal">“mode”</code> property</h3>
 <pre class="programlisting">  “mode”                     <a class="link" href="libnm-nm-dbus-interface.html#NM80211Mode" title="enum NM80211Mode"><span class="type">NM80211Mode</span></a></pre>
 <p>The mode of the device.</p>
diff --git a/docs/libnm/html/NMRemoteConnection.html b/docs/libnm/html/NMRemoteConnection.html
index 8b533322..2e1b2f2c 100644
--- a/docs/libnm/html/NMRemoteConnection.html
+++ b/docs/libnm/html/NMRemoteConnection.html
@@ -171,6 +171,13 @@
 </td>
 </tr>
 <tr>
+<td class="function_type">const <span class="returnvalue">char</span> *
+</td>
+<td class="function_name">
+<a class="link" href="NMRemoteConnection.html#nm-remote-connection-get-filename" title="nm_remote_connection_get_filename ()">nm_remote_connection_get_filename</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
 <td class="function_type">
 <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 </td>
@@ -191,6 +198,12 @@
 </colgroup>
 <tbody>
 <tr>
+<td class="property_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="NMRemoteConnection.html#NMRemoteConnection--filename" title="The “filename” property">filename</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
 <td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
 <td class="property_name"><a class="link" href="NMRemoteConnection.html#NMRemoteConnection--flags" title="The “flags” property">flags</a></td>
 <td class="property_flags">Read</td>
@@ -234,6 +247,10 @@
 </tr>
 <tr>
 <td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="NMRemoteConnection.html#NM-REMOTE-CONNECTION-FILENAME:CAPS" title="NM_REMOTE_CONNECTION_FILENAME">NM_REMOTE_CONNECTION_FILENAME</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
 <td class="function_name"><a class="link" href="NMRemoteConnection.html#NM-REMOTE-CONNECTION-VISIBLE:CAPS" title="NM_REMOTE_CONNECTION_VISIBLE">NM_REMOTE_CONNECTION_VISIBLE</a></td>
 </tr>
 <tr>
@@ -961,6 +978,32 @@ nm_remote_connection_get_flags (<em class="parameter"><code><a class="link" href
 </div>
 <hr>
 <div class="refsect2">
+<a name="nm-remote-connection-get-filename"></a><h3>nm_remote_connection_get_filename ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> *
+nm_remote_connection_get_filename (<em class="parameter"><code><a class="link" href="NMRemoteConnection.html" title="NMRemoteConnection"><span class="type">NMRemoteConnection</span></a> *connection</code></em>);</pre>
+<div class="refsect3">
+<a name="nm-remote-connection-get-filename.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>connection</p></td>
+<td class="parameter_description"><p>the <a class="link" href="NMRemoteConnection.html" title="NMRemoteConnection"><span class="type">NMRemoteConnection</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="nm-remote-connection-get-filename.returns"></a><h4>Returns</h4>
+<p> file that stores the connection in case the connection is file-backed.</p>
+</div>
+<p class="since">Since: 1.12</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-remote-connection-get-visible"></a><h3>nm_remote_connection_get_visible ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 nm_remote_connection_get_visible (<em class="parameter"><code><a class="link" href="NMRemoteConnection.html" title="NMRemoteConnection"><span class="type">NMRemoteConnection</span></a> *connection</code></em>);</pre>
@@ -1021,6 +1064,12 @@ user, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.ht
 </div>
 <hr>
 <div class="refsect2">
+<a name="NM-REMOTE-CONNECTION-FILENAME:CAPS"></a><h3>NM_REMOTE_CONNECTION_FILENAME</h3>
+<pre class="programlisting">#define NM_REMOTE_CONNECTION_FILENAME        "filename"
+</pre>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-REMOTE-CONNECTION-VISIBLE:CAPS"></a><h3>NM_REMOTE_CONNECTION_VISIBLE</h3>
 <pre class="programlisting">#define NM_REMOTE_CONNECTION_VISIBLE         "visible"
 </pre>
@@ -1034,6 +1083,16 @@ user, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.ht
 <div class="refsect1">
 <a name="NMRemoteConnection.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
+<a name="NMRemoteConnection--filename"></a><h3>The <code class="literal">“filename”</code> property</h3>
+<pre class="programlisting">  “filename”                 <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>File that stores the connection in case the connection is
+file-backed.</p>
+<p>Flags: Read</p>
+<p>Default value: NULL</p>
+<p class="since">Since: 1.12</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NMRemoteConnection--flags"></a><h3>The <code class="literal">“flags”</code> property</h3>
 <pre class="programlisting">  “flags”                    <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
 <p>The flags of the connection as unsigned integer. The values
diff --git a/docs/libnm/html/NMSettingConnection.html b/docs/libnm/html/NMSettingConnection.html
index 1e17821f..6534ddb7 100644
--- a/docs/libnm/html/NMSettingConnection.html
+++ b/docs/libnm/html/NMSettingConnection.html
@@ -2031,7 +2031,8 @@ deterministically depending on the context.</p>
 with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the
 generated cloned MAC address for ethernet.cloned-mac-address=stable
 and wifi.cloned-mac-address=stable. It is also used as DHCP client
-identifier with ipv4.dhcp-client-id=stable.</p>
+identifier with ipv4.dhcp-client-id=stable and to derive the DHCP
+DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid].</p>
 <p>Note that depending on the context where it is used, other parameters are
 also seeded into the generation algorithm. For example, a per-host key
 is commonly also included, so that different systems end up generating
diff --git a/docs/libnm/html/NMSettingIP6Config.html b/docs/libnm/html/NMSettingIP6Config.html
index b3c2df61..eda2b9ff 100644
--- a/docs/libnm/html/NMSettingIP6Config.html
+++ b/docs/libnm/html/NMSettingIP6Config.html
@@ -72,6 +72,13 @@
 <a class="link" href="NMSettingIP6Config.html#nm-setting-ip6-config-get-token" title="nm_setting_ip6_config_get_token ()">nm_setting_ip6_config_get_token</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="function_type">const <span class="returnvalue">char</span> *
+</td>
+<td class="function_name">
+<a class="link" href="NMSettingIP6Config.html#nm-setting-ip6-config-get-dhcp-duid" title="nm_setting_ip6_config_get_dhcp_duid ()">nm_setting_ip6_config_get_dhcp_duid</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -90,6 +97,12 @@
 <td class="property_flags">Read / Write / Construct</td>
 </tr>
 <tr>
+<td class="property_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="NMSettingIP6Config.html#NMSettingIP6Config--dhcp-duid" title="The “dhcp-duid” property">dhcp-duid</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type"><a class="link" href="NMSettingIP6Config.html#NMSettingIP6ConfigPrivacy" title="enum NMSettingIP6ConfigPrivacy"><span class="type">NMSettingIP6ConfigPrivacy</span></a></td>
 <td class="property_name"><a class="link" href="NMSettingIP6Config.html#NMSettingIP6Config--ip6-privacy" title="The “ip6-privacy” property">ip6-privacy</a></td>
 <td class="property_flags">Read / Write / Construct</td>
@@ -129,6 +142,10 @@
 </tr>
 <tr>
 <td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="NMSettingIP6Config.html#NM-SETTING-IP6-CONFIG-DHCP-DUID:CAPS" title="NM_SETTING_IP6_CONFIG_DHCP_DUID">NM_SETTING_IP6_CONFIG_DHCP_DUID</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
 <td class="function_name"><a class="link" href="NMSettingIP6Config.html#NM-SETTING-IP6-CONFIG-METHOD-IGNORE:CAPS" title="NM_SETTING_IP6_CONFIG_METHOD_IGNORE">NM_SETTING_IP6_CONFIG_METHOD_IGNORE</a></td>
 </tr>
 <tr>
@@ -291,6 +308,35 @@ property.</p>
 </div>
 <p class="since">Since: 1.4</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-ip6-config-get-dhcp-duid"></a><h3>nm_setting_ip6_config_get_dhcp_duid ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> *
+nm_setting_ip6_config_get_dhcp_duid (<em class="parameter"><code><a class="link" href="NMSettingIP6Config.html" title="NMSettingIP6Config"><span class="type">NMSettingIP6Config</span></a> *setting</code></em>);</pre>
+<p>Returns the value contained in the <a class="link" href="NMSettingIP6Config.html#NMSettingIP6Config--dhcp-duid" title="The “dhcp-duid” property"><span class="type">“dhcp-duid”</span></a>
+property.</p>
+<div class="refsect3">
+<a name="nm-setting-ip6-config-get-dhcp-duid.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>setting</p></td>
+<td class="parameter_description"><p>the <a class="link" href="NMSettingIP6Config.html" title="NMSettingIP6Config"><span class="type">NMSettingIP6Config</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="nm-setting-ip6-config-get-dhcp-duid.returns"></a><h4>Returns</h4>
+<p> The configured DUID value to be included in the DHCPv6 requests
+sent to the DHCPv6 servers.</p>
+</div>
+<p class="since">Since: 1.12</p>
+</div>
 </div>
 <div class="refsect1">
 <a name="NMSettingIP6Config.other_details"></a><h2>Types and Values</h2>
@@ -319,6 +365,12 @@ property.</p>
 </div>
 <hr>
 <div class="refsect2">
+<a name="NM-SETTING-IP6-CONFIG-DHCP-DUID:CAPS"></a><h3>NM_SETTING_IP6_CONFIG_DHCP_DUID</h3>
+<pre class="programlisting">#define NM_SETTING_IP6_CONFIG_DHCP_DUID "dhcp-duid"
+</pre>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-SETTING-IP6-CONFIG-METHOD-IGNORE:CAPS"></a><h3>NM_SETTING_IP6_CONFIG_METHOD_IGNORE</h3>
 <pre class="programlisting">#define NM_SETTING_IP6_CONFIG_METHOD_IGNORE     "ignore"
 </pre>
@@ -496,6 +548,38 @@ temporary addresses configured with this option.</p>
 </div>
 <hr>
 <div class="refsect2">
+<a name="NMSettingIP6Config--dhcp-duid"></a><h3>The <code class="literal">“dhcp-duid”</code> property</h3>
+<pre class="programlisting">  “dhcp-duid”                <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp
+client to identify itself to DHCPv6 servers (RFC 3315). The DUID is carried
+in the Client Identifier option.
+If the property is a hex string ('aa:bb:cc') it is interpreted as a binary
+DUID and filled as an opaque value in the Client Identifier option.</p>
+<p>The special value "lease" will retrieve the DUID previously used from the
+lease file belonging to the connection. If no DUID is found and "dhclient"
+is the configured dhcp client, the DUID is searched in the system-wide
+dhclient lease file. If still no DUID is found, or another dhcp client is
+used, a global and permanent DUID-UUID (RFC 6355) will be generated based
+on the machine-id.</p>
+<p>The special values "llt" and "ll" will generate a DUID of type LLT or LL
+(see RFC 3315) based on the current MAC address of the device. In order to
+try providing a stable DUID-LLT, the time field will contain a constant
+timestamp that is used globally (for all profiles) and persisted to disk.</p>
+<p>The special values "stable-llt", "stable-ll" and "stable-uuid" will generate
+a DUID of the corresponding type, derived from the connection's stable-id and
+a per-host unique key.
+So, the link-layer address of "stable-ll" and "stable-llt" will be a generated
+address derived from the stable id. The DUID-LLT time value in the "stable-llt"
+option will be picked among a static timespan of three years (the upper bound
+of the interval is the same constant timestamp used in "llt").</p>
+<p>When the property is unset, the global value provided for "ipv6.dhcp-duid" is
+used. If no global value is provided, the default "lease" value is assumed.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: NULL</p>
+<p class="since">Since: 1.12</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NMSettingIP6Config--ip6-privacy"></a><h3>The <code class="literal">“ip6-privacy”</code> property</h3>
 <pre class="programlisting">  “ip6-privacy”              <a class="link" href="NMSettingIP6Config.html#NMSettingIP6ConfigPrivacy" title="enum NMSettingIP6ConfigPrivacy"><span class="type">NMSettingIP6ConfigPrivacy</span></a></pre>
 <p>Configure IPv6 Privacy Extensions for SLAAC, described in RFC4941.  If
diff --git a/docs/libnm/html/NMSettingMacsec.html b/docs/libnm/html/NMSettingMacsec.html
index 0bb79715..3b361242 100644
--- a/docs/libnm/html/NMSettingMacsec.html
+++ b/docs/libnm/html/NMSettingMacsec.html
@@ -110,6 +110,14 @@
 <a class="link" href="NMSettingMacsec.html#nm-setting-macsec-get-validation" title="nm_setting_macsec_get_validation ()">nm_setting_macsec_get_validation</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="NMSettingMacsec.html#nm-setting-macsec-get-send-sci" title="nm_setting_macsec_get_send_sci ()">nm_setting_macsec_get_send_sci</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -161,6 +169,11 @@
 <td class="property_flags">Read / Write / Construct</td>
 </tr>
 <tr>
+<td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="NMSettingMacsec.html#NMSettingMacsec--send-sci" title="The “send-sci” property">send-sci</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
 <td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
 <td class="property_name"><a class="link" href="NMSettingMacsec.html#NMSettingMacsec--validation" title="The “validation” property">validation</a></td>
 <td class="property_flags">Read / Write / Construct</td>
@@ -213,6 +226,10 @@
 <td class="function_name"><a class="link" href="NMSettingMacsec.html#NM-SETTING-MACSEC-VALIDATION:CAPS" title="NM_SETTING_MACSEC_VALIDATION">NM_SETTING_MACSEC_VALIDATION</a></td>
 </tr>
 <tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="NMSettingMacsec.html#NM-SETTING-MACSEC-SEND-SCI:CAPS" title="NM_SETTING_MACSEC_SEND_SCI">NM_SETTING_MACSEC_SEND_SCI</a></td>
+</tr>
+<tr>
 <td class="datatype_keyword"> </td>
 <td class="function_name"><a class="link" href="NMSettingMacsec.html#NMSettingMacsec-struct" title="NMSettingMacsec">NMSettingMacsec</a></td>
 </tr>
@@ -472,6 +489,32 @@ nm_setting_macsec_get_validation (<em class="parameter"><code><a class="link" hr
 </div>
 <p class="since">Since: 1.6</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-macsec-get-send-sci"></a><h3>nm_setting_macsec_get_send_sci ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+nm_setting_macsec_get_send_sci (<em class="parameter"><code><a class="link" href="NMSettingMacsec.html" title="NMSettingMacsec"><span class="type">NMSettingMacsec</span></a> *setting</code></em>);</pre>
+<div class="refsect3">
+<a name="nm-setting-macsec-get-send-sci.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>setting</p></td>
+<td class="parameter_description"><p>the <a class="link" href="NMSettingMacsec.html" title="NMSettingMacsec"><span class="type">NMSettingMacsec</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="nm-setting-macsec-get-send-sci.returns"></a><h4>Returns</h4>
+<p> the <a class="link" href="NMSettingMacsec.html#NMSettingMacsec--send-sci" title="The “send-sci” property"><span class="type">“send-sci”</span></a> property of the setting</p>
+</div>
+<p class="since">Since: 1.12</p>
+</div>
 </div>
 <div class="refsect1">
 <a name="NMSettingMacsec.other_details"></a><h2>Types and Values</h2>
@@ -530,6 +573,12 @@ nm_setting_macsec_get_validation (<em class="parameter"><code><a class="link" hr
 </div>
 <hr>
 <div class="refsect2">
+<a name="NM-SETTING-MACSEC-SEND-SCI:CAPS"></a><h3>NM_SETTING_MACSEC_SEND_SCI</h3>
+<pre class="programlisting">#define NM_SETTING_MACSEC_SEND_SCI             "send-sci"
+</pre>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NMSettingMacsec-struct"></a><h3>NMSettingMacsec</h3>
 <pre class="programlisting">typedef struct _NMSettingMacsec NMSettingMacsec;</pre>
 <p>MACSec Settings</p>
@@ -695,6 +744,16 @@ with a <a class="link" href="NMSettingWired.html#NMSettingWired--mac-address" ti
 </div>
 <hr>
 <div class="refsect2">
+<a name="NMSettingMacsec--send-sci"></a><h3>The <code class="literal">“send-sci”</code> property</h3>
+<pre class="programlisting">  “send-sci”                 <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Specifies whether the SCI (Secure Channel Identifier) is included
+in every packet.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: TRUE</p>
+<p class="since">Since: 1.12</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NMSettingMacsec--validation"></a><h3>The <code class="literal">“validation”</code> property</h3>
 <pre class="programlisting">  “validation”               <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
 <p>Specifies the validation mode for incoming frames.</p>
diff --git a/docs/libnm/html/NMSettingTeam.html b/docs/libnm/html/NMSettingTeam.html
index be971c64..8f8ae2c4 100644
--- a/docs/libnm/html/NMSettingTeam.html
+++ b/docs/libnm/html/NMSettingTeam.html
@@ -2272,7 +2272,7 @@ arp_ping: all the ones in nsna_ping and 'source-host', 'validate-active',
 <pre class="programlisting">  “runner”                   <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
 <p>Corresponds to the teamd runner.name.
 Permitted values are: "roundrobin", "broadcast", "activebackup",
-"loadbalance", "lacp".
+"loadbalance", "lacp", "random".
 When setting the runner, all the properties specific to the runner
 will be reset to the default value; all the properties specific to
 other runners will be set to an empty value (or if not possible to
diff --git a/docs/libnm/html/NMSettingWired.html b/docs/libnm/html/NMSettingWired.html
index 1b93fc34..06b7728b 100644
--- a/docs/libnm/html/NMSettingWired.html
+++ b/docs/libnm/html/NMSettingWired.html
@@ -1411,9 +1411,14 @@ are supported by all devices.</p>
 <div class="refsect2">
 <a name="NMSettingWired--auto-negotiate"></a><h3>The <code class="literal">“auto-negotiate”</code> property</h3>
 <pre class="programlisting">  “auto-negotiate”           <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>If <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, enforce auto-negotiation of port speed and duplex mode.  If
-<a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>, "speed" and "duplex" properties should be both set or link configuration
-will be skipped.</p>
+<p>When <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, enforce auto-negotiation of speed and duplex mode.
+If "speed" and "duplex" properties are both specified, only that
+single mode will be advertised and accepted during the link
+auto-negotiation process: this works only for BASE-T 802.3 specifications
+and is useful for enforcing gigabits modes, as in these cases link
+negotiation is mandatory.
+When <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>, "speed" and "duplex" properties should be both set or
+link configuration will be skipped.</p>
 <p>Flags: Read / Write / Construct</p>
 <p>Default value: FALSE</p>
 </div>
@@ -1443,8 +1448,16 @@ of NetworkManager.conf. If still unspecified, it defaults to "preserve"
 <div class="refsect2">
 <a name="NMSettingWired--duplex"></a><h3>The <code class="literal">“duplex”</code> property</h3>
 <pre class="programlisting">  “duplex”                   <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>Can be specified only when "auto-negotiate" is "off". In that case, statically
-configures the device to use that specified duplex mode, either "half" or "full".
+<p>When a value is set, either "half" or "full", configures the device
+to use the specified duplex mode. If "auto-negotiate" is "yes" the
+specified duplex mode will be the only one advertised during link
+negotiation: this works only for BASE-T 802.3 specifications and is
+useful for enforcing gigabits modes, as in these cases link negotiation
+is mandatory.
+If the value is unset (the default), the link configuration will be
+either skipped (if "auto-negotiate" is "no", the default) or will
+be auto-negotiated (if "auto-negotiate" is "yes") and the local device
+will advertise all the supported duplex modes.
 Must be set together with the "speed" property if specified.
 Before specifying a duplex mode be sure your device supports it.</p>
 <p>Flags: Read / Write</p>
@@ -1553,8 +1566,16 @@ period (.) character.</p>
 <div class="refsect2">
 <a name="NMSettingWired--speed"></a><h3>The <code class="literal">“speed”</code> property</h3>
 <pre class="programlisting">  “speed”                    <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>Can be set to a value greater than zero only when "auto-negotiate" is "off".
-In that case, statically configures the device to use that specified speed.
+<p>When a value grater than 0 is set, configures the device to use
+the specified speed. If "auto-negotiate" is "yes" the specified
+speed will be the only one advertised during link negotiation:
+this works only for BASE-T 802.3 specifications and is useful for
+enforcing gigabit speeds, as in this case link negotiation is
+mandatory.
+If the value is unset (0, the default), the link configuration will be
+either skipped (if "auto-negotiate" is "no", the default) or will
+be auto-negotiated (if "auto-negotiate" is "yes") and the local device
+will advertise all the supported speeds.
 In Mbit/s, ie 100 == 100Mbit/s.
 Must be set together with the "duplex" property when non-zero.
 Before specifying a speed value be sure your device supports it.</p>
diff --git a/docs/libnm/html/NMSettingWireless.html b/docs/libnm/html/NMSettingWireless.html
index 6b44078e..32ba42e3 100644
--- a/docs/libnm/html/NMSettingWireless.html
+++ b/docs/libnm/html/NMSettingWireless.html
@@ -240,6 +240,14 @@
 <a class="link" href="NMSettingWireless.html#nm-setting-wireless-ap-security-compatible" title="nm_setting_wireless_ap_security_compatible ()">nm_setting_wireless_ap_security_compatible</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="function_type">
+<a class="link" href="NMSettingWireless.html#NMSettingWirelessWakeOnWLan" title="enum NMSettingWirelessWakeOnWLan"><span class="returnvalue">NMSettingWirelessWakeOnWLan</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="NMSettingWireless.html#nm-setting-wireless-get-wake-on-wlan" title="nm_setting_wireless_get_wake_on_wlan ()">nm_setting_wireless_get_wake_on_wlan</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -339,6 +347,11 @@
 <td class="property_name"><a class="link" href="NMSettingWireless.html#NMSettingWireless--tx-power" title="The “tx-power” property">tx-power</a></td>
 <td class="property_flags">Read / Write / Construct</td>
 </tr>
+<tr>
+<td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
+<td class="property_name"><a class="link" href="NMSettingWireless.html#NMSettingWireless--wake-on-wlan" title="The “wake-on-wlan” property">wake-on-wlan</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -355,6 +368,10 @@
 <td class="function_name"><a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-SETTING-NAME:CAPS" title="NM_SETTING_WIRELESS_SETTING_NAME">NM_SETTING_WIRELESS_SETTING_NAME</a></td>
 </tr>
 <tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="NMSettingWireless.html#NMSettingWirelessWakeOnWLan" title="enum NMSettingWirelessWakeOnWLan">NMSettingWirelessWakeOnWLan</a></td>
+</tr>
+<tr>
 <td class="define_keyword">#define</td>
 <td class="function_name"><a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-SSID:CAPS" title="NM_SETTING_WIRELESS_SSID">NM_SETTING_WIRELESS_SSID</a></td>
 </tr>
@@ -420,6 +437,10 @@
 </tr>
 <tr>
 <td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN:CAPS" title="NM_SETTING_WIRELESS_WAKE_ON_WLAN">NM_SETTING_WIRELESS_WAKE_ON_WLAN</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
 <td class="function_name"><a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-MODE-ADHOC:CAPS" title="NM_SETTING_WIRELESS_MODE_ADHOC">NM_SETTING_WIRELESS_MODE_ADHOC</a></td>
 </tr>
 <tr>
@@ -445,6 +466,8 @@
 <a name="NMSettingWireless.object-hierarchy"></a><h2>Object Hierarchy</h2>
 <pre class="screen">    <a href="/usr/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
     <span class="lineart">╰──</span> NMSettingWirelessPowersave
+    <a href="/usr/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GFlags</a>
+    <span class="lineart">╰──</span> NMSettingWirelessWakeOnWLan
     <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
     <span class="lineart">╰──</span> <a class="link" href="NMSetting.html" title="NMSetting">NMSetting</a>
         <span class="lineart">╰──</span> NMSettingWireless
@@ -1207,6 +1230,33 @@ capabilities</p></td>
 security flags and mode, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if they are not.</p>
 </div>
 </div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-wireless-get-wake-on-wlan"></a><h3>nm_setting_wireless_get_wake_on_wlan ()</h3>
+<pre class="programlisting"><a class="link" href="NMSettingWireless.html#NMSettingWirelessWakeOnWLan" title="enum NMSettingWirelessWakeOnWLan"><span class="returnvalue">NMSettingWirelessWakeOnWLan</span></a>
+nm_setting_wireless_get_wake_on_wlan (<em class="parameter"><code><a class="link" href="NMSettingWireless.html" title="NMSettingWireless"><span class="type">NMSettingWireless</span></a> *setting</code></em>);</pre>
+<p>Returns the Wake-on-WLAN options enabled for the connection</p>
+<div class="refsect3">
+<a name="nm-setting-wireless-get-wake-on-wlan.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>setting</p></td>
+<td class="parameter_description"><p>the <a class="link" href="NMSettingWireless.html" title="NMSettingWireless"><span class="type">NMSettingWireless</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="nm-setting-wireless-get-wake-on-wlan.returns"></a><h4>Returns</h4>
+<p> the Wake-on-WLAN options</p>
+</div>
+<p class="since">Since: 1.12</p>
+</div>
 </div>
 <div class="refsect1">
 <a name="NMSettingWireless.other_details"></a><h2>Types and Values</h2>
@@ -1217,6 +1267,129 @@ security flags and mode, <a href="https://developer.gnome.org/glib/unstable/glib
 </div>
 <hr>
 <div class="refsect2">
+<a name="NMSettingWirelessWakeOnWLan"></a><h3>enum NMSettingWirelessWakeOnWLan</h3>
+<p>Options for <a class="link" href="NMSettingWireless.html#NMSettingWireless--wake-on-wlan" title="The “wake-on-wlan” property"><span class="type">“wake-on-wlan”</span></a>. Note that not all options
+are supported by all devices.</p>
+<div class="refsect3">
+<a name="NMSettingWirelessWakeOnWLan.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="NM-SETTING-WIRELESS-WAKE-ON-WLAN-NONE:CAPS"></a>NM_SETTING_WIRELESS_WAKE_ON_WLAN_NONE</p></td>
+<td class="enum_member_description">
+<p>Wake-on-WLAN disabled</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="NM-SETTING-WIRELESS-WAKE-ON-WLAN-ANY:CAPS"></a>NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY</p></td>
+<td class="enum_member_description">
+<p>Wake on any activity</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="NM-SETTING-WIRELESS-WAKE-ON-WLAN-DISCONNECT:CAPS"></a>NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT</p></td>
+<td class="enum_member_description">
+<p>Wake on disconnect</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="NM-SETTING-WIRELESS-WAKE-ON-WLAN-MAGIC:CAPS"></a>NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC</p></td>
+<td class="enum_member_description">
+<p>Wake on magic packet</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="NM-SETTING-WIRELESS-WAKE-ON-WLAN-GTK-REKEY-FAILURE:CAPS"></a>NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE</p></td>
+<td class="enum_member_description">
+<p>Wake on GTK rekey failure</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="NM-SETTING-WIRELESS-WAKE-ON-WLAN-EAP-IDENTITY-REQUEST:CAPS"></a>NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST</p></td>
+<td class="enum_member_description">
+<p>Wake on EAP identity request</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="NM-SETTING-WIRELESS-WAKE-ON-WLAN-4WAY-HANDSHAKE:CAPS"></a>NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE</p></td>
+<td class="enum_member_description">
+<p>Wake on 4way hanshake</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="NM-SETTING-WIRELESS-WAKE-ON-WLAN-RFKILL-RELEASE:CAPS"></a>NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE</p></td>
+<td class="enum_member_description">
+<p>Wake on rfkill release</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="NM-SETTING-WIRELESS-WAKE-ON-WLAN-TCP:CAPS"></a>NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="NM-SETTING-WIRELESS-WAKE-ON-WLAN-NUM:CAPS"></a>_NM_SETTING_WIRELESS_WAKE_ON_WLAN_NUM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="NM-SETTING-WIRELESS-WAKE-ON-WLAN-LAST:CAPS"></a>NM_SETTING_WIRELESS_WAKE_ON_WLAN_LAST</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="NM-SETTING-WIRELESS-WAKE-ON-WLAN-ALL:CAPS"></a>NM_SETTING_WIRELESS_WAKE_ON_WLAN_ALL</p></td>
+<td class="enum_member_description">
+<p>Wake on all events. This does not
+  include the exclusive flags <em class="parameter"><code>NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT</code></em>
+ or
+  <em class="parameter"><code>NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE</code></em>
+.</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="NM-SETTING-WIRELESS-WAKE-ON-WLAN-DEFAULT:CAPS"></a>NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT</p></td>
+<td class="enum_member_description">
+<p>Use the default value</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="NM-SETTING-WIRELESS-WAKE-ON-WLAN-IGNORE:CAPS"></a>NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE</p></td>
+<td class="enum_member_description">
+<p>Don't change configured settings</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="NM-SETTING-WIRELESS-WAKE-ON-WLAN-EXCLUSIVE-FLAGS:CAPS"></a>NM_SETTING_WIRELESS_WAKE_ON_WLAN_EXCLUSIVE_FLAGS</p></td>
+<td class="enum_member_description">
+<p>Mask of flags that are
+  incompatible with other flags</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.12</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-SETTING-WIRELESS-SSID:CAPS"></a><h3>NM_SETTING_WIRELESS_SSID</h3>
 <pre class="programlisting">#define NM_SETTING_WIRELESS_SSID        "ssid"
 </pre>
@@ -1313,6 +1486,12 @@ security flags and mode, <a href="https://developer.gnome.org/glib/unstable/glib
 </div>
 <hr>
 <div class="refsect2">
+<a name="NM-SETTING-WIRELESS-WAKE-ON-WLAN:CAPS"></a><h3>NM_SETTING_WIRELESS_WAKE_ON_WLAN</h3>
+<pre class="programlisting">#define NM_SETTING_WIRELESS_WAKE_ON_WLAN "wake-on-wlan"
+</pre>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-SETTING-WIRELESS-MODE-ADHOC:CAPS"></a><h3>NM_SETTING_WIRELESS_MODE_ADHOC</h3>
 <pre class="programlisting">#define NM_SETTING_WIRELESS_MODE_ADHOC  "adhoc"
 </pre>
@@ -1606,6 +1785,26 @@ devices support setting a static transmit power.</p>
 <p>Flags: Read / Write / Construct</p>
 <p>Default value: 0</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="NMSettingWireless--wake-on-wlan"></a><h3>The <code class="literal">“wake-on-wlan”</code> property</h3>
+<pre class="programlisting">  “wake-on-wlan”             <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
+<p>The <a class="link" href="NMSettingWireless.html#NMSettingWirelessWakeOnWLan" title="enum NMSettingWirelessWakeOnWLan"><span class="type">NMSettingWirelessWakeOnWLan</span></a> options to enable. Not all devices support all options.
+May be any combination of <a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-ANY:CAPS"><code class="literal">NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY</code></a>,
+<a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-DISCONNECT:CAPS"><code class="literal">NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT</code></a>,
+<a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-MAGIC:CAPS"><code class="literal">NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC</code></a>,
+<a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-GTK-REKEY-FAILURE:CAPS"><code class="literal">NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE</code></a>,
+<a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-EAP-IDENTITY-REQUEST:CAPS"><code class="literal">NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST</code></a>,
+<a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-4WAY-HANDSHAKE:CAPS"><code class="literal">NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE</code></a>,
+<a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-RFKILL-RELEASE:CAPS"><code class="literal">NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE</code></a>,
+<a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-TCP:CAPS"><code class="literal">NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP</code></a> or the special values
+<a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-DEFAULT:CAPS"><code class="literal">NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT</code></a> (to use global settings) and
+<a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-IGNORE:CAPS"><code class="literal">NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE</code></a> (to disable management of Wake-on-LAN in
+NetworkManager).</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: 1</p>
+<p class="since">Since: 1.12</p>
+</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/libnm/html/api-index-full.html b/docs/libnm/html/api-index-full.html
index 08c0bd06..ac116835 100644
--- a/docs/libnm/html/api-index-full.html
+++ b/docs/libnm/html/api-index-full.html
@@ -2410,6 +2410,10 @@ NMDevicePpp, struct in nm-types
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDeviceWifi.html#NMDeviceWifi--last-scan" title="The “last-scan” property">NMDeviceWifi:last-scan</a>, object property in nm-types
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMDeviceWifi.html#NMDeviceWifi--mode" title="The “mode” property">NMDeviceWifi:mode</a>, object property in nm-types
 </dt>
 <dd></dd>
@@ -3534,6 +3538,10 @@ NMDevicePpp, struct in nm-types
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDeviceWifi.html#nm-device-wifi-get-last-scan" title="nm_device_wifi_get_last_scan ()">nm_device_wifi_get_last_scan</a>, function in <a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi">NMDeviceWifi</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMDeviceWifi.html#nm-device-wifi-get-mode" title="nm_device_wifi_get_mode ()">nm_device_wifi_get_mode</a>, function in <a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi">NMDeviceWifi</a>
 </dt>
 <dd></dd>
@@ -3546,6 +3554,10 @@ NMDevicePpp, struct in nm-types
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDeviceWifi.html#NM-DEVICE-WIFI-LAST-SCAN:CAPS" title="NM_DEVICE_WIFI_LAST_SCAN">NM_DEVICE_WIFI_LAST_SCAN</a>, macro in <a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi">NMDeviceWifi</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMDeviceWifi.html#NM-DEVICE-WIFI-MODE:CAPS" title="NM_DEVICE_WIFI_MODE">NM_DEVICE_WIFI_MODE</a>, macro in <a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi">NMDeviceWifi</a>
 </dt>
 <dd></dd>
@@ -4100,7 +4112,7 @@ json_object_iter_key, macro in nm-json
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/json-glib/json-glib-JSON-Object.html#json-object-iter-next">json_object_iter_next</a>, macro in nm-json
+json_object_iter_next, macro in nm-json
 </dt>
 <dd></dd>
 <dt>
@@ -4288,6 +4300,10 @@ json_true, macro in nm-json
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMRemoteConnection.html#NMRemoteConnection--filename" title="The “filename” property">NMRemoteConnection:filename</a>, object property in nm-types
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMRemoteConnection.html#NMRemoteConnection--flags" title="The “flags” property">NMRemoteConnection:flags</a>, object property in nm-types
 </dt>
 <dd></dd>
@@ -4328,10 +4344,18 @@ json_true, macro in nm-json
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMRemoteConnection.html#NM-REMOTE-CONNECTION-FILENAME:CAPS" title="NM_REMOTE_CONNECTION_FILENAME">NM_REMOTE_CONNECTION_FILENAME</a>, macro in <a class="link" href="NMRemoteConnection.html" title="NMRemoteConnection">NMRemoteConnection</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMRemoteConnection.html#NM-REMOTE-CONNECTION-FLAGS:CAPS" title="NM_REMOTE_CONNECTION_FLAGS">NM_REMOTE_CONNECTION_FLAGS</a>, macro in <a class="link" href="NMRemoteConnection.html" title="NMRemoteConnection">NMRemoteConnection</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMRemoteConnection.html#nm-remote-connection-get-filename" title="nm_remote_connection_get_filename ()">nm_remote_connection_get_filename</a>, function in <a class="link" href="NMRemoteConnection.html" title="NMRemoteConnection">NMRemoteConnection</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMRemoteConnection.html#nm-remote-connection-get-flags" title="nm_remote_connection_get_flags ()">nm_remote_connection_get_flags</a>, function in <a class="link" href="NMRemoteConnection.html" title="NMRemoteConnection">NMRemoteConnection</a>
 </dt>
 <dd></dd>
@@ -5121,6 +5145,10 @@ json_true, macro in nm-json
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMSettingIP6Config.html#NMSettingIP6Config--dhcp-duid" title="The “dhcp-duid” property">NMSettingIP6Config:dhcp-duid</a>, object property in <a class="link" href="NMSettingIP6Config.html" title="NMSettingIP6Config">NMSettingIP6Config</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMSettingIP6Config.html#NMSettingIP6Config--ip6-privacy" title="The “ip6-privacy” property">NMSettingIP6Config:ip6-privacy</a>, object property in <a class="link" href="NMSettingIP6Config.html" title="NMSettingIP6Config">NMSettingIP6Config</a>
 </dt>
 <dd></dd>
@@ -5305,6 +5333,10 @@ json_true, macro in nm-json
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMSettingMacsec.html#NMSettingMacsec--send-sci" title="The “send-sci” property">NMSettingMacsec:send-sci</a>, object property in <a class="link" href="NMSettingMacsec.html" title="NMSettingMacsec">NMSettingMacsec</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMSettingMacsec.html#NMSettingMacsec--validation" title="The “validation” property">NMSettingMacsec:validation</a>, object property in <a class="link" href="NMSettingMacsec.html" title="NMSettingMacsec">NMSettingMacsec</a>
 </dt>
 <dd></dd>
@@ -6017,6 +6049,10 @@ NMSettingUser:data, object property in nm-core-types
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMSettingWireless.html#NMSettingWireless--wake-on-wlan" title="The “wake-on-wlan” property">NMSettingWireless:wake-on-wlan</a>, object property in <a class="link" href="NMSettingWireless.html" title="NMSettingWireless">NMSettingWireless</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMSettingWireless.html#NMSettingWirelessPowersave" title="enum NMSettingWirelessPowersave">NMSettingWirelessPowersave</a>, enum in <a class="link" href="NMSettingWireless.html" title="NMSettingWireless">NMSettingWireless</a>
 </dt>
 <dd></dd>
@@ -6117,6 +6153,10 @@ NMSettingUser:data, object property in nm-core-types
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMSettingWireless.html#NMSettingWirelessWakeOnWLan" title="enum NMSettingWirelessWakeOnWLan">NMSettingWirelessWakeOnWLan</a>, enum in <a class="link" href="NMSettingWireless.html" title="NMSettingWireless">NMSettingWireless</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMSetting8021x.html#nm-setting-802-1x-add-altsubject-match" title="nm_setting_802_1x_add_altsubject_match ()">nm_setting_802_1x_add_altsubject_match</a>, function in <a class="link" href="NMSetting8021x.html" title="NMSetting8021x">NMSetting8021x</a>
 </dt>
 <dd></dd>
@@ -7789,10 +7829,18 @@ NMSettingUser:data, object property in nm-core-types
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMSettingIP6Config.html#NM-SETTING-IP6-CONFIG-DHCP-DUID:CAPS" title="NM_SETTING_IP6_CONFIG_DHCP_DUID">NM_SETTING_IP6_CONFIG_DHCP_DUID</a>, macro in <a class="link" href="NMSettingIP6Config.html" title="NMSettingIP6Config">NMSettingIP6Config</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMSettingIP6Config.html#nm-setting-ip6-config-get-addr-gen-mode" title="nm_setting_ip6_config_get_addr_gen_mode ()">nm_setting_ip6_config_get_addr_gen_mode</a>, function in <a class="link" href="NMSettingIP6Config.html" title="NMSettingIP6Config">NMSettingIP6Config</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMSettingIP6Config.html#nm-setting-ip6-config-get-dhcp-duid" title="nm_setting_ip6_config_get_dhcp_duid ()">nm_setting_ip6_config_get_dhcp_duid</a>, function in <a class="link" href="NMSettingIP6Config.html" title="NMSettingIP6Config">NMSettingIP6Config</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMSettingIP6Config.html#nm-setting-ip6-config-get-ip6-privacy" title="nm_setting_ip6_config_get_ip6_privacy ()">nm_setting_ip6_config_get_ip6_privacy</a>, function in <a class="link" href="NMSettingIP6Config.html" title="NMSettingIP6Config">NMSettingIP6Config</a>
 </dt>
 <dd></dd>
@@ -8245,6 +8293,10 @@ NMSettingUser:data, object property in nm-core-types
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMSettingMacsec.html#nm-setting-macsec-get-send-sci" title="nm_setting_macsec_get_send_sci ()">nm_setting_macsec_get_send_sci</a>, function in <a class="link" href="NMSettingMacsec.html" title="NMSettingMacsec">NMSettingMacsec</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMSettingMacsec.html#nm-setting-macsec-get-validation" title="nm_setting_macsec_get_validation ()">nm_setting_macsec_get_validation</a>, function in <a class="link" href="NMSettingMacsec.html" title="NMSettingMacsec">NMSettingMacsec</a>
 </dt>
 <dd></dd>
@@ -8285,6 +8337,10 @@ NMSettingUser:data, object property in nm-core-types
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMSettingMacsec.html#NM-SETTING-MACSEC-SEND-SCI:CAPS" title="NM_SETTING_MACSEC_SEND_SCI">NM_SETTING_MACSEC_SEND_SCI</a>, macro in <a class="link" href="NMSettingMacsec.html" title="NMSettingMacsec">NMSettingMacsec</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMSettingMacsec.html#NM-SETTING-MACSEC-SETTING-NAME:CAPS" title="NM_SETTING_MACSEC_SETTING_NAME">NM_SETTING_MACSEC_SETTING_NAME</a>, macro in <a class="link" href="NMSettingMacsec.html" title="NMSettingMacsec">NMSettingMacsec</a>
 </dt>
 <dd></dd>
@@ -9917,6 +9973,10 @@ nm_setting_user_set_data, function in nm-setting-user
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMSettingWireless.html#nm-setting-wireless-get-wake-on-wlan" title="nm_setting_wireless_get_wake_on_wlan ()">nm_setting_wireless_get_wake_on_wlan</a>, function in <a class="link" href="NMSettingWireless.html" title="NMSettingWireless">NMSettingWireless</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-HIDDEN:CAPS" title="NM_SETTING_WIRELESS_HIDDEN">NM_SETTING_WIRELESS_HIDDEN</a>, macro in <a class="link" href="NMSettingWireless.html" title="NMSettingWireless">NMSettingWireless</a>
 </dt>
 <dd></dd>
@@ -10209,6 +10269,10 @@ nm_setting_user_set_data, function in nm-setting-user
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN:CAPS" title="NM_SETTING_WIRELESS_WAKE_ON_WLAN">NM_SETTING_WIRELESS_WAKE_ON_WLAN</a>, macro in <a class="link" href="NMSettingWireless.html" title="NMSettingWireless">NMSettingWireless</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMSimpleConnection.html#NMSimpleConnection-struct" title="NMSimpleConnection">NMSimpleConnection</a>, struct in <a class="link" href="NMSimpleConnection.html" title="NMSimpleConnection">NMSimpleConnection</a>
 </dt>
 <dd></dd>
@@ -10507,6 +10571,10 @@ nm_utils_fixup_vendor_string, function in nm-libnm-utils
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="libnm-nm-utils.html#nm-utils-get-timestamp-msec" title="nm_utils_get_timestamp_msec ()">nm_utils_get_timestamp_msec</a>, function in <a class="link" href="libnm-nm-utils.html" title="nm-utils">nm-utils</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="libnm-nm-utils.html#nm-utils-hexstr2bin" title="nm_utils_hexstr2bin ()">nm_utils_hexstr2bin</a>, function in <a class="link" href="libnm-nm-utils.html" title="nm-utils">nm-utils</a>
 </dt>
 <dd></dd>
diff --git a/docs/libnm/html/index.html b/docs/libnm/html/index.html
index cc39302a..15c305e6 100644
--- a/docs/libnm/html/index.html
+++ b/docs/libnm/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libnm Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for libnm 1.11.4
+      for libnm 1.11.90
 
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="https://developer.gnome.org/libnm/stable/" target="_top">https://developer.gnome.org/libnm/stable/</a>.
diff --git a/docs/libnm/html/libnm-nm-utils.html b/docs/libnm/html/libnm-nm-utils.html
index 95c8c832..82ee975d 100644
--- a/docs/libnm/html/libnm-nm-utils.html
+++ b/docs/libnm/html/libnm-nm-utils.html
@@ -607,6 +607,14 @@
 <a class="link" href="libnm-nm-utils.html#nm-utils-tc-tfilter-to-str" title="nm_utils_tc_tfilter_to_str ()">nm_utils_tc_tfilter_to_str</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="function_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="libnm-nm-utils.html#nm-utils-get-timestamp-msec" title="nm_utils_get_timestamp_msec ()">nm_utils_get_timestamp_msec</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -3247,6 +3255,12 @@ discipline.</p>
 </div>
 <p class="since">Since: 1.12</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="nm-utils-get-timestamp-msec"></a><h3>nm_utils_get_timestamp_msec ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a>
+nm_utils_get_timestamp_msec (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
 </div>
 <div class="refsect1">
 <a name="libnm-nm-utils.other_details"></a><h2>Types and Values</h2>
diff --git a/docs/libnm/html/libnm.devhelp2 b/docs/libnm/html/libnm.devhelp2
index 8ae5853d..11ed6a2f 100644
--- a/docs/libnm/html/libnm.devhelp2
+++ b/docs/libnm/html/libnm.devhelp2
@@ -1043,10 +1043,12 @@
     <keyword type="function" name="nm_setting_ip6_config_get_ip6_privacy ()" link="NMSettingIP6Config.html#nm-setting-ip6-config-get-ip6-privacy"/>
     <keyword type="function" name="nm_setting_ip6_config_get_addr_gen_mode ()" link="NMSettingIP6Config.html#nm-setting-ip6-config-get-addr-gen-mode" since="1.2"/>
     <keyword type="function" name="nm_setting_ip6_config_get_token ()" link="NMSettingIP6Config.html#nm-setting-ip6-config-get-token" since="1.4"/>
+    <keyword type="function" name="nm_setting_ip6_config_get_dhcp_duid ()" link="NMSettingIP6Config.html#nm-setting-ip6-config-get-dhcp-duid" since="1.12"/>
     <keyword type="macro" name="NM_SETTING_IP6_CONFIG_SETTING_NAME" link="NMSettingIP6Config.html#NM-SETTING-IP6-CONFIG-SETTING-NAME:CAPS"/>
     <keyword type="macro" name="NM_SETTING_IP6_CONFIG_IP6_PRIVACY" link="NMSettingIP6Config.html#NM-SETTING-IP6-CONFIG-IP6-PRIVACY:CAPS"/>
     <keyword type="macro" name="NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE" link="NMSettingIP6Config.html#NM-SETTING-IP6-CONFIG-ADDR-GEN-MODE:CAPS"/>
     <keyword type="macro" name="NM_SETTING_IP6_CONFIG_TOKEN" link="NMSettingIP6Config.html#NM-SETTING-IP6-CONFIG-TOKEN:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_IP6_CONFIG_DHCP_DUID" link="NMSettingIP6Config.html#NM-SETTING-IP6-CONFIG-DHCP-DUID:CAPS"/>
     <keyword type="macro" name="NM_SETTING_IP6_CONFIG_METHOD_IGNORE" link="NMSettingIP6Config.html#NM-SETTING-IP6-CONFIG-METHOD-IGNORE:CAPS"/>
     <keyword type="macro" name="NM_SETTING_IP6_CONFIG_METHOD_AUTO" link="NMSettingIP6Config.html#NM-SETTING-IP6-CONFIG-METHOD-AUTO:CAPS"/>
     <keyword type="macro" name="NM_SETTING_IP6_CONFIG_METHOD_DHCP" link="NMSettingIP6Config.html#NM-SETTING-IP6-CONFIG-METHOD-DHCP:CAPS"/>
@@ -1057,6 +1059,7 @@
     <keyword type="enum" name="enum NMSettingIP6ConfigAddrGenMode" link="NMSettingIP6Config.html#NMSettingIP6ConfigAddrGenMode" since="1.2"/>
     <keyword type="struct" name="NMSettingIP6Config" link="NMSettingIP6Config.html#NMSettingIP6Config-struct"/>
     <keyword type="property" name="The “addr-gen-mode” property" link="NMSettingIP6Config.html#NMSettingIP6Config--addr-gen-mode"/>
+    <keyword type="property" name="The “dhcp-duid” property" link="NMSettingIP6Config.html#NMSettingIP6Config--dhcp-duid"/>
     <keyword type="property" name="The “ip6-privacy” property" link="NMSettingIP6Config.html#NMSettingIP6Config--ip6-privacy"/>
     <keyword type="property" name="The “token” property" link="NMSettingIP6Config.html#NMSettingIP6Config--token"/>
     <keyword type="function" name="nm_ip_address_new ()" link="NMSettingIPConfig.html#nm-ip-address-new"/>
@@ -1266,6 +1269,7 @@
     <keyword type="function" name="nm_setting_macsec_get_mka_ckn ()" link="NMSettingMacsec.html#nm-setting-macsec-get-mka-ckn" since="1.6"/>
     <keyword type="function" name="nm_setting_macsec_get_port ()" link="NMSettingMacsec.html#nm-setting-macsec-get-port" since="1.6"/>
     <keyword type="function" name="nm_setting_macsec_get_validation ()" link="NMSettingMacsec.html#nm-setting-macsec-get-validation" since="1.6"/>
+    <keyword type="function" name="nm_setting_macsec_get_send_sci ()" link="NMSettingMacsec.html#nm-setting-macsec-get-send-sci" since="1.12"/>
     <keyword type="macro" name="NM_SETTING_MACSEC_SETTING_NAME" link="NMSettingMacsec.html#NM-SETTING-MACSEC-SETTING-NAME:CAPS"/>
     <keyword type="macro" name="NM_SETTING_MACSEC_PARENT" link="NMSettingMacsec.html#NM-SETTING-MACSEC-PARENT:CAPS"/>
     <keyword type="macro" name="NM_SETTING_MACSEC_MODE" link="NMSettingMacsec.html#NM-SETTING-MACSEC-MODE:CAPS"/>
@@ -1275,6 +1279,7 @@
     <keyword type="macro" name="NM_SETTING_MACSEC_MKA_CKN" link="NMSettingMacsec.html#NM-SETTING-MACSEC-MKA-CKN:CAPS"/>
     <keyword type="macro" name="NM_SETTING_MACSEC_PORT" link="NMSettingMacsec.html#NM-SETTING-MACSEC-PORT:CAPS"/>
     <keyword type="macro" name="NM_SETTING_MACSEC_VALIDATION" link="NMSettingMacsec.html#NM-SETTING-MACSEC-VALIDATION:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_MACSEC_SEND_SCI" link="NMSettingMacsec.html#NM-SETTING-MACSEC-SEND-SCI:CAPS"/>
     <keyword type="struct" name="NMSettingMacsec" link="NMSettingMacsec.html#NMSettingMacsec-struct"/>
     <keyword type="enum" name="enum NMSettingMacsecMode" link="NMSettingMacsec.html#NMSettingMacsecMode" since="1.6"/>
     <keyword type="enum" name="enum NMSettingMacsecValidation" link="NMSettingMacsec.html#NMSettingMacsecValidation" since="1.6"/>
@@ -1287,6 +1292,7 @@
     <keyword type="property" name="The “mode” property" link="NMSettingMacsec.html#NMSettingMacsec--mode"/>
     <keyword type="property" name="The “parent” property" link="NMSettingMacsec.html#NMSettingMacsec--parent"/>
     <keyword type="property" name="The “port” property" link="NMSettingMacsec.html#NMSettingMacsec--port"/>
+    <keyword type="property" name="The “send-sci” property" link="NMSettingMacsec.html#NMSettingMacsec--send-sci"/>
     <keyword type="property" name="The “validation” property" link="NMSettingMacsec.html#NMSettingMacsec--validation"/>
     <keyword type="function" name="nm_setting_macvlan_new ()" link="NMSettingMacvlan.html#nm-setting-macvlan-new" since="1.2"/>
     <keyword type="function" name="nm_setting_macvlan_get_parent ()" link="NMSettingMacvlan.html#nm-setting-macvlan-get-parent" since="1.2"/>
@@ -1766,7 +1772,9 @@
     <keyword type="function" name="nm_setting_wireless_get_num_seen_bssids ()" link="NMSettingWireless.html#nm-setting-wireless-get-num-seen-bssids"/>
     <keyword type="function" name="nm_setting_wireless_get_seen_bssid ()" link="NMSettingWireless.html#nm-setting-wireless-get-seen-bssid"/>
     <keyword type="function" name="nm_setting_wireless_ap_security_compatible ()" link="NMSettingWireless.html#nm-setting-wireless-ap-security-compatible"/>
+    <keyword type="function" name="nm_setting_wireless_get_wake_on_wlan ()" link="NMSettingWireless.html#nm-setting-wireless-get-wake-on-wlan" since="1.12"/>
     <keyword type="macro" name="NM_SETTING_WIRELESS_SETTING_NAME" link="NMSettingWireless.html#NM-SETTING-WIRELESS-SETTING-NAME:CAPS"/>
+    <keyword type="enum" name="enum NMSettingWirelessWakeOnWLan" link="NMSettingWireless.html#NMSettingWirelessWakeOnWLan" since="1.12"/>
     <keyword type="macro" name="NM_SETTING_WIRELESS_SSID" link="NMSettingWireless.html#NM-SETTING-WIRELESS-SSID:CAPS"/>
     <keyword type="macro" name="NM_SETTING_WIRELESS_MODE" link="NMSettingWireless.html#NM-SETTING-WIRELESS-MODE:CAPS"/>
     <keyword type="macro" name="NM_SETTING_WIRELESS_BAND" link="NMSettingWireless.html#NM-SETTING-WIRELESS-BAND:CAPS"/>
@@ -1783,6 +1791,7 @@
     <keyword type="macro" name="NM_SETTING_WIRELESS_HIDDEN" link="NMSettingWireless.html#NM-SETTING-WIRELESS-HIDDEN:CAPS"/>
     <keyword type="macro" name="NM_SETTING_WIRELESS_POWERSAVE" link="NMSettingWireless.html#NM-SETTING-WIRELESS-POWERSAVE:CAPS"/>
     <keyword type="macro" name="NM_SETTING_WIRELESS_MAC_ADDRESS_RANDOMIZATION" link="NMSettingWireless.html#NM-SETTING-WIRELESS-MAC-ADDRESS-RANDOMIZATION:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_WIRELESS_WAKE_ON_WLAN" link="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN:CAPS"/>
     <keyword type="macro" name="NM_SETTING_WIRELESS_MODE_ADHOC" link="NMSettingWireless.html#NM-SETTING-WIRELESS-MODE-ADHOC:CAPS"/>
     <keyword type="macro" name="NM_SETTING_WIRELESS_MODE_AP" link="NMSettingWireless.html#NM-SETTING-WIRELESS-MODE-AP:CAPS"/>
     <keyword type="macro" name="NM_SETTING_WIRELESS_MODE_INFRA" link="NMSettingWireless.html#NM-SETTING-WIRELESS-MODE-INFRA:CAPS"/>
@@ -1804,6 +1813,7 @@
     <keyword type="property" name="The “seen-bssids” property" link="NMSettingWireless.html#NMSettingWireless--seen-bssids"/>
     <keyword type="property" name="The “ssid” property" link="NMSettingWireless.html#NMSettingWireless--ssid"/>
     <keyword type="property" name="The “tx-power” property" link="NMSettingWireless.html#NMSettingWireless--tx-power"/>
+    <keyword type="property" name="The “wake-on-wlan” property" link="NMSettingWireless.html#NMSettingWireless--wake-on-wlan"/>
     <keyword type="function" name="nm_setting_wireless_security_new ()" link="NMSettingWirelessSecurity.html#nm-setting-wireless-security-new"/>
     <keyword type="function" name="nm_setting_wireless_security_get_key_mgmt ()" link="NMSettingWirelessSecurity.html#nm-setting-wireless-security-get-key-mgmt"/>
     <keyword type="function" name="nm_setting_wireless_security_get_num_protos ()" link="NMSettingWirelessSecurity.html#nm-setting-wireless-security-get-num-protos"/>
@@ -2288,6 +2298,7 @@
     <keyword type="function" name="nm_device_wifi_get_active_access_point ()" link="NMDeviceWifi.html#nm-device-wifi-get-active-access-point"/>
     <keyword type="function" name="nm_device_wifi_get_access_point_by_path ()" link="NMDeviceWifi.html#nm-device-wifi-get-access-point-by-path"/>
     <keyword type="function" name="nm_device_wifi_get_access_points ()" link="NMDeviceWifi.html#nm-device-wifi-get-access-points"/>
+    <keyword type="function" name="nm_device_wifi_get_last_scan ()" link="NMDeviceWifi.html#nm-device-wifi-get-last-scan" since="1.12"/>
     <keyword type="function" name="nm_device_wifi_request_scan ()" link="NMDeviceWifi.html#nm-device-wifi-request-scan"/>
     <keyword type="function" name="nm_device_wifi_request_scan_options ()" link="NMDeviceWifi.html#nm-device-wifi-request-scan-options" since="1.2"/>
     <keyword type="function" name="nm_device_wifi_request_scan_async ()" link="NMDeviceWifi.html#nm-device-wifi-request-scan-async"/>
@@ -2300,11 +2311,13 @@
     <keyword type="macro" name="NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT" link="NMDeviceWifi.html#NM-DEVICE-WIFI-ACTIVE-ACCESS-POINT:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_WIFI_CAPABILITIES" link="NMDeviceWifi.html#NM-DEVICE-WIFI-CAPABILITIES:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_WIFI_ACCESS_POINTS" link="NMDeviceWifi.html#NM-DEVICE-WIFI-ACCESS-POINTS:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_WIFI_LAST_SCAN" link="NMDeviceWifi.html#NM-DEVICE-WIFI-LAST-SCAN:CAPS"/>
     <keyword type="struct" name="NMDeviceWifi" link="NMDeviceWifi.html#NMDeviceWifi-struct"/>
     <keyword type="property" name="The “access-points” property" link="NMDeviceWifi.html#NMDeviceWifi--access-points"/>
     <keyword type="property" name="The “active-access-point” property" link="NMDeviceWifi.html#NMDeviceWifi--active-access-point"/>
     <keyword type="property" name="The “bitrate” property" link="NMDeviceWifi.html#NMDeviceWifi--bitrate"/>
     <keyword type="property" name="The “hw-address” property" link="NMDeviceWifi.html#NMDeviceWifi--hw-address"/>
+    <keyword type="property" name="The “last-scan” property" link="NMDeviceWifi.html#NMDeviceWifi--last-scan"/>
     <keyword type="property" name="The “mode” property" link="NMDeviceWifi.html#NMDeviceWifi--mode"/>
     <keyword type="property" name="The “perm-hw-address” property" link="NMDeviceWifi.html#NMDeviceWifi--perm-hw-address"/>
     <keyword type="property" name="The “wireless-capabilities” property" link="NMDeviceWifi.html#NMDeviceWifi--wireless-capabilities"/>
@@ -2413,13 +2426,16 @@
     <keyword type="function" name="nm_remote_connection_get_secrets_finish ()" link="NMRemoteConnection.html#nm-remote-connection-get-secrets-finish"/>
     <keyword type="function" name="nm_remote_connection_get_unsaved ()" link="NMRemoteConnection.html#nm-remote-connection-get-unsaved"/>
     <keyword type="function" name="nm_remote_connection_get_flags ()" link="NMRemoteConnection.html#nm-remote-connection-get-flags" since="1.12"/>
+    <keyword type="function" name="nm_remote_connection_get_filename ()" link="NMRemoteConnection.html#nm-remote-connection-get-filename" since="1.12"/>
     <keyword type="function" name="nm_remote_connection_get_visible ()" link="NMRemoteConnection.html#nm-remote-connection-get-visible"/>
     <keyword type="macro" name="NM_REMOTE_CONNECTION_DBUS_CONNECTION" link="NMRemoteConnection.html#NM-REMOTE-CONNECTION-DBUS-CONNECTION:CAPS"/>
     <keyword type="macro" name="NM_REMOTE_CONNECTION_PATH" link="NMRemoteConnection.html#NM-REMOTE-CONNECTION-PATH:CAPS"/>
     <keyword type="macro" name="NM_REMOTE_CONNECTION_UNSAVED" link="NMRemoteConnection.html#NM-REMOTE-CONNECTION-UNSAVED:CAPS"/>
     <keyword type="macro" name="NM_REMOTE_CONNECTION_FLAGS" link="NMRemoteConnection.html#NM-REMOTE-CONNECTION-FLAGS:CAPS"/>
+    <keyword type="macro" name="NM_REMOTE_CONNECTION_FILENAME" link="NMRemoteConnection.html#NM-REMOTE-CONNECTION-FILENAME:CAPS"/>
     <keyword type="macro" name="NM_REMOTE_CONNECTION_VISIBLE" link="NMRemoteConnection.html#NM-REMOTE-CONNECTION-VISIBLE:CAPS"/>
     <keyword type="struct" name="NMRemoteConnection" link="NMRemoteConnection.html#NMRemoteConnection-struct"/>
+    <keyword type="property" name="The “filename” property" link="NMRemoteConnection.html#NMRemoteConnection--filename"/>
     <keyword type="property" name="The “flags” property" link="NMRemoteConnection.html#NMRemoteConnection--flags"/>
     <keyword type="property" name="The “unsaved” property" link="NMRemoteConnection.html#NMRemoteConnection--unsaved"/>
     <keyword type="property" name="The “visible” property" link="NMRemoteConnection.html#NMRemoteConnection--visible"/>
@@ -2575,6 +2591,7 @@
     <keyword type="function" name="nm_utils_tc_action_to_str ()" link="libnm-nm-utils.html#nm-utils-tc-action-to-str" since="1.12"/>
     <keyword type="function" name="nm_utils_tc_tfilter_from_str ()" link="libnm-nm-utils.html#nm-utils-tc-tfilter-from-str" since="1.12"/>
     <keyword type="function" name="nm_utils_tc_tfilter_to_str ()" link="libnm-nm-utils.html#nm-utils-tc-tfilter-to-str" since="1.12"/>
+    <keyword type="function" name="nm_utils_get_timestamp_msec ()" link="libnm-nm-utils.html#nm-utils-get-timestamp-msec"/>
     <keyword type="enum" name="enum NMUtilsSecurityType" link="libnm-nm-utils.html#NMUtilsSecurityType"/>
     <keyword type="macro" name="NM_UTILS_HWADDR_LEN_MAX" link="libnm-nm-utils.html#NM-UTILS-HWADDR-LEN-MAX:CAPS"/>
     <keyword type="macro" name="NM_UTILS_INET_ADDRSTRLEN" link="libnm-nm-utils.html#NM-UTILS-INET-ADDRSTRLEN:CAPS"/>
@@ -3136,6 +3153,21 @@
     <keyword type="constant" name="NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT" link="NMSettingWired.html#NM-SETTING-WIRED-WAKE-ON-LAN-DEFAULT:CAPS"/>
     <keyword type="constant" name="NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE" link="NMSettingWired.html#NM-SETTING-WIRED-WAKE-ON-LAN-IGNORE:CAPS"/>
     <keyword type="constant" name="NM_SETTING_WIRED_WAKE_ON_LAN_EXCLUSIVE_FLAGS" link="NMSettingWired.html#NM-SETTING-WIRED-WAKE-ON-LAN-EXCLUSIVE-FLAGS:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_WIRELESS_WAKE_ON_WLAN_NONE" link="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-NONE:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY" link="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-ANY:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT" link="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-DISCONNECT:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC" link="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-MAGIC:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE" link="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-GTK-REKEY-FAILURE:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST" link="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-EAP-IDENTITY-REQUEST:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE" link="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-4WAY-HANDSHAKE:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE" link="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-RFKILL-RELEASE:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP" link="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-TCP:CAPS"/>
+    <keyword type="constant" name="_NM_SETTING_WIRELESS_WAKE_ON_WLAN_NUM" link="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-NUM:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_WIRELESS_WAKE_ON_WLAN_LAST" link="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-LAST:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_WIRELESS_WAKE_ON_WLAN_ALL" link="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-ALL:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT" link="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-DEFAULT:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE" link="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-IGNORE:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_WIRELESS_WAKE_ON_WLAN_EXCLUSIVE_FLAGS" link="NMSettingWireless.html#NM-SETTING-WIRELESS-WAKE-ON-WLAN-EXCLUSIVE-FLAGS:CAPS"/>
     <keyword type="constant" name="NM_SETTING_WIRELESS_POWERSAVE_DEFAULT" link="NMSettingWireless.html#NM-SETTING-WIRELESS-POWERSAVE-DEFAULT:CAPS"/>
     <keyword type="constant" name="NM_SETTING_WIRELESS_POWERSAVE_IGNORE" link="NMSettingWireless.html#NM-SETTING-WIRELESS-POWERSAVE-IGNORE:CAPS"/>
     <keyword type="constant" name="NM_SETTING_WIRELESS_POWERSAVE_DISABLE" link="NMSettingWireless.html#NM-SETTING-WIRELESS-POWERSAVE-DISABLE:CAPS"/>
diff --git a/docs/libnm/html/object-tree.html b/docs/libnm/html/object-tree.html
index 44c78ecd..7d807d47 100644
--- a/docs/libnm/html/object-tree.html
+++ b/docs/libnm/html/object-tree.html
@@ -122,6 +122,7 @@
     <span class="lineart">├──</span> <a class="link" href="NMSettingDcb.html#NMSettingDcbFlags" title="enum NMSettingDcbFlags">NMSettingDcbFlags</a>
     <span class="lineart">├──</span> <a class="link" href="NMSetting.html#NMSettingSecretFlags" title="enum NMSettingSecretFlags">NMSettingSecretFlags</a>
     <span class="lineart">├──</span> <a class="link" href="NMSettingWired.html#NMSettingWiredWakeOnLan" title="enum NMSettingWiredWakeOnLan">NMSettingWiredWakeOnLan</a>
+    <span class="lineart">├──</span> <a class="link" href="NMSettingWireless.html#NMSettingWirelessWakeOnWLan" title="enum NMSettingWirelessWakeOnWLan">NMSettingWirelessWakeOnWLan</a>
     <span class="lineart">├──</span> <a class="link" href="libnm-nm-dbus-interface.html#NMSettingsConnectionFlags" title="enum NMSettingsConnectionFlags">NMSettingsConnectionFlags</a>
     <span class="lineart">├──</span> <a class="link" href="libnm-nm-dbus-interface.html#NMSettingsUpdate2Flags" title="enum NMSettingsUpdate2Flags">NMSettingsUpdate2Flags</a>
     <span class="lineart">├──</span> <a class="link" href="NMSettingTeam.html#NMTeamLinkWatcherArpPingFlags" title="enum NMTeamLinkWatcherArpPingFlags">NMTeamLinkWatcherArpPingFlags</a>
diff --git a/docs/libnm/html/usage.html b/docs/libnm/html/usage.html
index c9f97fef..55786691 100644
--- a/docs/libnm/html/usage.html
+++ b/docs/libnm/html/usage.html
@@ -96,7 +96,7 @@
         </p>
 <pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>cc $(pkg-config --libs --cflags libnm) -o hello-nm hello-nm.c</code></strong>
   <code class="prompt">$ </code><strong class="userinput"><code>./hello-nm</code></strong>
-  NetworkManager version: 1.11.4
+  NetworkManager version: 1.11.90
 
   <code class="prompt">$ </code></pre>
 <p>
diff --git a/docs/libnm/libnm-sections.txt b/docs/libnm/libnm-sections.txt
index af7571bc..e8430933 100644
--- a/docs/libnm/libnm-sections.txt
+++ b/docs/libnm/libnm-sections.txt
@@ -387,6 +387,7 @@ NM_TYPE_SETTING_WIRELESS_POWERSAVE
 NM_TYPE_SETTING_WIRELESS_SECURITY_FILS
 NM_TYPE_SETTING_WIRELESS_SECURITY_PMF
 NM_TYPE_SETTING_WIRELESS_SECURITY_WPS_METHOD
+NM_TYPE_SETTING_WIRELESS_WAKE_ON_WLAN
 NM_TYPE_STATE
 NM_TYPE_TEAM_LINK_WATCHER_ARP_PING_FLAGS
 NM_TYPE_UTILS_SECURITY_TYPE
@@ -447,6 +448,7 @@ nm_setting_wireless_powersave_get_type
 nm_setting_wireless_security_fils_get_type
 nm_setting_wireless_security_pmf_get_type
 nm_setting_wireless_security_wps_method_get_type
+nm_setting_wireless_wake_on_wlan_get_type
 nm_settings_connection_flags_get_type
 nm_settings_error_get_type
 nm_settings_update2_flags_get_type
@@ -1181,6 +1183,7 @@ NM_DEVICE_WIFI_BITRATE
 NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT
 NM_DEVICE_WIFI_CAPABILITIES
 NM_DEVICE_WIFI_ACCESS_POINTS
+NM_DEVICE_WIFI_LAST_SCAN
 NMDeviceWifi
 nm_device_wifi_get_hw_address
 nm_device_wifi_get_permanent_hw_address
@@ -1190,6 +1193,7 @@ nm_device_wifi_get_capabilities
 nm_device_wifi_get_active_access_point
 nm_device_wifi_get_access_point_by_path
 nm_device_wifi_get_access_points
+nm_device_wifi_get_last_scan
 nm_device_wifi_request_scan
 nm_device_wifi_request_scan_options
 nm_device_wifi_request_scan_async
@@ -1382,6 +1386,7 @@ NM_REMOTE_CONNECTION_DBUS_CONNECTION
 NM_REMOTE_CONNECTION_PATH
 NM_REMOTE_CONNECTION_UNSAVED
 NM_REMOTE_CONNECTION_FLAGS
+NM_REMOTE_CONNECTION_FILENAME
 NM_REMOTE_CONNECTION_VISIBLE
 NMRemoteConnection
 nm_remote_connection_update2
@@ -1400,6 +1405,7 @@ nm_remote_connection_get_secrets_async
 nm_remote_connection_get_secrets_finish
 nm_remote_connection_get_unsaved
 nm_remote_connection_get_flags
+nm_remote_connection_get_filename
 nm_remote_connection_get_visible
 <SUBSECTION Standard>
 NMRemoteConnectionClass
@@ -2280,6 +2286,7 @@ NM_SETTING_IP6_CONFIG_SETTING_NAME
 NM_SETTING_IP6_CONFIG_IP6_PRIVACY
 NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE
 NM_SETTING_IP6_CONFIG_TOKEN
+NM_SETTING_IP6_CONFIG_DHCP_DUID
 NM_SETTING_IP6_CONFIG_METHOD_IGNORE
 NM_SETTING_IP6_CONFIG_METHOD_AUTO
 NM_SETTING_IP6_CONFIG_METHOD_DHCP
@@ -2293,6 +2300,7 @@ nm_setting_ip6_config_new
 nm_setting_ip6_config_get_ip6_privacy
 nm_setting_ip6_config_get_addr_gen_mode
 nm_setting_ip6_config_get_token
+nm_setting_ip6_config_get_dhcp_duid
 <SUBSECTION Standard>
 NMSettingIP6ConfigClass
 NM_IS_SETTING_IP6_CONFIG
@@ -2315,6 +2323,7 @@ NM_SETTING_MACSEC_MKA_CAK_FLAGS
 NM_SETTING_MACSEC_MKA_CKN
 NM_SETTING_MACSEC_PORT
 NM_SETTING_MACSEC_VALIDATION
+NM_SETTING_MACSEC_SEND_SCI
 NMSettingMacsec
 NMSettingMacsecMode
 NMSettingMacsecValidation
@@ -2329,6 +2338,7 @@ nm_setting_macsec_get_mka_cak_flags
 nm_setting_macsec_get_mka_ckn
 nm_setting_macsec_get_port
 nm_setting_macsec_get_validation
+nm_setting_macsec_get_send_sci
 <SUBSECTION Standard>
 NMSettingMacsecClass
 NM_IS_SETTING_MACSEC
@@ -3047,6 +3057,7 @@ nm_setting_wired_get_type
 <FILE>nm-setting-wireless</FILE>
 <TITLE>NMSettingWireless</TITLE>
 NM_SETTING_WIRELESS_SETTING_NAME
+NMSettingWirelessWakeOnWLan
 NM_SETTING_WIRELESS_SSID
 NM_SETTING_WIRELESS_MODE
 NM_SETTING_WIRELESS_BAND
@@ -3063,6 +3074,7 @@ NM_SETTING_WIRELESS_SEEN_BSSIDS
 NM_SETTING_WIRELESS_HIDDEN
 NM_SETTING_WIRELESS_POWERSAVE
 NM_SETTING_WIRELESS_MAC_ADDRESS_RANDOMIZATION
+NM_SETTING_WIRELESS_WAKE_ON_WLAN
 NM_SETTING_WIRELESS_MODE_ADHOC
 NM_SETTING_WIRELESS_MODE_AP
 NM_SETTING_WIRELESS_MODE_INFRA
@@ -3094,6 +3106,7 @@ nm_setting_wireless_add_seen_bssid
 nm_setting_wireless_get_num_seen_bssids
 nm_setting_wireless_get_seen_bssid
 nm_setting_wireless_ap_security_compatible
+nm_setting_wireless_get_wake_on_wlan
 <SUBSECTION Standard>
 NMSettingWirelessClass
 NM_IS_SETTING_WIRELESS
@@ -3309,6 +3322,7 @@ nm_utils_tc_action_from_str
 nm_utils_tc_action_to_str
 nm_utils_tc_tfilter_from_str
 nm_utils_tc_tfilter_to_str
+nm_utils_get_timestamp_msec
 NMVariantAttributeSpec
 stat
 </SECTION>
diff --git a/docs/libnm/libnm.types b/docs/libnm/libnm.types
index 41fa51a0..5e6f7b56 100644
--- a/docs/libnm/libnm.types
+++ b/docs/libnm/libnm.types
@@ -132,6 +132,7 @@ nm_setting_wireless_security_fils_get_type
 nm_setting_wireless_security_get_type
 nm_setting_wireless_security_pmf_get_type
 nm_setting_wireless_security_wps_method_get_type
+nm_setting_wireless_wake_on_wlan_get_type
 nm_settings_connection_flags_get_type
 nm_settings_error_get_type
 nm_settings_update2_flags_get_type
diff --git a/docs/libnm/version.xml b/docs/libnm/version.xml
index 3d0e6231..2d784e44 100644
--- a/docs/libnm/version.xml
+++ b/docs/libnm/version.xml
@@ -1 +1 @@
-1.11.4
+1.11.90
diff --git a/examples/nm-conf.d/30-anon.conf b/examples/nm-conf.d/30-anon.conf
index 28a9ae70..3e879fc2 100644
--- a/examples/nm-conf.d/30-anon.conf
+++ b/examples/nm-conf.d/30-anon.conf
@@ -1,39 +1,44 @@
 # Example configuration snippet for NetworkManager to
 # overwrite some default value for more privacy.
-# Put it for example to /etc/NetworkManager/conf.d/30-anon.conf
+# Drop this file for example to /etc/NetworkManager/conf.d/30-anon.conf
 #
 # See man NetworkManager.conf(5) for how default values
 # work. See man nm-settings(5) for the connection properties.
 #
 #
-# This enables privacy setting by default. The defaults
+# This enables some privacy setting by default. The defaults
 # apply only to settings that do not explicitly configure
 # a per-connection override.
 # That means, if the connection profile has
 #
 #   $ nmcli connection show "$CON_NAME" |
-#       grep '^\(connection.stable-id\|ipv6.addr-gen-mode\|ipv6.ip6-privacy\|802-11-wireless.cloned-mac-address\|802-11-wireless.mac-address-randomization\|802-3-ethernet.cloned-mac-address\)'
+#       grep '^\(connection.stable-id\|ipv6.addr-gen-mode\|ipv6.ip6-privacy\|802-11-wireless.cloned-mac-address\|802-11-wireless.mac-address-randomization\|802-3-ethernet.cloned-mac-address\|ipv4.dhcp-client-id\|ipv6.dhcp-duid\)'
 #   connection.stable-id:                   --
 #   802-3-ethernet.cloned-mac-address:      --
 #   802-11-wireless.cloned-mac-address:     --
 #   802-11-wireless.mac-address-randomization:default
+#   ipv4.dhcp-client-id:                    --
 #   ipv6.ip6-privacy:                       -1 (unknown)
 #   ipv6.addr-gen-mode:                     stable-privacy
+#   ipv6.dhcp-duid:                         --
 #
 # then the default values are inherited and thus both the MAC
-# address and the IPv6 host identifier are randomized.
+# address, IPv6 host identifier, and DHCP identifiers are randomized.
 # Also, ipv6 private addresses (RFC4941) are used in
 # addition.
 #
 #
+# The connection's stable-id is really a token associated with the identity
+# of the connection. It means, by setting it to different values, different
+# addresses and DHCP options are generated.
 # For some profiles it can make sense to reuse the same stable-id
-# (and thus MAC address and IPv6 host identifier) for the duration
+# (and thus share MAC address and IPv6 host identifier) for the duration
 # of the current boot, but still exclusive to the connection profile.
 # Thus, explicitly set the stable-id like:
 #
 #   $ nmcli connection modify "$CON_NAME" connection.stable-id '${CONNECTION}/${BOOT}'
 #
-# ... or keep it stable accross reboots, still distinct per profile:
+# ... or keep it stable accross reboots, but still distinct per profile:
 #
 #   $ nmcli connection modify "$CON_NAME" connection.stable-id '${CONNECTION}'
 #
@@ -53,3 +58,23 @@ connection.stable-id=${RANDOM}
 ethernet.cloned-mac-address=stable
 wifi.cloned-mac-address=stable
 ipv6.ip6-privacy=2
+
+# RFC 7844 "DHCP Anonymity Profiles" mandates in combination with
+# MAC address randomization:
+#   connection.stable-id=${RANDOM}
+#   ethernet.cloned-mac-address=stable
+#   wifi.cloned-mac-address=stable
+#   ipv4.dhcp-client-id=mac
+#   ipv6.dhcp-duid=ll
+# In case, the interface cannot use MAC address randomization,
+# RFC 7844 recomments
+#   connection.stable-id=${RANDOM}
+#   ipv4.dhcp-client-id=stable
+#   ipv6.dhcp-duid=stable-llt
+# See https://tools.ietf.org/html/rfc7844#section-3.5
+#     https://tools.ietf.org/html/rfc7844#section-4.3
+#
+# In this example however, the defaults are set to a stable identifier
+# depending on the connection.stable-id.
+ipv4.dhcp-client-id=stable
+ipv6.dhcp-duid=stable-uuid
diff --git a/introspection/org.freedesktop.NetworkManager.Device.Wireless.xml b/introspection/org.freedesktop.NetworkManager.Device.Wireless.xml
index bff89120..13038545 100644
--- a/introspection/org.freedesktop.NetworkManager.Device.Wireless.xml
+++ b/introspection/org.freedesktop.NetworkManager.Device.Wireless.xml
@@ -97,6 +97,16 @@
     <property name="WirelessCapabilities" type="u" access="read"/>
 
     <!--
+        LastScan:
+
+        The timestamp (in CLOCK_BOOTTIME milliseconds) for the last finished network scan.
+        A value of -1 means the device never scanned for access points.
+
+        Since: 1.12
+    -->
+    <property name="LastScan" type="x" access="read"/>
+
+    <!--
         PropertiesChanged:
         @properties: A dictionary containing the changed parameters.
 
diff --git a/introspection/org.freedesktop.NetworkManager.Settings.Connection.xml b/introspection/org.freedesktop.NetworkManager.Settings.Connection.xml
index 13f626c3..2cbb6c2e 100644
--- a/introspection/org.freedesktop.NetworkManager.Settings.Connection.xml
+++ b/introspection/org.freedesktop.NetworkManager.Settings.Connection.xml
@@ -171,6 +171,15 @@
     <property name="Flags" type="u" access="read"/>
 
     <!--
+        Filename:
+
+        File that stores the connection in case the connection is file-backed.
+
+        Since: 1.12
+    -->
+    <property name="Filename" type="s" access="read"/>
+
+    <!--
         PropertiesChanged:
         @properties: A dictionary mapping property names to variant boxed values.
 
diff --git a/libnm-core/nm-connection.c b/libnm-core/nm-connection.c
index 790e98b8..0c4d7ce1 100644
--- a/libnm-core/nm-connection.c
+++ b/libnm-core/nm-connection.c
@@ -791,13 +791,11 @@ _normalize_ethernet_link_neg (NMConnection *self)
 	NMSettingWired *s_wired = nm_connection_get_setting_wired (self);
 
 	if (s_wired) {
-		gboolean autoneg = nm_setting_wired_get_auto_negotiate (s_wired);
 		guint32 speed = nm_setting_wired_get_speed (s_wired);
 		const char *duplex = nm_setting_wired_get_duplex (s_wired);
 
-		if (   (autoneg && (speed || duplex))
-		    || (!autoneg && (   (speed && !duplex)
-		                     || (!speed && duplex)))) {
+		if (   (speed && !duplex)
+		    || (!speed && duplex)) {
 			speed = 0;
 			duplex = NULL;
 			g_object_set (s_wired,
diff --git a/libnm-core/nm-core-internal.h b/libnm-core/nm-core-internal.h
index cace423a..2a2045e6 100644
--- a/libnm-core/nm-core-internal.h
+++ b/libnm-core/nm-core-internal.h
@@ -508,4 +508,7 @@ _nm_connection_type_is_master (const char *type)
 
 /*****************************************************************************/
 
+gboolean _nm_utils_dhcp_duid_valid (const char *duid, GBytes **out_duid_bin);
+
+/*****************************************************************************/
 #endif
diff --git a/libnm-core/nm-setting-connection.c b/libnm-core/nm-setting-connection.c
index f8f1b017..2649838c 100644
--- a/libnm-core/nm-setting-connection.c
+++ b/libnm-core/nm-setting-connection.c
@@ -1544,7 +1544,8 @@ nm_setting_connection_class_init (NMSettingConnectionClass *setting_class)
 	 * with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the
 	 * generated cloned MAC address for ethernet.cloned-mac-address=stable
 	 * and wifi.cloned-mac-address=stable. It is also used as DHCP client
-	 * identifier with ipv4.dhcp-client-id=stable.
+	 * identifier with ipv4.dhcp-client-id=stable and to derive the DHCP
+	 * DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid].
 	 *
 	 * Note that depending on the context where it is used, other parameters are
 	 * also seeded into the generation algorithm. For example, a per-host key
diff --git a/libnm-core/nm-setting-ip6-config.c b/libnm-core/nm-setting-ip6-config.c
index 7c2b45f2..808c88a7 100644
--- a/libnm-core/nm-setting-ip6-config.c
+++ b/libnm-core/nm-setting-ip6-config.c
@@ -28,6 +28,7 @@
 
 #include "nm-setting-private.h"
 #include "nm-core-enum-types.h"
+#include "nm-core-internal.h"
 
 /**
  * SECTION:nm-setting-ip6-config
@@ -61,6 +62,7 @@ typedef struct {
 	NMSettingIP6ConfigPrivacy ip6_privacy;
 	NMSettingIP6ConfigAddrGenMode addr_gen_mode;
 	char *token;
+	char *dhcp_duid;
 } NMSettingIP6ConfigPrivate;
 
 enum {
@@ -68,6 +70,7 @@ enum {
 	PROP_IP6_PRIVACY,
 	PROP_ADDR_GEN_MODE,
 	PROP_TOKEN,
+	PROP_DHCP_DUID,
 
 	LAST_PROP
 };
@@ -141,6 +144,26 @@ nm_setting_ip6_config_get_token (NMSettingIP6Config *setting)
 	return NM_SETTING_IP6_CONFIG_GET_PRIVATE (setting)->token;
 }
 
+/**
+ * nm_setting_ip6_config_get_dhcp_duid:
+ * @setting: the #NMSettingIP6Config
+ *
+ * Returns the value contained in the #NMSettingIP6Config:dhcp-duid
+ * property.
+ *
+ * Returns: The configured DUID value to be included in the DHCPv6 requests
+ * sent to the DHCPv6 servers.
+ *
+ * Since: 1.12
+ **/
+const char *
+nm_setting_ip6_config_get_dhcp_duid (NMSettingIP6Config *setting)
+{
+	g_return_val_if_fail (NM_IS_SETTING_IP6_CONFIG (setting), NULL);
+
+	return NM_SETTING_IP6_CONFIG_GET_PRIVATE (setting)->dhcp_duid;
+}
+
 static gboolean
 verify (NMSetting *setting, NMConnection *connection, GError **error)
 {
@@ -254,6 +277,17 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
 		}
 	}
 
+	if (priv->dhcp_duid) {
+		if (!_nm_utils_dhcp_duid_valid (priv->dhcp_duid, NULL)) {
+			g_set_error_literal (error,
+			                     NM_CONNECTION_ERROR,
+			                     NM_CONNECTION_ERROR_INVALID_PROPERTY,
+			                     _("invalid DUID"));
+			g_prefix_error (error, "%s.%s: ", NM_SETTING_IP6_CONFIG_SETTING_NAME, NM_SETTING_IP6_CONFIG_DHCP_DUID);
+			return FALSE;
+		}
+	}
+
 	/* Failures from here on, are NORMALIZABLE_ERROR... */
 
 	if (token_needs_normalization) {
@@ -467,6 +501,10 @@ set_property (GObject *object, guint prop_id,
 		g_free (priv->token);
 		priv->token = g_value_dup_string (value);
 		break;
+	case PROP_DHCP_DUID:
+		g_free (priv->dhcp_duid);
+		priv->dhcp_duid = g_value_dup_string (value);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -489,6 +527,9 @@ get_property (GObject *object, guint prop_id,
 	case PROP_TOKEN:
 		g_value_set_string (value, priv->token);
 		break;
+	case PROP_DHCP_DUID:
+		g_value_set_string (value, priv->dhcp_duid);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -502,6 +543,7 @@ finalize (GObject *object)
 	NMSettingIP6ConfigPrivate *priv = NM_SETTING_IP6_CONFIG_GET_PRIVATE (self);
 
 	g_free (priv->token);
+	g_free (priv->dhcp_duid);
 
 	G_OBJECT_CLASS (nm_setting_ip6_config_parent_class)->finalize (object);
 }
@@ -790,6 +832,57 @@ nm_setting_ip6_config_class_init (NMSettingIP6ConfigClass *ip6_class)
 		                      NM_SETTING_PARAM_INFERRABLE |
 		                      G_PARAM_STATIC_STRINGS));
 
+	/**
+	 * NMSettingIP6Config:dhcp-duid:
+	 *
+	 * A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp
+	 * client to identify itself to DHCPv6 servers (RFC 3315). The DUID is carried
+	 * in the Client Identifier option.
+	 * If the property is a hex string ('aa:bb:cc') it is interpreted as a binary
+	 * DUID and filled as an opaque value in the Client Identifier option.
+	 *
+	 * The special value "lease" will retrieve the DUID previously used from the
+	 * lease file belonging to the connection. If no DUID is found and "dhclient"
+	 * is the configured dhcp client, the DUID is searched in the system-wide
+	 * dhclient lease file. If still no DUID is found, or another dhcp client is
+	 * used, a global and permanent DUID-UUID (RFC 6355) will be generated based
+	 * on the machine-id.
+	 *
+	 * The special values "llt" and "ll" will generate a DUID of type LLT or LL
+	 * (see RFC 3315) based on the current MAC address of the device. In order to
+	 * try providing a stable DUID-LLT, the time field will contain a constant
+	 * timestamp that is used globally (for all profiles) and persisted to disk.
+	 *
+	 * The special values "stable-llt", "stable-ll" and "stable-uuid" will generate
+	 * a DUID of the corresponding type, derived from the connection's stable-id and
+	 * a per-host unique key.
+	 * So, the link-layer address of "stable-ll" and "stable-llt" will be a generated
+	 * address derived from the stable id. The DUID-LLT time value in the "stable-llt"
+	 * option will be picked among a static timespan of three years (the upper bound
+	 * of the interval is the same constant timestamp used in "llt").
+	 *
+	 * When the property is unset, the global value provided for "ipv6.dhcp-duid" is
+	 * used. If no global value is provided, the default "lease" value is assumed.
+	 *
+	 * Since: 1.12
+	 **/
+	/* ---ifcfg-rh---
+	 * property: dhcp-duid
+	 * variable: DHCPV6_DUID(+)
+	 * description: A string sent to the DHCPv6 server to identify the local machine.
+	 *   Apart from the special values "lease", "stable-llt", "stable-ll", "stable-uuid",
+	 *   "llt" and "ll" a binary value in hex format is expected. An hex string where
+	 *   each octet is separated by a colon is also accepted.
+	 * example: DHCPV6_DUID=LL; DHCPV6_DUID=0301deadbeef0001; DHCPV6_DUID=03:01:de:ad:be:ef:00:01
+	 * ---end---
+	 */
+	g_object_class_install_property
+		(object_class, PROP_DHCP_DUID,
+		 g_param_spec_string (NM_SETTING_IP6_CONFIG_DHCP_DUID, "", "",
+		                      NULL,
+		                      G_PARAM_READWRITE |
+		                      G_PARAM_STATIC_STRINGS));
+
 	/* IP6-specific property overrides */
 
 	/* ---dbus---
diff --git a/libnm-core/nm-setting-ip6-config.h b/libnm-core/nm-setting-ip6-config.h
index e01a36b7..ae8ab1a2 100644
--- a/libnm-core/nm-setting-ip6-config.h
+++ b/libnm-core/nm-setting-ip6-config.h
@@ -45,6 +45,8 @@ G_BEGIN_DECLS
 
 #define NM_SETTING_IP6_CONFIG_TOKEN "token"
 
+#define NM_SETTING_IP6_CONFIG_DHCP_DUID "dhcp-duid"
+
 /**
  * NM_SETTING_IP6_CONFIG_METHOD_IGNORE:
  *
@@ -162,6 +164,8 @@ NM_AVAILABLE_IN_1_2
 NMSettingIP6ConfigAddrGenMode nm_setting_ip6_config_get_addr_gen_mode (NMSettingIP6Config *setting);
 NM_AVAILABLE_IN_1_4
 const char *nm_setting_ip6_config_get_token (NMSettingIP6Config *setting);
+NM_AVAILABLE_IN_1_12
+const char *nm_setting_ip6_config_get_dhcp_duid (NMSettingIP6Config *setting);
 
 G_END_DECLS
 
diff --git a/libnm-core/nm-setting-macsec.c b/libnm-core/nm-setting-macsec.c
index 7a8a5a34..92ebafa6 100644
--- a/libnm-core/nm-setting-macsec.c
+++ b/libnm-core/nm-setting-macsec.c
@@ -49,7 +49,8 @@ NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_MACSEC)
 typedef struct {
 	char *parent;
 	NMSettingMacsecMode mode;
-	gboolean encrypt;
+	bool encrypt:1;
+	bool send_sci:1;
 	char *mka_cak;
 	NMSettingSecretFlags mka_cak_flags;
 	char *mka_ckn;
@@ -66,6 +67,7 @@ NM_GOBJECT_PROPERTIES_DEFINE_BASE (
 	PROP_MKA_CKN,
 	PROP_PORT,
 	PROP_VALIDATION,
+	PROP_SEND_SCI,
 );
 
 /**
@@ -204,6 +206,21 @@ nm_setting_macsec_get_validation (NMSettingMacsec *setting)
 	return NM_SETTING_MACSEC_GET_PRIVATE (setting)->validation;
 }
 
+/**
+ * nm_setting_macsec_get_send_sci:
+ * @setting: the #NMSettingMacsec
+ *
+ * Returns: the #NMSettingMacsec:send-sci property of the setting
+ *
+ * Since: 1.12
+ **/
+gboolean
+nm_setting_macsec_get_send_sci (NMSettingMacsec *setting)
+{
+	g_return_val_if_fail (NM_IS_SETTING_MACSEC (setting), TRUE);
+	return NM_SETTING_MACSEC_GET_PRIVATE (setting)->send_sci;
+}
+
 static GPtrArray *
 need_secrets (NMSetting *setting)
 {
@@ -390,6 +407,9 @@ set_property (GObject *object, guint prop_id,
 	case PROP_VALIDATION:
 		priv->validation = g_value_get_int (value);
 		break;
+	case PROP_SEND_SCI:
+		priv->send_sci = g_value_get_boolean (value);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -428,6 +448,9 @@ get_property (GObject *object, guint prop_id,
 	case PROP_VALIDATION:
 		g_value_set_int (value, priv->validation);
 		break;
+	case PROP_SEND_SCI:
+		g_value_set_boolean (value, priv->send_sci);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -588,5 +611,20 @@ nm_setting_macsec_class_init (NMSettingMacsecClass *setting_class)
 	                      NM_SETTING_PARAM_INFERRABLE |
 	                      G_PARAM_STATIC_STRINGS);
 
+	/**
+	 * NMSettingMacsec:send-sci:
+	 *
+	 * Specifies whether the SCI (Secure Channel Identifier) is included
+	 * in every packet.
+	 *
+	 * Since: 1.12
+	 **/
+	obj_properties[PROP_SEND_SCI] =
+	    g_param_spec_boolean (NM_SETTING_MACSEC_SEND_SCI, "", "",
+	                          TRUE,
+	                          G_PARAM_READWRITE |
+	                          G_PARAM_CONSTRUCT |
+	                          G_PARAM_STATIC_STRINGS);
+
 	g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties);
 }
diff --git a/libnm-core/nm-setting-macsec.h b/libnm-core/nm-setting-macsec.h
index 6a524faa..0f545007 100644
--- a/libnm-core/nm-setting-macsec.h
+++ b/libnm-core/nm-setting-macsec.h
@@ -47,6 +47,7 @@ G_BEGIN_DECLS
 #define NM_SETTING_MACSEC_MKA_CKN              "mka-ckn"
 #define NM_SETTING_MACSEC_PORT                 "port"
 #define NM_SETTING_MACSEC_VALIDATION           "validation"
+#define NM_SETTING_MACSEC_SEND_SCI             "send-sci"
 
 /**
  * NMSettingMacsec:
@@ -122,6 +123,8 @@ NM_AVAILABLE_IN_1_6
 int         nm_setting_macsec_get_port           (NMSettingMacsec *setting);
 NM_AVAILABLE_IN_1_6
 NMSettingMacsecValidation nm_setting_macsec_get_validation (NMSettingMacsec *setting);
+NM_AVAILABLE_IN_1_12
+gboolean nm_setting_macsec_get_send_sci          (NMSettingMacsec *setting);
 
 G_END_DECLS
 
diff --git a/libnm-core/nm-setting-team.c b/libnm-core/nm-setting-team.c
index f49a04da..195e509c 100644
--- a/libnm-core/nm-setting-team.c
+++ b/libnm-core/nm-setting-team.c
@@ -1655,7 +1655,7 @@ nm_setting_team_class_init (NMSettingTeamClass *setting_class)
 	 *
 	 * Corresponds to the teamd runner.name.
 	 * Permitted values are: "roundrobin", "broadcast", "activebackup",
-	 * "loadbalance", "lacp".
+	 * "loadbalance", "lacp", "random".
 	 * When setting the runner, all the properties specific to the runner
 	 * will be reset to the default value; all the properties specific to
 	 * other runners will be set to an empty value (or if not possible to
diff --git a/libnm-core/nm-setting-wired.c b/libnm-core/nm-setting-wired.c
index 3ad312e5..5da9ce7d 100644
--- a/libnm-core/nm-setting-wired.c
+++ b/libnm-core/nm-setting-wired.c
@@ -762,32 +762,16 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
 	 * with legacy nm-connection-editor which used to save "full" duplex connection as default
 	 */
 
-	if (priv->auto_negotiate) {
-		if (priv->duplex) {
-			g_set_error_literal (error,
-			                     NM_CONNECTION_ERROR,
-			                     NM_CONNECTION_ERROR_INVALID_PROPERTY,
-			                     _("when link autonegotiation is enabled no duplex value is accepted"));
-			g_prefix_error (error, "%s.%s: ", NM_SETTING_WIRED_SETTING_NAME, NM_SETTING_WIRED_DUPLEX);
-			return NM_SETTING_VERIFY_NORMALIZABLE;
-		}
-		if (priv->speed) {
-			g_set_error_literal (error,
-			                     NM_CONNECTION_ERROR,
-			                     NM_CONNECTION_ERROR_INVALID_PROPERTY,
-			                     _("when link autonegotiation is enabled speed should be 0"));
-			g_prefix_error (error, "%s.%s: ", NM_SETTING_WIRED_SETTING_NAME, NM_SETTING_WIRED_SPEED);
-			return NM_SETTING_VERIFY_NORMALIZABLE;
-		}
-	} else {
-		if (   ((priv->speed) && (!priv->duplex))
-		    || ((!priv->speed) && (priv->duplex))) {
-			g_set_error_literal (error,
-			                     NM_CONNECTION_ERROR,
-			                     NM_CONNECTION_ERROR_INVALID_PROPERTY,
-			                     _("both speed and duplex are required for static link configuration"));
-			return NM_SETTING_VERIFY_NORMALIZABLE;
-		}
+	if (   ((priv->speed) && (!priv->duplex))
+	    || ((!priv->speed) && (priv->duplex))) {
+
+		g_set_error_literal (error,
+				     NM_CONNECTION_ERROR,
+				     NM_CONNECTION_ERROR_INVALID_PROPERTY,
+		                     priv->auto_negotiate ?
+		                       _("both speed and duplex should have a valid value or both should be unset")
+		                     : _("both speed and duplex are required for static link configuration"));
+		return NM_SETTING_VERIFY_NORMALIZABLE;
 	}
 
 	return TRUE;
@@ -1033,8 +1017,16 @@ nm_setting_wired_class_init (NMSettingWiredClass *setting_wired_class)
 	/**
 	 * NMSettingWired:speed:
 	 *
-	 * Can be set to a value greater than zero only when "auto-negotiate" is "off".
-	 * In that case, statically configures the device to use that specified speed.
+	 * When a value grater than 0 is set, configures the device to use
+	 * the specified speed. If "auto-negotiate" is "yes" the specified
+	 * speed will be the only one advertised during link negotiation:
+	 * this works only for BASE-T 802.3 specifications and is useful for
+	 * enforcing gigabit speeds, as in this case link negotiation is
+	 * mandatory.
+	 * If the value is unset (0, the default), the link configuration will be
+	 * either skipped (if "auto-negotiate" is "no", the default) or will
+	 * be auto-negotiated (if "auto-negotiate" is "yes") and the local device
+	 * will advertise all the supported speeds.
 	 * In Mbit/s, ie 100 == 100Mbit/s.
 	 * Must be set together with the "duplex" property when non-zero.
 	 * Before specifying a speed value be sure your device supports it.
@@ -1057,8 +1049,16 @@ nm_setting_wired_class_init (NMSettingWiredClass *setting_wired_class)
 	/**
 	 * NMSettingWired:duplex:
 	 *
-	 * Can be specified only when "auto-negotiate" is "off". In that case, statically
-	 * configures the device to use that specified duplex mode, either "half" or "full".
+	 * When a value is set, either "half" or "full", configures the device
+	 * to use the specified duplex mode. If "auto-negotiate" is "yes" the
+	 * specified duplex mode will be the only one advertised during link
+	 * negotiation: this works only for BASE-T 802.3 specifications and is
+	 * useful for enforcing gigabits modes, as in these cases link negotiation
+	 * is mandatory.
+	 * If the value is unset (the default), the link configuration will be
+	 * either skipped (if "auto-negotiate" is "no", the default) or will
+	 * be auto-negotiated (if "auto-negotiate" is "yes") and the local device
+	 * will advertise all the supported duplex modes.
 	 * Must be set together with the "speed" property if specified.
 	 * Before specifying a duplex mode be sure your device supports it.
 	 **/
@@ -1079,9 +1079,14 @@ nm_setting_wired_class_init (NMSettingWiredClass *setting_wired_class)
 	/**
 	 * NMSettingWired:auto-negotiate:
 	 *
-	 * If %TRUE, enforce auto-negotiation of port speed and duplex mode.  If
-	 * %FALSE, "speed" and "duplex" properties should be both set or link configuration
-	 * will be skipped.
+	 * When %TRUE, enforce auto-negotiation of speed and duplex mode.
+	 * If "speed" and "duplex" properties are both specified, only that
+	 * single mode will be advertised and accepted during the link
+	 * auto-negotiation process: this works only for BASE-T 802.3 specifications
+	 * and is useful for enforcing gigabits modes, as in these cases link
+	 * negotiation is mandatory.
+	 * When %FALSE, "speed" and "duplex" properties should be both set or
+	 * link configuration will be skipped.
 	 **/
 	/* ---ifcfg-rh---
 	 * property: auto-negotiate
diff --git a/libnm-core/nm-setting-wireless.c b/libnm-core/nm-setting-wireless.c
index 38948dee..89a2df8e 100644
--- a/libnm-core/nm-setting-wireless.c
+++ b/libnm-core/nm-setting-wireless.c
@@ -63,6 +63,7 @@ typedef struct {
 	gboolean hidden;
 	guint32 powersave;
 	NMSettingMacRandomization mac_address_randomization;
+	guint32 wowl;
 } NMSettingWirelessPrivate;
 
 enum {
@@ -83,6 +84,7 @@ enum {
 	PROP_HIDDEN,
 	PROP_POWERSAVE,
 	PROP_MAC_ADDRESS_RANDOMIZATION,
+	PROP_WAKE_ON_WLAN,
 
 	LAST_PROP
 };
@@ -885,6 +887,26 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
 		return FALSE;
 	}
 
+	if (NM_FLAGS_ANY (priv->wowl, NM_SETTING_WIRELESS_WAKE_ON_WLAN_EXCLUSIVE_FLAGS)) {
+		if (!nm_utils_is_power_of_two (priv->wowl)) {
+			g_set_error_literal (error,
+			                     NM_CONNECTION_ERROR,
+			                     NM_CONNECTION_ERROR_INVALID_PROPERTY,
+			                     _("Wake-on-WLAN mode 'default' and 'ignore' are exclusive flags"));
+			g_prefix_error (error, "%s.%s: ", NM_SETTING_WIRELESS_SETTING_NAME,
+			                NM_SETTING_WIRELESS_WAKE_ON_WLAN);
+			return FALSE;
+		}
+	} else if (NM_FLAGS_ANY (priv->wowl, ~NM_SETTING_WIRELESS_WAKE_ON_WLAN_ALL)) {
+		g_set_error_literal (error,
+		                     NM_CONNECTION_ERROR,
+		                     NM_CONNECTION_ERROR_INVALID_PROPERTY,
+		                     _("Wake-on-WLAN trying to set unknown flag"));
+		g_prefix_error (error, "%s.%s: ", NM_SETTING_WIRELESS_SETTING_NAME,
+		                NM_SETTING_WIRELESS_WAKE_ON_WLAN);
+		return FALSE;
+	}
+
 	/* from here on, check for NM_SETTING_VERIFY_NORMALIZABLE conditions. */
 
 	if (priv->cloned_mac_address) {
@@ -939,6 +961,24 @@ nm_setting_wireless_get_security (NMSetting    *setting,
 		return NULL;
 }
 
+/**
+ * nm_setting_wireless_get_wake_on_wlan:
+ * @setting: the #NMSettingWireless
+ *
+ * Returns the Wake-on-WLAN options enabled for the connection
+ *
+ * Returns: the Wake-on-WLAN options
+ *
+ * Since: 1.12
+ */
+NMSettingWirelessWakeOnWLan
+nm_setting_wireless_get_wake_on_wlan (NMSettingWireless *setting)
+{
+	g_return_val_if_fail (NM_IS_SETTING_WIRELESS (setting), NM_SETTING_WIRELESS_WAKE_ON_WLAN_NONE);
+
+	return NM_SETTING_WIRELESS_GET_PRIVATE (setting)->wowl;
+}
+
 static void
 clear_blacklist_item (char **item_p)
 {
@@ -1061,6 +1101,9 @@ set_property (GObject *object, guint prop_id,
 	case PROP_MAC_ADDRESS_RANDOMIZATION:
 		priv->mac_address_randomization = g_value_get_uint (value);
 		break;
+	case PROP_WAKE_ON_WLAN:
+		priv->wowl = g_value_get_uint (value);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -1123,6 +1166,9 @@ get_property (GObject *object, guint prop_id,
 	case PROP_MAC_ADDRESS_RANDOMIZATION:
 		g_value_set_uint (value, nm_setting_wireless_get_mac_address_randomization (setting));
 		break;
+	case PROP_WAKE_ON_WLAN:
+		g_value_set_uint (value, nm_setting_wireless_get_wake_on_wlan (setting));
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -1636,4 +1682,30 @@ nm_setting_wireless_class_init (NMSettingWirelessClass *setting_wireless_class)
 	_nm_setting_class_add_dbus_only_property (setting_class, "security",
 	                                          G_VARIANT_TYPE_STRING,
 	                                          nm_setting_wireless_get_security, NULL);
+
+	/**
+	 * NMSettingWireless:wake-on-wlan:
+	 *
+	 * The #NMSettingWirelessWakeOnWLan options to enable. Not all devices support all options.
+	 * May be any combination of %NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY,
+	 * %NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT,
+	 * %NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC,
+	 * %NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE,
+	 * %NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST,
+	 * %NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE,
+	 * %NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE,
+	 * %NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP or the special values
+	 * %NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT (to use global settings) and
+	 * %NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE (to disable management of Wake-on-LAN in
+	 * NetworkManager).
+	 *
+	 * Since: 1.12
+	 **/
+	g_object_class_install_property
+		(object_class, PROP_WAKE_ON_WLAN,
+		 g_param_spec_uint (NM_SETTING_WIRELESS_WAKE_ON_WLAN, "", "",
+		                    0, G_MAXUINT32, NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT,
+		                    G_PARAM_CONSTRUCT |
+		                    G_PARAM_READWRITE |
+		                    G_PARAM_STATIC_STRINGS));
 }
diff --git a/libnm-core/nm-setting-wireless.h b/libnm-core/nm-setting-wireless.h
index b0ef4756..e9afe2c6 100644
--- a/libnm-core/nm-setting-wireless.h
+++ b/libnm-core/nm-setting-wireless.h
@@ -41,6 +41,48 @@ G_BEGIN_DECLS
 
 #define NM_SETTING_WIRELESS_SETTING_NAME "802-11-wireless"
 
+/**
+ * NMSettingWirelessWakeOnWLan:
+ * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_NONE: Wake-on-WLAN disabled
+ * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY: Wake on any activity
+ * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT: Wake on disconnect
+ * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC: Wake on magic packet
+ * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE: Wake on GTK rekey failure
+ * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST: Wake on EAP identity request
+ * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE: Wake on 4way hanshake
+ * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE: Wake on rfkill release
+ * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_ALL: Wake on all events. This does not
+ *   include the exclusive flags @NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT or
+ *   @NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE.
+ * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT: Use the default value
+ * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE: Don't change configured settings
+ * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_EXCLUSIVE_FLAGS: Mask of flags that are
+ *   incompatible with other flags
+ *
+ * Options for #NMSettingWireless:wake-on-wlan. Note that not all options
+ * are supported by all devices.
+ *
+ * Since: 1.12
+ */
+typedef enum { /*< flags >*/
+	NM_SETTING_WIRELESS_WAKE_ON_WLAN_NONE                 = 0, /*< skip >*/
+	NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY                  = (1 << 1),
+	NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT           = (1 << 2),
+	NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC                = (1 << 3),
+	NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE    = (1 << 4),
+	NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST = (1 << 5),
+	NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE       = (1 << 6),
+	NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE       = (1 << 7),
+	NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP                  = (1 << 8),
+	_NM_SETTING_WIRELESS_WAKE_ON_WLAN_NUM, /*< skip >*/
+	NM_SETTING_WIRELESS_WAKE_ON_WLAN_LAST                 = _NM_SETTING_WIRELESS_WAKE_ON_WLAN_NUM - 1, /*< skip >*/
+	NM_SETTING_WIRELESS_WAKE_ON_WLAN_ALL                  = ((NM_SETTING_WIRELESS_WAKE_ON_WLAN_LAST << 1) - 1) - (1 << 0 /*DEFAULT*/), /*< skip >*/
+
+	NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT              = (1 << 0),
+	NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE               = (1 << 15),
+	NM_SETTING_WIRELESS_WAKE_ON_WLAN_EXCLUSIVE_FLAGS = NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT | NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE, /*< skip >*/
+} NMSettingWirelessWakeOnWLan;
+
 #define NM_SETTING_WIRELESS_SSID        "ssid"
 #define NM_SETTING_WIRELESS_MODE        "mode"
 #define NM_SETTING_WIRELESS_BAND        "band"
@@ -57,6 +99,7 @@ G_BEGIN_DECLS
 #define NM_SETTING_WIRELESS_HIDDEN      "hidden"
 #define NM_SETTING_WIRELESS_POWERSAVE   "powersave"
 #define NM_SETTING_WIRELESS_MAC_ADDRESS_RANDOMIZATION   "mac-address-randomization"
+#define NM_SETTING_WIRELESS_WAKE_ON_WLAN "wake-on-wlan"
 
 /**
  * NM_SETTING_WIRELESS_MODE_ADHOC:
@@ -166,6 +209,9 @@ gboolean          nm_setting_wireless_ap_security_compatible (NMSettingWireless
                                                               NM80211ApSecurityFlags ap_rsn,
                                                               NM80211Mode ap_mode);
 
+NM_AVAILABLE_IN_1_12
+NMSettingWirelessWakeOnWLan  nm_setting_wireless_get_wake_on_wlan (NMSettingWireless *setting);
+
 G_END_DECLS
 
 #endif /* __NM_SETTING_WIRELESS_H__ */
diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c
index eb65f8db..b700c7f5 100644
--- a/libnm-core/nm-utils.c
+++ b/libnm-core/nm-utils.c
@@ -4437,6 +4437,47 @@ _nm_utils_inet6_is_token (const struct in6_addr *in6addr)
 }
 
 /**
+ * _nm_utils_dhcp_duid_valid:
+ * @duid: the candidate DUID
+ *
+ * Checks if @duid string contains either a special duid value ("ll",
+ * "llt", "lease" or the "stable" variants) or a valid hex DUID.
+ *
+ * Return value: %TRUE or %FALSE
+ */
+gboolean
+_nm_utils_dhcp_duid_valid (const char *duid, GBytes **out_duid_bin)
+{
+	guint8 duid_arr[128 + 2];
+	gsize duid_len;
+
+	NM_SET_OUT (out_duid_bin, NULL);
+
+	if (!duid)
+		return FALSE;
+
+	if (NM_IN_STRSET (duid, "lease",
+	                        "llt",
+	                        "ll",
+	                        "stable-llt",
+	                        "stable-ll",
+	                        "stable-uuid")) {
+		return TRUE;
+	}
+
+	if (_str2bin (duid, FALSE, ":", duid_arr, sizeof (duid_arr), &duid_len)) {
+		/* MAX DUID length is 128 octects + the type code (2 octects). */
+		if (   duid_len > 2
+		    && duid_len <= (128 + 2)) {
+			NM_SET_OUT (out_duid_bin, g_bytes_new (duid_arr, duid_len));
+			return TRUE;
+		}
+	}
+
+	return FALSE;
+}
+
+/**
  * nm_utils_check_virtual_device_compatibility:
  * @virtual_type: a virtual connection type
  * @other_type: a connection type to test against @virtual_type
@@ -6182,6 +6223,40 @@ nm_utils_format_variant_attributes (GHashTable *attributes,
 
 /*****************************************************************************/
 
+/*
+ * nm_utils_get_timestamp_msec():
+ *
+ * Gets current time in milliseconds of CLOCK_BOOTTIME.
+ *
+ * Returns: time in milliseconds
+ *
+ * Since: 1.12
+ */
+gint64
+nm_utils_get_timestamp_msec (void)
+{
+	struct timespec ts;
+
+	if (clock_gettime (CLOCK_BOOTTIME, &ts) != -1)
+		goto success;
+
+	if (errno == EINVAL) {
+		/* The fallback to CLOCK_MONOTONIC is taken only if we're running on a
+		 * criminally old kernel, prior to 2.6.39 (released on 18 May, 2011).
+		 * That happens during buildcheck on old builders, we don't expect to
+		 * be actually runs on kernels that old. */
+		if (clock_gettime (CLOCK_MONOTONIC, &ts) != -1)
+			goto success;
+	}
+
+	g_return_val_if_reached (-1);
+
+success:
+	return (((gint64) ts.tv_sec) * 1000) + (ts.tv_nsec / 1000000);
+}
+
+/*****************************************************************************/
+
 /**
  * nm_utils_version:
  *
diff --git a/libnm-core/nm-utils.h b/libnm-core/nm-utils.h
index 1f645a80..70245869 100644
--- a/libnm-core/nm-utils.h
+++ b/libnm-core/nm-utils.h
@@ -248,6 +248,11 @@ NMTCTfilter *nm_utils_tc_tfilter_from_str  (const char *str, GError **error);
 NM_AVAILABLE_IN_1_12
 char *nm_utils_tc_tfilter_to_str           (NMTCTfilter *tfilter, GError **error);
 
+/*****************************************************************************/
+
+NM_AVAILABLE_IN_1_12
+gint64 nm_utils_get_timestamp_msec         (void);
+
 G_END_DECLS
 
 #endif /* __NM_UTILS_H__ */
diff --git a/libnm/libnm.ver b/libnm/libnm.ver
index ec1b91da..5011906c 100644
--- a/libnm/libnm.ver
+++ b/libnm/libnm.ver
@@ -1350,15 +1350,22 @@ global:
 	nm_client_get_checkpoints;
 	nm_connection_get_setting_tc_config;
 	nm_device_ip_tunnel_get_flags;
+	nm_device_wifi_get_last_scan;
 	nm_ip_tunnel_flags_get_type;
+	nm_remote_connection_get_filename;
 	nm_remote_connection_get_flags;
 	nm_setting_connection_get_mdns;
 	nm_setting_connection_mdns_get_type;
 	nm_setting_ip_tunnel_get_flags;
+	nm_setting_ip6_config_get_dhcp_duid;
+	nm_setting_macsec_get_send_sci;
 	nm_setting_vpn_get_data_keys;
 	nm_setting_vpn_get_secret_keys;
 	nm_setting_wireless_security_get_fils;
 	nm_setting_wireless_security_fils_get_type;
+	nm_setting_wireless_get_wake_on_wlan;
+	nm_setting_wireless_wake_on_wlan_get_type;
 	nm_settings_connection_flags_get_type;
+	nm_utils_get_timestamp_msec;
 	nm_vpn_service_plugin_shutdown;
 } libnm_1_10_0;
diff --git a/libnm/nm-checkpoint.c b/libnm/nm-checkpoint.c
index 153a7104..ce15d087 100644
--- a/libnm/nm-checkpoint.c
+++ b/libnm/nm-checkpoint.c
@@ -70,8 +70,10 @@ nm_checkpoint_get_devices (NMCheckpoint *checkpoint)
  * nm_checkpoint_get_created:
  * @checkpoint: a #NMCheckpoint
  *
- * Gets the timestamp (in CLOCK_BOOTTIME milliseconds)
- * of checkpoint creation.
+ * Gets the timestamp (in CLOCK_BOOTTIME milliseconds) of checkpoint creation.
+ *
+ * Use nm_utils_get_timestamp_msec() to obtain current time value suitable for
+ * comparing to this value.
  *
  * Returns: the timestamp of checkpoint creation.
  *
diff --git a/libnm/nm-device-wifi.c b/libnm/nm-device-wifi.c
index 1f2118fa..848e297c 100644
--- a/libnm/nm-device-wifi.c
+++ b/libnm/nm-device-wifi.c
@@ -59,6 +59,7 @@ typedef struct {
 	NMAccessPoint *active_ap;
 	NMDeviceWifiCapabilities wireless_caps;
 	GPtrArray *aps;
+	gint64 last_scan;
 
 	RequestScanInfo *scan_info;
 } NMDeviceWifiPrivate;
@@ -72,6 +73,7 @@ enum {
 	PROP_ACTIVE_ACCESS_POINT,
 	PROP_WIRELESS_CAPABILITIES,
 	PROP_ACCESS_POINTS,
+	PROP_LAST_SCAN,
 
 	LAST_PROP
 };
@@ -267,6 +269,28 @@ nm_device_wifi_get_access_point_by_path (NMDeviceWifi *device,
 	return ap;
 }
 
+/**
+ * nm_device_wifi_get_last_scan:
+ * @device: a #NMDeviceWifi
+ *
+ * Returns the timestamp (in CLOCK_BOOTTIME milliseconds) for the last finished
+ * network scan. A value of -1 means the device never scanned for access points.
+ *
+ * Use nm_utils_get_timestamp_msec() to obtain current time value suitable for
+ * comparing to this value.
+ *
+ * Returns: the last scan time in seconds
+ *
+ * Since: 1.12
+ **/
+gint64
+nm_device_wifi_get_last_scan (NMDeviceWifi *device)
+{
+	g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), -1);
+
+	return NM_DEVICE_WIFI_GET_PRIVATE (device)->last_scan;
+}
+
 static GVariant *
 prepare_scan_options (GVariant *options)
 {
@@ -666,6 +690,7 @@ nm_device_wifi_init (NMDeviceWifi *device)
 	                  NULL);
 
 	priv->aps = g_ptr_array_new ();
+	priv->last_scan = -1;
 }
 
 static void
@@ -698,6 +723,9 @@ get_property (GObject *object,
 	case PROP_ACCESS_POINTS:
 		g_value_take_boxed (value, _nm_utils_copy_object_array (nm_device_wifi_get_access_points (self)));
 		break;
+	case PROP_LAST_SCAN:
+		g_value_set_int64 (value, nm_device_wifi_get_last_scan (self));
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -739,6 +767,7 @@ init_dbus (NMObject *object)
 		{ NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT,  &priv->active_ap, NULL, NM_TYPE_ACCESS_POINT },
 		{ NM_DEVICE_WIFI_CAPABILITIES,         &priv->wireless_caps },
 		{ NM_DEVICE_WIFI_ACCESS_POINTS,        &priv->aps, NULL, NM_TYPE_ACCESS_POINT, "access-point" },
+		{ NM_DEVICE_WIFI_LAST_SCAN,            &priv->last_scan },
 		{ NULL },
 	};
 
@@ -898,6 +927,22 @@ nm_device_wifi_class_init (NMDeviceWifiClass *wifi_class)
 		                     G_PARAM_READABLE |
 		                     G_PARAM_STATIC_STRINGS));
 
+	/**
+	 * NMDeviceWifi:last-scan:
+	 *
+	 * The timestamp (in CLOCK_BOOTTIME seconds) for the last finished
+	 * network scan. A value of -1 means the device never scanned for
+	 * access points.
+	 *
+	 * Since: 1.12
+	 **/
+	g_object_class_install_property
+	        (object_class, PROP_LAST_SCAN,
+	         g_param_spec_int64 (NM_DEVICE_WIFI_LAST_SCAN, "", "",
+	                             -1, G_MAXINT64, -1,
+	                             G_PARAM_READABLE |
+	                             G_PARAM_STATIC_STRINGS));
+
 	/* signals */
 
 	/**
diff --git a/libnm/nm-device-wifi.h b/libnm/nm-device-wifi.h
index 8cfea1f3..8448acfe 100644
--- a/libnm/nm-device-wifi.h
+++ b/libnm/nm-device-wifi.h
@@ -44,6 +44,7 @@ G_BEGIN_DECLS
 #define NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT "active-access-point"
 #define NM_DEVICE_WIFI_CAPABILITIES        "wireless-capabilities"
 #define NM_DEVICE_WIFI_ACCESS_POINTS       "access-points"
+#define NM_DEVICE_WIFI_LAST_SCAN           "last-scan"
 
 /**
  * NMDeviceWifi:
@@ -77,6 +78,9 @@ NMAccessPoint *          nm_device_wifi_get_access_point_by_path (NMDeviceWifi *
 
 const GPtrArray *        nm_device_wifi_get_access_points        (NMDeviceWifi *device);
 
+NM_AVAILABLE_IN_1_12
+gint64                   nm_device_wifi_get_last_scan            (NMDeviceWifi *device);
+
 gboolean                 nm_device_wifi_request_scan             (NMDeviceWifi *device,
                                                                   GCancellable *cancellable,
                                                                   GError **error);
diff --git a/libnm/nm-object.c b/libnm/nm-object.c
index f162b15d..da2fbb79 100644
--- a/libnm/nm-object.c
+++ b/libnm/nm-object.c
@@ -900,9 +900,9 @@ demarshal_generic (NMObject *object,
 	else if (pspec->value_type == G_TYPE_UINT)
 		HANDLE_TYPE (G_VARIANT_TYPE_UINT32, guint, g_variant_get_uint32);
 	else if (pspec->value_type == G_TYPE_INT64)
-		HANDLE_TYPE (G_VARIANT_TYPE_INT64, gint, g_variant_get_int64);
+		HANDLE_TYPE (G_VARIANT_TYPE_INT64, gint64, g_variant_get_int64);
 	else if (pspec->value_type == G_TYPE_UINT64)
-		HANDLE_TYPE (G_VARIANT_TYPE_UINT64, guint, g_variant_get_uint64);
+		HANDLE_TYPE (G_VARIANT_TYPE_UINT64, guint64, g_variant_get_uint64);
 	else if (pspec->value_type == G_TYPE_LONG)
 		HANDLE_TYPE (G_VARIANT_TYPE_INT64, glong, g_variant_get_int64);
 	else if (pspec->value_type == G_TYPE_ULONG)
diff --git a/libnm/nm-property-docs.xml b/libnm/nm-property-docs.xml
index a8b809bd..a857f633 100644
--- a/libnm/nm-property-docs.xml
+++ b/libnm/nm-property-docs.xml
@@ -21,7 +21,7 @@
     <property name="read-only" name_upper="READ_ONLY" type="boolean" default="FALSE" description="FALSE if the connection can be modified using the provided settings service's D-Bus interface with the right privileges, or TRUE if the connection is read-only and cannot be modified." />
     <property name="secondaries" name_upper="SECONDARIES" type="array of string" default="[]" description="List of connection UUIDs that should be activated when the base connection itself is activated. Currently only VPN connections are supported." />
     <property name="slave-type" name_upper="SLAVE_TYPE" type="string" description="Setting name of the device type of this slave's master connection (eg, &quot;bond&quot;), or NULL if this connection is not a slave." />
-    <property name="stable-id" name_upper="STABLE_ID" type="string" description="This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The '$' character is treated special to perform dynamic substitutions at runtime. Currently supported are &quot;${CONNECTION}&quot;, &quot;${DEVICE}&quot;, &quot;${BOOT}&quot;, &quot;${RANDOM}&quot;. These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that &quot;${DEVICE}&quot; corresponds the the interface name of the device. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as &quot;$$&quot;. For example, set it to &quot;${CONNECTION}-${BOOT}-${DEVICE}&quot; to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to &quot;${CONNECTION}&quot; and uses a unique, fixed ID for the connection." />
+    <property name="stable-id" name_upper="STABLE_ID" type="string" description="This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable and to derive the DHCP DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid]. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The '$' character is treated special to perform dynamic substitutions at runtime. Currently supported are &quot;${CONNECTION}&quot;, &quot;${DEVICE}&quot;, &quot;${BOOT}&quot;, &quot;${RANDOM}&quot;. These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that &quot;${DEVICE}&quot; corresponds the the interface name of the device. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as &quot;$$&quot;. For example, set it to &quot;${CONNECTION}-${BOOT}-${DEVICE}&quot; to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to &quot;${CONNECTION}&quot; and uses a unique, fixed ID for the connection." />
     <property name="timestamp" name_upper="TIMESTAMP" type="uint64" default="0" description="The time, in seconds since the Unix Epoch, that the connection was last _successfully_ fully activated. NetworkManager updates the connection timestamp periodically when the connection is active to ensure that an active connection has the latest timestamp. The property is only meant for reading (changes to this property will not be preserved)." />
     <property name="type" name_upper="TYPE" type="string" description="Base type of the connection. For hardware-dependent connections, should contain the setting name of the hardware-type specific setting (ie, &quot;802-3-ethernet&quot; or &quot;802-11-wireless&quot; or &quot;bluetooth&quot;, etc), and for non-hardware dependent connections like VPN or otherwise, should contain the setting name of that setting type (ie, &quot;vpn&quot; or &quot;bridge&quot;, etc)." />
     <property name="uuid" name_upper="UUID" type="string" description="A universally unique identifier for the connection, for example generated with libuuid.  It should be assigned when the connection is created, and never changed as long as the connection still applies to the same network.  For example, it should not be changed when the &quot;id&quot; property or NMSettingIP4Config changes, but might need to be re-created when the Wi-Fi SSID, mobile broadband network provider, or &quot;type&quot; property changes. The UUID must be in the format &quot;2815492f-7e56-435e-b2e9-246bd7cdc664&quot; (ie, contains only hexadecimal characters and &quot;-&quot;)." />
@@ -194,6 +194,7 @@
     <property name="addr-gen-mode" name_upper="ADDR_GEN_MODE" type="int32" default="1" description="Configure method for creating the address for use with RFC4862 IPv6 Stateless Address Autoconfiguration. The permitted values are: NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_EUI64 (0) or NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_STABLE_PRIVACY (1). If the property is set to EUI64, the addresses will be generated using the interface tokens derived from hardware address. This makes the host part of the address to stay constant, making it possible to track host's presence when it changes networks. The address changes when the interface hardware is replaced. The value of stable-privacy enables use of cryptographically secure hash of a secret host-specific key along with the connection's stable-id and the network address as specified by RFC7217. This makes it impossible to use the address track host's presence, and makes the address stable when the network interface hardware is replaced. On D-Bus, the absence of an addr-gen-mode setting equals enabling stable-privacy. For keyfile plugin, the absence of the setting on disk means EUI64 so that the property doesn't change on upgrade from older versions. Note that this setting is distinct from the Privacy Extensions as configured by &quot;ip6-privacy&quot; property and it does not affect the temporary addresses configured with this option." />
     <property name="addresses" name_upper="ADDRESSES" type="array of legacy IPv6 address struct" default="[]" description="Array of IP addresses." />
     <property name="dad-timeout" name_upper="DAD_TIMEOUT" type="int32" default="-1" description="Timeout in milliseconds used to check for the presence of duplicate IP addresses on the network.  If an address conflict is detected, the activation will fail.  A zero value means that no duplicate address detection is performed, -1 means the default value (either configuration ipvx.dad-timeout override or zero).  A value greater than zero is a timeout in milliseconds. The property is currently implemented only for IPv4." />
+    <property name="dhcp-duid" name_upper="DHCP_DUID" type="string" description="A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp client to identify itself to DHCPv6 servers (RFC 3315). The DUID is carried in the Client Identifier option. If the property is a hex string ('aa:bb:cc') it is interpreted as a binary DUID and filled as an opaque value in the Client Identifier option. The special value &quot;lease&quot; will retrieve the DUID previously used from the lease file belonging to the connection. If no DUID is found and &quot;dhclient&quot; is the configured dhcp client, the DUID is searched in the system-wide dhclient lease file. If still no DUID is found, or another dhcp client is used, a global and permanent DUID-UUID (RFC 6355) will be generated based on the machine-id. The special values &quot;llt&quot; and &quot;ll&quot; will generate a DUID of type LLT or LL (see RFC 3315) based on the current MAC address of the device. In order to try providing a stable DUID-LLT, the time field will contain a constant timestamp that is used globally (for all profiles) and persisted to disk. The special values &quot;stable-llt&quot;, &quot;stable-ll&quot; and &quot;stable-uuid&quot; will generate a DUID of the corresponding type, derived from the connection's stable-id and a per-host unique key. So, the link-layer address of &quot;stable-ll&quot; and &quot;stable-llt&quot; will be a generated address derived from the stable id. The DUID-LLT time value in the &quot;stable-llt&quot; option will be picked among a static timespan of three years (the upper bound of the interval is the same constant timestamp used in &quot;llt&quot;). When the property is unset, the global value provided for &quot;ipv6.dhcp-duid&quot; is used. If no global value is provided, the default &quot;lease&quot; value is assumed." />
     <property name="dhcp-hostname" name_upper="DHCP_HOSTNAME" type="string" description="If the &quot;dhcp-send-hostname&quot; property is TRUE, then the specified name will be sent to the DHCP server when acquiring a lease. This property and &quot;dhcp-fqdn&quot; are mutually exclusive and cannot be set at the same time." />
     <property name="dhcp-send-hostname" name_upper="DHCP_SEND_HOSTNAME" type="boolean" default="TRUE" description="If TRUE, a hostname is sent to the DHCP server when acquiring a lease. Some DHCP servers use this hostname to update DNS databases, essentially providing a static hostname for the computer.  If the &quot;dhcp-hostname&quot; property is NULL and this property is TRUE, the current persistent hostname of the computer is sent." />
     <property name="dhcp-timeout" name_upper="DHCP_TIMEOUT" type="int32" default="0" description="A timeout for a DHCP transaction in seconds." />
@@ -239,6 +240,7 @@
     <property name="name" name_upper="NAME" type="string" default="macsec" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="parent" name_upper="PARENT" type="string" description="If given, specifies the parent interface name or parent connection UUID from which this MACSEC interface should be created.  If this property is not specified, the connection must contain an &quot;802-3-ethernet&quot; setting with a &quot;mac-address&quot; property." />
     <property name="port" name_upper="PORT" type="int32" default="1" description="The port component of the SCI (Secure Channel Identifier), between 1 and 65534." />
+    <property name="send-sci" name_upper="SEND_SCI" type="boolean" default="TRUE" description="Specifies whether the SCI (Secure Channel Identifier) is included in every packet." />
     <property name="validation" name_upper="VALIDATION" type="int32" default="2" description="Specifies the validation mode for incoming frames." />
   </setting>
   <setting name="macvlan" description="MAC VLAN Settings" name_upper="MACVLAN" >
@@ -335,7 +337,7 @@
     <property name="name" name_upper="NAME" type="string" default="team" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="notify-peers-count" name_upper="NOTIFY_PEERS_COUNT" type="int32" default="0" description="Corresponds to the teamd notify_peers.count." />
     <property name="notify-peers-interval" name_upper="NOTIFY_PEERS_INTERVAL" type="int32" default="0" description="Corresponds to the teamd notify_peers.interval." />
-    <property name="runner" name_upper="RUNNER" type="string" default="&quot;roundrobin&quot;" description="Corresponds to the teamd runner.name. Permitted values are: &quot;roundrobin&quot;, &quot;broadcast&quot;, &quot;activebackup&quot;, &quot;loadbalance&quot;, &quot;lacp&quot;. When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value)." />
+    <property name="runner" name_upper="RUNNER" type="string" default="&quot;roundrobin&quot;" description="Corresponds to the teamd runner.name. Permitted values are: &quot;roundrobin&quot;, &quot;broadcast&quot;, &quot;activebackup&quot;, &quot;loadbalance&quot;, &quot;lacp&quot;, &quot;random&quot;. When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value)." />
     <property name="runner-active" name_upper="RUNNER_ACTIVE" type="boolean" default="FALSE" description="Corresponds to the teamd runner.active." />
     <property name="runner-agg-select-policy" name_upper="RUNNER_AGG_SELECT_POLICY" type="string" description="Corresponds to the teamd runner.agg_select_policy." />
     <property name="runner-fast-rate" name_upper="RUNNER_FAST_RATE" type="boolean" default="FALSE" description="Corresponds to the teamd runner.fast_rate." />
@@ -411,9 +413,9 @@
     <property name="network-name" name_upper="NETWORK_NAME" type="string" description="Network Service Provider (NSP) name of the WiMAX network this connection should use. Deprecated: 1" />
   </setting>
   <setting name="802-3-ethernet" description="Wired Ethernet Settings" name_upper="WIRED" >
-    <property name="auto-negotiate" name_upper="AUTO_NEGOTIATE" type="boolean" default="FALSE" description="If TRUE, enforce auto-negotiation of port speed and duplex mode.  If FALSE, &quot;speed&quot; and &quot;duplex&quot; properties should be both set or link configuration will be skipped." />
+    <property name="auto-negotiate" name_upper="AUTO_NEGOTIATE" type="boolean" default="FALSE" description="When TRUE, enforce auto-negotiation of speed and duplex mode. If &quot;speed&quot; and &quot;duplex&quot; properties are both specified, only that single mode will be advertised and accepted during the link auto-negotiation process: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. When FALSE, &quot;speed&quot; and &quot;duplex&quot; properties should be both set or link configuration will be skipped." />
     <property name="cloned-mac-address" name_upper="CLONED_MAC_ADDRESS" type="byte array" description="If specified, request that the device use this MAC address instead. This is known as MAC cloning or spoofing. Beside explicitly specifying a MAC address, the special values &quot;preserve&quot;, &quot;permanent&quot;, &quot;random&quot; and &quot;stable&quot; are supported. &quot;preserve&quot; means not to touch the MAC address on activation. &quot;permanent&quot; means to use the permanent hardware address if the device has one (otherwise this is treated as &quot;preserve&quot;). &quot;random&quot; creates a random MAC address on each connect. &quot;stable&quot; creates a hashed MAC address based on connection.stable-id and a machine dependent key. If unspecified, the value can be overwritten via global defaults, see manual of NetworkManager.conf. If still unspecified, it defaults to &quot;preserve&quot; (older versions of NetworkManager may use a different default value). On D-Bus, this field is expressed as &quot;assigned-mac-address&quot; or the deprecated &quot;cloned-mac-address&quot;." />
-    <property name="duplex" name_upper="DUPLEX" type="string" description="Can be specified only when &quot;auto-negotiate&quot; is &quot;off&quot;. In that case, statically configures the device to use that specified duplex mode, either &quot;half&quot; or &quot;full&quot;. Must be set together with the &quot;speed&quot; property if specified. Before specifying a duplex mode be sure your device supports it." />
+    <property name="duplex" name_upper="DUPLEX" type="string" description="When a value is set, either &quot;half&quot; or &quot;full&quot;, configures the device to use the specified duplex mode. If &quot;auto-negotiate&quot; is &quot;yes&quot; the specified duplex mode will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. If the value is unset (the default), the link configuration will be either skipped (if &quot;auto-negotiate&quot; is &quot;no&quot;, the default) or will be auto-negotiated (if &quot;auto-negotiate&quot; is &quot;yes&quot;) and the local device will advertise all the supported duplex modes. Must be set together with the &quot;speed&quot; property if specified. Before specifying a duplex mode be sure your device supports it." />
     <property name="generate-mac-address-mask" name_upper="GENERATE_MAC_ADDRESS_MASK" type="string" description="With &quot;cloned-mac-address&quot; setting &quot;random&quot; or &quot;stable&quot;, by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting &quot;FE:FF:FF:00:00:00&quot; means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the &quot;random&quot; or &quot;stable&quot; algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of &quot;FE:FF:FF:00:00:00 68:F7:28:00:00:00&quot; will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of &quot;02:00:00:00:00:00 00:00:00:00:00:00&quot; will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, &quot;02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00&quot; will create a fully scrambled MAC address, randomly locally or globally administered." />
     <property name="mac-address" name_upper="MAC_ADDRESS" type="byte array" description="If specified, this connection will only apply to the Ethernet device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing)." />
     <property name="mac-address-blacklist" name_upper="MAC_ADDRESS_BLACKLIST" type="array of string" default="[]" description="If specified, this connection will never apply to the Ethernet device whose permanent MAC address matches an address in the list.  Each MAC address is in the standard hex-digits-and-colons notation (00:11:22:33:44:55)." />
@@ -423,7 +425,7 @@
     <property name="s390-nettype" name_upper="S390_NETTYPE" type="string" description="s390 network device type; one of &quot;qeth&quot;, &quot;lcs&quot;, or &quot;ctc&quot;, representing the different types of virtual network devices available on s390 systems." />
     <property name="s390-options" name_upper="S390_OPTIONS" type="dict of string to string" default="{}" description="Dictionary of key/value pairs of s390-specific device options.  Both keys and values must be strings.  Allowed keys include &quot;portno&quot;, &quot;layer2&quot;, &quot;portname&quot;, &quot;protocol&quot;, among others.  Key names must contain only alphanumeric characters (ie, [a-zA-Z0-9])." />
     <property name="s390-subchannels" name_upper="S390_SUBCHANNELS" type="array of string" default="[]" description="Identifies specific subchannels that this network device uses for communication with z/VM or s390 host.  Like the &quot;mac-address&quot; property for non-z/VM devices, this property can be used to ensure this connection only applies to the network device that uses these subchannels.  The list should contain exactly 3 strings, and each string may only be composed of hexadecimal characters and the period (.) character." />
-    <property name="speed" name_upper="SPEED" type="uint32" default="0" description="Can be set to a value greater than zero only when &quot;auto-negotiate&quot; is &quot;off&quot;. In that case, statically configures the device to use that specified speed. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the &quot;duplex&quot; property when non-zero. Before specifying a speed value be sure your device supports it." />
+    <property name="speed" name_upper="SPEED" type="uint32" default="0" description="When a value grater than 0 is set, configures the device to use the specified speed. If &quot;auto-negotiate&quot; is &quot;yes&quot; the specified speed will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabit speeds, as in this case link negotiation is mandatory. If the value is unset (0, the default), the link configuration will be either skipped (if &quot;auto-negotiate&quot; is &quot;no&quot;, the default) or will be auto-negotiated (if &quot;auto-negotiate&quot; is &quot;yes&quot;) and the local device will advertise all the supported speeds. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the &quot;duplex&quot; property when non-zero. Before specifying a speed value be sure your device supports it." />
     <property name="wake-on-lan" name_upper="WAKE_ON_LAN" type="uint32" default="1" description="The NMSettingWiredWakeOnLan options to enable. Not all devices support all options. May be any combination of NM_SETTING_WIRED_WAKE_ON_LAN_PHY (0x2), NM_SETTING_WIRED_WAKE_ON_LAN_UNICAST (0x4), NM_SETTING_WIRED_WAKE_ON_LAN_MULTICAST (0x8), NM_SETTING_WIRED_WAKE_ON_LAN_BROADCAST (0x10), NM_SETTING_WIRED_WAKE_ON_LAN_ARP (0x20), NM_SETTING_WIRED_WAKE_ON_LAN_MAGIC (0x40) or the special values NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE (0x8000) (to disable management of Wake-on-LAN in NetworkManager)." />
     <property name="wake-on-lan-password" name_upper="WAKE_ON_LAN_PASSWORD" type="string" description="If specified, the password used with magic-packet-based Wake-on-LAN, represented as an Ethernet MAC address.  If NULL, no password will be required." />
   </setting>
@@ -445,6 +447,7 @@
     <property name="seen-bssids" name_upper="SEEN_BSSIDS" type="array of string" default="[]" description="A list of BSSIDs (each BSSID formatted as a MAC address like &quot;00:11:22:33:44:55&quot;) that have been detected as part of the Wi-Fi network.  NetworkManager internally tracks previously seen BSSIDs. The property is only meant for reading and reflects the BSSID list of NetworkManager. The changes you make to this property will not be preserved." />
     <property name="ssid" name_upper="SSID" type="byte array" description="SSID of the Wi-Fi network. Must be specified." />
     <property name="tx-power" name_upper="TX_POWER" type="uint32" default="0" description="If non-zero, directs the device to use the specified transmit power. Units are dBm.  This property is highly driver dependent and not all devices support setting a static transmit power." />
+    <property name="wake-on-wlan" name_upper="WAKE_ON_WLAN" type="uint32" default="1" description="The NMSettingWirelessWakeOnWLan options to enable. Not all devices support all options. May be any combination of NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY (0x2), NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT (0x4), NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC (0x8), NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE (0x10), NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST (0x20), NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE (0x40), NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE (0x80), NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP (0x100) or the special values NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE (0x8000) (to disable management of Wake-on-LAN in NetworkManager)." />
   </setting>
   <setting name="802-11-wireless-security" description="Wi-Fi Security Settings" name_upper="WIRELESS_SECURITY" >
     <property name="auth-alg" name_upper="AUTH_ALG" type="string" description="When WEP is used (ie, key-mgmt = &quot;none&quot; or &quot;ieee8021x&quot;) indicate the 802.11 authentication algorithm required by the AP here.  One of &quot;open&quot; for Open System, &quot;shared&quot; for Shared Key, or &quot;leap&quot; for Cisco LEAP.  When using Cisco LEAP (ie, key-mgmt = &quot;ieee8021x&quot; and auth-alg = &quot;leap&quot;) the &quot;leap-username&quot; and &quot;leap-password&quot; properties must be specified." />
diff --git a/libnm/nm-remote-connection.c b/libnm/nm-remote-connection.c
index bd60c413..45b804f1 100644
--- a/libnm/nm-remote-connection.c
+++ b/libnm/nm-remote-connection.c
@@ -51,6 +51,7 @@ enum {
 	PROP_0,
 	PROP_UNSAVED,
 	PROP_FLAGS,
+	PROP_FILENAME,
 	PROP_VISIBLE,
 
 	LAST_PROP
@@ -61,6 +62,7 @@ typedef struct {
 
 	gboolean unsaved;
 	guint32 flags;
+	const char *filename;
 
 	gboolean visible;
 } NMRemoteConnectionPrivate;
@@ -670,6 +672,22 @@ nm_remote_connection_get_flags (NMRemoteConnection *connection)
 }
 
 /**
+ * nm_remote_connection_get_filename:
+ * @connection: the #NMRemoteConnection
+ *
+ * Returns: file that stores the connection in case the connection is file-backed.
+ *
+ * Since: 1.12
+ **/
+const char *
+nm_remote_connection_get_filename (NMRemoteConnection *connection)
+{
+	g_return_val_if_fail (NM_IS_REMOTE_CONNECTION (connection), NULL);
+
+	return NM_REMOTE_CONNECTION_GET_PRIVATE (connection)->filename;
+}
+
+/**
  * nm_remote_connection_get_visible:
  * @connection: the #NMRemoteConnection
  *
@@ -760,6 +778,7 @@ init_dbus (NMObject *object)
 	const NMPropertiesInfo property_info[] = {
 		{ NM_REMOTE_CONNECTION_UNSAVED, &priv->unsaved },
 		{ NM_REMOTE_CONNECTION_FLAGS, &priv->flags },
+		{ NM_REMOTE_CONNECTION_FILENAME, &priv->filename },
 		{ NULL },
 	};
 
@@ -893,6 +912,9 @@ get_property (GObject *object, guint prop_id,
 	case PROP_FLAGS:
 		g_value_set_boolean (value, NM_REMOTE_CONNECTION_GET_PRIVATE (object)->flags);
 		break;
+	case PROP_FILENAME:
+		g_value_set_string (value, NM_REMOTE_CONNECTION_GET_PRIVATE (object)->filename);
+		break;
 	case PROP_VISIBLE:
 		g_value_set_boolean (value, NM_REMOTE_CONNECTION_GET_PRIVATE (object)->visible);
 		break;
@@ -966,6 +988,21 @@ nm_remote_connection_class_init (NMRemoteConnectionClass *remote_class)
 		                    G_PARAM_STATIC_STRINGS));
 
 	/**
+	 * NMRemoteConnection:filename:
+	 *
+	 * File that stores the connection in case the connection is
+	 * file-backed.
+	 *
+	 * Since: 1.12
+	 **/
+	g_object_class_install_property
+	        (object_class, PROP_FILENAME,
+	         g_param_spec_string (NM_REMOTE_CONNECTION_FILENAME, "", "",
+	                              NULL,
+	                              G_PARAM_READABLE |
+	                              G_PARAM_STATIC_STRINGS));
+
+	/**
 	 * NMRemoteConnection:visible:
 	 *
 	 * %TRUE if the remote connection is visible to the current user, %FALSE if
diff --git a/libnm/nm-remote-connection.h b/libnm/nm-remote-connection.h
index d5b6a8c4..834b52d8 100644
--- a/libnm/nm-remote-connection.h
+++ b/libnm/nm-remote-connection.h
@@ -42,6 +42,7 @@ G_BEGIN_DECLS
 #define NM_REMOTE_CONNECTION_PATH            "path"
 #define NM_REMOTE_CONNECTION_UNSAVED         "unsaved"
 #define NM_REMOTE_CONNECTION_FLAGS           "flags"
+#define NM_REMOTE_CONNECTION_FILENAME        "filename"
 #define NM_REMOTE_CONNECTION_VISIBLE         "visible"
 
 /**
@@ -126,6 +127,9 @@ gboolean nm_remote_connection_get_unsaved (NMRemoteConnection *connection);
 NM_AVAILABLE_IN_1_12
 NMSettingsConnectionFlags nm_remote_connection_get_flags (NMRemoteConnection *connection);
 
+NM_AVAILABLE_IN_1_12
+const char *nm_remote_connection_get_filename (NMRemoteConnection *connection);
+
 gboolean nm_remote_connection_get_visible (NMRemoteConnection *connection);
 
 G_END_DECLS
diff --git a/libnm/nm-settings-docs.xml b/libnm/nm-settings-docs.xml
index 5334b658..f5d7b688 100644
--- a/libnm/nm-settings-docs.xml
+++ b/libnm/nm-settings-docs.xml
@@ -21,7 +21,7 @@
     <property name="read-only" name_upper="READ_ONLY" type="boolean" default="FALSE" description="FALSE if the connection can be modified using the provided settings service's D-Bus interface with the right privileges, or TRUE if the connection is read-only and cannot be modified." />
     <property name="secondaries" name_upper="SECONDARIES" type="array of string" default="[]" description="List of connection UUIDs that should be activated when the base connection itself is activated. Currently only VPN connections are supported." />
     <property name="slave-type" name_upper="SLAVE_TYPE" type="string" description="Setting name of the device type of this slave's master connection (eg, &quot;bond&quot;), or NULL if this connection is not a slave." />
-    <property name="stable-id" name_upper="STABLE_ID" type="string" description="This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The '$' character is treated special to perform dynamic substitutions at runtime. Currently supported are &quot;${CONNECTION}&quot;, &quot;${DEVICE}&quot;, &quot;${BOOT}&quot;, &quot;${RANDOM}&quot;. These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that &quot;${DEVICE}&quot; corresponds the the interface name of the device. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as &quot;$$&quot;. For example, set it to &quot;${CONNECTION}-${BOOT}-${DEVICE}&quot; to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to &quot;${CONNECTION}&quot; and uses a unique, fixed ID for the connection." />
+    <property name="stable-id" name_upper="STABLE_ID" type="string" description="This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable and to derive the DHCP DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid]. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The '$' character is treated special to perform dynamic substitutions at runtime. Currently supported are &quot;${CONNECTION}&quot;, &quot;${DEVICE}&quot;, &quot;${BOOT}&quot;, &quot;${RANDOM}&quot;. These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that &quot;${DEVICE}&quot; corresponds the the interface name of the device. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as &quot;$$&quot;. For example, set it to &quot;${CONNECTION}-${BOOT}-${DEVICE}&quot; to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to &quot;${CONNECTION}&quot; and uses a unique, fixed ID for the connection." />
     <property name="timestamp" name_upper="TIMESTAMP" type="uint64" default="0" description="The time, in seconds since the Unix Epoch, that the connection was last _successfully_ fully activated. NetworkManager updates the connection timestamp periodically when the connection is active to ensure that an active connection has the latest timestamp. The property is only meant for reading (changes to this property will not be preserved)." />
     <property name="type" name_upper="TYPE" type="string" description="Base type of the connection. For hardware-dependent connections, should contain the setting name of the hardware-type specific setting (ie, &quot;802-3-ethernet&quot; or &quot;802-11-wireless&quot; or &quot;bluetooth&quot;, etc), and for non-hardware dependent connections like VPN or otherwise, should contain the setting name of that setting type (ie, &quot;vpn&quot; or &quot;bridge&quot;, etc)." />
     <property name="uuid" name_upper="UUID" type="string" description="A universally unique identifier for the connection, for example generated with libuuid.  It should be assigned when the connection is created, and never changed as long as the connection still applies to the same network.  For example, it should not be changed when the &quot;id&quot; property or NMSettingIP4Config changes, but might need to be re-created when the Wi-Fi SSID, mobile broadband network provider, or &quot;type&quot; property changes. The UUID must be in the format &quot;2815492f-7e56-435e-b2e9-246bd7cdc664&quot; (ie, contains only hexadecimal characters and &quot;-&quot;)." />
@@ -199,6 +199,7 @@
     <property name="address-data" name_upper="ADDRESS_DATA" type="array of vardict" description="Array of IPv6 addresses. Each address dictionary contains at least 'address' and 'prefix' entries, containing the IP address as a string, and the prefix length as a uint32. Additional attributes may also exist on some addresses." />
     <property name="addresses" name_upper="ADDRESSES" type="array of legacy IPv6 address struct (a(ayuay))" default="[]" description="Deprecated in favor of the 'address-data' and 'gateway' properties, but this can be used for backward-compatibility with older daemons. Note that if you send this property the daemon will ignore 'address-data' and 'gateway'.  Array of IPv6 address structures.  Each IPv6 address structure is composed of an IPv6 address, a prefix length (1 - 128), and an IPv6 gateway address. The gateway may be zeroed out if no gateway exists for that subnet." />
     <property name="dad-timeout" name_upper="DAD_TIMEOUT" type="int32" default="-1" description="Timeout in milliseconds used to check for the presence of duplicate IP addresses on the network.  If an address conflict is detected, the activation will fail.  A zero value means that no duplicate address detection is performed, -1 means the default value (either configuration ipvx.dad-timeout override or zero).  A value greater than zero is a timeout in milliseconds. The property is currently implemented only for IPv4." />
+    <property name="dhcp-duid" name_upper="DHCP_DUID" type="string" description="A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp client to identify itself to DHCPv6 servers (RFC 3315). The DUID is carried in the Client Identifier option. If the property is a hex string ('aa:bb:cc') it is interpreted as a binary DUID and filled as an opaque value in the Client Identifier option. The special value &quot;lease&quot; will retrieve the DUID previously used from the lease file belonging to the connection. If no DUID is found and &quot;dhclient&quot; is the configured dhcp client, the DUID is searched in the system-wide dhclient lease file. If still no DUID is found, or another dhcp client is used, a global and permanent DUID-UUID (RFC 6355) will be generated based on the machine-id. The special values &quot;llt&quot; and &quot;ll&quot; will generate a DUID of type LLT or LL (see RFC 3315) based on the current MAC address of the device. In order to try providing a stable DUID-LLT, the time field will contain a constant timestamp that is used globally (for all profiles) and persisted to disk. The special values &quot;stable-llt&quot;, &quot;stable-ll&quot; and &quot;stable-uuid&quot; will generate a DUID of the corresponding type, derived from the connection's stable-id and a per-host unique key. So, the link-layer address of &quot;stable-ll&quot; and &quot;stable-llt&quot; will be a generated address derived from the stable id. The DUID-LLT time value in the &quot;stable-llt&quot; option will be picked among a static timespan of three years (the upper bound of the interval is the same constant timestamp used in &quot;llt&quot;). When the property is unset, the global value provided for &quot;ipv6.dhcp-duid&quot; is used. If no global value is provided, the default &quot;lease&quot; value is assumed." />
     <property name="dhcp-hostname" name_upper="DHCP_HOSTNAME" type="string" description="If the &quot;dhcp-send-hostname&quot; property is TRUE, then the specified name will be sent to the DHCP server when acquiring a lease. This property and &quot;dhcp-fqdn&quot; are mutually exclusive and cannot be set at the same time." />
     <property name="dhcp-send-hostname" name_upper="DHCP_SEND_HOSTNAME" type="boolean" default="TRUE" description="If TRUE, a hostname is sent to the DHCP server when acquiring a lease. Some DHCP servers use this hostname to update DNS databases, essentially providing a static hostname for the computer.  If the &quot;dhcp-hostname&quot; property is NULL and this property is TRUE, the current persistent hostname of the computer is sent." />
     <property name="dhcp-timeout" name_upper="DHCP_TIMEOUT" type="int32" default="0" description="A timeout for a DHCP transaction in seconds." />
@@ -245,6 +246,7 @@
     <property name="name" name_upper="NAME" type="string" default="macsec" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="parent" name_upper="PARENT" type="string" description="If given, specifies the parent interface name or parent connection UUID from which this MACSEC interface should be created.  If this property is not specified, the connection must contain an &quot;802-3-ethernet&quot; setting with a &quot;mac-address&quot; property." />
     <property name="port" name_upper="PORT" type="int32" default="1" description="The port component of the SCI (Secure Channel Identifier), between 1 and 65534." />
+    <property name="send-sci" name_upper="SEND_SCI" type="boolean" default="TRUE" description="Specifies whether the SCI (Secure Channel Identifier) is included in every packet." />
     <property name="validation" name_upper="VALIDATION" type="int32" default="2" description="Specifies the validation mode for incoming frames." />
   </setting>
   <setting name="macvlan" description="MAC VLAN Settings" name_upper="MACVLAN" >
@@ -342,7 +344,7 @@
     <property name="name" name_upper="NAME" type="string" default="team" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="notify-peers-count" name_upper="NOTIFY_PEERS_COUNT" type="int32" default="0" description="Corresponds to the teamd notify_peers.count." />
     <property name="notify-peers-interval" name_upper="NOTIFY_PEERS_INTERVAL" type="int32" default="0" description="Corresponds to the teamd notify_peers.interval." />
-    <property name="runner" name_upper="RUNNER" type="string" default="&quot;roundrobin&quot;" description="Corresponds to the teamd runner.name. Permitted values are: &quot;roundrobin&quot;, &quot;broadcast&quot;, &quot;activebackup&quot;, &quot;loadbalance&quot;, &quot;lacp&quot;. When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value)." />
+    <property name="runner" name_upper="RUNNER" type="string" default="&quot;roundrobin&quot;" description="Corresponds to the teamd runner.name. Permitted values are: &quot;roundrobin&quot;, &quot;broadcast&quot;, &quot;activebackup&quot;, &quot;loadbalance&quot;, &quot;lacp&quot;, &quot;random&quot;. When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value)." />
     <property name="runner-active" name_upper="RUNNER_ACTIVE" type="boolean" default="FALSE" description="Corresponds to the teamd runner.active." />
     <property name="runner-agg-select-policy" name_upper="RUNNER_AGG_SELECT_POLICY" type="string" description="Corresponds to the teamd runner.agg_select_policy." />
     <property name="runner-fast-rate" name_upper="RUNNER_FAST_RATE" type="boolean" default="FALSE" description="Corresponds to the teamd runner.fast_rate." />
@@ -420,9 +422,9 @@
   </setting>
   <setting name="802-3-ethernet" description="Wired Ethernet Settings" name_upper="WIRED" >
     <property name="assigned-mac-address" name_upper="ASSIGNED_MAC_ADDRESS" type="string" description="The new field for the cloned MAC address. It can be either a hardware address in ASCII representation, or one of the special values &quot;preserve&quot;, &quot;permanent&quot;, &quot;random&quot; or &quot;stable&quot;. This field replaces the deprecated &quot;cloned-mac-address&quot; on D-Bus, which can only contain explict hardware addresses. Note that this property only exists in D-Bus API. libnm and nmcli continue to call this property &quot;cloned-mac-address&quot;." />
-    <property name="auto-negotiate" name_upper="AUTO_NEGOTIATE" type="boolean" default="FALSE" description="If TRUE, enforce auto-negotiation of port speed and duplex mode.  If FALSE, &quot;speed&quot; and &quot;duplex&quot; properties should be both set or link configuration will be skipped." />
+    <property name="auto-negotiate" name_upper="AUTO_NEGOTIATE" type="boolean" default="FALSE" description="When TRUE, enforce auto-negotiation of speed and duplex mode. If &quot;speed&quot; and &quot;duplex&quot; properties are both specified, only that single mode will be advertised and accepted during the link auto-negotiation process: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. When FALSE, &quot;speed&quot; and &quot;duplex&quot; properties should be both set or link configuration will be skipped." />
     <property name="cloned-mac-address" name_upper="CLONED_MAC_ADDRESS" type="byte array" description="This D-Bus field is deprecated in favor of &quot;assigned-mac-address&quot; which is more flexible and allows specifying special variants like &quot;random&quot;. For libnm and nmcli, this field is called &quot;cloned-mac-address&quot;." />
-    <property name="duplex" name_upper="DUPLEX" type="string" description="Can be specified only when &quot;auto-negotiate&quot; is &quot;off&quot;. In that case, statically configures the device to use that specified duplex mode, either &quot;half&quot; or &quot;full&quot;. Must be set together with the &quot;speed&quot; property if specified. Before specifying a duplex mode be sure your device supports it." />
+    <property name="duplex" name_upper="DUPLEX" type="string" description="When a value is set, either &quot;half&quot; or &quot;full&quot;, configures the device to use the specified duplex mode. If &quot;auto-negotiate&quot; is &quot;yes&quot; the specified duplex mode will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. If the value is unset (the default), the link configuration will be either skipped (if &quot;auto-negotiate&quot; is &quot;no&quot;, the default) or will be auto-negotiated (if &quot;auto-negotiate&quot; is &quot;yes&quot;) and the local device will advertise all the supported duplex modes. Must be set together with the &quot;speed&quot; property if specified. Before specifying a duplex mode be sure your device supports it." />
     <property name="generate-mac-address-mask" name_upper="GENERATE_MAC_ADDRESS_MASK" type="string" description="With &quot;cloned-mac-address&quot; setting &quot;random&quot; or &quot;stable&quot;, by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting &quot;FE:FF:FF:00:00:00&quot; means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the &quot;random&quot; or &quot;stable&quot; algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of &quot;FE:FF:FF:00:00:00 68:F7:28:00:00:00&quot; will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of &quot;02:00:00:00:00:00 00:00:00:00:00:00&quot; will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, &quot;02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00&quot; will create a fully scrambled MAC address, randomly locally or globally administered." />
     <property name="mac-address" name_upper="MAC_ADDRESS" type="byte array" description="If specified, this connection will only apply to the Ethernet device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing)." />
     <property name="mac-address-blacklist" name_upper="MAC_ADDRESS_BLACKLIST" type="array of string" default="[]" description="If specified, this connection will never apply to the Ethernet device whose permanent MAC address matches an address in the list.  Each MAC address is in the standard hex-digits-and-colons notation (00:11:22:33:44:55)." />
@@ -432,7 +434,7 @@
     <property name="s390-nettype" name_upper="S390_NETTYPE" type="string" description="s390 network device type; one of &quot;qeth&quot;, &quot;lcs&quot;, or &quot;ctc&quot;, representing the different types of virtual network devices available on s390 systems." />
     <property name="s390-options" name_upper="S390_OPTIONS" type="dict of string to string" default="{}" description="Dictionary of key/value pairs of s390-specific device options.  Both keys and values must be strings.  Allowed keys include &quot;portno&quot;, &quot;layer2&quot;, &quot;portname&quot;, &quot;protocol&quot;, among others.  Key names must contain only alphanumeric characters (ie, [a-zA-Z0-9])." />
     <property name="s390-subchannels" name_upper="S390_SUBCHANNELS" type="array of string" default="[]" description="Identifies specific subchannels that this network device uses for communication with z/VM or s390 host.  Like the &quot;mac-address&quot; property for non-z/VM devices, this property can be used to ensure this connection only applies to the network device that uses these subchannels.  The list should contain exactly 3 strings, and each string may only be composed of hexadecimal characters and the period (.) character." />
-    <property name="speed" name_upper="SPEED" type="uint32" default="0" description="Can be set to a value greater than zero only when &quot;auto-negotiate&quot; is &quot;off&quot;. In that case, statically configures the device to use that specified speed. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the &quot;duplex&quot; property when non-zero. Before specifying a speed value be sure your device supports it." />
+    <property name="speed" name_upper="SPEED" type="uint32" default="0" description="When a value grater than 0 is set, configures the device to use the specified speed. If &quot;auto-negotiate&quot; is &quot;yes&quot; the specified speed will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabit speeds, as in this case link negotiation is mandatory. If the value is unset (0, the default), the link configuration will be either skipped (if &quot;auto-negotiate&quot; is &quot;no&quot;, the default) or will be auto-negotiated (if &quot;auto-negotiate&quot; is &quot;yes&quot;) and the local device will advertise all the supported speeds. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the &quot;duplex&quot; property when non-zero. Before specifying a speed value be sure your device supports it." />
     <property name="wake-on-lan" name_upper="WAKE_ON_LAN" type="uint32" default="1" description="The NMSettingWiredWakeOnLan options to enable. Not all devices support all options. May be any combination of NM_SETTING_WIRED_WAKE_ON_LAN_PHY (0x2), NM_SETTING_WIRED_WAKE_ON_LAN_UNICAST (0x4), NM_SETTING_WIRED_WAKE_ON_LAN_MULTICAST (0x8), NM_SETTING_WIRED_WAKE_ON_LAN_BROADCAST (0x10), NM_SETTING_WIRED_WAKE_ON_LAN_ARP (0x20), NM_SETTING_WIRED_WAKE_ON_LAN_MAGIC (0x40) or the special values NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE (0x8000) (to disable management of Wake-on-LAN in NetworkManager)." />
     <property name="wake-on-lan-password" name_upper="WAKE_ON_LAN_PASSWORD" type="string" description="If specified, the password used with magic-packet-based Wake-on-LAN, represented as an Ethernet MAC address.  If NULL, no password will be required." />
   </setting>
@@ -456,6 +458,7 @@
     <property name="seen-bssids" name_upper="SEEN_BSSIDS" type="array of string" default="[]" description="A list of BSSIDs (each BSSID formatted as a MAC address like &quot;00:11:22:33:44:55&quot;) that have been detected as part of the Wi-Fi network.  NetworkManager internally tracks previously seen BSSIDs. The property is only meant for reading and reflects the BSSID list of NetworkManager. The changes you make to this property will not be preserved." />
     <property name="ssid" name_upper="SSID" type="byte array" description="SSID of the Wi-Fi network. Must be specified." />
     <property name="tx-power" name_upper="TX_POWER" type="uint32" default="0" description="If non-zero, directs the device to use the specified transmit power. Units are dBm.  This property is highly driver dependent and not all devices support setting a static transmit power." />
+    <property name="wake-on-wlan" name_upper="WAKE_ON_WLAN" type="uint32" default="1" description="The NMSettingWirelessWakeOnWLan options to enable. Not all devices support all options. May be any combination of NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY (0x2), NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT (0x4), NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC (0x8), NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE (0x10), NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST (0x20), NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE (0x40), NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE (0x80), NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP (0x100) or the special values NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE (0x8000) (to disable management of Wake-on-LAN in NetworkManager)." />
   </setting>
   <setting name="802-11-wireless-security" description="Wi-Fi Security Settings" name_upper="WIRELESS_SECURITY" >
     <property name="auth-alg" name_upper="AUTH_ALG" type="string" description="When WEP is used (ie, key-mgmt = &quot;none&quot; or &quot;ieee8021x&quot;) indicate the 802.11 authentication algorithm required by the AP here.  One of &quot;open&quot; for Open System, &quot;shared&quot; for Shared Key, or &quot;leap&quot; for Cisco LEAP.  When using Cisco LEAP (ie, key-mgmt = &quot;ieee8021x&quot; and auth-alg = &quot;leap&quot;) the &quot;leap-username&quot; and &quot;leap-password&quot; properties must be specified." />
diff --git a/libnm/nm-settings-ifcfg-rh-docs.xml b/libnm/nm-settings-ifcfg-rh-docs.xml
index 03d935ea..bf041ab2 100644
--- a/libnm/nm-settings-ifcfg-rh-docs.xml
+++ b/libnm/nm-settings-ifcfg-rh-docs.xml
@@ -217,6 +217,10 @@ A negative value prevents DNS from other connections with greater values to be u
 IPV6_PRIVACY_PREFER_PUBLIC_IP: yes, no" default="no" example="IPV6_PRIVACY=rfc3041 IPV6_PRIVACY_PREFER_PUBLIC_IP=yes" description="Configure IPv6 Privacy Extensions for SLAAC (RFC4941)."/>
 <property name="addr-gen-mode" variable="IPV6_ADDR_GEN_MODE" format="" values="IPV6_ADDR_GEN_MODE: eui64, stable-privacy" default="eui64" example="IPV6_ADDR_GEN_MODE=stable-privacy" description="Configure IPv6 Stable Privacy addressing for SLAAC (RFC7217)."/>
 <property name="token" variable="IPV6_TOKEN" format="" values="" default="" example="IPV6_TOKEN=::53" description="The IPv6 tokenized interface identifier token"/>
+<property name="dhcp-duid" variable="DHCPV6_DUID(+)" format="" values="" default="" example="DHCPV6_DUID=LL; DHCPV6_DUID=0301deadbeef0001; DHCPV6_DUID=03:01:de:ad:be:ef:00:01" description="A string sent to the DHCPv6 server to identify the local machine.
+Apart from the special values &quot;lease&quot;, &quot;stable-llt&quot;, &quot;stable-ll&quot;, &quot;stable-uuid&quot;,
+&quot;llt&quot; and &quot;ll&quot; a binary value in hex format is expected. An hex string where
+each octet is separated by a colon is also accepted."/>
 </setting>
 <setting name="macsec">
 </setting>
diff --git a/libnm/nm-vpn-connection.c b/libnm/nm-vpn-connection.c
index 5a3c4e56..bc26d0b9 100644
--- a/libnm/nm-vpn-connection.c
+++ b/libnm/nm-vpn-connection.c
@@ -71,16 +71,9 @@ static guint signals[LAST_SIGNAL] = { 0 };
 const char *
 nm_vpn_connection_get_banner (NMVpnConnection *vpn)
 {
-	NMVpnConnectionPrivate *priv;
-
 	g_return_val_if_fail (NM_IS_VPN_CONNECTION (vpn), NULL);
 
-	priv = NM_VPN_CONNECTION_GET_PRIVATE (vpn);
-
-	if (priv->vpn_state != NM_VPN_CONNECTION_STATE_ACTIVATED)
-		return NULL;
-
-	return nm_str_not_empty (priv->banner);
+	return nm_str_not_empty (NM_VPN_CONNECTION_GET_PRIVATE (vpn)->banner);
 }
 
 /**
diff --git a/man/NetworkManager.8 b/man/NetworkManager.8
index c1156f20..862be9b6 100644
--- a/man/NetworkManager.8
+++ b/man/NetworkManager.8
@@ -2,12 +2,12 @@
 .\"     Title: NetworkManager
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 05/31/2018
+.\"      Date: 06/15/2018
 .\"    Manual: Network management daemons
-.\"    Source: NetworkManager 1.11.4
+.\"    Source: NetworkManager 1.11.90
 .\"  Language: English
 .\"
-.TH "NETWORKMANAGER" "8" "" "NetworkManager 1\&.11\&.4" "Network management daemons"
+.TH "NETWORKMANAGER" "8" "" "NetworkManager 1\&.11\&.90" "Network management daemons"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/NetworkManager.conf.5 b/man/NetworkManager.conf.5
index 2c272311..59962d9f 100644
--- a/man/NetworkManager.conf.5
+++ b/man/NetworkManager.conf.5
@@ -2,12 +2,12 @@
 .\"     Title: NetworkManager.conf
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 05/31/2018
+.\"      Date: 06/15/2018
 .\"    Manual: Configuration
-.\"    Source: NetworkManager 1.11.4
+.\"    Source: NetworkManager 1.11.90
 .\"  Language: English
 .\"
-.TH "NETWORKMANAGER\&.CONF" "5" "" "NetworkManager 1\&.11\&.4" "Configuration"
+.TH "NETWORKMANAGER\&.CONF" "5" "" "NetworkManager 1\&.11\&.90" "Configuration"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -109,12 +109,13 @@ plugins\-=remove\-me
 .PP
 \fIplugins\fR
 .RS 4
-Lists system settings plugin names separated by \*(Aq,\*(Aq\&. These plugins are used to read and write system\-wide connections\&. When multiple plugins are specified, the connections are read from all listed plugins\&. When writing connections, the plugins will be asked to save the connection in the order listed here; if the first plugin cannot write out that connection type (or can\*(Aqt write out any connections) the next plugin is tried, etc\&. If none of the plugins can save the connection, an error is returned to the user\&.
+Lists system settings plugin names separated by \*(Aq,\*(Aq\&. These plugins are used to read and write system\-wide connection profiles\&. When multiple plugins are specified, the connections are read from all listed plugins\&. When writing connections, the plugins will be asked to save the connection in the order listed here; if the first plugin cannot write out that connection type (or can\*(Aqt write out any connections) the next plugin is tried, etc\&. If none of the plugins can save the connection, an error is returned to the user\&.
 .sp
-If NetworkManager defines a distro\-specific network\-configuration plugin for your system, then that will normally be listed here\&. (See below for the available plugins\&.) Note that the
+The default value and the number of available plugins is distro\-specific\&. See
+the section called \(lqPLUGINS\(rq
+below for the available plugins\&. Note that NetworkManager\*(Aqs native
 keyfile
-plugin is always appended to the end of this list (if it doesn\*(Aqt already appear earlier in the list), so if there is no distro\-specific plugin for your system then you can leave this key unset and NetworkManager will fall back to using
-keyfile\&.
+plugin is always appended to the end of this list (if it doesn\*(Aqt already appear earlier in the list)\&.
 .RE
 .PP
 \fImonitor\-connection\-files\fR
@@ -267,7 +268,7 @@ by replacing it with a symlink\&.
 .sp
 file: NetworkManager will write
 /etc/resolv\&.conf
-as file\&. If it finds a symlink, it will follow the symlink and update the target instead\&.
+as file\&. If it finds a symlink to an existing target, it will follow the symlink and update the target instead\&. In no case will an existing symlink be replaced by a file\&. Note that older versions of NetworkManager behaved differently and would replace dangling symlinks with a plain file\&.
 .sp
 resolvconf: NetworkManager will run resolvconf to update the DNS configuration\&.
 .sp
@@ -654,6 +655,11 @@ If left unspecified, the default value for the interface type is used\&.
 If left unspecified, routes are only added to the main table\&. Note that this is different from explicitly selecting the main table 254, because of how NetworkManager removes extraneous routes from the tables\&.
 .RE
 .PP
+\fIipv6\&.dhcp\-duid\fR
+.RS 4
+If left unspecified, it defaults to "lease"\&.
+.RE
+.PP
 \fIipv6\&.dhcp\-timeout\fR
 .RS 4
 If left unspecified, the default value for the interface type is used\&.
@@ -1017,12 +1023,16 @@ enable=nm\-version\-min:1\&.3,nm\-version\-min:1\&.2\&.6,nm\-version\-min:1\&.0\
 .RE
 .SH "PLUGINS"
 .PP
+Settings plugins for reading and writing connection profiles\&. The number of available plugins is distribution specific\&.
+.PP
 \fIkeyfile\fR
 .RS 4
 The
 keyfile
 plugin is the generic plugin that supports all the connection types and capabilities that NetworkManager has\&. It writes files out in an \&.ini\-style format in
-/etc/NetworkManager/system\-connections\&.
+/etc/NetworkManager/system\-connections\&. See
+\fBnm-settings-keyfile\fR(5)
+for details about the file format\&.
 .sp
 The stored connection file may contain passwords, secrets and private keys in plain text, so it will be made readable only to root, and the plugin will ignore files that are readable or writable by any user or group other than root\&. See "Secret flag types" in
 \fBnm-settings\fR(5)
@@ -1040,7 +1050,11 @@ ifcfg\-rh
 implicitly enables
 ibft
 plugin, if it is available\&. This can be disabled by adding
-no\-ibft\&.
+no\-ibft\&. See
+/usr/share/doc/initscripts/sysconfig\&.txt
+and
+\fBnm-settings-ifcfg-rh\fR(5)
+for more information about the ifcfg file format\&.
 .RE
 .PP
 \fIifupdown\fR
diff --git a/man/NetworkManager.conf.xml b/man/NetworkManager.conf.xml
index 3308f68e..e2c6562b 100644
--- a/man/NetworkManager.conf.xml
+++ b/man/NetworkManager.conf.xml
@@ -132,7 +132,7 @@ plugins-=remove-me
           <para>
             Lists system settings plugin names separated by ','. These
             plugins are used to read and write system-wide
-            connections. When multiple plugins are specified, the
+            connection profiles. When multiple plugins are specified, the
             connections are read from all listed plugins. When writing
             connections, the plugins will be asked to save the
             connection in the order listed here; if the first plugin
@@ -142,15 +142,12 @@ plugins-=remove-me
             to the user.
           </para>
           <para>
-            If NetworkManager defines a distro-specific
-            network-configuration plugin for your system, then that
-            will normally be listed here. (See below for the available
-            plugins.) Note that the <literal>keyfile</literal> plugin
-            is always appended to the end of this list (if it doesn't
-            already appear earlier in the list), so if there is no
-            distro-specific plugin for your system then you can leave
-            this key unset and NetworkManager will fall back to using
-            <literal>keyfile</literal>.
+            The default value and the number of available plugins is
+            distro-specific. See <xref linkend="settings-plugins"/>
+            below for the available plugins.
+            Note that NetworkManager's native <literal>keyfile</literal>
+            plugin is always appended to the end of this list (if it doesn't
+            already appear earlier in the list).
           </para>
         </listitem>
       </varlistentry>
@@ -366,8 +363,11 @@ no-auto-default=*
         a symlink.</para>
         <para><literal>file</literal>: NetworkManager will write
         <filename>/etc/resolv.conf</filename> as file. If it finds
-        a symlink, it will follow the symlink and update the target
-        instead.</para>
+        a symlink to an existing target, it will follow the symlink and
+        update the target instead. In no case will an existing symlink
+        be replaced by a file. Note that older versions of NetworkManager
+        behaved differently and would replace dangling symlinks with a
+        plain file.</para>
         <para><literal>resolvconf</literal>: NetworkManager will run
         resolvconf to update the DNS configuration.</para>
         <para><literal>netconfig</literal>: NetworkManager will run
@@ -705,6 +705,10 @@ ipv6.ip6-privacy=0
           </para></listitem>
         </varlistentry>
         <varlistentry>
+          <term><varname>ipv6.dhcp-duid</varname></term>
+          <listitem><para>If left unspecified, it defaults to "lease".</para></listitem>
+        </varlistentry>
+        <varlistentry>
           <term><varname>ipv6.dhcp-timeout</varname></term>
           <listitem><para>If left unspecified, the default value for
            the interface type is used.</para></listitem>
@@ -1172,9 +1176,14 @@ enable=nm-version-min:1.3,nm-version-min:1.2.6,nm-version-min:1.0.16
     </para>
   </refsect1>
 
-  <refsect1>
+  <refsect1 id="settings-plugins">
     <title>Plugins</title>
 
+    <para>
+      Settings plugins for reading and writing connection profiles. The number of
+      available plugins is distribution specific.
+    </para>
+
     <variablelist>
       <varlistentry>
         <term><varname>keyfile</varname></term>
@@ -1185,6 +1194,8 @@ enable=nm-version-min:1.3,nm-version-min:1.2.6,nm-version-min:1.0.16
             capabilities that NetworkManager has. It writes files out
             in an .ini-style format in
             <filename>/etc/NetworkManager/system-connections</filename>.
+            See <link linkend='nm-settings-keyfile'><citerefentry><refentrytitle>nm-settings-keyfile</refentrytitle><manvolnum>5</manvolnum></citerefentry></link>
+            for details about the file format.
           </para>
           <para>
             The stored connection file may contain passwords, secrets and
@@ -1215,6 +1226,9 @@ enable=nm-version-min:1.3,nm-version-min:1.2.6,nm-version-min:1.0.16
             Enabling <literal>ifcfg-rh</literal> implicitly enables
             <literal>ibft</literal> plugin, if it is available.
             This can be disabled by adding <literal>no-ibft</literal>.
+            See <filename>/usr/share/doc/initscripts/sysconfig.txt</filename>
+            and <link linkend='nm-settings-ifcfg-rh'><citerefentry><refentrytitle>nm-settings-ifcfg-rh</refentrytitle><manvolnum>5</manvolnum></citerefentry></link>
+            for more information about the ifcfg file format.
           </para>
         </listitem>
       </varlistentry>
diff --git a/man/nm-online.1 b/man/nm-online.1
index c7f2c446..48bb8eff 100644
--- a/man/nm-online.1
+++ b/man/nm-online.1
@@ -2,12 +2,12 @@
 .\"     Title: nm-online
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 05/31/2018
+.\"      Date: 06/15/2018
 .\"    Manual: General Commands Manual
-.\"    Source: NetworkManager 1.11.4
+.\"    Source: NetworkManager 1.11.90
 .\"  Language: English
 .\"
-.TH "NM\-ONLINE" "1" "" "NetworkManager 1\&.11\&.4" "General Commands Manual"
+.TH "NM\-ONLINE" "1" "" "NetworkManager 1\&.11\&.90" "General Commands Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nm-openvswitch.7 b/man/nm-openvswitch.7
index 64a91317..9711cbf6 100644
--- a/man/nm-openvswitch.7
+++ b/man/nm-openvswitch.7
@@ -2,12 +2,12 @@
 .\"     Title: nm-openvswitch
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 05/31/2018
+.\"      Date: 06/15/2018
 .\"    Manual: OpenVSwitch support overview
-.\"    Source: NetworkManager 1.11.4
+.\"    Source: NetworkManager 1.11.90
 .\"  Language: English
 .\"
-.TH "NM\-OPENVSWITCH" "7" "" "NetworkManager 1\&.11\&.4" "OpenVSwitch support overview"
+.TH "NM\-OPENVSWITCH" "7" "" "NetworkManager 1\&.11\&.90" "OpenVSwitch support overview"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nm-settings-ifcfg-rh.5 b/man/nm-settings-ifcfg-rh.5
index 407182fd..4441a889 100644
--- a/man/nm-settings-ifcfg-rh.5
+++ b/man/nm-settings-ifcfg-rh.5
@@ -2,12 +2,12 @@
 .\"     Title: nm-settings-ifcfg-rh
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 05/31/2018
+.\"      Date: 06/15/2018
 .\"    Manual: Configuration
-.\"    Source: NetworkManager 1.11.4
+.\"    Source: NetworkManager 1.11.90
 .\"  Language: English
 .\"
-.TH "NM\-SETTINGS\-IFCFG\-RH" "5" "" "NetworkManager 1\&.11\&.4" "Configuration"
+.TH "NM\-SETTINGS\-IFCFG\-RH" "5" "" "NetworkManager 1\&.11\&.90" "Configuration"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -1727,6 +1727,7 @@ l l l l
 l l l l
 l l l l
 l l l l
+l l l l
 l l l l.
 T{
 method
@@ -1908,6 +1909,17 @@ The IPv6 tokenized interface identifier token\fB
 
 Example: \fRIPV6_TOKEN=::53
 T}
+T{
+dhcp\-duid
+T}:T{
+DHCPV6_DUID\fI(+)\fR
+T}:T{
+\ \&
+T}:T{
+A string sent to the DHCPv6 server to identify the local machine\&. Apart from the special values "lease", "stable\-llt", "stable\-ll", "stable\-uuid", "llt" and "ll" a binary value in hex format is expected\&. An hex string where each octet is separated by a colon is also accepted\&.\fB
+
+Example: \fRDHCPV6_DUID=LL; DHCPV6_DUID=0301deadbeef0001; DHCPV6_DUID=03:01:de:ad:be:ef:00:01
+T}
 .TE
 .sp 1
 .sp
diff --git a/man/nm-settings-ifcfg-rh.xml b/man/nm-settings-ifcfg-rh.xml
index 872f058b..75cc1ebc 100644
--- a/man/nm-settings-ifcfg-rh.xml
+++ b/man/nm-settings-ifcfg-rh.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-<refentry id="nm-settings-ifcfg-rh"><refentryinfo><title>nm-settings-ifcfg-rh</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-ifcfg-rh</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.11.4</refmiscinfo></refmeta><refnamediv><refname>nm-settings-ifcfg-rh</refname><refpurpose>Description of <emphasis>ifcfg-rh</emphasis> settings plugin</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
+<refentry id="nm-settings-ifcfg-rh"><refentryinfo><title>nm-settings-ifcfg-rh</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-ifcfg-rh</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.11.90</refmiscinfo></refmeta><refnamediv><refname>nm-settings-ifcfg-rh</refname><refpurpose>Description of <emphasis>ifcfg-rh</emphasis> settings plugin</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
           NetworkManager is based on the concept of connection profiles that contain
           network configuration (see <citerefentry><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details). The profiles can be
           stored in various formats. NetworkManager uses plugins for reading and writing
@@ -330,7 +330,9 @@ Example: </emphasis>IPV6_ADDR_GEN_MODE=stable-privacy<emphasis role="bold">
 
 Allowed values: </emphasis>IPV6_ADDR_GEN_MODE: eui64, stable-privacy</entry></row><row><entry align="left">token</entry><entry align="left">IPV6_TOKEN</entry><entry align="left"/><entry align="left">The IPv6 tokenized interface identifier token<emphasis role="bold">
 
-Example: </emphasis>IPV6_TOKEN=::53</entry></row></tbody></tgroup></table><table><title>ovs-bridge setting</title><tgroup cols="4"><thead><row><entry>Property</entry><entry>Ifcfg-rh Variable</entry><entry>Default</entry><entry>Description</entry></row></thead><tbody/></tgroup></table><table><title>ovs-interface setting</title><tgroup cols="4"><thead><row><entry>Property</entry><entry>Ifcfg-rh Variable</entry><entry>Default</entry><entry>Description</entry></row></thead><tbody/></tgroup></table><table><title>ovs-patch setting</title><tgroup cols="4"><thead><row><entry>Property</entry><entry>Ifcfg-rh Variable</entry><entry>Default</entry><entry>Description</entry></row></thead><tbody/></tgroup></table><table><title>ovs-port setting</title><tgroup cols="4"><thead><row><entry>Property</entry><entry>Ifcfg-rh Variable</entry><entry>Default</entry><entry>Description</entry></row></thead><tbody/></tgroup></table><table><title>proxy setting</title><tgroup cols="4"><thead><row><entry>Property</entry><entry>Ifcfg-rh Variable</entry><entry>Default</entry><entry>Description</entry></row></thead><tbody><row><entry align="left">method</entry><entry align="left">PROXY_METHOD<emphasis>(+)</emphasis></entry><entry align="left">none</entry><entry align="left">Method for proxy configuration. For "auto", WPAD is used for proxy configuration, or set the PAC file via PAC_URL or PAC_SCRIPT.<emphasis role="bold">
+Example: </emphasis>IPV6_TOKEN=::53</entry></row><row><entry align="left">dhcp-duid</entry><entry align="left">DHCPV6_DUID<emphasis>(+)</emphasis></entry><entry align="left"/><entry align="left">A string sent to the DHCPv6 server to identify the local machine. Apart from the special values "lease", "stable-llt", "stable-ll", "stable-uuid", "llt" and "ll" a binary value in hex format is expected. An hex string where each octet is separated by a colon is also accepted.<emphasis role="bold">
+
+Example: </emphasis>DHCPV6_DUID=LL; DHCPV6_DUID=0301deadbeef0001; DHCPV6_DUID=03:01:de:ad:be:ef:00:01</entry></row></tbody></tgroup></table><table><title>ovs-bridge setting</title><tgroup cols="4"><thead><row><entry>Property</entry><entry>Ifcfg-rh Variable</entry><entry>Default</entry><entry>Description</entry></row></thead><tbody/></tgroup></table><table><title>ovs-interface setting</title><tgroup cols="4"><thead><row><entry>Property</entry><entry>Ifcfg-rh Variable</entry><entry>Default</entry><entry>Description</entry></row></thead><tbody/></tgroup></table><table><title>ovs-patch setting</title><tgroup cols="4"><thead><row><entry>Property</entry><entry>Ifcfg-rh Variable</entry><entry>Default</entry><entry>Description</entry></row></thead><tbody/></tgroup></table><table><title>ovs-port setting</title><tgroup cols="4"><thead><row><entry>Property</entry><entry>Ifcfg-rh Variable</entry><entry>Default</entry><entry>Description</entry></row></thead><tbody/></tgroup></table><table><title>proxy setting</title><tgroup cols="4"><thead><row><entry>Property</entry><entry>Ifcfg-rh Variable</entry><entry>Default</entry><entry>Description</entry></row></thead><tbody><row><entry align="left">method</entry><entry align="left">PROXY_METHOD<emphasis>(+)</emphasis></entry><entry align="left">none</entry><entry align="left">Method for proxy configuration. For "auto", WPAD is used for proxy configuration, or set the PAC file via PAC_URL or PAC_SCRIPT.<emphasis role="bold">
 
 Allowed values: </emphasis>none, auto</entry></row><row><entry align="left">browser-only</entry><entry align="left">BROWSER_ONLY<emphasis>(+)</emphasis></entry><entry align="left">no</entry><entry align="left">Whether the proxy configuration is for browser only.</entry></row><row><entry align="left">pac-url</entry><entry align="left">PAC_URL<emphasis>(+)</emphasis></entry><entry align="left"/><entry align="left">URL for PAC file.<emphasis role="bold">
 
diff --git a/man/nm-settings-keyfile.5 b/man/nm-settings-keyfile.5
index c142d247..84e4569b 100644
--- a/man/nm-settings-keyfile.5
+++ b/man/nm-settings-keyfile.5
@@ -2,12 +2,12 @@
 .\"     Title: nm-settings-keyfile
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 05/31/2018
+.\"      Date: 06/15/2018
 .\"    Manual: Configuration
-.\"    Source: NetworkManager 1.11.4
+.\"    Source: NetworkManager 1.11.90
 .\"  Language: English
 .\"
-.TH "NM\-SETTINGS\-KEYFILE" "5" "" "NetworkManager 1\&.11\&.4" "Configuration"
+.TH "NM\-SETTINGS\-KEYFILE" "5" "" "NetworkManager 1\&.11\&.90" "Configuration"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nm-settings-keyfile.xml b/man/nm-settings-keyfile.xml
index eeff84a8..cd23f956 100644
--- a/man/nm-settings-keyfile.xml
+++ b/man/nm-settings-keyfile.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-<refentry id="nm-settings-keyfile"><refentryinfo><title>nm-settings-keyfile</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-keyfile</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.11.4</refmiscinfo></refmeta><refnamediv><refname>nm-settings-keyfile</refname><refpurpose>Description of <emphasis>keyfile</emphasis> settings plugin</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
+<refentry id="nm-settings-keyfile"><refentryinfo><title>nm-settings-keyfile</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-keyfile</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.11.90</refmiscinfo></refmeta><refnamediv><refname>nm-settings-keyfile</refname><refpurpose>Description of <emphasis>keyfile</emphasis> settings plugin</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
           NetworkManager is based on the concept of connection profiles that contain
           network configuration (see <citerefentry><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details). The profiles can be
           stored in various formats. NetworkManager uses plugins for reading and writing
diff --git a/man/nm-settings.5 b/man/nm-settings.5
index 16bc94c7..ec6a17c4 100644
--- a/man/nm-settings.5
+++ b/man/nm-settings.5
@@ -2,12 +2,12 @@
 .\"     Title: nm-settings
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 05/31/2018
+.\"      Date: 06/15/2018
 .\"    Manual: Configuration
-.\"    Source: NetworkManager 1.11.4
+.\"    Source: NetworkManager 1.11.90
 .\"  Language: English
 .\"
-.TH "NM\-SETTINGS" "5" "" "NetworkManager 1\&.11\&.4" "Configuration"
+.TH "NM\-SETTINGS" "5" "" "NetworkManager 1\&.11\&.90" "Configuration"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -256,7 +256,7 @@ string
 T}:T{
 \ \&
 T}:T{
-This represents the identity of the connection used for various purposes\&. It allows to configure multiple profiles to share the identity\&. Also, the stable\-id can contain placeholders that are substituted dynamically and deterministically depending on the context\&. The stable\-id is used for generating IPv6 stable private addresses with ipv6\&.addr\-gen\-mode=stable\-privacy\&. It is also used to seed the generated cloned MAC address for ethernet\&.cloned\-mac\-address=stable and wifi\&.cloned\-mac\-address=stable\&. It is also used as DHCP client identifier with ipv4\&.dhcp\-client\-id=stable\&. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm\&. For example, a per\-host key is commonly also included, so that different systems end up generating different IDs\&. Or with ipv6\&.addr\-gen\-mode=stable\-privacy, also the device\*(Aqs name is included, so that different interfaces yield different addresses\&. The \*(Aq$\*(Aq character is treated special to perform dynamic substitutions at runtime\&. Currently supported are "${CONNECTION}", "${DEVICE}", "${BOOT}", "${RANDOM}"\&. These effectively create unique IDs per\-connection, per\-device, per\-boot, or every time\&. Note that "${DEVICE}" corresponds the the interface name of the device\&. Any unrecognized patterns following \*(Aq$\*(Aq are treated verbatim, however are reserved for future use\&. You are thus advised to avoid \*(Aq$\*(Aq or escape it as "$$"\&. For example, set it to "${CONNECTION}\-${BOOT}\-${DEVICE}" to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates\&. If the value is unset, a global connection default is consulted\&. If the value is still unset, the default is similar to "${CONNECTION}" and uses a unique, fixed ID for the connection\&.
+This represents the identity of the connection used for various purposes\&. It allows to configure multiple profiles to share the identity\&. Also, the stable\-id can contain placeholders that are substituted dynamically and deterministically depending on the context\&. The stable\-id is used for generating IPv6 stable private addresses with ipv6\&.addr\-gen\-mode=stable\-privacy\&. It is also used to seed the generated cloned MAC address for ethernet\&.cloned\-mac\-address=stable and wifi\&.cloned\-mac\-address=stable\&. It is also used as DHCP client identifier with ipv4\&.dhcp\-client\-id=stable and to derive the DHCP DUID with ipv6\&.dhcp\-duid=stable\-[llt,ll,uuid]\&. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm\&. For example, a per\-host key is commonly also included, so that different systems end up generating different IDs\&. Or with ipv6\&.addr\-gen\-mode=stable\-privacy, also the device\*(Aqs name is included, so that different interfaces yield different addresses\&. The \*(Aq$\*(Aq character is treated special to perform dynamic substitutions at runtime\&. Currently supported are "${CONNECTION}", "${DEVICE}", "${BOOT}", "${RANDOM}"\&. These effectively create unique IDs per\-connection, per\-device, per\-boot, or every time\&. Note that "${DEVICE}" corresponds the the interface name of the device\&. Any unrecognized patterns following \*(Aq$\*(Aq are treated verbatim, however are reserved for future use\&. You are thus advised to avoid \*(Aq$\*(Aq or escape it as "$$"\&. For example, set it to "${CONNECTION}\-${BOOT}\-${DEVICE}" to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates\&. If the value is unset, a global connection default is consulted\&. If the value is still unset, the default is similar to "${CONNECTION}" and uses a unique, fixed ID for the connection\&.
 T}
 T{
 timestamp
@@ -1979,6 +1979,7 @@ l l l l
 l l l l
 l l l l
 l l l l
+l l l l
 l l l l.
 T{
 addr\-gen\-mode
@@ -2017,6 +2018,15 @@ T}:T{
 Timeout in milliseconds used to check for the presence of duplicate IP addresses on the network\&.  If an address conflict is detected, the activation will fail\&.  A zero value means that no duplicate address detection is performed, \-1 means the default value (either configuration ipvx\&.dad\-timeout override or zero)\&.  A value greater than zero is a timeout in milliseconds\&. The property is currently implemented only for IPv4\&.
 T}
 T{
+dhcp\-duid
+T}:T{
+string
+T}:T{
+\ \&
+T}:T{
+A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp client to identify itself to DHCPv6 servers (RFC 3315)\&. The DUID is carried in the Client Identifier option\&. If the property is a hex string (\*(Aqaa:bb:cc\*(Aq) it is interpreted as a binary DUID and filled as an opaque value in the Client Identifier option\&. The special value "lease" will retrieve the DUID previously used from the lease file belonging to the connection\&. If no DUID is found and "dhclient" is the configured dhcp client, the DUID is searched in the system\-wide dhclient lease file\&. If still no DUID is found, or another dhcp client is used, a global and permanent DUID\-UUID (RFC 6355) will be generated based on the machine\-id\&. The special values "llt" and "ll" will generate a DUID of type LLT or LL (see RFC 3315) based on the current MAC address of the device\&. In order to try providing a stable DUID\-LLT, the time field will contain a constant timestamp that is used globally (for all profiles) and persisted to disk\&. The special values "stable\-llt", "stable\-ll" and "stable\-uuid" will generate a DUID of the corresponding type, derived from the connection\*(Aqs stable\-id and a per\-host unique key\&. So, the link\-layer address of "stable\-ll" and "stable\-llt" will be a generated address derived from the stable id\&. The DUID\-LLT time value in the "stable\-llt" option will be picked among a static timespan of three years (the upper bound of the interval is the same constant timestamp used in "llt")\&. When the property is unset, the global value provided for "ipv6\&.dhcp\-duid" is used\&. If no global value is provided, the default "lease" value is assumed\&.
+T}
+T{
 dhcp\-hostname
 T}:T{
 string
@@ -2380,6 +2390,7 @@ l l l l
 l l l l
 l l l l
 l l l l
+l l l l
 l l l l.
 T{
 encrypt
@@ -2454,6 +2465,15 @@ T}:T{
 The port component of the SCI (Secure Channel Identifier), between 1 and 65534\&.
 T}
 T{
+send\-sci
+T}:T{
+boolean
+T}:T{
+TRUE
+T}:T{
+Specifies whether the SCI (Secure Channel Identifier) is included in every packet\&.
+T}
+T{
 validation
 T}:T{
 int32
@@ -3415,7 +3435,7 @@ string
 T}:T{
 "roundrobin"
 T}:T{
-Corresponds to the teamd runner\&.name\&. Permitted values are: "roundrobin", "broadcast", "activebackup", "loadbalance", "lacp"\&. When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value)\&.
+Corresponds to the teamd runner\&.name\&. Permitted values are: "roundrobin", "broadcast", "activebackup", "loadbalance", "lacp", "random"\&. When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value)\&.
 T}
 T{
 runner\-active
@@ -4184,7 +4204,7 @@ boolean
 T}:T{
 FALSE
 T}:T{
-If TRUE, enforce auto\-negotiation of port speed and duplex mode\&.  If FALSE, "speed" and "duplex" properties should be both set or link configuration will be skipped\&.
+When TRUE, enforce auto\-negotiation of speed and duplex mode\&. If "speed" and "duplex" properties are both specified, only that single mode will be advertised and accepted during the link auto\-negotiation process: this works only for BASE\-T 802\&.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory\&. When FALSE, "speed" and "duplex" properties should be both set or link configuration will be skipped\&.
 T}
 T{
 cloned\-mac\-address
@@ -4202,7 +4222,7 @@ string
 T}:T{
 \ \&
 T}:T{
-Can be specified only when "auto\-negotiate" is "off"\&. In that case, statically configures the device to use that specified duplex mode, either "half" or "full"\&. Must be set together with the "speed" property if specified\&. Before specifying a duplex mode be sure your device supports it\&.
+When a value is set, either "half" or "full", configures the device to use the specified duplex mode\&. If "auto\-negotiate" is "yes" the specified duplex mode will be the only one advertised during link negotiation: this works only for BASE\-T 802\&.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory\&. If the value is unset (the default), the link configuration will be either skipped (if "auto\-negotiate" is "no", the default) or will be auto\-negotiated (if "auto\-negotiate" is "yes") and the local device will advertise all the supported duplex modes\&. Must be set together with the "speed" property if specified\&. Before specifying a duplex mode be sure your device supports it\&.
 T}
 T{
 generate\-mac\-address\-mask
@@ -4292,7 +4312,7 @@ uint32
 T}:T{
 0
 T}:T{
-Can be set to a value greater than zero only when "auto\-negotiate" is "off"\&. In that case, statically configures the device to use that specified speed\&. In Mbit/s, ie 100 == 100Mbit/s\&. Must be set together with the "duplex" property when non\-zero\&. Before specifying a speed value be sure your device supports it\&.
+When a value grater than 0 is set, configures the device to use the specified speed\&. If "auto\-negotiate" is "yes" the specified speed will be the only one advertised during link negotiation: this works only for BASE\-T 802\&.3 specifications and is useful for enforcing gigabit speeds, as in this case link negotiation is mandatory\&. If the value is unset (0, the default), the link configuration will be either skipped (if "auto\-negotiate" is "no", the default) or will be auto\-negotiated (if "auto\-negotiate" is "yes") and the local device will advertise all the supported speeds\&. In Mbit/s, ie 100 == 100Mbit/s\&. Must be set together with the "duplex" property when non\-zero\&. Before specifying a speed value be sure your device supports it\&.
 T}
 T{
 wake\-on\-lan
@@ -4348,6 +4368,7 @@ l l l l
 l l l l
 l l l l
 l l l l
+l l l l
 l l l l.
 T{
 assigned\-mac\-address
@@ -4520,6 +4541,15 @@ T}:T{
 T}:T{
 If non\-zero, directs the device to use the specified transmit power\&. Units are dBm\&.  This property is highly driver dependent and not all devices support setting a static transmit power\&.
 T}
+T{
+wake\-on\-wlan
+T}:T{
+uint32
+T}:T{
+1
+T}:T{
+The NMSettingWirelessWakeOnWLan options to enable\&. Not all devices support all options\&. May be any combination of NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY (0x2), NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT (0x4), NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC (0x8), NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE (0x10), NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST (0x20), NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE (0x40), NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE (0x80), NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP (0x100) or the special values NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE (0x8000) (to disable management of Wake\-on\-LAN in NetworkManager)\&.
+T}
 .TE
 .sp 1
 .SS "802\-11\-wireless\-security setting"
diff --git a/man/nm-settings.xml b/man/nm-settings.xml
index 35112226..9ffde4e5 100644
--- a/man/nm-settings.xml
+++ b/man/nm-settings.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-<refentry id="nm-settings"><refentryinfo><title>nm-settings</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.11.4</refmiscinfo></refmeta><refnamediv><refname>nm-settings</refname><refpurpose>Description of settings and properties of NetworkManager connection profiles</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
+<refentry id="nm-settings"><refentryinfo><title>nm-settings</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.11.90</refmiscinfo></refmeta><refnamediv><refname>nm-settings</refname><refpurpose>Description of settings and properties of NetworkManager connection profiles</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
           NetworkManager is based on a concept of connection profiles, sometimes referred to as
           connections only. These connection profiles contain a network configuration. When
           NetworkManager activates a connection profile on a network device the configuration will
@@ -51,7 +51,7 @@
     <row><entry align="left" id="nm-settings.property.connection.read-only">read-only</entry><entry align="left">boolean</entry><entry align="left">FALSE</entry><entry>FALSE if the connection can be modified using the provided settings service's D-Bus interface with the right privileges, or TRUE if the connection is read-only and cannot be modified.</entry></row>
     <row><entry align="left" id="nm-settings.property.connection.secondaries">secondaries</entry><entry align="left">array of string</entry><entry align="left">[]</entry><entry>List of connection UUIDs that should be activated when the base connection itself is activated. Currently only VPN connections are supported.</entry></row>
     <row><entry align="left" id="nm-settings.property.connection.slave-type">slave-type</entry><entry align="left">string</entry><entry align="left"/><entry>Setting name of the device type of this slave's master connection (eg, "bond"), or NULL if this connection is not a slave.</entry></row>
-    <row><entry align="left" id="nm-settings.property.connection.stable-id">stable-id</entry><entry align="left">string</entry><entry align="left"/><entry>This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The '$' character is treated special to perform dynamic substitutions at runtime. Currently supported are "${CONNECTION}", "${DEVICE}", "${BOOT}", "${RANDOM}". These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that "${DEVICE}" corresponds the the interface name of the device. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as "$$". For example, set it to "${CONNECTION}-${BOOT}-${DEVICE}" to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to "${CONNECTION}" and uses a unique, fixed ID for the connection.</entry></row>
+    <row><entry align="left" id="nm-settings.property.connection.stable-id">stable-id</entry><entry align="left">string</entry><entry align="left"/><entry>This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable and to derive the DHCP DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid]. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The '$' character is treated special to perform dynamic substitutions at runtime. Currently supported are "${CONNECTION}", "${DEVICE}", "${BOOT}", "${RANDOM}". These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that "${DEVICE}" corresponds the the interface name of the device. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as "$$". For example, set it to "${CONNECTION}-${BOOT}-${DEVICE}" to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to "${CONNECTION}" and uses a unique, fixed ID for the connection.</entry></row>
     <row><entry align="left" id="nm-settings.property.connection.timestamp">timestamp</entry><entry align="left">uint64</entry><entry align="left">0</entry><entry>The time, in seconds since the Unix Epoch, that the connection was last _successfully_ fully activated. NetworkManager updates the connection timestamp periodically when the connection is active to ensure that an active connection has the latest timestamp. The property is only meant for reading (changes to this property will not be preserved).</entry></row>
     <row><entry align="left" id="nm-settings.property.connection.type">type</entry><entry align="left">string</entry><entry align="left"/><entry>Base type of the connection. For hardware-dependent connections, should contain the setting name of the hardware-type specific setting (ie, "802-3-ethernet" or "802-11-wireless" or "bluetooth", etc), and for non-hardware dependent connections like VPN or otherwise, should contain the setting name of that setting type (ie, "vpn" or "bridge", etc).</entry></row>
     <row><entry align="left" id="nm-settings.property.connection.uuid">uuid</entry><entry align="left">string</entry><entry align="left"/><entry>A universally unique identifier for the connection, for example generated with libuuid.  It should be assigned when the connection is created, and never changed as long as the connection still applies to the same network.  For example, it should not be changed when the "id" property or NMSettingIP4Config changes, but might need to be re-created when the Wi-Fi SSID, mobile broadband network provider, or "type" property changes. The UUID must be in the format "2815492f-7e56-435e-b2e9-246bd7cdc664" (ie, contains only hexadecimal characters and "-").</entry></row>
@@ -229,6 +229,7 @@
     <row><entry align="left" id="nm-settings.property.ipv6.address-data">address-data</entry><entry align="left">array of vardict</entry><entry align="left"/><entry>Array of IPv6 addresses. Each address dictionary contains at least 'address' and 'prefix' entries, containing the IP address as a string, and the prefix length as a uint32. Additional attributes may also exist on some addresses.</entry></row>
     <row><entry align="left" id="nm-settings.property.ipv6.addresses">addresses</entry><entry align="left">array of legacy IPv6 address struct (a(ayuay))</entry><entry align="left">[]</entry><entry>Deprecated in favor of the 'address-data' and 'gateway' properties, but this can be used for backward-compatibility with older daemons. Note that if you send this property the daemon will ignore 'address-data' and 'gateway'.  Array of IPv6 address structures.  Each IPv6 address structure is composed of an IPv6 address, a prefix length (1 - 128), and an IPv6 gateway address. The gateway may be zeroed out if no gateway exists for that subnet.</entry></row>
     <row><entry align="left" id="nm-settings.property.ipv6.dad-timeout">dad-timeout</entry><entry align="left">int32</entry><entry align="left">-1</entry><entry>Timeout in milliseconds used to check for the presence of duplicate IP addresses on the network.  If an address conflict is detected, the activation will fail.  A zero value means that no duplicate address detection is performed, -1 means the default value (either configuration ipvx.dad-timeout override or zero).  A value greater than zero is a timeout in milliseconds. The property is currently implemented only for IPv4.</entry></row>
+    <row><entry align="left" id="nm-settings.property.ipv6.dhcp-duid">dhcp-duid</entry><entry align="left">string</entry><entry align="left"/><entry>A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp client to identify itself to DHCPv6 servers (RFC 3315). The DUID is carried in the Client Identifier option. If the property is a hex string ('aa:bb:cc') it is interpreted as a binary DUID and filled as an opaque value in the Client Identifier option. The special value "lease" will retrieve the DUID previously used from the lease file belonging to the connection. If no DUID is found and "dhclient" is the configured dhcp client, the DUID is searched in the system-wide dhclient lease file. If still no DUID is found, or another dhcp client is used, a global and permanent DUID-UUID (RFC 6355) will be generated based on the machine-id. The special values "llt" and "ll" will generate a DUID of type LLT or LL (see RFC 3315) based on the current MAC address of the device. In order to try providing a stable DUID-LLT, the time field will contain a constant timestamp that is used globally (for all profiles) and persisted to disk. The special values "stable-llt", "stable-ll" and "stable-uuid" will generate a DUID of the corresponding type, derived from the connection's stable-id and a per-host unique key. So, the link-layer address of "stable-ll" and "stable-llt" will be a generated address derived from the stable id. The DUID-LLT time value in the "stable-llt" option will be picked among a static timespan of three years (the upper bound of the interval is the same constant timestamp used in "llt"). When the property is unset, the global value provided for "ipv6.dhcp-duid" is used. If no global value is provided, the default "lease" value is assumed.</entry></row>
     <row><entry align="left" id="nm-settings.property.ipv6.dhcp-hostname">dhcp-hostname</entry><entry align="left">string</entry><entry align="left"/><entry>If the "dhcp-send-hostname" property is TRUE, then the specified name will be sent to the DHCP server when acquiring a lease. This property and "dhcp-fqdn" are mutually exclusive and cannot be set at the same time.</entry></row>
     <row><entry align="left" id="nm-settings.property.ipv6.dhcp-send-hostname">dhcp-send-hostname</entry><entry align="left">boolean</entry><entry align="left">TRUE</entry><entry>If TRUE, a hostname is sent to the DHCP server when acquiring a lease. Some DHCP servers use this hostname to update DNS databases, essentially providing a static hostname for the computer.  If the "dhcp-hostname" property is NULL and this property is TRUE, the current persistent hostname of the computer is sent.</entry></row>
     <row><entry align="left" id="nm-settings.property.ipv6.dhcp-timeout">dhcp-timeout</entry><entry align="left">int32</entry><entry align="left">0</entry><entry>A timeout for a DHCP transaction in seconds.</entry></row>
@@ -275,6 +276,7 @@
     <row><entry align="left" id="nm-settings.property.macsec.name">name</entry><entry align="left">string</entry><entry align="left">macsec</entry><entry>The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example "ppp" or "wireless" or "wired".</entry></row>
     <row><entry align="left" id="nm-settings.property.macsec.parent">parent</entry><entry align="left">string</entry><entry align="left"/><entry>If given, specifies the parent interface name or parent connection UUID from which this MACSEC interface should be created.  If this property is not specified, the connection must contain an "802-3-ethernet" setting with a "mac-address" property.</entry></row>
     <row><entry align="left" id="nm-settings.property.macsec.port">port</entry><entry align="left">int32</entry><entry align="left">1</entry><entry>The port component of the SCI (Secure Channel Identifier), between 1 and 65534.</entry></row>
+    <row><entry align="left" id="nm-settings.property.macsec.send-sci">send-sci</entry><entry align="left">boolean</entry><entry align="left">TRUE</entry><entry>Specifies whether the SCI (Secure Channel Identifier) is included in every packet.</entry></row>
     <row><entry align="left" id="nm-settings.property.macsec.validation">validation</entry><entry align="left">int32</entry><entry align="left">2</entry><entry>Specifies the validation mode for incoming frames.</entry></row>
   </tbody></tgroup></informaltable></refsect2>
   <refsect2><title>macvlan setting</title><para>MAC VLAN Settings.</para><informaltable><tgroup cols="4"><thead><row><entry>Key Name</entry><entry>Value Type</entry><entry>Default Value</entry><entry>Value Description</entry></row></thead><tbody>
@@ -372,7 +374,7 @@
     <row><entry align="left" id="nm-settings.property.team.name">name</entry><entry align="left">string</entry><entry align="left">team</entry><entry>The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example "ppp" or "wireless" or "wired".</entry></row>
     <row><entry align="left" id="nm-settings.property.team.notify-peers-count">notify-peers-count</entry><entry align="left">int32</entry><entry align="left">0</entry><entry>Corresponds to the teamd notify_peers.count.</entry></row>
     <row><entry align="left" id="nm-settings.property.team.notify-peers-interval">notify-peers-interval</entry><entry align="left">int32</entry><entry align="left">0</entry><entry>Corresponds to the teamd notify_peers.interval.</entry></row>
-    <row><entry align="left" id="nm-settings.property.team.runner">runner</entry><entry align="left">string</entry><entry align="left">"roundrobin"</entry><entry>Corresponds to the teamd runner.name. Permitted values are: "roundrobin", "broadcast", "activebackup", "loadbalance", "lacp". When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value).</entry></row>
+    <row><entry align="left" id="nm-settings.property.team.runner">runner</entry><entry align="left">string</entry><entry align="left">"roundrobin"</entry><entry>Corresponds to the teamd runner.name. Permitted values are: "roundrobin", "broadcast", "activebackup", "loadbalance", "lacp", "random". When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value).</entry></row>
     <row><entry align="left" id="nm-settings.property.team.runner-active">runner-active</entry><entry align="left">boolean</entry><entry align="left">FALSE</entry><entry>Corresponds to the teamd runner.active.</entry></row>
     <row><entry align="left" id="nm-settings.property.team.runner-agg-select-policy">runner-agg-select-policy</entry><entry align="left">string</entry><entry align="left"/><entry>Corresponds to the teamd runner.agg_select_policy.</entry></row>
     <row><entry align="left" id="nm-settings.property.team.runner-fast-rate">runner-fast-rate</entry><entry align="left">boolean</entry><entry align="left">FALSE</entry><entry>Corresponds to the teamd runner.fast_rate.</entry></row>
@@ -450,9 +452,9 @@
   </tbody></tgroup></informaltable></refsect2>
   <refsect2><title>802-3-ethernet setting</title><para>Wired Ethernet Settings.</para><informaltable><tgroup cols="4"><thead><row><entry>Key Name</entry><entry>Value Type</entry><entry>Default Value</entry><entry>Value Description</entry></row></thead><tbody>
     <row><entry align="left" id="nm-settings.property.802-3-ethernet.assigned-mac-address">assigned-mac-address</entry><entry align="left">string</entry><entry align="left"/><entry>The new field for the cloned MAC address. It can be either a hardware address in ASCII representation, or one of the special values "preserve", "permanent", "random" or "stable". This field replaces the deprecated "cloned-mac-address" on D-Bus, which can only contain explict hardware addresses. Note that this property only exists in D-Bus API. libnm and nmcli continue to call this property "cloned-mac-address".</entry></row>
-    <row><entry align="left" id="nm-settings.property.802-3-ethernet.auto-negotiate">auto-negotiate</entry><entry align="left">boolean</entry><entry align="left">FALSE</entry><entry>If TRUE, enforce auto-negotiation of port speed and duplex mode.  If FALSE, "speed" and "duplex" properties should be both set or link configuration will be skipped.</entry></row>
+    <row><entry align="left" id="nm-settings.property.802-3-ethernet.auto-negotiate">auto-negotiate</entry><entry align="left">boolean</entry><entry align="left">FALSE</entry><entry>When TRUE, enforce auto-negotiation of speed and duplex mode. If "speed" and "duplex" properties are both specified, only that single mode will be advertised and accepted during the link auto-negotiation process: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. When FALSE, "speed" and "duplex" properties should be both set or link configuration will be skipped.</entry></row>
     <row><entry align="left" id="nm-settings.property.802-3-ethernet.cloned-mac-address">cloned-mac-address</entry><entry align="left">byte array</entry><entry align="left"/><entry>This D-Bus field is deprecated in favor of "assigned-mac-address" which is more flexible and allows specifying special variants like "random". For libnm and nmcli, this field is called "cloned-mac-address".</entry></row>
-    <row><entry align="left" id="nm-settings.property.802-3-ethernet.duplex">duplex</entry><entry align="left">string</entry><entry align="left"/><entry>Can be specified only when "auto-negotiate" is "off". In that case, statically configures the device to use that specified duplex mode, either "half" or "full". Must be set together with the "speed" property if specified. Before specifying a duplex mode be sure your device supports it.</entry></row>
+    <row><entry align="left" id="nm-settings.property.802-3-ethernet.duplex">duplex</entry><entry align="left">string</entry><entry align="left"/><entry>When a value is set, either "half" or "full", configures the device to use the specified duplex mode. If "auto-negotiate" is "yes" the specified duplex mode will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. If the value is unset (the default), the link configuration will be either skipped (if "auto-negotiate" is "no", the default) or will be auto-negotiated (if "auto-negotiate" is "yes") and the local device will advertise all the supported duplex modes. Must be set together with the "speed" property if specified. Before specifying a duplex mode be sure your device supports it.</entry></row>
     <row><entry align="left" id="nm-settings.property.802-3-ethernet.generate-mac-address-mask">generate-mac-address-mask</entry><entry align="left">string</entry><entry align="left"/><entry>With "cloned-mac-address" setting "random" or "stable", by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting "FE:FF:FF:00:00:00" means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the "random" or "stable" algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of "FE:FF:FF:00:00:00 68:F7:28:00:00:00" will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of "02:00:00:00:00:00 00:00:00:00:00:00" will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, "02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00" will create a fully scrambled MAC address, randomly locally or globally administered.</entry></row>
     <row><entry align="left" id="nm-settings.property.802-3-ethernet.mac-address">mac-address</entry><entry align="left">byte array</entry><entry align="left"/><entry>If specified, this connection will only apply to the Ethernet device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing).</entry></row>
     <row><entry align="left" id="nm-settings.property.802-3-ethernet.mac-address-blacklist">mac-address-blacklist</entry><entry align="left">array of string</entry><entry align="left">[]</entry><entry>If specified, this connection will never apply to the Ethernet device whose permanent MAC address matches an address in the list.  Each MAC address is in the standard hex-digits-and-colons notation (00:11:22:33:44:55).</entry></row>
@@ -462,7 +464,7 @@
     <row><entry align="left" id="nm-settings.property.802-3-ethernet.s390-nettype">s390-nettype</entry><entry align="left">string</entry><entry align="left"/><entry>s390 network device type; one of "qeth", "lcs", or "ctc", representing the different types of virtual network devices available on s390 systems.</entry></row>
     <row><entry align="left" id="nm-settings.property.802-3-ethernet.s390-options">s390-options</entry><entry align="left">dict of string to string</entry><entry align="left">{}</entry><entry>Dictionary of key/value pairs of s390-specific device options.  Both keys and values must be strings.  Allowed keys include "portno", "layer2", "portname", "protocol", among others.  Key names must contain only alphanumeric characters (ie, [a-zA-Z0-9]).</entry></row>
     <row><entry align="left" id="nm-settings.property.802-3-ethernet.s390-subchannels">s390-subchannels</entry><entry align="left">array of string</entry><entry align="left">[]</entry><entry>Identifies specific subchannels that this network device uses for communication with z/VM or s390 host.  Like the "mac-address" property for non-z/VM devices, this property can be used to ensure this connection only applies to the network device that uses these subchannels.  The list should contain exactly 3 strings, and each string may only be composed of hexadecimal characters and the period (.) character.</entry></row>
-    <row><entry align="left" id="nm-settings.property.802-3-ethernet.speed">speed</entry><entry align="left">uint32</entry><entry align="left">0</entry><entry>Can be set to a value greater than zero only when "auto-negotiate" is "off". In that case, statically configures the device to use that specified speed. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the "duplex" property when non-zero. Before specifying a speed value be sure your device supports it.</entry></row>
+    <row><entry align="left" id="nm-settings.property.802-3-ethernet.speed">speed</entry><entry align="left">uint32</entry><entry align="left">0</entry><entry>When a value grater than 0 is set, configures the device to use the specified speed. If "auto-negotiate" is "yes" the specified speed will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabit speeds, as in this case link negotiation is mandatory. If the value is unset (0, the default), the link configuration will be either skipped (if "auto-negotiate" is "no", the default) or will be auto-negotiated (if "auto-negotiate" is "yes") and the local device will advertise all the supported speeds. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the "duplex" property when non-zero. Before specifying a speed value be sure your device supports it.</entry></row>
     <row><entry align="left" id="nm-settings.property.802-3-ethernet.wake-on-lan">wake-on-lan</entry><entry align="left">uint32</entry><entry align="left">1</entry><entry>The NMSettingWiredWakeOnLan options to enable. Not all devices support all options. May be any combination of NM_SETTING_WIRED_WAKE_ON_LAN_PHY (0x2), NM_SETTING_WIRED_WAKE_ON_LAN_UNICAST (0x4), NM_SETTING_WIRED_WAKE_ON_LAN_MULTICAST (0x8), NM_SETTING_WIRED_WAKE_ON_LAN_BROADCAST (0x10), NM_SETTING_WIRED_WAKE_ON_LAN_ARP (0x20), NM_SETTING_WIRED_WAKE_ON_LAN_MAGIC (0x40) or the special values NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE (0x8000) (to disable management of Wake-on-LAN in NetworkManager).</entry></row>
     <row><entry align="left" id="nm-settings.property.802-3-ethernet.wake-on-lan-password">wake-on-lan-password</entry><entry align="left">string</entry><entry align="left"/><entry>If specified, the password used with magic-packet-based Wake-on-LAN, represented as an Ethernet MAC address.  If NULL, no password will be required.</entry></row>
   </tbody></tgroup></informaltable></refsect2>
@@ -486,6 +488,7 @@
     <row><entry align="left" id="nm-settings.property.802-11-wireless.seen-bssids">seen-bssids</entry><entry align="left">array of string</entry><entry align="left">[]</entry><entry>A list of BSSIDs (each BSSID formatted as a MAC address like "00:11:22:33:44:55") that have been detected as part of the Wi-Fi network.  NetworkManager internally tracks previously seen BSSIDs. The property is only meant for reading and reflects the BSSID list of NetworkManager. The changes you make to this property will not be preserved.</entry></row>
     <row><entry align="left" id="nm-settings.property.802-11-wireless.ssid">ssid</entry><entry align="left">byte array</entry><entry align="left"/><entry>SSID of the Wi-Fi network. Must be specified.</entry></row>
     <row><entry align="left" id="nm-settings.property.802-11-wireless.tx-power">tx-power</entry><entry align="left">uint32</entry><entry align="left">0</entry><entry>If non-zero, directs the device to use the specified transmit power. Units are dBm.  This property is highly driver dependent and not all devices support setting a static transmit power.</entry></row>
+    <row><entry align="left" id="nm-settings.property.802-11-wireless.wake-on-wlan">wake-on-wlan</entry><entry align="left">uint32</entry><entry align="left">1</entry><entry>The NMSettingWirelessWakeOnWLan options to enable. Not all devices support all options. May be any combination of NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY (0x2), NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT (0x4), NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC (0x8), NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE (0x10), NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST (0x20), NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE (0x40), NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE (0x80), NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP (0x100) or the special values NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE (0x8000) (to disable management of Wake-on-LAN in NetworkManager).</entry></row>
   </tbody></tgroup></informaltable></refsect2>
   <refsect2><title>802-11-wireless-security setting</title><para>Wi-Fi Security Settings.</para><informaltable><tgroup cols="4"><thead><row><entry>Key Name</entry><entry>Value Type</entry><entry>Default Value</entry><entry>Value Description</entry></row></thead><tbody>
     <row><entry align="left" id="nm-settings.property.802-11-wireless-security.auth-alg">auth-alg</entry><entry align="left">string</entry><entry align="left"/><entry>When WEP is used (ie, key-mgmt = "none" or "ieee8021x") indicate the 802.11 authentication algorithm required by the AP here.  One of "open" for Open System, "shared" for Shared Key, or "leap" for Cisco LEAP.  When using Cisco LEAP (ie, key-mgmt = "ieee8021x" and auth-alg = "leap") the "leap-username" and "leap-password" properties must be specified.</entry></row>
diff --git a/man/nmcli-examples.7 b/man/nmcli-examples.7
index 7fb3a75a..ac55d486 100644
--- a/man/nmcli-examples.7
+++ b/man/nmcli-examples.7
@@ -2,12 +2,12 @@
 .\"     Title: nmcli-examples
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 05/31/2018
+.\"      Date: 06/15/2018
 .\"    Manual: Examples
-.\"    Source: NetworkManager 1.11.4
+.\"    Source: NetworkManager 1.11.90
 .\"  Language: English
 .\"
-.TH "NMCLI\-EXAMPLES" "7" "" "NetworkManager 1\&.11\&.4" "Examples"
+.TH "NMCLI\-EXAMPLES" "7" "" "NetworkManager 1\&.11\&.90" "Examples"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nmcli.1 b/man/nmcli.1
index e990a421..c9652f4d 100644
--- a/man/nmcli.1
+++ b/man/nmcli.1
@@ -2,12 +2,12 @@
 .\"     Title: nmcli
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 05/31/2018
+.\"      Date: 06/15/2018
 .\"    Manual: General Commands Manual
-.\"    Source: NetworkManager 1.11.4
+.\"    Source: NetworkManager 1.11.90
 .\"  Language: English
 .\"
-.TH "NMCLI" "1" "" "NetworkManager 1\&.11\&.4" "General Commands Manual"
+.TH "NMCLI" "1" "" "NetworkManager 1\&.11\&.90" "General Commands Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -1140,13 +1140,19 @@ Monitors all devices in case no interface is specified\&. The monitor terminates
 command\&.
 .RE
 .PP
-\fBwifi\fR [\fBlist\fR\ [\fBifname\fR\ \fIifname\fR]\ [\fBbssid\fR\ \fIBSSID\fR]]
+\fBwifi\fR [\fBlist\fR\ [\fB\-\-rescan\fR\ |\ \fBauto\fR\ |\ \fBno\fR\ |\ \fByes\fR]\ [\fBifname\fR\ \fIifname\fR]\ [\fBbssid\fR\ \fIBSSID\fR]]
 .RS 4
 List available Wi\-Fi access points\&. The
 \fBifname\fR
 and
 \fBbssid\fR
 options can be used to list APs for a particular interface or with a specific BSSID, respectively\&.
+.sp
+By default,
+\fBnmcli\fR
+ensures that the access point list is no older than 30 seconds and triggers a network scan if necessary\&. The
+\fB\-\-rescan\fR
+can be used to either force or disable the scan regardless of how fresh the access point list is\&.
 .RE
 .PP
 \fBwifi\fR \fBconnect\fR \fI(B)SSID\fR [\fBpassword\fR\ \fIpassword\fR] [\fBwep\-key\-type\fR\ {key\ |\ phrase}] [\fBifname\fR\ \fIifname\fR] [\fBbssid\fR\ \fIBSSID\fR] [\fBname\fR\ \fIname\fR] [\fBprivate\fR\ {yes\ |\ no}] [\fBhidden\fR\ {yes\ |\ no}]
diff --git a/man/nmcli.xml b/man/nmcli.xml
index 0787fd8b..9b951c19 100644
--- a/man/nmcli.xml
+++ b/man/nmcli.xml
@@ -1381,6 +1381,12 @@
           <command>wifi</command>
           <arg>
             <command>list</command>
+            <group>
+              <option>--rescan</option>
+              <arg choice='plain'><option>auto</option></arg>
+              <arg choice='plain'><option>no</option></arg>
+              <arg choice='plain'><option>yes</option></arg>
+            </group>
             <arg><option>ifname</option> <replaceable>ifname</replaceable></arg>
             <arg><option>bssid</option> <replaceable>BSSID</replaceable></arg>
           </arg>
@@ -1390,6 +1396,10 @@
           <para>List available Wi-Fi access points. The <option>ifname</option> and
           <option>bssid</option> options can be used to list APs for a particular
           interface or with a specific BSSID, respectively.</para>
+          <para>By default, <command>nmcli</command> ensures that the access point list
+          is no older than 30 seconds and triggers a network scan if necessary. The
+          <option>--rescan</option> can be used to either force or disable the scan
+          regardless of how fresh the access point list is.</para>
         </listitem>
       </varlistentry>
 
diff --git a/man/nmtui.1 b/man/nmtui.1
index 33d1c30d..5d18377e 100644
--- a/man/nmtui.1
+++ b/man/nmtui.1
@@ -2,12 +2,12 @@
 .\"     Title: nmtui
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 05/31/2018
+.\"      Date: 06/15/2018
 .\"    Manual: General Commands Manual
-.\"    Source: NetworkManager 1.11.4
+.\"    Source: NetworkManager 1.11.90
 .\"  Language: English
 .\"
-.TH "NMTUI" "1" "" "NetworkManager 1\&.11\&.4" "General Commands Manual"
+.TH "NMTUI" "1" "" "NetworkManager 1\&.11\&.90" "General Commands Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/meson.build b/meson.build
index f4237aac..7ef55362 100644
--- a/meson.build
+++ b/meson.build
@@ -4,7 +4,7 @@ project(
 #  - add corresponding NM_VERSION_x_y_z macros in
 #    "shared/nm-version-macros.h.in"
 #  - update number in configure.ac
-  version: '1.11.4',
+  version: '1.11.90',
   license: 'GPL2+',
   default_options: [
     'buildtype=debugoptimized',
diff --git a/meson_options.txt b/meson_options.txt
index f22eb28a..bafc6769 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -37,7 +37,7 @@ option('ofono', type: 'boolean', value: false, description: 'Enable oFono suppor
 option('concheck', type: 'boolean', value: true, description: 'enable connectivity checking support')
 option('teamdctl', type: 'boolean', value: false, description: 'enable Teamd control support')
 option('ovs', type: 'boolean', value: true, description: 'enable OpenVSwitch support')
-option('libnm_glib', type: 'boolean', value: true, description: 'don\'t build legacy libraries')
+option('libnm_glib', type: 'boolean', value: false, description: 'build legacy libraries')
 option('nmcli', type: 'boolean', value: true, description: 'Build nmcli')
 option('nmtui', type: 'boolean', value: true, description: 'Build nmtui')
 option('bluez5_dun', type: 'boolean', value: false, description: 'enable Bluez5 DUN support')
diff --git a/shared/nm-utils/nm-enum-utils.c b/shared/nm-utils/nm-enum-utils.c
index 023f8385..b83c4207 100644
--- a/shared/nm-utils/nm-enum-utils.c
+++ b/shared/nm-utils/nm-enum-utils.c
@@ -64,9 +64,18 @@ _ASSERT_enum_values_info (GType type,
 				 * And then, when actually running against a newer library version where
 				 * @type knows the nick, we have this situation.
 				 *
+				 * Another reason for specifying a nick both in @value_infos and @type,
+				 * is to specify an alias which is not used with highest preference. For
+				 * example, if you add an alias "disabled" for "none" (both numerically
+				 * equal), then the first alias in @value_infos will be preferred over
+				 * the name from @type. So, to still use "none" as preferred name, you may
+				 * explicitly specify the "none" alias in @value_infos before "disabled".
+				 *
 				 * However, what never is allowed, is to use a name (nick) to re-number
 				 * the value. That is, if both @value_infos and @type contain a particular
 				 * nick, their numeric values must agree as well.
+				 * Allowing this, would be very confusing, because the name would have a different
+				 * value from the regular GLib GEnum API.
 				 */
 				g_assert (enum_value->value == value_infos->value);
 			}
diff --git a/shared/nm-utils/nm-macros-internal.h b/shared/nm-utils/nm-macros-internal.h
index 908b25fd..ef3039e6 100644
--- a/shared/nm-utils/nm-macros-internal.h
+++ b/shared/nm-utils/nm-macros-internal.h
@@ -807,8 +807,8 @@ nm_g_object_unref (gpointer obj)
 		g_object_unref (obj);
 }
 
-/* Assigns GObject @obj to destination @pdst, and takes an additional ref.
- * The previous value of @pdst is unrefed.
+/* Assigns GObject @obj to destination @pp, and takes an additional ref.
+ * The previous value of @pp is unrefed.
  *
  * It makes sure to first increase the ref-count of @obj, and handles %NULL
  * @obj correctly.
@@ -816,22 +816,18 @@ nm_g_object_unref (gpointer obj)
 #define nm_g_object_ref_set(pp, obj) \
 	({ \
 		typeof (*(pp)) *const _pp = (pp); \
-		typeof (**_pp) *const _obj = (obj); \
-		typeof (**_pp) *_p; \
+		typeof (*_pp) const _obj = (obj); \
+		typeof (*_pp) _p; \
 		gboolean _changed = FALSE; \
 		\
+		nm_assert (!_pp || !*_pp || G_IS_OBJECT (*_pp)); \
+		nm_assert (!_obj || G_IS_OBJECT (_obj)); \
+		\
 		if (   _pp \
 		    && ((_p = *_pp) != _obj)) { \
-			if (_obj) { \
-				nm_assert (G_IS_OBJECT (_obj)); \
-				 g_object_ref (_obj); \
-			} \
-			if (_p) { \
-				nm_assert (G_IS_OBJECT (_p)); \
-				*_pp = NULL; \
-				g_object_unref (_p); \
-			} \
+			nm_g_object_ref (_obj); \
 			*_pp = _obj; \
+			nm_g_object_unref (_p); \
 			_changed = TRUE; \
 		} \
 		_changed; \
diff --git a/shared/nm-utils/nm-shared-utils.h b/shared/nm-utils/nm-shared-utils.h
index 4b081630..58855237 100644
--- a/shared/nm-utils/nm-shared-utils.h
+++ b/shared/nm-utils/nm-shared-utils.h
@@ -520,8 +520,9 @@ void _nm_utils_strv_sort (const char **strv, gssize len);
 
 /*****************************************************************************/
 
-#define NM_UTILS_NS_PER_SECOND  ((gint64) 1000000000)
-#define NM_UTILS_NS_PER_MSEC    ((gint64) 1000000)
+#define NM_UTILS_NS_PER_SECOND   ((gint64) 1000000000)
+#define NM_UTILS_NS_PER_MSEC     ((gint64) 1000000)
+#define NM_UTILS_MSEC_PER_SECOND ((gint64) 1000)
 #define NM_UTILS_NS_TO_MSEC_CEIL(nsec)      (((nsec) + (NM_UTILS_NS_PER_MSEC - 1)) / NM_UTILS_NS_PER_MSEC)
 
 /*****************************************************************************/
diff --git a/shared/nm-utils/unaligned.h b/shared/nm-utils/unaligned.h
index feddaa91..965a5fe9 100644
--- a/shared/nm-utils/unaligned.h
+++ b/shared/nm-utils/unaligned.h
@@ -2,9 +2,7 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright 2014 Tom Gundersen
+  Copyright © 2014 Tom Gundersen
 ***/
 
 #include <endian.h>
diff --git a/shared/nm-version-macros.h b/shared/nm-version-macros.h
index 2a37c26d..7dcd068c 100644
--- a/shared/nm-version-macros.h
+++ b/shared/nm-version-macros.h
@@ -45,7 +45,7 @@
  * Evaluates to the micro version number of NetworkManager which this source
  * compiled against.
  */
-#define NM_MICRO_VERSION (4)
+#define NM_MICRO_VERSION (90)
 
 /**
  * NM_CHECK_VERSION:
diff --git a/src/devices/bluetooth/nm-device-bt.c b/src/devices/bluetooth/nm-device-bt.c
index 1d237d92..92ad0b31 100644
--- a/src/devices/bluetooth/nm-device-bt.c
+++ b/src/devices/bluetooth/nm-device-bt.c
@@ -903,11 +903,8 @@ act_stage3_ip6_config_start (NMDevice *device,
 {
 	NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE ((NMDeviceBt *) device);
 
-	if (priv->bt_type == NM_BT_CAPABILITY_DUN) {
-		return nm_modem_stage3_ip6_config_start (priv->modem,
-		                                         nm_device_get_act_request (device),
-		                                         out_failure_reason);
-	}
+	if (priv->bt_type == NM_BT_CAPABILITY_DUN)
+		return nm_modem_stage3_ip6_config_start (priv->modem, device, out_failure_reason);
 
 	return NM_DEVICE_CLASS (nm_device_bt_parent_class)->act_stage3_ip6_config_start (device, out_config, out_failure_reason);
 }
diff --git a/src/devices/nm-device-ethernet.c b/src/devices/nm-device-ethernet.c
index 6c5e33e4..87d16dbe 100644
--- a/src/devices/nm-device-ethernet.c
+++ b/src/devices/nm-device-ethernet.c
@@ -753,13 +753,6 @@ supplicant_interface_init (NMDeviceEthernet *self)
 	return TRUE;
 }
 
-NM_UTILS_LOOKUP_STR_DEFINE_STATIC (link_duplex_to_string, NMPlatformLinkDuplexType,
-	NM_UTILS_LOOKUP_DEFAULT_WARN (NULL),
-	NM_UTILS_LOOKUP_STR_ITEM (NM_PLATFORM_LINK_DUPLEX_UNKNOWN, "unknown"),
-	NM_UTILS_LOOKUP_STR_ITEM (NM_PLATFORM_LINK_DUPLEX_FULL,     "full"),
-	NM_UTILS_LOOKUP_STR_ITEM (NM_PLATFORM_LINK_DUPLEX_HALF,     "half"),
-);
-
 static NMPlatformLinkDuplexType
 link_duplex_to_platform (const char *duplex)
 {
@@ -787,13 +780,11 @@ link_negotiation_set (NMDevice *device)
 	s_wired = (NMSettingWired *) nm_device_get_applied_setting (device, NM_TYPE_SETTING_WIRED);
 	if (s_wired) {
 		autoneg = nm_setting_wired_get_auto_negotiate (s_wired);
-		if (!autoneg) {
-			speed = nm_setting_wired_get_speed (s_wired);
-			duplex = link_duplex_to_platform (nm_setting_wired_get_duplex (s_wired));
-			if (!speed && !duplex) {
-				_LOGD (LOGD_DEVICE, "set-link: ignore link negotiation");
-				return;
-			}
+		speed = nm_setting_wired_get_speed (s_wired);
+		duplex = link_duplex_to_platform (nm_setting_wired_get_duplex (s_wired));
+		if (!autoneg && !speed && !duplex) {
+			_LOGD (LOGD_DEVICE, "set-link: ignore link negotiation");
+			return;
 		}
 	}
 
@@ -804,20 +795,23 @@ link_negotiation_set (NMDevice *device)
 	}
 
 	/* If link negotiation setting are already in place do nothing and return with success */
-	if (   (!!autoneg == !!link_autoneg)
-	    && (!speed || (speed == link_speed))
-	    && (!duplex || (duplex == link_duplex))) {
+	if (   !!autoneg == !!link_autoneg
+	    && speed == link_speed
+	    && duplex == link_duplex) {
 		_LOGD (LOGD_DEVICE, "set-link: link negotiation is already configured");
 		return;
 	}
 
-	if (autoneg)
-		_LOGD (LOGD_DEVICE, "set-link: configure autonegotiation");
+	if (autoneg && !speed && !duplex)
+		_LOGD (LOGD_DEVICE, "set-link: configure auto-negotiation");
 	else {
-		_LOGD (LOGD_DEVICE, "set-link: configure static negotiation (%u Mbit%s - %s duplex%s)",
+		_LOGD (LOGD_DEVICE, "set-link: configure %snegotiation (%u Mbit%s - %s duplex%s)",
+		       autoneg ? "auto-" : "static ",
 		       speed ?: link_speed,
 		       speed ? "" : "*",
-		       duplex ? link_duplex_to_string (duplex) : link_duplex_to_string (link_duplex),
+		       duplex
+		         ? nm_platform_link_duplex_type_to_string (duplex)
+		         : nm_platform_link_duplex_type_to_string (link_duplex),
 		       duplex ? "" : "*");
 	}
 
diff --git a/src/devices/nm-device-macsec.c b/src/devices/nm-device-macsec.c
index 4eaf5469..166bfb57 100644
--- a/src/devices/nm-device-macsec.c
+++ b/src/devices/nm-device-macsec.c
@@ -704,6 +704,7 @@ create_and_realize (NMDevice *device,
 	sci.s.port = htons (nm_setting_macsec_get_port (s_macsec));
 	lnk.sci = be64toh (sci.u);
 	lnk.validation = nm_setting_macsec_get_validation (s_macsec);
+	lnk.include_sci = nm_setting_macsec_get_send_sci (s_macsec);
 
 	parent_ifindex = nm_device_get_ifindex (parent);
 	g_warn_if_fail (parent_ifindex > 0);
diff --git a/src/devices/nm-device-private.h b/src/devices/nm-device-private.h
index 0b844411..c76debff 100644
--- a/src/devices/nm-device-private.h
+++ b/src/devices/nm-device-private.h
@@ -134,7 +134,7 @@ void nm_device_commit_mtu (NMDevice *self);
 	}
 
 gboolean _nm_device_hash_check_invalid_keys (GHashTable *hash, const char *setting_name,
-                                             GError **error, const char **argv);
+                                             GError **error, const char **whitelist);
 #define nm_device_hash_check_invalid_keys(hash, setting_name, error, ...) \
 	_nm_device_hash_check_invalid_keys (hash, setting_name, error, ((const char *[]) { __VA_ARGS__, NULL }))
 
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 9a40a0dd..9df41410 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -37,8 +37,11 @@
 #include <linux/if_arp.h>
 #include <linux/rtnetlink.h>
 #include <linux/pkt_sched.h>
+#include <uuid/uuid.h>
 
 #include "nm-utils/nm-dedup-multi.h"
+#include "nm-utils/nm-random-utils.h"
+#include "nm-utils/unaligned.h"
 
 #include "nm-common-macros.h"
 #include "nm-device-private.h"
@@ -6830,11 +6833,12 @@ dhcp4_grace_period_expired (gpointer user_data)
 }
 
 static void
-dhcp4_fail (NMDevice *self, gboolean timeout)
+dhcp4_fail (NMDevice *self)
 {
 	NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
 
-	_LOGD (LOGD_DHCP4, "DHCPv4 failed%s", timeout ? " (timeout)" : "");
+	_LOGD (LOGD_DHCP4, "DHCPv4 failed (ip_state %s)",
+	       _ip_state_to_string (priv->ip4_state));
 
 	/* Keep client running if there are static addresses configured
 	 * on the interface.
@@ -6848,7 +6852,7 @@ dhcp4_fail (NMDevice *self, gboolean timeout)
 	 * configuration.
 	 */
 	if (   !priv->dhcp4.was_active
-	    && (timeout || priv->ip4_state == IP_CONF)) {
+	    && priv->ip4_state == IP_CONF) {
 		dhcp4_cleanup (self, CLEANUP_TYPE_DECONFIGURE, FALSE);
 		nm_device_activate_schedule_ip4_config_timeout (self);
 		return;
@@ -6911,7 +6915,7 @@ dhcp4_state_changed (NMDhcpClient *client,
 	case NM_DHCP_STATE_BOUND:
 		if (!ip4_config) {
 			_LOGW (LOGD_DHCP4, "failed to get IPv4 config in response to DHCP event.");
-			dhcp4_fail (self, FALSE);
+			dhcp4_fail (self);
 			break;
 		}
 
@@ -6950,11 +6954,11 @@ dhcp4_state_changed (NMDhcpClient *client,
 			if (dhcp4_lease_change (self, ip4_config))
 				nm_device_update_metered (self);
 			else
-				dhcp4_fail (self, FALSE);
+				dhcp4_fail (self);
 		}
 		break;
 	case NM_DHCP_STATE_TIMEOUT:
-		dhcp4_fail (self, TRUE);
+		dhcp4_fail (self);
 		break;
 	case NM_DHCP_STATE_EXPIRE:
 		/* Ignore expiry before we even have a lease (NAK, old lease, etc) */
@@ -6963,7 +6967,7 @@ dhcp4_state_changed (NMDhcpClient *client,
 		/* fall through */
 	case NM_DHCP_STATE_DONE:
 	case NM_DHCP_STATE_FAIL:
-		dhcp4_fail (self, FALSE);
+		dhcp4_fail (self);
 		break;
 	default:
 		break;
@@ -7014,13 +7018,32 @@ get_dhcp_timeout (NMDevice *self, int addr_family)
 }
 
 static GBytes *
-dhcp4_get_client_id (NMDevice *self, NMConnection *connection)
+dhcp4_get_client_id_mac (const guint8 *hwaddr /* ETH_ALEN bytes */)
+{
+	guint8 *client_id_buf;
+	guint8 hwaddr_type = ARPHRD_ETHER;
+
+	client_id_buf = g_malloc (ETH_ALEN + 1);
+	client_id_buf[0] = hwaddr_type;
+	memcpy (&client_id_buf[1], hwaddr, ETH_ALEN);
+	return g_bytes_new_take (client_id_buf, ETH_ALEN + 1);
+}
+
+static GBytes *
+dhcp4_get_client_id (NMDevice *self,
+                     NMConnection *connection,
+                     GBytes *hwaddr)
 {
 	NMSettingIPConfig *s_ip4;
 	const char *client_id;
 	gs_free char *client_id_default = NULL;
 	guint8 *client_id_buf;
-	gboolean is_mac;
+	const char *fail_reason;
+	guint8 hwaddr_bin_buf[NM_UTILS_HWADDR_LEN_MAX];
+	const guint8 *hwaddr_bin;
+	gsize hwaddr_len;
+	GBytes *result;
+	gs_free char *logstr1 = NULL;
 
 	s_ip4 = nm_connection_get_setting_ip4_config (connection);
 	client_id = nm_setting_ip4_config_get_dhcp_client_id (NM_SETTING_IP4_CONFIG (s_ip4));
@@ -7028,42 +7051,54 @@ dhcp4_get_client_id (NMDevice *self, NMConnection *connection)
 	if (!client_id) {
 		client_id_default = nm_config_data_get_connection_default (NM_CONFIG_GET_DATA,
 		                                                           "ipv4.dhcp-client-id", self);
-		if (client_id_default && client_id_default[0])
+		if (client_id_default && client_id_default[0]) {
+			/* a non-empty client-id is always valid, see nm_dhcp_utils_client_id_string_to_bytes().  */
 			client_id = client_id_default;
+		}
 	}
 
-	if (!client_id)
+	if (!client_id) {
+		_LOGD (LOGD_DEVICE | LOGD_DHCP4 | LOGD_IP4,
+		       "ipv4.dhcp-client-id: no explicity client-id configured");
 		return NULL;
+	}
 
-	if (   (is_mac = nm_streq (client_id, "mac"))
-	    || nm_streq (client_id, "perm-mac")) {
-		const char *hwaddr;
-		char addr_buf[NM_UTILS_HWADDR_LEN_MAX];
-		gsize addr_len;
-		guint8 addr_type;
-
-		hwaddr = is_mac
-		         ? nm_device_get_hw_address (self)
-		         : nm_device_get_permanent_hw_address (self);
-		if (!hwaddr)
-			return NULL;
+	if (nm_streq (client_id, "mac")) {
+		if (!hwaddr) {
+			fail_reason = "failed to get current MAC address";
+			goto out_fail;
+		}
+
+		hwaddr_bin = g_bytes_get_data (hwaddr, &hwaddr_len);
+		if (hwaddr_len != ETH_ALEN) {
+			fail_reason = "MAC address is not ethernet";
+			goto out_fail;
+		}
+
+		result = dhcp4_get_client_id_mac (hwaddr_bin);
+		goto out_good;
+	}
+
+	if (nm_streq (client_id, "perm-mac")) {
+		const char *hwaddr_str;
+
+		hwaddr_str = nm_device_get_permanent_hw_address (self);
+		if (!hwaddr_str) {
+			fail_reason = "failed to get permanent MAC address";
+			goto out_fail;
+		}
 
-		if (!_nm_utils_hwaddr_aton (hwaddr, addr_buf, sizeof (addr_buf), &addr_len))
+		if (!_nm_utils_hwaddr_aton (hwaddr_str, hwaddr_bin_buf, sizeof (hwaddr_bin_buf), &hwaddr_len))
 			g_return_val_if_reached (NULL);
 
-		switch (addr_len) {
-		case ETH_ALEN:
-			addr_type = ARPHRD_ETHER;
-			break;
-		default:
+		if (hwaddr_len != ETH_ALEN) {
 			/* unsupported type. */
-			return NULL;
+			fail_reason = "MAC address is not ethernet";
+			goto out_fail;
 		}
 
-		client_id_buf = g_malloc (addr_len + 1);
-		client_id_buf[0] = addr_type;
-		memcpy (&client_id_buf[1], addr_buf, addr_len);
-		return g_bytes_new_take (client_id_buf, addr_len + 1);
+		result = dhcp4_get_client_id_mac (hwaddr_bin_buf);
+		goto out_good;
 	}
 
 	if (nm_streq (client_id, "stable")) {
@@ -7099,10 +7134,30 @@ dhcp4_get_client_id (NMDevice *self, NMConnection *connection)
 		client_id_buf = g_malloc (1 + 15);
 		client_id_buf[0] = 0;
 		memcpy (&client_id_buf[1], buf, 15);
-		return g_bytes_new_take (client_id_buf, 1 + 15);
+		result = g_bytes_new_take (client_id_buf, 1 + 15);
+		goto out_good;
 	}
 
-	return nm_dhcp_utils_client_id_string_to_bytes (client_id);
+	result = nm_dhcp_utils_client_id_string_to_bytes (client_id);
+	goto out_good;
+
+out_fail:
+	nm_assert (fail_reason);
+	_LOGW (LOGD_DEVICE | LOGD_DHCP4 | LOGD_IP4,
+	       "ipv4.dhcp-client-id: failure to generate client id (%s). Use random client id",
+	       fail_reason);
+	client_id_buf = g_malloc (1 + 15);
+	client_id_buf[0] = 0;
+	nm_utils_random_bytes (&client_id_buf[1], 15);
+	result = g_bytes_new_take (client_id_buf, 1 + 15);
+
+out_good:
+	nm_assert (result);
+	_LOGD (LOGD_DEVICE | LOGD_DHCP4 | LOGD_IP4,
+	       "ipv4.dhcp-client-id: use \"%s\" client ID: %s",
+	       client_id,
+	       (logstr1 = nm_dhcp_utils_duid_to_string (result)));
+	return result;
 }
 
 static NMActStageReturn
@@ -7126,7 +7181,7 @@ dhcp4_start (NMDevice *self)
 	hwaddr = nm_platform_link_get_address_as_bytes (nm_device_get_platform (self),
 	                                                nm_device_get_ip_ifindex (self));
 
-	client_id = dhcp4_get_client_id (self, connection);
+	client_id = dhcp4_get_client_id (self, connection, hwaddr);
 
 	g_warn_if_fail (priv->dhcp4.client == NULL);
 	priv->dhcp4.client = nm_dhcp_manager_start_ip4 (nm_dhcp_manager_get (),
@@ -7678,12 +7733,260 @@ dhcp6_prefix_delegated (NMDhcpClient *client,
 	g_signal_emit (self, signals[IP6_PREFIX_DELEGATED], 0, prefix);
 }
 
+/* RFC 3315 defines the epoch for the DUID-LLT time field on Jan 1st 2000. */
+#define EPOCH_DATETIME_200001010000  946684800
+
+static GBytes *
+generate_duid_llt (const guint8 *hwaddr /* ETH_ALEN bytes */,
+                   gint64 time)
+{
+	GByteArray *duid_arr;
+	const guint16 duid_type = htons (1);
+	const guint16 hw_type = htons (ARPHRD_ETHER);
+	const guint32 duid_time = htonl (NM_MAX (0, time - EPOCH_DATETIME_200001010000));
+
+	duid_arr = g_byte_array_sized_new (2 + 4 + 2 + ETH_ALEN);
+
+	g_byte_array_append (duid_arr, (const guint8 *) &duid_type, 2);
+	g_byte_array_append (duid_arr, (const guint8 *) &hw_type, 2);
+	g_byte_array_append (duid_arr, (const guint8 *) &duid_time, 4);
+	g_byte_array_append (duid_arr, hwaddr, ETH_ALEN);
+
+	return g_byte_array_free_to_bytes (duid_arr);
+}
+
+static GBytes *
+generate_duid_ll (const guint8 *hwaddr /* ETH_ALEN bytes */)
+{
+	GByteArray *duid_arr;
+	const guint16 duid_type = htons (3);
+	const guint16 hw_type = htons (ARPHRD_ETHER);
+
+	duid_arr = g_byte_array_sized_new (2 + 2 + ETH_ALEN);
+
+	g_byte_array_append (duid_arr, (const guint8 *) &duid_type, 2);
+	g_byte_array_append (duid_arr, (const guint8 *) &hw_type, 2);
+	g_byte_array_append (duid_arr, hwaddr, ETH_ALEN);
+
+	return g_byte_array_free_to_bytes (duid_arr);
+}
+
+static GBytes *
+generate_duid_uuid (guint8 *data, gsize data_len)
+{
+	const guint16 duid_type = g_htons (4);
+	const int DUID_SIZE = 18;
+	guint8 *duid_buffer;
+
+	nm_assert (data);
+	nm_assert (data_len >= 16);
+
+	/* Generate a DHCP Unique Identifier for DHCPv6 using the
+	 * DUID-UUID method (see RFC 6355 section 4).  Format is:
+	 *
+	 * u16: type (DUID-UUID = 4)
+	 * u8[16]: UUID bytes
+	 */
+	duid_buffer = g_malloc (DUID_SIZE);
+
+	G_STATIC_ASSERT_EXPR (sizeof (duid_type) == 2);
+	memcpy (&duid_buffer[0], &duid_type, 2);
+
+	/* UUID is 128 bits, we just take the first 128 bits
+	 * (regardless of data size) as the DUID-UUID.
+	 */
+	memcpy (&duid_buffer[2], data, 16);
+
+	return g_bytes_new_take (duid_buffer, DUID_SIZE);
+}
+
+static GBytes *
+generate_duid_from_machine_id (void)
+{
+	gs_free const char *machine_id_s = NULL;
+	uuid_t uuid;
+	GChecksum *sum;
+	guint8 sha256_digest[32];
+	gsize len = sizeof (sha256_digest);
+	static GBytes *global_duid = NULL;
+
+	if (global_duid)
+		return g_bytes_ref (global_duid);
+
+	machine_id_s = nm_utils_machine_id_read ();
+	if (!nm_utils_machine_id_parse (machine_id_s, uuid))
+		return NULL;
+
+	/* Hash the machine ID so it's not leaked to the network */
+	sum = g_checksum_new (G_CHECKSUM_SHA256);
+	g_checksum_update (sum, (const guchar *) &uuid, sizeof (uuid));
+	g_checksum_get_digest (sum, sha256_digest, &len);
+	g_checksum_free (sum);
+
+	global_duid = generate_duid_uuid (sha256_digest, len);
+	return g_bytes_ref (global_duid);
+}
+
+static GBytes *
+dhcp6_get_duid (NMDevice *self, NMConnection *connection, GBytes *hwaddr, NMDhcpDuidEnforce *out_enforce)
+{
+	NMSettingIPConfig *s_ip6;
+	const char *duid;
+	gs_free char *duid_default = NULL;
+	const char *duid_error;
+	GBytes *duid_out;
+	guint8 sha256_digest[32];
+	gsize len = sizeof (sha256_digest);
+	NMDhcpDuidEnforce duid_enforce = NM_DHCP_DUID_ENFORCE_ALWAYS;
+	gs_free char *logstr1 = NULL;
+
+	s_ip6 = nm_connection_get_setting_ip6_config (connection);
+	duid = nm_setting_ip6_config_get_dhcp_duid (NM_SETTING_IP6_CONFIG (s_ip6));
+
+	if (!duid) {
+		duid_default = nm_config_data_get_connection_default (NM_CONFIG_GET_DATA,
+		                                                      "ipv6.dhcp-duid", self);
+		duid = duid_default;
+		if (!duid)
+			duid = "lease";
+	}
+
+	if (nm_streq (duid, "lease")) {
+		duid_enforce = NM_DHCP_DUID_ENFORCE_NEVER;
+		duid_out = generate_duid_from_machine_id ();
+		if (!duid_out) {
+			duid_error = "failure to read machine-id";
+			goto out_fail;
+		}
+		goto out_good;
+	}
+
+	if (!_nm_utils_dhcp_duid_valid (duid, &duid_out)) {
+		duid_error = "invalid duid";
+		goto out_fail;
+	}
+
+	if (duid_out)
+		goto out_good;
+
+	if (NM_IN_STRSET (duid, "ll", "llt")) {
+		if (!hwaddr) {
+			duid_error = "missing link-layer address";
+			goto out_fail;
+		}
+		if (g_bytes_get_size (hwaddr) != ETH_ALEN) {
+			duid_error = "unsupported link-layer address";
+			goto out_fail;
+		}
+
+		if (nm_streq (duid, "ll")) {
+			duid_out = generate_duid_ll (g_bytes_get_data (hwaddr, NULL));
+		} else {
+			gint64 time;
+
+			time = nm_utils_secret_key_get_timestamp ();
+			if (!time) {
+				duid_error = "cannot retrieve the secret key timestamp";
+				goto out_fail;
+			}
+
+			duid_out = generate_duid_llt (g_bytes_get_data (hwaddr, NULL), time);
+		}
+
+		goto out_good;
+	}
+
+	if (NM_IN_STRSET (duid, "stable-ll", "stable-llt", "stable-uuid")) {
+		NMUtilsStableType stable_type;
+		const char *stable_id = NULL;
+		guint32 salted_header;
+		GChecksum *sum;
+		const guint8 *secret_key;
+		gsize secret_key_len;
+
+		stable_id = _get_stable_id (self, connection, &stable_type);
+		if (!stable_id)
+			g_return_val_if_reached (NULL);
+
+		salted_header = htonl (670531087 + stable_type);
+
+		nm_utils_secret_key_get (&secret_key, &secret_key_len);
+
+		sum = g_checksum_new (G_CHECKSUM_SHA256);
+
+		g_checksum_update (sum, (const guchar *) &salted_header, sizeof (salted_header));
+		g_checksum_update (sum, (const guchar *) stable_id, -1);
+		g_checksum_update (sum, (const guchar *) secret_key, secret_key_len);
+
+		g_checksum_get_digest (sum, sha256_digest, &len);
+		g_checksum_free (sum);
+
+		if (nm_streq (duid, "stable-ll")) {
+			duid_out = generate_duid_ll (sha256_digest);
+		} else if (nm_streq (duid, "stable-llt")) {
+			gint64 time;
+
+#define EPOCH_DATETIME_THREE_YEARS  (356 * 24 * 3600 * 3)
+
+			/* We want a variable time between the secret_key timestamp and three years
+			 * before. Let's compute the time (in seconds) from 0 to 3 years; then we'll
+			 * subtract it from the secret_key timestamp.
+			 */
+			time = nm_utils_secret_key_get_timestamp ();
+			if (!time) {
+				duid_error = "cannot retrieve the secret key timestamp";
+				goto out_fail;
+			}
+			/* don't use too old timestamps. They cannot be expressed in DUID-LLT and
+			 * would all be truncated to zero. */
+			time = NM_MAX (time, EPOCH_DATETIME_200001010000 + EPOCH_DATETIME_THREE_YEARS);
+			time -= (unaligned_read_be32 (&sha256_digest[ETH_ALEN]) % EPOCH_DATETIME_THREE_YEARS);
+
+			duid_out = generate_duid_llt (sha256_digest, time);
+		} else {
+			nm_assert (nm_streq (duid, "stable-uuid"));
+			duid_out = generate_duid_uuid (sha256_digest, len);
+		}
+
+		goto out_good;
+	}
+
+	g_return_val_if_reached (NULL);
+
+out_fail:
+	nm_assert (!duid_out && duid_error);
+	{
+		guint8 uuid[16];
+
+		_LOGW (LOGD_IP6 | LOGD_DHCP6,
+		       "ipv6.dhcp-duid: failure to generate %s DUID: %s. Fallback to random DUID-UUID.",
+		       duid, duid_error);
+
+		nm_utils_random_bytes (uuid, sizeof (uuid));
+		duid_out = generate_duid_uuid (uuid, sizeof (uuid));
+	}
+
+out_good:
+	nm_assert (duid_out);
+	_LOGD (LOGD_IP6 | LOGD_DHCP6,
+	       "ipv6.dhcp-duid: generate %s DUID '%s' (%s)",
+	       duid,
+	       (logstr1 = nm_dhcp_utils_duid_to_string (duid_out)),
+	       (duid_enforce == NM_DHCP_DUID_ENFORCE_ALWAYS) ? "enforcing" : "fallback");
+
+	NM_SET_OUT (out_enforce, duid_enforce);
+	return duid_out;
+}
+
 static gboolean
 dhcp6_start_with_link_ready (NMDevice *self, NMConnection *connection)
 {
 	NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
 	NMSettingIPConfig *s_ip6;
 	gs_unref_bytes GBytes *hwaddr = NULL;
+	gs_unref_bytes GBytes *duid = NULL;
+	NMDhcpDuidEnforce enforce_duid = NM_DHCP_DUID_ENFORCE_NEVER;
+
 	const NMPlatformIP6Address *ll_addr = NULL;
 
 	g_assert (connection);
@@ -7704,6 +8007,7 @@ dhcp6_start_with_link_ready (NMDevice *self, NMConnection *connection)
 	hwaddr = nm_platform_link_get_address_as_bytes (nm_device_get_platform (self),
 	                                                nm_device_get_ip_ifindex (self));
 
+	duid = dhcp6_get_duid (self, connection, hwaddr, &enforce_duid);
 	priv->dhcp6.client = nm_dhcp_manager_start_ip6 (nm_dhcp_manager_get (),
 	                                                nm_device_get_multi_index (self),
 	                                                nm_device_get_ip_iface (self),
@@ -7715,6 +8019,8 @@ dhcp6_start_with_link_ready (NMDevice *self, NMConnection *connection)
 	                                                nm_device_get_route_metric (self, AF_INET6),
 	                                                nm_setting_ip_config_get_dhcp_send_hostname (s_ip6),
 	                                                nm_setting_ip_config_get_dhcp_hostname (s_ip6),
+	                                                duid,
+	                                                enforce_duid,
 	                                                get_dhcp_timeout (self, AF_INET6),
 	                                                priv->dhcp_anycast_address,
 	                                                (priv->dhcp6.mode == NM_NDISC_DHCP_LEVEL_OTHERCONF) ? TRUE : FALSE,
@@ -8139,8 +8445,10 @@ _commit_mtu (NMDevice *self, const NMIP4Config *config)
 	if (ifindex <= 0)
 		return;
 
-	if (nm_device_sys_iface_state_is_external_or_assume (self)) {
-		/* for assumed connections we don't tamper with the MTU. */
+	if (   !nm_device_get_applied_connection (self)
+	    || nm_device_sys_iface_state_is_external_or_assume (self)) {
+		/* we don't tamper with the MTU of disconnected and
+		 * external/assumed devices. */
 		return;
 	}
 
@@ -9886,43 +10194,45 @@ _cleanup_ip_pre (NMDevice *self, int addr_family, CleanupType cleanup_type)
 
 gboolean
 _nm_device_hash_check_invalid_keys (GHashTable *hash, const char *setting_name,
-                                    GError **error, const char **argv)
+                                    GError **error, const char **whitelist)
 {
-	guint found_keys = 0;
+	guint found_whitelisted_keys = 0;
 	guint i;
 
 	nm_assert (hash && g_hash_table_size (hash) > 0);
-	nm_assert (argv && argv[0]);
+	nm_assert (whitelist && whitelist[0]);
 
 #if NM_MORE_ASSERTS > 10
-	/* Assert that the keys are unique. */
+	/* Require whitelist to only contain unique keys. */
 	{
 		gs_unref_hashtable GHashTable *check_dups = g_hash_table_new_full (nm_str_hash, g_str_equal, NULL, NULL);
 
-		for (i = 0; argv[i]; i++) {
-			if (!g_hash_table_add (check_dups, (char *) argv[i]))
+		for (i = 0; whitelist[i]; i++) {
+			if (!g_hash_table_add (check_dups, (char *) whitelist[i]))
 				nm_assert (FALSE);
 		}
 		nm_assert (g_hash_table_size (check_dups) > 0);
 	}
 #endif
 
-	for (i = 0; argv[i]; i++) {
-		if (g_hash_table_contains (hash, argv[i]))
-			found_keys++;
+	for (i = 0; whitelist[i]; i++) {
+		if (g_hash_table_contains (hash, whitelist[i]))
+			found_whitelisted_keys++;
 	}
 
-	if (found_keys != g_hash_table_size (hash)) {
+	if (found_whitelisted_keys == g_hash_table_size (hash)) {
+		/* Good, there are only whitelisted keys in the hash. */
+		return TRUE;
+	}
+
+	if (error) {
 		GHashTableIter iter;
 		const char *k = NULL;
 		const char *first_invalid_key = NULL;
 
-		if (!error)
-			return FALSE;
-
 		g_hash_table_iter_init (&iter, hash);
 		while (g_hash_table_iter_next (&iter, (gpointer *) &k, NULL)) {
-			if (nm_utils_strv_find_first ((char **) argv, -1, k) < 0) {
+			if (nm_utils_strv_find_first ((char **) whitelist, -1, k) < 0) {
 				first_invalid_key = k;
 				break;
 			}
@@ -9942,10 +10252,9 @@ _nm_device_hash_check_invalid_keys (GHashTable *hash, const char *setting_name,
 			             first_invalid_key);
 		}
 		g_return_val_if_fail (first_invalid_key, FALSE);
-		return FALSE;
 	}
 
-	return TRUE;
+	return FALSE;
 }
 
 void
@@ -10088,9 +10397,11 @@ can_reapply_change (NMDevice *self, const char *setting_name,
 		                                          NM_SETTING_CONNECTION_METERED,
 		                                          NM_SETTING_CONNECTION_LLDP);
 	} else if (NM_IN_STRSET (setting_name,
-	                         NM_SETTING_IP4_CONFIG_SETTING_NAME,
-	                         NM_SETTING_IP6_CONFIG_SETTING_NAME,
 	                         NM_SETTING_PROXY_SETTING_NAME)) {
+		return TRUE;
+	} else if (NM_IN_STRSET (setting_name,
+	                         NM_SETTING_IP4_CONFIG_SETTING_NAME,
+	                         NM_SETTING_IP6_CONFIG_SETTING_NAME)) {
 		if (g_hash_table_contains (diffs, NM_SETTING_IP_CONFIG_ROUTE_TABLE)) {
 			/* changing the route-table setting is complicated, because it affects
 			 * how we sync the routes. Don't support changing it without full
@@ -10221,7 +10532,7 @@ check_and_reapply_connection (NMDevice *self,
 
 	if (diffs) {
 		NMConnection *connection_clean = connection;
-		gs_free NMConnection *connection_clean_free = NULL;
+		gs_unref_object NMConnection *connection_clean_free = NULL;
 
 		{
 			NMSettingConnection *s_con_a, *s_con_n;
diff --git a/src/devices/ovs/nm-device-ovs-interface.c b/src/devices/ovs/nm-device-ovs-interface.c
index eefe38c8..c59af7a6 100644
--- a/src/devices/ovs/nm-device-ovs-interface.c
+++ b/src/devices/ovs/nm-device-ovs-interface.c
@@ -116,7 +116,7 @@ link_changed (NMDevice *device,
 {
 	NMDeviceOvsInterfacePrivate *priv = NM_DEVICE_OVS_INTERFACE_GET_PRIVATE (device);
 
-	if (priv->waiting_for_interface) {
+	if (pllink && priv->waiting_for_interface) {
 		priv->waiting_for_interface = FALSE;
 		nm_device_bring_up (device, TRUE, NULL);
 		nm_device_activate_schedule_stage3_ip_config_start (device);
diff --git a/src/devices/wifi/nm-device-iwd.c b/src/devices/wifi/nm-device-iwd.c
index d3c5ae9a..d28fcdbd 100644
--- a/src/devices/wifi/nm-device-iwd.c
+++ b/src/devices/wifi/nm-device-iwd.c
@@ -54,6 +54,7 @@ NM_GOBJECT_PROPERTIES_DEFINE (NMDeviceIwd,
 	PROP_ACTIVE_ACCESS_POINT,
 	PROP_CAPABILITIES,
 	PROP_SCANNING,
+	PROP_LAST_SCAN,
 );
 
 enum {
@@ -79,6 +80,7 @@ typedef struct {
 	bool            can_connect:1;
 	bool            scanning:1;
 	bool            scan_requested:1;
+	gint64          last_scan;
 } NMDeviceIwdPrivate;
 
 struct _NMDeviceIwd {
@@ -863,6 +865,8 @@ scan_cb (GObject *source, GAsyncResult *res, gpointer user_data)
 
 	priv = NM_DEVICE_IWD_GET_PRIVATE (self);
 	priv->scan_requested = FALSE;
+	priv->last_scan = nm_utils_get_monotonic_timestamp_ms ();
+	_notify (self, PROP_LAST_SCAN);
 
 	/* On success, priv->scanning becomes true right before or right
 	 * after this callback, so the next automatic scan will be
@@ -1530,6 +1534,12 @@ get_property (GObject *object, guint prop_id,
 	case PROP_SCANNING:
 		g_value_set_boolean (value, priv->scanning);
 		break;
+	case PROP_LAST_SCAN:
+		g_value_set_int64 (value,
+		                   priv->last_scan > 0
+		                       ? nm_utils_monotonic_timestamp_as_boottime (priv->last_scan, NM_UTILS_NS_PER_MSEC)
+		                       : (gint64) -1);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -1909,6 +1919,11 @@ nm_device_iwd_class_init (NMDeviceIwdClass *klass)
 	                          G_PARAM_READABLE |
 	                          G_PARAM_STATIC_STRINGS);
 
+	obj_properties[PROP_LAST_SCAN] =
+	    g_param_spec_int64 (NM_DEVICE_IWD_LAST_SCAN, "", "",
+	                        -1, G_MAXINT64, -1,
+	                         G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
 	g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties);
 
 	signals[SCANNING_PROHIBITED] =
diff --git a/src/devices/wifi/nm-device-iwd.h b/src/devices/wifi/nm-device-iwd.h
index 699ba1bb..a4253f52 100644
--- a/src/devices/wifi/nm-device-iwd.h
+++ b/src/devices/wifi/nm-device-iwd.h
@@ -38,6 +38,7 @@
 #define NM_DEVICE_IWD_ACTIVE_ACCESS_POINT NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT
 #define NM_DEVICE_IWD_CAPABILITIES        NM_DEVICE_WIFI_CAPABILITIES
 #define NM_DEVICE_IWD_SCANNING            NM_DEVICE_WIFI_SCANNING
+#define NM_DEVICE_IWD_LAST_SCAN           NM_DEVICE_WIFI_LAST_SCAN
 
 #define NM_DEVICE_IWD_SCANNING_PROHIBITED  NM_DEVICE_WIFI_SCANNING_PROHIBITED
 
diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c
index 90f94557..1a86e13b 100644
--- a/src/devices/wifi/nm-device-wifi.c
+++ b/src/devices/wifi/nm-device-wifi.c
@@ -74,6 +74,7 @@ NM_GOBJECT_PROPERTIES_DEFINE (NMDeviceWifi,
 	PROP_ACTIVE_ACCESS_POINT,
 	PROP_CAPABILITIES,
 	PROP_SCANNING,
+	PROP_LAST_SCAN,
 );
 
 enum {
@@ -96,8 +97,8 @@ typedef struct {
 	bool              ssid_found:1;
 	bool              is_scanning:1;
 
-	gint32            last_scan;
-	gint32            scheduled_scan_time;
+	gint64            last_scan; /* milliseconds */
+	gint32            scheduled_scan_time; /* seconds */
 	guint8            scan_interval; /* seconds */
 	guint             pending_scan_id;
 	guint             ap_dump_id;
@@ -1126,7 +1127,7 @@ _nm_device_wifi_request_scan (NMDeviceWifi *self,
 {
 	NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self);
 	NMDevice *device = NM_DEVICE (self);
-	gint32 last_scan;
+	gint64 last_scan;
 
 	if (   !priv->enabled
 	    || !priv->sup_iface
@@ -1147,8 +1148,8 @@ _nm_device_wifi_request_scan (NMDeviceWifi *self,
 		return;
 	}
 
-	last_scan = nm_supplicant_interface_get_last_scan_time (priv->sup_iface);
-	if (last_scan && (nm_utils_get_monotonic_timestamp_s () - last_scan) < 10) {
+	last_scan = nm_supplicant_interface_get_last_scan (priv->sup_iface);
+	if (last_scan && (nm_utils_get_monotonic_timestamp_ms () - last_scan) < 10 * NM_UTILS_MSEC_PER_SECOND) {
 		g_dbus_method_invocation_return_error_literal (invocation,
 		                                               NM_DEVICE_ERROR,
 		                                               NM_DEVICE_ERROR_NOT_ALLOWED,
@@ -1422,7 +1423,8 @@ supplicant_iface_scan_done_cb (NMSupplicantInterface *iface,
 
 	_LOGD (LOGD_WIFI, "wifi-scan: scan-done callback: %s", success ? "successful" : "failed");
 
-	priv->last_scan = nm_utils_get_monotonic_timestamp_s ();
+	priv->last_scan = nm_utils_get_monotonic_timestamp_ms ();
+	_notify (self, PROP_LAST_SCAN);
 	schedule_scan (self, success);
 
 	_requested_scan_set (self, FALSE);
@@ -1445,9 +1447,9 @@ ap_list_dump (gpointer user_data)
 		NMWifiAP *ap;
 		gint32 now_s = nm_utils_get_monotonic_timestamp_s ();
 
-		_LOGD (LOGD_WIFI_SCAN, "APs: [now:%u last:%u next:%u]",
+		_LOGD (LOGD_WIFI_SCAN, "APs: [now:%u last:%" G_GINT64_FORMAT " next:%u]",
 		       now_s,
-		       priv->last_scan,
+		       priv->last_scan / NM_UTILS_MSEC_PER_SECOND,
 		       priv->scheduled_scan_time);
 		c_list_for_each_entry (ap, &priv->aps_lst_head, aps_lst)
 			_ap_dump (self, LOGL_DEBUG, ap, "dump", now_s);
@@ -2421,6 +2423,48 @@ error:
 
 /*****************************************************************************/
 
+static gboolean
+wake_on_wlan_enable (NMDeviceWifi *self)
+{
+	NMSettingWirelessWakeOnWLan wowl;
+	NMSettingWireless *s_wireless;
+	gs_free char *value = NULL;
+
+	s_wireless = (NMSettingWireless *) nm_device_get_applied_setting (NM_DEVICE (self), NM_TYPE_SETTING_WIRELESS);
+	if (s_wireless) {
+		wowl = nm_setting_wireless_get_wake_on_wlan (s_wireless);
+		if (wowl != NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT)
+			goto found;
+	}
+
+	value = nm_config_data_get_connection_default (NM_CONFIG_GET_DATA,
+	                                               "wifi.wake-on-wlan",
+	                                               NM_DEVICE (self));
+
+	if (value) {
+		wowl = _nm_utils_ascii_str_to_int64 (value, 10,
+		                                     NM_SETTING_WIRELESS_WAKE_ON_WLAN_NONE,
+		                                     G_MAXINT32,
+		                                     NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT);
+
+		if (NM_FLAGS_ANY (wowl, NM_SETTING_WIRELESS_WAKE_ON_WLAN_EXCLUSIVE_FLAGS)) {
+			if (!nm_utils_is_power_of_two (wowl)) {
+				_LOGD (LOGD_WIFI, "invalid default value %u for wake-on-wlan: "
+				       "'default' and 'ignore' are exclusive flags", (guint) wowl);
+				wowl = NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT;
+			}
+		} else if (NM_FLAGS_ANY (wowl, ~NM_SETTING_WIRELESS_WAKE_ON_WLAN_ALL)) {
+			_LOGD (LOGD_WIFI, "invalid default value %u for wake-on-wlan", (guint) wowl);
+			wowl = NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT;
+		}
+		if (wowl != NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT)
+			goto found;
+	}
+	wowl = NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE;
+found:
+	return nm_platform_wifi_set_wake_on_wlan (NM_PLATFORM_GET, nm_device_get_ifindex (NM_DEVICE (self)), wowl);
+}
+
 static NMActStageReturn
 act_stage1_prepare (NMDevice *device, NMDeviceStateReason *out_failure_reason)
 {
@@ -2614,6 +2658,8 @@ act_stage2_config (NMDevice *device, NMDeviceStateReason *out_failure_reason)
 	s_wireless = nm_connection_get_setting_wireless (connection);
 	g_assert (s_wireless);
 
+	wake_on_wlan_enable (self);
+
 	/* If we need secrets, get them */
 	setting_name = nm_connection_need_secrets (connection, NULL);
 	if (setting_name) {
@@ -3081,7 +3127,8 @@ can_reapply_change (NMDevice *device,
 		return nm_device_hash_check_invalid_keys (diffs,
 		                                          NM_SETTING_WIRELESS_SETTING_NAME,
 		                                          error,
-		                                          NM_SETTING_WIRELESS_MTU); /* reapplied with IP config */
+		                                          NM_SETTING_WIRELESS_MTU, /* reapplied with IP config */
+		                                          NM_SETTING_WIRELESS_WAKE_ON_WLAN);
 	}
 
 	device_class = NM_DEVICE_CLASS (nm_device_wifi_parent_class);
@@ -3093,6 +3140,20 @@ can_reapply_change (NMDevice *device,
 	                                         error);
 }
 
+static void
+reapply_connection (NMDevice *device, NMConnection *con_old, NMConnection *con_new)
+{
+	NMDeviceWifi *self = NM_DEVICE_WIFI (device);
+
+	NM_DEVICE_CLASS (nm_device_wifi_parent_class)->reapply_connection (device,
+	                                                                   con_old,
+	                                                                   con_new);
+
+	_LOGD (LOGD_DEVICE, "reapplying wireless settings");
+
+	wake_on_wlan_enable (self);
+}
+
 /*****************************************************************************/
 
 static void
@@ -3123,6 +3184,12 @@ get_property (GObject *object, guint prop_id,
 	case PROP_SCANNING:
 		g_value_set_boolean (value, priv->is_scanning);
 		break;
+	case PROP_LAST_SCAN:
+		g_value_set_int64 (value,
+		                   priv->last_scan > 0
+		                       ? nm_utils_monotonic_timestamp_as_boottime (priv->last_scan, NM_UTILS_NS_PER_MSEC)
+		                       : (gint64) -1);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -3256,6 +3323,7 @@ nm_device_wifi_class_init (NMDeviceWifiClass *klass)
 	parent_class->deactivate_reset_hw_addr = deactivate_reset_hw_addr;
 	parent_class->unmanaged_on_quit = unmanaged_on_quit;
 	parent_class->can_reapply_change = can_reapply_change;
+	parent_class->reapply_connection = reapply_connection;
 
 	parent_class->state_changed = device_state_changed;
 
@@ -3300,6 +3368,11 @@ nm_device_wifi_class_init (NMDeviceWifiClass *klass)
 	                          G_PARAM_READABLE |
 	                          G_PARAM_STATIC_STRINGS);
 
+	obj_properties[PROP_LAST_SCAN] =
+	    g_param_spec_int64 (NM_DEVICE_WIFI_LAST_SCAN, "", "",
+	                        -1, G_MAXINT64, -1,
+	                         G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
 	g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties);
 
 	signals[SCANNING_PROHIBITED] =
diff --git a/src/devices/wifi/nm-device-wifi.h b/src/devices/wifi/nm-device-wifi.h
index c13b00de..1c555f5f 100644
--- a/src/devices/wifi/nm-device-wifi.h
+++ b/src/devices/wifi/nm-device-wifi.h
@@ -37,6 +37,7 @@
 #define NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT "active-access-point"
 #define NM_DEVICE_WIFI_CAPABILITIES        "wireless-capabilities"
 #define NM_DEVICE_WIFI_SCANNING            "scanning"
+#define NM_DEVICE_WIFI_LAST_SCAN           "last-scan"
 
 #define NM_DEVICE_WIFI_SCANNING_PROHIBITED    "scanning-prohibited"
 
diff --git a/src/devices/wifi/nm-wifi-common.c b/src/devices/wifi/nm-wifi-common.c
index e5e16f03..8e079d11 100644
--- a/src/devices/wifi/nm-wifi-common.c
+++ b/src/devices/wifi/nm-wifi-common.c
@@ -200,6 +200,7 @@ const NMDBusInterfaceInfoExtended nm_interface_info_device_wireless = {
 			NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("AccessPoints",         "ao", NM_DEVICE_WIFI_ACCESS_POINTS),
 			NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("ActiveAccessPoint",    "o",  NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT),
 			NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("WirelessCapabilities", "u",  NM_DEVICE_WIFI_CAPABILITIES),
+			NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE   ("LastScan",             "x",  NM_DEVICE_WIFI_LAST_SCAN),
 		),
 	),
 	.legacy_property_changed = TRUE,
diff --git a/src/devices/wwan/nm-device-modem.c b/src/devices/wwan/nm-device-modem.c
index 2a3e9ebe..352b1c3e 100644
--- a/src/devices/wwan/nm-device-modem.c
+++ b/src/devices/wwan/nm-device-modem.c
@@ -542,7 +542,7 @@ act_stage3_ip6_config_start (NMDevice *device,
                              NMDeviceStateReason *out_failure_reason)
 {
 	return nm_modem_stage3_ip6_config_start (NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) device)->modem,
-	                                         nm_device_get_act_request (device),
+	                                         device,
 	                                         out_failure_reason);
 }
 
diff --git a/src/devices/wwan/nm-modem.c b/src/devices/wwan/nm-modem.c
index fbe99cc3..ff1579d1 100644
--- a/src/devices/wwan/nm-modem.c
+++ b/src/devices/wwan/nm-modem.c
@@ -704,6 +704,8 @@ nm_modem_stage3_ip4_config_start (NMModem *self,
 	connection = nm_act_request_get_applied_connection (req);
 	g_return_val_if_fail (connection, NM_ACT_STAGE_RETURN_FAILURE);
 
+	nm_modem_set_route_parameters_from_device (self, device);
+
 	method = nm_utils_get_ip_config_method (connection, NM_TYPE_SETTING_IP4_CONFIG);
 
 	/* Only Disabled and Auto methods make sense for WWAN */
@@ -745,8 +747,6 @@ nm_modem_ip4_pre_commit (NMModem *modem,
 {
 	NMModemPrivate *priv = NM_MODEM_GET_PRIVATE (modem);
 
-	nm_modem_set_route_parameters_from_device (modem, device);
-
 	/* If the modem has an ethernet-type data interface (ie, not PPP and thus
 	 * not point-to-point) and IP config has a /32 prefix, then we assume that
 	 * ARP will be pointless and we turn it off.
@@ -804,20 +804,25 @@ stage3_ip6_config_request (NMModem *self, NMDeviceStateReason *out_failure_reaso
 
 NMActStageReturn
 nm_modem_stage3_ip6_config_start (NMModem *self,
-                                  NMActRequest *req,
+                                  NMDevice *device,
                                   NMDeviceStateReason *out_failure_reason)
 {
 	NMModemPrivate *priv;
+	NMActRequest *req;
 	NMActStageReturn ret;
 	NMConnection *connection;
 	const char *method;
 
 	g_return_val_if_fail (NM_IS_MODEM (self), NM_ACT_STAGE_RETURN_FAILURE);
-	g_return_val_if_fail (NM_IS_ACT_REQUEST (req), NM_ACT_STAGE_RETURN_FAILURE);
+
+	req = nm_device_get_act_request (device);
+	g_return_val_if_fail (req, NM_ACT_STAGE_RETURN_FAILURE);
 
 	connection = nm_act_request_get_applied_connection (req);
 	g_return_val_if_fail (connection, NM_ACT_STAGE_RETURN_FAILURE);
 
+	nm_modem_set_route_parameters_from_device (self, device);
+
 	method = nm_utils_get_ip_config_method (connection, NM_TYPE_SETTING_IP6_CONFIG);
 
 	/* Only Ignore and Auto methods make sense for WWAN */
diff --git a/src/devices/wwan/nm-modem.h b/src/devices/wwan/nm-modem.h
index 3e281c0c..6e78d2d5 100644
--- a/src/devices/wwan/nm-modem.h
+++ b/src/devices/wwan/nm-modem.h
@@ -221,7 +221,7 @@ NMActStageReturn nm_modem_stage3_ip4_config_start (NMModem *modem,
                                                    NMDeviceStateReason *out_failure_reason);
 
 NMActStageReturn nm_modem_stage3_ip6_config_start (NMModem *modem,
-                                                   NMActRequest *req,
+                                                   NMDevice *device,
                                                    NMDeviceStateReason *out_failure_reason);
 
 void nm_modem_ip4_pre_commit (NMModem *modem, NMDevice *device, NMIP4Config *config);
diff --git a/src/dhcp/nm-dhcp-client.c b/src/dhcp/nm-dhcp-client.c
index ba517606..390b7054 100644
--- a/src/dhcp/nm-dhcp-client.c
+++ b/src/dhcp/nm-dhcp-client.c
@@ -513,69 +513,15 @@ nm_dhcp_client_start_ip4 (NMDhcpClient *self,
 }
 
 static GBytes *
-generate_duid_from_machine_id (void)
+get_duid (NMDhcpClient *self, gboolean global)
 {
-	const int DUID_SIZE = 18;
-	guint8 *duid_buffer;
-	GChecksum *sum;
-	guint8 buffer[32]; /* SHA256 digest size */
-	gsize sumlen = sizeof (buffer);
-	const guint16 duid_type = g_htons (4);
-	uuid_t uuid;
-	gs_free char *machine_id_s = NULL;
-	gs_free char *str = NULL;
-	GBytes *duid;
-
-	machine_id_s = nm_utils_machine_id_read ();
-	if (nm_utils_machine_id_parse (machine_id_s, uuid)) {
-		/* Hash the machine ID so it's not leaked to the network */
-		sum = g_checksum_new (G_CHECKSUM_SHA256);
-		g_checksum_update (sum, (const guchar *) &uuid, sizeof (uuid));
-		g_checksum_get_digest (sum, buffer, &sumlen);
-		g_checksum_free (sum);
-	} else {
-		nm_log_warn (LOGD_DHCP, "dhcp: failed to read " SYSCONFDIR "/machine-id "
-		             "or " LOCALSTATEDIR "/lib/dbus/machine-id to generate "
-		             "DHCPv6 DUID; creating non-persistent random DUID.");
-
-		nm_utils_random_bytes (buffer, sizeof (buffer));
-	}
-
-	/* Generate a DHCP Unique Identifier for DHCPv6 using the
-	 * DUID-UUID method (see RFC 6355 section 4).  Format is:
-	 *
-	 * u16: type (DUID-UUID = 4)
-	 * u8[16]: UUID bytes
-	 */
-	duid_buffer = g_malloc (DUID_SIZE);
-
-	G_STATIC_ASSERT_EXPR (sizeof (duid_type) == 2);
-	memcpy (&duid_buffer[0], &duid_type, 2);
-
-	/* Since SHA256 is 256 bits, but UUID is 128 bits, we just take the first
-	 * 128 bits of the SHA256 as the DUID-UUID.
-	 */
-	memcpy (&duid_buffer[2], buffer, 16);
-
-	duid = g_bytes_new_take (duid_buffer, DUID_SIZE);
-	nm_log_dbg (LOGD_DHCP, "dhcp: generated DUID %s",
-	            (str = nm_dhcp_utils_duid_to_string (duid)));
-	return duid;
-}
-
-static GBytes *
-get_duid (NMDhcpClient *self)
-{
-	static GBytes *duid = NULL;
-
-	if (G_UNLIKELY (!duid))
-		duid = generate_duid_from_machine_id ();
-
-	return g_bytes_ref (duid);
+	return NULL;
 }
 
 gboolean
 nm_dhcp_client_start_ip6 (NMDhcpClient *self,
+                          GBytes *client_id,
+                          NMDhcpDuidEnforce enforce_duid,
                           const char *dhcp_anycast_addr,
                           const struct in6_addr *ll_addr,
                           const char *hostname,
@@ -592,11 +538,17 @@ nm_dhcp_client_start_ip6 (NMDhcpClient *self,
 	g_return_val_if_fail (priv->addr_family == AF_INET6, FALSE);
 	g_return_val_if_fail (priv->uuid != NULL, FALSE);
 
-	/* If we don't have one yet, read the default DUID for this DHCPv6 client
-	 * from the client-specific persistent configuration.
-	 */
+	nm_assert (!priv->duid);
+	nm_assert (client_id);
+
+	if (enforce_duid == NM_DHCP_DUID_ENFORCE_NEVER)
+		priv->duid = NM_DHCP_CLIENT_GET_CLASS (self)->get_duid (self, TRUE);
+	else if (enforce_duid == NM_DHCP_DUID_ENFORCE_LEASE_FALLBACK)
+		priv->duid = NM_DHCP_CLIENT_GET_CLASS (self)->get_duid (self, FALSE);
+
+	/* NM_DHCP_DUID_ENFORCE_ALWAYS and fallback */
 	if (!priv->duid)
-		priv->duid = NM_DHCP_CLIENT_GET_CLASS (self)->get_duid (self);
+		priv->duid = g_bytes_ref (client_id);
 
 	_LOGD ("DUID is '%s'", (str = nm_dhcp_utils_duid_to_string (priv->duid)));
 
diff --git a/src/dhcp/nm-dhcp-client.h b/src/dhcp/nm-dhcp-client.h
index 111b063b..98c3ed26 100644
--- a/src/dhcp/nm-dhcp-client.h
+++ b/src/dhcp/nm-dhcp-client.h
@@ -23,6 +23,7 @@
 #include "nm-setting-ip6-config.h"
 #include "nm-ip4-config.h"
 #include "nm-ip6-config.h"
+#include "nm-dhcp-utils.h"
 
 #define NM_DHCP_TIMEOUT_DEFAULT ((guint32) 45) /* default DHCP timeout, in seconds */
 #define NM_DHCP_TIMEOUT_INFINITY G_MAXINT32
@@ -95,13 +96,15 @@ typedef struct {
 	/**
 	 * get_duid:
 	 * @self: the #NMDhcpClient
+	 * @global: if set to #true, the duid should be searched also in the
+	 *          DHCP client's system-wide persistent configuration.
 	 *
 	 * Attempts to find an existing DHCPv6 DUID for this client in the DHCP
 	 * client's persistent configuration.  Returned DUID should be the binary
 	 * representation of the DUID.  If no DUID is found, %NULL should be
 	 * returned.
 	 */
-	GBytes *(*get_duid) (NMDhcpClient *self);
+	GBytes *(*get_duid) (NMDhcpClient *self, gboolean global);
 
 	/* Signals */
 	void (*state_changed) (NMDhcpClient *self,
@@ -149,6 +152,8 @@ gboolean nm_dhcp_client_start_ip4 (NMDhcpClient *self,
                                    const char *last_ip4_address);
 
 gboolean nm_dhcp_client_start_ip6 (NMDhcpClient *self,
+                                   GBytes *client_id,
+                                   NMDhcpDuidEnforce enforce_duid,
                                    const char *dhcp_anycast_addr,
                                    const struct in6_addr *ll_addr,
                                    const char *hostname,
diff --git a/src/dhcp/nm-dhcp-dhclient-utils.c b/src/dhcp/nm-dhcp-dhclient-utils.c
index 16a76d23..3290dd65 100644
--- a/src/dhcp/nm-dhcp-dhclient-utils.c
+++ b/src/dhcp/nm-dhcp-dhclient-utils.c
@@ -594,7 +594,8 @@ nm_dhcp_dhclient_save_duid (const char *leasefile,
                             const char *escaped_duid,
                             GError **error)
 {
-	char **lines = NULL, **iter, *l;
+	gs_strfreev char **lines = NULL;
+	char **iter, *l;
 	GString *s;
 	gboolean success;
 	gsize len = 0;
@@ -610,19 +611,9 @@ nm_dhcp_dhclient_save_duid (const char *leasefile,
 			return FALSE;
 		}
 
-		/* If the file already contains an uncommented DUID, leave it */
 		g_assert (contents);
 		lines = g_strsplit_set (contents, "\n\r", -1);
 		g_free (contents);
-		for (iter = lines; iter && *iter; iter++) {
-			l = *iter;
-			while (g_ascii_isspace (*l))
-				l++;
-			if (g_str_has_prefix (l, DUID_PREFIX)) {
-				g_strfreev (lines);
-				return TRUE;
-			}
-		}
 	}
 
 	s = g_string_sized_new (len + 50);
@@ -630,9 +621,31 @@ nm_dhcp_dhclient_save_duid (const char *leasefile,
 
 	/* Preserve existing leasefile contents */
 	if (lines) {
-		for (iter = lines; iter && *iter; iter++)
-			g_string_append (s, *iter[0] ? *iter : "\n");
-		g_strfreev (lines);
+		for (iter = lines; iter && *iter; iter++) {
+			l = *iter;
+			while (g_ascii_isspace (*l))
+				l++;
+			/* If we find an uncommented DUID in the file, check if
+			 * equal to the one we are going to write: if so, no need
+			 * to update the lease file, otherwise skip the old DUID.
+			 */
+			if (g_str_has_prefix (l, DUID_PREFIX)) {
+				gs_strfreev char **split = NULL;
+
+				split = g_strsplit (l, "\"", -1);
+				if (nm_streq0 (split[1], escaped_duid)) {
+					g_string_free (s, TRUE);
+					return TRUE;
+				}
+				continue;
+			}
+
+			if (*iter[0])
+				g_string_append (s, *iter);
+			/* avoid to add an extra '\n' at the end of file */
+			if ((iter[1]) != NULL)
+				g_string_append_c (s, '\n');
+		}
 	}
 
 	success = g_file_set_contents (leasefile, s->str, -1, error);
diff --git a/src/dhcp/nm-dhcp-dhclient.c b/src/dhcp/nm-dhcp-dhclient.c
index 93306ddd..43746dd3 100644
--- a/src/dhcp/nm-dhcp-dhclient.c
+++ b/src/dhcp/nm-dhcp-dhclient.c
@@ -582,7 +582,7 @@ state_changed (NMDhcpClient *client,
 }
 
 static GBytes *
-get_duid (NMDhcpClient *client)
+get_duid (NMDhcpClient *client, gboolean global)
 {
 	NMDhcpDhclient *self = NM_DHCP_DHCLIENT (client);
 	NMDhcpDhclientPrivate *priv = NM_DHCP_DHCLIENT_GET_PRIVATE (self);
@@ -607,7 +607,7 @@ get_duid (NMDhcpClient *client)
 		g_free (leasefile);
 	}
 
-	if (!duid) {
+	if (!duid && global) {
 		/* Otherwise read the default machine-wide DUID */
 		_LOGD ("looking for default DUID in '%s'", priv->def_leasefile);
 		duid = nm_dhcp_dhclient_read_duid (priv->def_leasefile, &error);
@@ -619,8 +619,7 @@ get_duid (NMDhcpClient *client)
 		}
 	}
 
-	/* return our DUID, otherwise let the parent class make a default DUID */
-	return duid ?: NM_DHCP_CLIENT_CLASS (nm_dhcp_dhclient_parent_class)->get_duid (client);
+	return duid;
 }
 
 /*****************************************************************************/
diff --git a/src/dhcp/nm-dhcp-manager.c b/src/dhcp/nm-dhcp-manager.c
index aa40e803..2d85c73a 100644
--- a/src/dhcp/nm-dhcp-manager.c
+++ b/src/dhcp/nm-dhcp-manager.c
@@ -164,6 +164,7 @@ client_start (NMDhcpManager *self,
               guint32 route_metric,
               const struct in6_addr *ipv6_ll_addr,
               GBytes *dhcp_client_id,
+              NMDhcpDuidEnforce enforce_duid,
               guint32 timeout,
               const char *dhcp_anycast_addr,
               const char *hostname,
@@ -218,7 +219,7 @@ client_start (NMDhcpManager *self,
 	if (addr_family == AF_INET)
 		success = nm_dhcp_client_start_ip4 (client, dhcp_client_id, dhcp_anycast_addr, hostname, last_ip4_address);
 	else
-		success = nm_dhcp_client_start_ip6 (client, dhcp_anycast_addr, ipv6_ll_addr, hostname, privacy, needed_prefixes);
+		success = nm_dhcp_client_start_ip6 (client, dhcp_client_id, enforce_duid, dhcp_anycast_addr, ipv6_ll_addr, hostname, privacy, needed_prefixes);
 
 	if (!success) {
 		remove_client_unref (self, client);
@@ -280,7 +281,7 @@ nm_dhcp_manager_start_ip4 (NMDhcpManager *self,
 
 	return client_start (self, AF_INET, multi_idx, iface, ifindex, hwaddr, uuid,
 	                     route_table, route_metric, NULL,
-	                     dhcp_client_id, timeout, dhcp_anycast_addr, hostname,
+	                     dhcp_client_id, 0, timeout, dhcp_anycast_addr, hostname,
 	                     use_fqdn, FALSE, 0, last_ip_address, 0);
 }
 
@@ -297,6 +298,8 @@ nm_dhcp_manager_start_ip6 (NMDhcpManager *self,
                            guint32 route_metric,
                            gboolean send_hostname,
                            const char *dhcp_hostname,
+                           GBytes *duid,
+                           NMDhcpDuidEnforce enforce_duid,
                            guint32 timeout,
                            const char *dhcp_anycast_addr,
                            gboolean info_only,
@@ -314,8 +317,8 @@ nm_dhcp_manager_start_ip6 (NMDhcpManager *self,
 		hostname = dhcp_hostname ?: priv->default_hostname;
 	}
 	return client_start (self, AF_INET6, multi_idx, iface, ifindex, hwaddr, uuid,
-	                     route_table, route_metric, ll_addr,
-	                     NULL, timeout, dhcp_anycast_addr, hostname, TRUE, info_only,
+	                     route_table, route_metric, ll_addr, duid, enforce_duid,
+	                     timeout, dhcp_anycast_addr, hostname, TRUE, info_only,
 	                     privacy, NULL, needed_prefixes);
 }
 
diff --git a/src/dhcp/nm-dhcp-manager.h b/src/dhcp/nm-dhcp-manager.h
index f8a7e31d..ed8ee742 100644
--- a/src/dhcp/nm-dhcp-manager.h
+++ b/src/dhcp/nm-dhcp-manager.h
@@ -72,6 +72,8 @@ NMDhcpClient * nm_dhcp_manager_start_ip6     (NMDhcpManager *manager,
                                               guint32 route_metric,
                                               gboolean send_hostname,
                                               const char *dhcp_hostname,
+                                              GBytes *duid,
+                                              NMDhcpDuidEnforce enforce_duid,
                                               guint32 timeout,
                                               const char *dhcp_anycast_addr,
                                               gboolean info_only,
diff --git a/src/dhcp/nm-dhcp-utils.h b/src/dhcp/nm-dhcp-utils.h
index 5c127bd1..afb87c1a 100644
--- a/src/dhcp/nm-dhcp-utils.h
+++ b/src/dhcp/nm-dhcp-utils.h
@@ -24,6 +24,12 @@
 #include "nm-ip4-config.h"
 #include "nm-ip6-config.h"
 
+typedef enum {
+	NM_DHCP_DUID_ENFORCE_NEVER = 0,
+	NM_DHCP_DUID_ENFORCE_LEASE_FALLBACK,
+	NM_DHCP_DUID_ENFORCE_ALWAYS,
+} NMDhcpDuidEnforce;
+
 NMIP4Config *nm_dhcp_utils_ip4_config_from_options (struct _NMDedupMultiIndex *multi_idx,
                                                     int ifindex,
                                                     const char *iface,
diff --git a/src/dhcp/tests/test-dhcp-dhclient.c b/src/dhcp/tests/test-dhcp-dhclient.c
index a8284b23..2f369aac 100644
--- a/src/dhcp/tests/test-dhcp-dhclient.c
+++ b/src/dhcp/tests/test-dhcp-dhclient.c
@@ -785,17 +785,18 @@ static void
 test_write_existing_duid (void)
 {
 	const char *duid = "\\000\\001\\000\\001\\023o\\023n\\000\\\"\\372\\214\\326\\302";
-	const char *expected_contents = "default-duid \"\\000\\001\\000\\001\\027X\\350X\\000#\\025\\010~\\254\";\n";
+	const char *original_contents = "default-duid \"\\000\\001\\000\\001\\027X\\350X\\000#\\025\\010~\\254\";\n";
+	const char *expected_contents = "default-duid \"\\000\\001\\000\\001\\023o\\023n\\000\\\"\\372\\214\\326\\302\";\n";
 	GError *error = NULL;
 	char *contents = NULL;
 	gboolean success;
 	const char *path = "test-dhclient-write-existing-duid.leases";
 
-	success = g_file_set_contents (path, expected_contents, -1, &error);
+	success = g_file_set_contents (path, original_contents, -1, &error);
 	g_assert_no_error (error);
 	g_assert (success);
 
-	/* Save other DUID; should be a no-op */
+	/* Save other DUID; should be overwritten */
 	success = nm_dhcp_dhclient_save_duid (path, duid, &error);
 	g_assert_no_error (error);
 	g_assert (success);
@@ -811,14 +812,14 @@ test_write_existing_duid (void)
 	g_free (contents);
 }
 
+#define DUID "\\000\\001\\000\\001\\023o\\023n\\000\\\"\\372\\214\\326\\302"
 static void
 test_write_existing_commented_duid (void)
 {
-	#define DUID "\\000\\001\\000\\001\\023o\\023n\\000\\\"\\372\\214\\326\\302"
-	#define ORIG_CONTENTS "#default-duid \"\\000\\001\\000\\001\\027X\\350X\\000#\\025\\010~\\254\";\n"
-	const char *expected_contents = \
-		"default-duid \"" DUID "\";\n"
-		ORIG_CONTENTS;
+#define ORIG_CONTENTS "#default-duid \"\\000\\001\\000\\001\\027X\\350X\\000#\\025\\010~\\254\";\n"
+	const char *expected_contents =
+	    "default-duid \"" DUID "\";\n"
+	    ORIG_CONTENTS;
 	GError *error = NULL;
 	char *contents = NULL;
 	gboolean success;
@@ -828,7 +829,7 @@ test_write_existing_commented_duid (void)
 	g_assert_no_error (error);
 	g_assert (success);
 
-	/* Save other DUID; should be a no-op */
+	/* Save other DUID; should be saved on top */
 	success = nm_dhcp_dhclient_save_duid (path, DUID, &error);
 	g_assert_no_error (error);
 	g_assert (success);
@@ -842,6 +843,33 @@ test_write_existing_commented_duid (void)
 	g_assert_cmpstr (expected_contents, ==, contents);
 
 	g_free (contents);
+#undef ORIG_CONTENTS
+}
+
+static void
+test_write_existing_multiline_duid (void)
+{
+#define ORIG_CONTENTS "### Commented old DUID ###\n" \
+                      "#default-duid \"\\000\\001\\000\\001\\027X\\350X\\000#\\025\\010~\\254\";\n"
+	const char *expected_contents = \
+	    "default-duid \"" DUID "\";\n"
+	    ORIG_CONTENTS;
+	GError *error = NULL;
+	gs_free char *contents = NULL;
+	gboolean success;
+	nmtst_auto_unlinkfile char *path = g_strdup ("test-dhclient-write-existing-multiline-duid.leases");
+
+	success = g_file_set_contents (path, ORIG_CONTENTS, -1, &error);
+	nmtst_assert_success (success, error);
+
+	success = nm_dhcp_dhclient_save_duid (path, DUID, &error);
+	nmtst_assert_success (success, error);
+
+	success = g_file_get_contents (path, &contents, NULL, &error);
+	nmtst_assert_success (success, error);
+
+	g_assert_cmpstr (expected_contents, ==, contents);
+#undef ORIG_CONTENTS
 }
 
 /*****************************************************************************/
@@ -1025,6 +1053,7 @@ main (int argc, char **argv)
 	g_test_add_func ("/dhcp/dhclient/write_duid", test_write_duid);
 	g_test_add_func ("/dhcp/dhclient/write_existing_duid", test_write_existing_duid);
 	g_test_add_func ("/dhcp/dhclient/write_existing_commented_duid", test_write_existing_commented_duid);
+	g_test_add_func ("/dhcp/dhclient/write_existing_multiline_duid", test_write_existing_multiline_duid);
 
 	return g_test_run ();
 }
diff --git a/src/dns/nm-dns-manager.c b/src/dns/nm-dns-manager.c
index f5500ee7..a29fd81f 100644
--- a/src/dns/nm-dns-manager.c
+++ b/src/dns/nm-dns-manager.c
@@ -768,8 +768,6 @@ update_resolv_conf (NMDnsManager *self,
 	gs_free char *content = NULL;
 	SpawnResult write_file_result = SR_SUCCESS;
 	int errsv;
-	const char *rc_path = _PATH_RESCONF;
-	nm_auto_free char *rc_path_real = NULL;
 	gboolean resconf_link_cached = FALSE;
 	gs_free char *resconf_link = NULL;
 
@@ -794,12 +792,27 @@ update_resolv_conf (NMDnsManager *self,
 	if (   rc_manager == NM_DNS_MANAGER_RESOLV_CONF_MAN_FILE
 	    || (   rc_manager == NM_DNS_MANAGER_RESOLV_CONF_MAN_SYMLINK
 	        && !_read_link_cached (_PATH_RESCONF, &resconf_link_cached, &resconf_link))) {
+		gs_free char *rc_path_syml = NULL;
+		nm_auto_free char *rc_path_real = NULL;
+		const char *rc_path = _PATH_RESCONF;
 		GError *local = NULL;
 
 		if (rc_manager == NM_DNS_MANAGER_RESOLV_CONF_MAN_FILE) {
-			rc_path_real = realpath (rc_path, NULL);
+			rc_path_real = realpath (_PATH_RESCONF, NULL);
 			if (rc_path_real)
 				rc_path = rc_path_real;
+			else {
+				/* realpath did not resolve a path-name. That either means,
+				 * _PATH_RESCONF:
+				 *   - does not exist
+				 *   - is a plain file
+				 *   - is a dangling symlink
+				 *
+				 * Handle the case, where it is a dangling symlink... */
+				rc_path_syml = nm_utils_read_link_absolute (_PATH_RESCONF, NULL);
+				if (rc_path_syml)
+					rc_path = rc_path_syml;
+			}
 		}
 
 		/* we first write to /etc/resolv.conf directly. If that fails,
diff --git a/src/nm-core-utils.c b/src/nm-core-utils.c
index b1a4cc25..54ccdb83 100644
--- a/src/nm-core-utils.c
+++ b/src/nm-core-utils.c
@@ -2521,20 +2521,20 @@ nm_utils_machine_id_read (void)
 	 */
 	if (   !g_file_get_contents ("/etc/machine-id", &contents, NULL, NULL)
 	    && !g_file_get_contents (LOCALSTATEDIR "/lib/dbus/machine-id", &contents, NULL, NULL))
-		return FALSE;
+		return NULL;
 
 	contents = g_strstrip (contents);
 
 	for (i = 0; i < 32; i++) {
 		if (!g_ascii_isxdigit (contents[i]))
-			return FALSE;
+			return NULL;
 		if (contents[i] >= 'A' && contents[i] <= 'F') {
 			/* canonicalize to lower-case */
 			contents[i] = 'a' + (contents[i] - 'A');
 		}
 	}
 	if (contents[i] != '\0')
-		return FALSE;
+		return NULL;
 
 	return g_steal_pointer (&contents);
 }
@@ -2896,6 +2896,22 @@ nm_utils_secret_key_get (const guint8 **out_secret_key,
 	return secret_key->is_good;
 }
 
+gint64
+nm_utils_secret_key_get_timestamp (void)
+{
+	struct stat stat_buf;
+	const guint8 *key;
+	gsize key_len;
+
+	if (!nm_utils_secret_key_get (&key, &key_len))
+		return 0;
+
+	if (stat (NMSTATEDIR "/secret_key", &stat_buf) != 0)
+		return 0;
+
+	return stat_buf.st_mtim.tv_sec;
+}
+
 /*****************************************************************************/
 
 const char *
diff --git a/src/nm-core-utils.h b/src/nm-core-utils.h
index 7f406d21..08530400 100644
--- a/src/nm-core-utils.h
+++ b/src/nm-core-utils.h
@@ -285,6 +285,7 @@ gboolean nm_utils_machine_id_parse (const char *id_str, /*uuid_t*/ guchar *out_u
 
 gboolean nm_utils_secret_key_get (const guint8 **out_secret_key,
                                   gsize *out_key_len);
+gint64 nm_utils_secret_key_get_timestamp (void);
 
 const char *nm_utils_get_boot_id (void);
 
diff --git a/src/nm-manager.c b/src/nm-manager.c
index 9f0891a7..c6d82c9d 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
@@ -1558,6 +1558,12 @@ again:
 	}
 }
 
+static gboolean
+device_is_wake_on_lan (NMPlatform *platform, NMDevice *device)
+{
+	return nm_platform_link_get_wake_on_lan (platform, nm_device_get_ip_ifindex (device));
+}
+
 static void
 remove_device (NMManager *self,
                NMDevice *device,
@@ -1567,14 +1573,19 @@ remove_device (NMManager *self,
 	NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
 	gboolean unmanage = FALSE;
 
-	_LOG2D (LOGD_DEVICE, device, "removing device (allow_unmanage %d, managed %d)",
-	        allow_unmanage, nm_device_get_managed (device, FALSE));
+	_LOG2D (LOGD_DEVICE, device, "removing device (allow_unmanage %d, managed %d, wol %d)",
+	        allow_unmanage, nm_device_get_managed (device, FALSE),
+	        device_is_wake_on_lan (priv->platform, device));
 
 	if (allow_unmanage && nm_device_get_managed (device, FALSE)) {
 
-		if (quitting)
-			unmanage = nm_device_unmanage_on_quit (device);
-		else {
+		if (quitting) {
+			/* Leave configured if wo(w)lan and quitting */
+			if (device_is_wake_on_lan (priv->platform, device))
+				unmanage = FALSE;
+			else
+				unmanage = nm_device_unmanage_on_quit (device);
+		} else {
 			/* the device is already gone. Unmanage it. */
 			unmanage = TRUE;
 		}
@@ -4747,12 +4758,16 @@ impl_manager_activate_connection (NMDBusObject *obj,
 	if (!active)
 		goto error;
 
-	nm_active_connection_authorize (g_steal_pointer (&active),
+	nm_active_connection_authorize (active,
 	                                NULL,
 	                                _async_op_complete_ac_auth_cb,
 	                                _async_op_data_new_ac_auth_activate_user (self,
 	                                                                          active,
 	                                                                          invocation));
+
+	/* we passed the pointer on to _async_op_data_new_ac_auth_activate_user() */
+	g_steal_pointer (&active);
+
 	return;
 
 error:
@@ -5135,12 +5150,6 @@ done:
 }
 
 static gboolean
-device_is_wake_on_lan (NMPlatform *platform, NMDevice *device)
-{
-	return nm_platform_link_get_wake_on_lan (platform, nm_device_get_ip_ifindex (device));
-}
-
-static gboolean
 sleep_devices_add (NMManager *self, NMDevice *device, gboolean suspending)
 {
 	NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
diff --git a/src/nm-policy.c b/src/nm-policy.c
index fe16cda5..125f2704 100644
--- a/src/nm-policy.c
+++ b/src/nm-policy.c
@@ -1244,8 +1244,10 @@ auto_activate_device (NMPolicy *self,
 	if (!best_connection)
 		return;
 
-	_LOGI (LOGD_DEVICE, "auto-activating connection '%s'",
-	       nm_settings_connection_get_id (best_connection));
+	_LOGI (LOGD_DEVICE, "auto-activating connection '%s' (%s)",
+	       nm_settings_connection_get_id (best_connection),
+	       nm_settings_connection_get_uuid (best_connection));
+
 	subject = nm_auth_subject_new_internal ();
 	ac = nm_manager_activate_connection (priv->manager,
 	                                     best_connection,
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
index 3a671acf..9bd662a1 100644
--- a/src/platform/nm-linux-platform.c
+++ b/src/platform/nm-linux-platform.c
@@ -6092,6 +6092,14 @@ wifi_indicate_addressing_running (NMPlatform *platform, int ifindex, gboolean ru
 	wifi_utils_indicate_addressing_running (wifi_data, running);
 }
 
+static gboolean
+wifi_set_wake_on_wlan (NMPlatform *platform, int ifindex,
+                       NMSettingWirelessWakeOnWLan wowl)
+{
+	WIFI_GET_WIFI_DATA_NETNS (wifi_data, platform, ifindex, FALSE);
+	return wifi_utils_set_wake_on_wlan (wifi_data, wowl);
+}
+
 /*****************************************************************************/
 
 static gboolean
@@ -7230,6 +7238,7 @@ nm_linux_platform_class_init (NMLinuxPlatformClass *klass)
 	platform_class->wifi_set_powersave = wifi_set_powersave;
 	platform_class->wifi_find_frequency = wifi_find_frequency;
 	platform_class->wifi_indicate_addressing_running = wifi_indicate_addressing_running;
+	platform_class->wifi_set_wake_on_wlan = wifi_set_wake_on_wlan;
 
 	platform_class->mesh_get_channel = mesh_get_channel;
 	platform_class->mesh_set_channel = mesh_set_channel;
diff --git a/src/platform/nm-netlink.h b/src/platform/nm-netlink.h
index c0dc09c4..b938fa4a 100644
--- a/src/platform/nm-netlink.h
+++ b/src/platform/nm-netlink.h
@@ -244,6 +244,9 @@ nla_put_string (struct nl_msg *msg, int attrtype, const char *str)
 #define NLA_PUT_STRING(msg, attrtype, value) \
 	NLA_PUT(msg, attrtype, (int) strlen(value) + 1, value)
 
+#define NLA_PUT_FLAG(msg, attrtype) \
+	NLA_PUT(msg, attrtype, 0, NULL)
+
 struct nlattr *nla_find (const struct nlattr *head, int len, int attrtype);
 
 static inline int
diff --git a/src/platform/nm-platform-utils.c b/src/platform/nm-platform-utils.c
index 114bf4b3..0d224443 100644
--- a/src/platform/nm-platform-utils.c
+++ b/src/platform/nm-platform-utils.c
@@ -384,6 +384,40 @@ nmp_utils_ethtool_get_link_settings (int ifindex,
 	return TRUE;
 }
 
+
+#define ADVERTISED_INVALID 0
+#define BASET_ALL_MODES (  ADVERTISED_10baseT_Half \
+                         | ADVERTISED_10baseT_Full \
+                         | ADVERTISED_100baseT_Half \
+                         | ADVERTISED_100baseT_Full \
+                         | ADVERTISED_1000baseT_Half \
+                         | ADVERTISED_1000baseT_Full \
+                         | ADVERTISED_10000baseT_Full )
+
+static inline guint32
+get_baset_mode (guint32 speed, NMPlatformLinkDuplexType duplex)
+{
+	if (duplex == NM_PLATFORM_LINK_DUPLEX_UNKNOWN)
+		return ADVERTISED_INVALID;
+
+	if (duplex == NM_PLATFORM_LINK_DUPLEX_HALF) {
+		switch (speed) {
+		case 10: return ADVERTISED_10baseT_Half;
+		case 100: return ADVERTISED_100baseT_Half;
+		case 1000: return ADVERTISED_1000baseT_Half;
+		default: return ADVERTISED_INVALID;
+		}
+	} else {
+		switch (speed) {
+		case 10: return ADVERTISED_10baseT_Full;
+		case 100: return ADVERTISED_100baseT_Full;
+		case 1000: return ADVERTISED_1000baseT_Full;
+		case 10000: return ADVERTISED_10000baseT_Full;
+		default: return ADVERTISED_INVALID;
+		}
+	}
+}
+
 gboolean
 nmp_utils_ethtool_set_link_settings (int ifindex,
                                      gboolean autoneg,
@@ -395,6 +429,8 @@ nmp_utils_ethtool_set_link_settings (int ifindex,
 	};
 
 	g_return_val_if_fail (ifindex > 0, FALSE);
+	g_return_val_if_fail (   (speed && duplex != NM_PLATFORM_LINK_DUPLEX_UNKNOWN)
+	                      || (!speed && duplex == NM_PLATFORM_LINK_DUPLEX_UNKNOWN), FALSE);
 
 	/* retrieve first current settings */
 	if (!ethtool_get (ifindex, &edata))
@@ -404,7 +440,31 @@ nmp_utils_ethtool_set_link_settings (int ifindex,
 	edata.cmd = ETHTOOL_SSET;
 	if (autoneg) {
 		edata.autoneg = AUTONEG_ENABLE;
-		edata.advertising = edata.supported;
+		if (!speed)
+			edata.advertising = edata.supported;
+		else {
+			guint32 mode;
+
+			mode = get_baset_mode (speed, duplex);
+
+			if (!mode) {
+				nm_log_trace (LOGD_PLATFORM,
+				              "ethtool[%d]: %uBASE-T %s duplex mode cannot be advertised",
+				              ifindex,
+				              speed,
+				              nm_platform_link_duplex_type_to_string (duplex));
+				return FALSE;
+			}
+			if (!(edata.supported & mode)) {
+				nm_log_trace (LOGD_PLATFORM,
+				              "ethtool[%d]: device does not support %uBASE-T %s duplex mode",
+				              ifindex,
+				              speed,
+				              nm_platform_link_duplex_type_to_string (duplex));
+				return FALSE;
+			}
+			edata.advertising = (edata.supported & ~BASET_ALL_MODES) | mode;
+		}
 	} else {
 		edata.autoneg = AUTONEG_DISABLE;
 
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
index 1a94ce28..f75019e8 100644
--- a/src/platform/nm-platform.c
+++ b/src/platform/nm-platform.c
@@ -2888,6 +2888,16 @@ nm_platform_wifi_indicate_addressing_running (NMPlatform *self, int ifindex, gbo
 	klass->wifi_indicate_addressing_running (self, ifindex, running);
 }
 
+gboolean
+nm_platform_wifi_set_wake_on_wlan (NMPlatform *self, int ifindex, NMSettingWirelessWakeOnWLan wowl)
+{
+	_CHECK_SELF (self, klass, FALSE);
+
+	g_return_val_if_fail (ifindex > 0, FALSE);
+
+	return klass->wifi_set_wake_on_wlan (self, ifindex, wowl);
+}
+
 guint32
 nm_platform_mesh_get_channel (NMPlatform *self, int ifindex)
 {
@@ -2995,6 +3005,13 @@ nm_platform_ethtool_get_link_settings (NMPlatform *self, int ifindex, gboolean *
 	return nmp_utils_ethtool_get_link_settings (ifindex, out_autoneg, out_speed, out_duplex);
 }
 
+NM_UTILS_LOOKUP_STR_DEFINE (nm_platform_link_duplex_type_to_string, NMPlatformLinkDuplexType,
+	NM_UTILS_LOOKUP_DEFAULT_WARN (NULL),
+	NM_UTILS_LOOKUP_STR_ITEM (NM_PLATFORM_LINK_DUPLEX_UNKNOWN, "unknown"),
+	NM_UTILS_LOOKUP_STR_ITEM (NM_PLATFORM_LINK_DUPLEX_FULL,    "full"),
+	NM_UTILS_LOOKUP_STR_ITEM (NM_PLATFORM_LINK_DUPLEX_HALF,    "half"),
+);
+
 /*****************************************************************************/
 
 const NMDedupMultiHeadEntry *
diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h
index 2d2bfaab..866df736 100644
--- a/src/platform/nm-platform.h
+++ b/src/platform/nm-platform.h
@@ -33,6 +33,7 @@
 #include "nm-core-utils.h"
 #include "nm-setting-vlan.h"
 #include "nm-setting-wired.h"
+#include "nm-setting-wireless.h"
 #include "nm-setting-ip-tunnel.h"
 
 #define NM_TYPE_PLATFORM            (nm_platform_get_type ())
@@ -867,6 +868,7 @@ typedef struct {
 	void        (*wifi_set_powersave)    (NMPlatform *, int ifindex, guint32 powersave);
 	guint32     (*wifi_find_frequency)   (NMPlatform *, int ifindex, const guint32 *freqs);
 	void        (*wifi_indicate_addressing_running) (NMPlatform *, int ifindex, gboolean running);
+	gboolean    (*wifi_set_wake_on_wlan) (NMPlatform *, int ifindex, NMSettingWirelessWakeOnWLan wowl);
 
 	guint32     (*mesh_get_channel)      (NMPlatform *, int ifindex);
 	gboolean    (*mesh_set_channel)      (NMPlatform *, int ifindex, guint32 channel);
@@ -1245,6 +1247,7 @@ void        nm_platform_wifi_set_mode         (NMPlatform *self, int ifindex, NM
 void        nm_platform_wifi_set_powersave    (NMPlatform *self, int ifindex, guint32 powersave);
 guint32     nm_platform_wifi_find_frequency   (NMPlatform *self, int ifindex, const guint32 *freqs);
 void        nm_platform_wifi_indicate_addressing_running (NMPlatform *self, int ifindex, gboolean running);
+gboolean    nm_platform_wifi_set_wake_on_wlan (NMPlatform *self, int ifindex, NMSettingWirelessWakeOnWLan wowl);
 
 guint32     nm_platform_mesh_get_channel      (NMPlatform *self, int ifindex);
 gboolean    nm_platform_mesh_set_channel      (NMPlatform *self, int ifindex, guint32 channel);
@@ -1449,6 +1452,7 @@ int nm_platform_ip_address_cmp_expiry (const NMPlatformIPAddress *a, const NMPla
 gboolean nm_platform_ethtool_set_wake_on_lan (NMPlatform *self, int ifindex, NMSettingWiredWakeOnLan wol, const char *wol_password);
 gboolean nm_platform_ethtool_set_link_settings (NMPlatform *self, int ifindex, gboolean autoneg, guint32 speed, NMPlatformLinkDuplexType duplex);
 gboolean nm_platform_ethtool_get_link_settings (NMPlatform *self, int ifindex, gboolean *out_autoneg, guint32 *out_speed, NMPlatformLinkDuplexType *out_duplex);
+const char * nm_platform_link_duplex_type_to_string (NMPlatformLinkDuplexType duplex);
 
 void nm_platform_ip4_dev_route_blacklist_set (NMPlatform *self,
                                               int ifindex,
diff --git a/src/platform/wifi/wifi-utils-nl80211.c b/src/platform/wifi/wifi-utils-nl80211.c
index 767e23a9..6c2ff3f5 100644
--- a/src/platform/wifi/wifi-utils-nl80211.c
+++ b/src/platform/wifi/wifi-utils-nl80211.c
@@ -271,6 +271,47 @@ nla_put_failure:
 	return FALSE;
 }
 
+static gboolean
+wifi_nl80211_set_wake_on_wlan (WifiData *data, NMSettingWirelessWakeOnWLan wowl)
+{
+	WifiDataNl80211 *nl80211 = (WifiDataNl80211 *) data;
+	nm_auto_nlmsg struct nl_msg *msg = NULL;
+	struct nlattr *triggers;
+	int err;
+
+	if (wowl == NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE)
+		return TRUE;
+
+	msg = nl80211_alloc_msg(nl80211, NL80211_CMD_SET_WOWLAN, 0);
+	if (!msg)
+		return FALSE;
+
+	triggers = nla_nest_start(msg, NL80211_ATTR_WOWLAN_TRIGGERS);
+
+	if (NM_FLAGS_HAS (wowl, NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY))
+		NLA_PUT_FLAG (msg, NL80211_WOWLAN_TRIG_ANY);
+	if (NM_FLAGS_HAS (wowl, NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT))
+		NLA_PUT_FLAG (msg, NL80211_WOWLAN_TRIG_DISCONNECT);
+	if (NM_FLAGS_HAS (wowl, NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC))
+		NLA_PUT_FLAG (msg, NL80211_WOWLAN_TRIG_MAGIC_PKT);
+	if (NM_FLAGS_HAS (wowl, NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE))
+		NLA_PUT_FLAG (msg, NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE);
+	if (NM_FLAGS_HAS (wowl, NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST))
+		NLA_PUT_FLAG (msg, NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST);
+	if (NM_FLAGS_HAS (wowl, NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE))
+		NLA_PUT_FLAG (msg, NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE);
+	if (NM_FLAGS_HAS (wowl, NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE))
+		NLA_PUT_FLAG (msg, NL80211_WOWLAN_TRIG_RFKILL_RELEASE);
+
+	nla_nest_end(msg, triggers);
+
+	err = nl80211_send_and_recv (nl80211, msg, NULL, NULL);
+	return err ? FALSE : TRUE;
+
+nla_put_failure:
+	return FALSE;
+}
+
 /* @divisor: pass what value @xbm should be divided by to get dBm */
 static guint32
 nl80211_xbm_to_percent (gint32 xbm, guint32 divisor)
@@ -846,6 +887,7 @@ wifi_nl80211_init (int ifindex)
 		.get_mode = wifi_nl80211_get_mode,
 		.set_mode = wifi_nl80211_set_mode,
 		.set_powersave = wifi_nl80211_set_powersave,
+		.set_wake_on_wlan = wifi_nl80211_set_wake_on_wlan,
 		.get_freq = wifi_nl80211_get_freq,
 		.find_freq = wifi_nl80211_find_freq,
 		.get_bssid = wifi_nl80211_get_bssid,
diff --git a/src/platform/wifi/wifi-utils-private.h b/src/platform/wifi/wifi-utils-private.h
index 59386514..627108cb 100644
--- a/src/platform/wifi/wifi-utils-private.h
+++ b/src/platform/wifi/wifi-utils-private.h
@@ -34,6 +34,9 @@ typedef struct {
 	/* Set power saving mode on an interface */
 	gboolean (*set_powersave) (WifiData *data, guint32 powersave);
 
+	/* Set WakeOnWLAN mode on an interface */
+	gboolean (*set_wake_on_wlan) (WifiData *data, NMSettingWirelessWakeOnWLan wowl);
+
 	/* Return current frequency in MHz (really associated BSS frequency) */
 	guint32 (*get_freq) (WifiData *data);
 
diff --git a/src/platform/wifi/wifi-utils.c b/src/platform/wifi/wifi-utils.c
index 8818dc9d..b3dd92ba 100644
--- a/src/platform/wifi/wifi-utils.c
+++ b/src/platform/wifi/wifi-utils.c
@@ -112,6 +112,15 @@ wifi_utils_set_powersave (WifiData *data, guint32 powersave)
 	return data->klass->set_powersave ? data->klass->set_powersave (data, powersave) : TRUE;
 }
 
+gboolean
+wifi_utils_set_wake_on_wlan (WifiData *data, NMSettingWirelessWakeOnWLan wowl)
+{
+	g_return_val_if_fail (data != NULL, FALSE);
+
+	return data->klass->set_wake_on_wlan ?
+	       data->klass->set_wake_on_wlan (data, wowl) : FALSE;
+}
+
 guint32
 wifi_utils_get_freq (WifiData *data)
 {
diff --git a/src/platform/wifi/wifi-utils.h b/src/platform/wifi/wifi-utils.h
index 8acc35fc..c69561de 100644
--- a/src/platform/wifi/wifi-utils.h
+++ b/src/platform/wifi/wifi-utils.h
@@ -25,6 +25,7 @@
 #include <net/ethernet.h>
 
 #include "nm-dbus-interface.h"
+#include "nm-setting-wireless.h"
 
 typedef struct WifiData WifiData;
 
@@ -66,6 +67,8 @@ gboolean wifi_utils_get_wowlan (WifiData *data);
 
 gboolean wifi_utils_set_powersave (WifiData *data, guint32 powersave);
 
+gboolean wifi_utils_set_wake_on_wlan (WifiData *data, NMSettingWirelessWakeOnWLan wowl);
+
 /* OLPC Mesh-only functions */
 guint32 wifi_utils_get_mesh_channel (WifiData *data);
 
diff --git a/src/settings/nm-settings-connection.c b/src/settings/nm-settings-connection.c
index 6526abc7..50cc1427 100644
--- a/src/settings/nm-settings-connection.c
+++ b/src/settings/nm-settings-connection.c
@@ -3189,8 +3189,9 @@ static const NMDBusInterfaceInfoExtended interface_info_settings_connection = {
 			&signal_info_removed,
 		),
 		.properties = NM_DEFINE_GDBUS_PROPERTY_INFOS (
-			NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("Unsaved", "b",  NM_SETTINGS_CONNECTION_UNSAVED),
-			NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE   ("Flags",   "u",  NM_SETTINGS_CONNECTION_FLAGS),
+			NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("Unsaved",  "b",  NM_SETTINGS_CONNECTION_UNSAVED),
+			NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE   ("Flags",    "u",  NM_SETTINGS_CONNECTION_FLAGS),
+			NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE   ("Filename", "s",  NM_SETTINGS_CONNECTION_FILENAME),
 		),
 	),
 	.legacy_property_changed = TRUE,
diff --git a/src/settings/nm-settings-connection.h b/src/settings/nm-settings-connection.h
index 70518687..cd64f976 100644
--- a/src/settings/nm-settings-connection.h
+++ b/src/settings/nm-settings-connection.h
@@ -42,11 +42,11 @@
 
 /* Properties */
 #define NM_SETTINGS_CONNECTION_UNSAVED  "unsaved"
+#define NM_SETTINGS_CONNECTION_FLAGS    "flags"
+#define NM_SETTINGS_CONNECTION_FILENAME "filename"
 
 /* Internal properties */
 #define NM_SETTINGS_CONNECTION_READY    "ready"
-#define NM_SETTINGS_CONNECTION_FLAGS    "flags"
-#define NM_SETTINGS_CONNECTION_FILENAME "filename"
 
 /**
  * NMSettingsConnectionIntFlags:
diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c
index 94018734..5bb629dc 100644
--- a/src/settings/nm-settings.c
+++ b/src/settings/nm-settings.c
@@ -653,7 +653,7 @@ plugin_loaded (GSList *list, const char *path)
 }
 
 static gboolean
-load_plugin (NMSettings *self, GSList *list, const char *pname, GError **error)
+load_plugin (NMSettings *self, GSList **list, const char *pname, GError **error)
 {
 	gs_free char *full_name = NULL;
 	gs_free char *path = NULL;
@@ -666,7 +666,7 @@ load_plugin (NMSettings *self, GSList *list, const char *pname, GError **error)
 	full_name = g_strdup_printf ("nm-settings-plugin-%s", pname);
 	path = g_module_build_path (NMPLUGINDIR, full_name);
 
-	if (plugin_loaded (list, path))
+	if (plugin_loaded (*list, path))
 		return TRUE;
 
 	if (stat (path, &st) != 0) {
@@ -719,7 +719,7 @@ load_plugin (NMSettings *self, GSList *list, const char *pname, GError **error)
 	g_object_set_qdata_full (obj, plugin_module_path_quark (), path, g_free);
 	path = NULL;
 	if (add_plugin (self, NM_SETTINGS_PLUGIN (obj)))
-		list = g_slist_append (list, g_steal_pointer (&obj));
+		*list = g_slist_append (*list, g_steal_pointer (&obj));
 
 	return TRUE;
 }
@@ -787,7 +787,7 @@ load_plugins (NMSettings *self, const char **plugins, GError **error)
 			continue;
 		}
 
-		success = load_plugin (self, list, pname, error);
+		success = load_plugin (self, &list, pname, error);
 		if (!success)
 			break;
 
@@ -797,7 +797,7 @@ load_plugins (NMSettings *self, const char **plugins, GError **error)
 			pname = "ibft";
 			add_ibft = FALSE;
 
-			success = load_plugin (self, list, "ibft", error);
+			success = load_plugin (self, &list, "ibft", error);
 			if (!success)
 				break;
 		}
@@ -886,6 +886,8 @@ connection_removed (NMSettingsConnection *connection, gpointer user_data)
 	g_object_unref (connection);
 
 	check_startup_complete (self);
+
+	g_object_unref (self);       /* Balanced by a ref in claim_connection() */
 }
 
 #define NM_DBUS_SERVICE_OPENCONNECT    "org.freedesktop.NetworkManager.openconnect"
@@ -998,6 +1000,11 @@ claim_connection (NMSettings *self, NMSettingsConnection *connection)
 	_clear_connections_cached_list (priv);
 
 	g_object_ref (connection);
+	/* FIXME(shutdown): The NMSettings instance can't be disposed
+	 * while there is any exported connection. Ideally we should
+	 * unexport all connections on NMSettings' disposal, but for now
+	 * leak @self on termination when there are connections alive. */
+	g_object_ref (self);
 	priv->connections_len++;
 	c_list_link_tail (&priv->connections_lst_head, &connection->_connections_lst);
 
diff --git a/src/settings/plugins/ifcfg-rh/nm-ifdown b/src/settings/plugins/ifcfg-rh/nm-ifdown
new file mode 100644
index 00000000..e7bd73ae
--- /dev/null
+++ b/src/settings/plugins/ifcfg-rh/nm-ifdown
@@ -0,0 +1,3 @@
+#!/bin/sh
+nmcli connection load "/etc/sysconfig/network-scripts/ifcfg-$1" &&
+exec nmcli connection down filename "/etc/sysconfig/network-scripts/ifcfg-$1"
diff --git a/src/settings/plugins/ifcfg-rh/nm-ifup b/src/settings/plugins/ifcfg-rh/nm-ifup
new file mode 100644
index 00000000..96637a92
--- /dev/null
+++ b/src/settings/plugins/ifcfg-rh/nm-ifup
@@ -0,0 +1,3 @@
+#!/bin/sh
+nmcli connection load "/etc/sysconfig/network-scripts/ifcfg-$1" &&
+exec nmcli connection up filename "/etc/sysconfig/network-scripts/ifcfg-$1"
diff --git a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
index 722d4e36..c1960846 100644
--- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
+++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
@@ -1685,12 +1685,13 @@ make_ip6_setting (shvarFile *ifcfg,
 {
 	NMSettingIPConfig *s_ip6 = NULL;
 	const char *v;
-	char *value = NULL;
-	char *str_value;
+	gs_free char *value = NULL;
 	char *route6_path = NULL;
 	gboolean ipv6init, ipv6forwarding, dhcp6 = FALSE;
 	char *method = NM_SETTING_IP6_CONFIG_METHOD_MANUAL;
-	char *ipv6addr, *ipv6addr_secondaries;
+	const char *ipv6addr, *ipv6addr_secondaries;
+	gs_free char *ipv6addr_to_free = NULL;
+	gs_free char *ipv6addr_secondaries_to_free = NULL;
 	gs_free const char **list = NULL;
 	const char *const *iter;
 	guint32 i;
@@ -1716,13 +1717,16 @@ make_ip6_setting (shvarFile *ifcfg,
 	 * When both are set, the device specified in IPV6_DEFAULTGW takes preference.
 	 */
 	if (network_ifcfg) {
-		char *ipv6_defaultgw, *ipv6_defaultdev;
-		char *default_dev = NULL;
+		const char *ipv6_defaultgw, *ipv6_defaultdev;
+		gs_free char *ipv6_defaultgw_to_free = NULL;
+		gs_free char *ipv6_defaultdev_to_free = NULL;
+		const char *default_dev = NULL;
 
 		/* Get the connection ifcfg device name and the global default route device */
-		value = svGetValueStr_cp (ifcfg, "DEVICE");
-		ipv6_defaultgw = svGetValueStr_cp (network_ifcfg, "IPV6_DEFAULTGW");
-		ipv6_defaultdev = svGetValueStr_cp (network_ifcfg, "IPV6_DEFAULTDEV");
+		nm_clear_g_free (&value);
+		v = svGetValueStr (ifcfg, "DEVICE", &value);
+		ipv6_defaultgw = svGetValueStr (network_ifcfg, "IPV6_DEFAULTGW", &ipv6_defaultgw_to_free);
+		ipv6_defaultdev = svGetValueStr (network_ifcfg, "IPV6_DEFAULTDEV", &ipv6_defaultdev_to_free);
 
 		if (ipv6_defaultgw) {
 			default_dev = strchr (ipv6_defaultgw, '%');
@@ -1735,66 +1739,64 @@ make_ip6_setting (shvarFile *ifcfg,
 		/* If there was a global default route device specified, then only connections
 		 * for that device can be the default connection.
 		 */
-		if (default_dev && value)
-			never_default = !!strcmp (value, default_dev);
-
-		g_free (ipv6_defaultgw);
-		g_free (ipv6_defaultdev);
-		g_free (value);
+		if (default_dev && v)
+			never_default = !!strcmp (v, default_dev);
 	}
 
 	/* Find out method property */
 	/* Is IPV6 enabled? Set method to "ignored", when not enabled */
-	str_value = svGetValueStr_cp (ifcfg, "IPV6INIT");
+	nm_clear_g_free (&value);
+	v = svGetValueStr (ifcfg, "IPV6INIT", &value);
 	ipv6init = svGetValueBoolean (ifcfg, "IPV6INIT", FALSE);
-	if (!str_value) {
+	if (!v) {
 		if (network_ifcfg)
 			ipv6init = svGetValueBoolean (network_ifcfg, "IPV6INIT", FALSE);
 	}
-	g_free (str_value);
 
 	if (!ipv6init)
 		method = NM_SETTING_IP6_CONFIG_METHOD_IGNORE;  /* IPv6 is disabled */
 	else {
 		ipv6forwarding = svGetValueBoolean (ifcfg, "IPV6FORWARDING", FALSE);
-		str_value = svGetValueStr_cp (ifcfg, "IPV6_AUTOCONF");
+		nm_clear_g_free (&value);
+		v = svGetValueStr (ifcfg, "IPV6_AUTOCONF", &value);
 		dhcp6 = svGetValueBoolean (ifcfg, "DHCPV6C", FALSE);
 
-		if (!g_strcmp0 (str_value, "shared"))
+		if (!g_strcmp0 (v, "shared"))
 			method = NM_SETTING_IP6_CONFIG_METHOD_SHARED;
-		else if (svParseBoolean (str_value, !ipv6forwarding))
+		else if (svParseBoolean (v, !ipv6forwarding))
 			method = NM_SETTING_IP6_CONFIG_METHOD_AUTO;
 		else if (dhcp6)
 			method = NM_SETTING_IP6_CONFIG_METHOD_DHCP;
 		else {
 			/* IPV6_AUTOCONF=no and no IPv6 address -> method 'link-local' */
-			g_free (str_value);
-			str_value = svGetValueStr_cp (ifcfg, "IPV6ADDR");
-			if (!str_value)
-				str_value = svGetValueStr_cp (ifcfg, "IPV6ADDR_SECONDARIES");
+			nm_clear_g_free (&value);
+			v = svGetValueStr (ifcfg, "IPV6ADDR", &value);
+			if (!v) {
+				nm_clear_g_free (&value);
+				v = svGetValueStr (ifcfg, "IPV6ADDR_SECONDARIES", &value);
+			}
 
-			if (!str_value)
+			if (!v)
 				method = NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL;
 		}
-		g_free (str_value);
 	}
 	/* TODO - handle other methods */
 
 	/* Read IPv6 Privacy Extensions configuration */
-	str_value = svGetValueStr_cp (ifcfg, "IPV6_PRIVACY");
-	if (str_value) {
-		ip6_privacy = svParseBoolean (str_value, FALSE);
+	nm_clear_g_free (&value);
+	v = svGetValueStr (ifcfg, "IPV6_PRIVACY", &value);
+	if (v) {
+		ip6_privacy = svParseBoolean (v, FALSE);
 		if (!ip6_privacy)
-			ip6_privacy = (g_strcmp0 (str_value, "rfc4941") == 0) ||
-			              (g_strcmp0 (str_value, "rfc3041") == 0);
+			ip6_privacy = (g_strcmp0 (v, "rfc4941") == 0) ||
+			              (g_strcmp0 (v, "rfc3041") == 0);
 	}
 	ip6_privacy_prefer_public_ip = svGetValueBoolean (ifcfg, "IPV6_PRIVACY_PREFER_PUBLIC_IP", FALSE);
-	ip6_privacy_val = str_value ?
+	ip6_privacy_val = v ?
 	                      (ip6_privacy ?
 	                          (ip6_privacy_prefer_public_ip ? NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_PUBLIC_ADDR : NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_TEMP_ADDR) :
 	                          NM_SETTING_IP6_CONFIG_PRIVACY_DISABLED) :
 	                      NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN;
-	g_free (str_value);
 
 	/* the route table (policy routing) is ignored if we don't handle routes. */
 	route_table = svGetValueInt64 (ifcfg, "IPV6_ROUTE_TABLE", 10,
@@ -1821,19 +1823,25 @@ make_ip6_setting (shvarFile *ifcfg,
 	if (strcmp (method, NM_SETTING_IP6_CONFIG_METHOD_IGNORE) == 0)
 		return NM_SETTING (s_ip6);
 
-	value = svGetValueStr_cp (ifcfg, "DHCPV6_HOSTNAME");
+	nm_clear_g_free (&value);
+	v = svGetValueStr (ifcfg, "DHCPV6_DUID", &value);
+	if (v)
+		g_object_set (s_ip6, NM_SETTING_IP6_CONFIG_DHCP_DUID, v, NULL);
+
+	nm_clear_g_free (&value);
+	v = svGetValueStr (ifcfg, "DHCPV6_HOSTNAME", &value);
 	/* Use DHCP_HOSTNAME as fallback if it is in FQDN format and ipv6.method is
 	 * auto or dhcp: this is required to support old ifcfg files
 	 */
-	if (!value && (   !strcmp (method, NM_SETTING_IP6_CONFIG_METHOD_AUTO)
+	if (!v && (   !strcmp (method, NM_SETTING_IP6_CONFIG_METHOD_AUTO)
 		       || !strcmp (method, NM_SETTING_IP6_CONFIG_METHOD_DHCP))) {
-		value = svGetValueStr_cp (ifcfg, "DHCP_HOSTNAME");
-		if (value && !strchr (value, '.'))
-			g_clear_pointer (&value, g_free);
+		nm_clear_g_free (&value);
+		v = svGetValueStr (ifcfg, "DHCP_HOSTNAME", &value);
+		if (v && !strchr (v, '.'))
+			v = NULL;
 	}
-	if (value)
-		g_object_set (s_ip6, NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, value, NULL);
-	g_free (value);
+	if (v)
+		g_object_set (s_ip6, NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, v, NULL);
 
 	g_object_set (s_ip6, NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME,
 		      svGetValueBoolean (ifcfg, "DHCPV6_SEND_HOSTNAME", TRUE), NULL);
@@ -1843,18 +1851,16 @@ make_ip6_setting (shvarFile *ifcfg,
 	 * added to the automatic ones. Note that this is not currently supported by
 	 * the legacy 'network' service (ifup-eth).
 	 */
-	ipv6addr = svGetValueStr_cp (ifcfg, "IPV6ADDR");
-	ipv6addr_secondaries = svGetValueStr_cp (ifcfg, "IPV6ADDR_SECONDARIES");
+	ipv6addr = svGetValueStr (ifcfg, "IPV6ADDR", &ipv6addr_to_free);
+	ipv6addr_secondaries = svGetValueStr (ifcfg, "IPV6ADDR_SECONDARIES", &ipv6addr_secondaries_to_free);
 
+	nm_clear_g_free (&value);
 	value = g_strjoin (ipv6addr && ipv6addr_secondaries ? " " : NULL,
 	                   ipv6addr ?: "",
 	                   ipv6addr_secondaries ?: "",
 	                   NULL);
-	g_free (ipv6addr);
-	g_free (ipv6addr_secondaries);
 
 	list = nm_utils_strsplit_set (value, " ");
-	g_free (value);
 	for (iter = list, i = 0; iter && *iter; iter++, i++) {
 		NMIPAddress *addr = NULL;
 
@@ -1868,25 +1874,26 @@ make_ip6_setting (shvarFile *ifcfg,
 
 	/* Gateway */
 	if (nm_setting_ip_config_get_num_addresses (s_ip6)) {
-		value = svGetValueStr_cp (ifcfg, "IPV6_DEFAULTGW");
-		if (!value) {
+		nm_clear_g_free (&value);
+		v = svGetValueStr (ifcfg, "IPV6_DEFAULTGW", &value);
+		if (!v) {
 			/* If no gateway in the ifcfg, try global /etc/sysconfig/network instead */
-			if (network_ifcfg)
-				value = svGetValueStr_cp (network_ifcfg, "IPV6_DEFAULTGW");
+			if (network_ifcfg) {
+				nm_clear_g_free (&value);
+				v = svGetValueStr (network_ifcfg, "IPV6_DEFAULTGW", &value);
+			}
 		}
-		if (value) {
+		if (v) {
 			char *ptr;
-			if ((ptr = strchr (value, '%')) != NULL)
+			if ((ptr = strchr (v, '%')) != NULL)
 				*ptr = '\0';  /* remove %interface prefix if present */
-			if (!nm_utils_ipaddr_valid (AF_INET6, value)) {
+			if (!nm_utils_ipaddr_valid (AF_INET6, v)) {
 				g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION,
-				             "Invalid IP6 address '%s'", value);
-				g_free (value);
+				             "Invalid IP6 address '%s'", v);
 				goto error;
 			}
 
-			g_object_set (s_ip6, NM_SETTING_IP_CONFIG_GATEWAY, value, NULL);
-			g_free (value);
+			g_object_set (s_ip6, NM_SETTING_IP_CONFIG_GATEWAY, v, NULL);
 		}
 	}
 
@@ -1900,11 +1907,10 @@ make_ip6_setting (shvarFile *ifcfg,
 	g_object_set (s_ip6, NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE, i_val, NULL);
 
 	/* IPv6 tokenized interface identifier */
-	str_value = svGetValueStr_cp (ifcfg, "IPV6_TOKEN");
-	if (str_value) {
-		g_object_set (s_ip6, NM_SETTING_IP6_CONFIG_TOKEN, str_value, NULL);
-		g_free (str_value);
-	}
+	nm_clear_g_free (&value);
+	v = svGetValueStr (ifcfg, "IPV6_TOKEN", &value);
+	if (v)
+		g_object_set (s_ip6, NM_SETTING_IP6_CONFIG_TOKEN, v, NULL);
 
 	/* DNS servers
 	 * Pick up just IPv6 addresses (IPv4 addresses are taken by make_ip4_setting())
@@ -1913,24 +1919,22 @@ make_ip6_setting (shvarFile *ifcfg,
 		char tag[256];
 
 		numbered_tag (tag, "DNS", i);
-		value = svGetValueStr_cp (ifcfg, tag);
-		if (!value) {
+		nm_clear_g_free (&value);
+		v = svGetValueStr (ifcfg, tag, &value);
+		if (!v) {
 			/* all done */
 			break;
 		}
 
-		if (nm_utils_ipaddr_valid (AF_INET6, value)) {
-			if (!nm_setting_ip_config_add_dns (s_ip6, value))
+		if (nm_utils_ipaddr_valid (AF_INET6, v)) {
+			if (!nm_setting_ip_config_add_dns (s_ip6, v))
 				PARSE_WARNING ("duplicate DNS server %s", tag);
-		} else if (nm_utils_ipaddr_valid (AF_INET, value)) {
+		} else if (nm_utils_ipaddr_valid (AF_INET, v)) {
 			/* Ignore IPv4 addresses */
 		} else {
-			PARSE_WARNING ("invalid DNS server address %s", value);
-			g_free (value);
+			PARSE_WARNING ("invalid DNS server address %s", v);
 			goto error;
 		}
-
-		g_free (value);
 	}
 
 	if (!routes_read) {
@@ -1961,7 +1965,6 @@ make_ip6_setting (shvarFile *ifcfg,
 	/* DNS options */
 	nm_clear_g_free (&value);
 	parse_dns_options (s_ip6, svGetValue (ifcfg, "IPV6_RES_OPTIONS", &value));
-	g_free (value);
 
 	/* DNS priority */
 	priority = svGetValueInt64 (ifcfg, "IPV6_DNS_PRIORITY", 10, G_MININT32, G_MAXINT32, 0);
@@ -4171,8 +4174,8 @@ parse_ethtool_options (shvarFile *ifcfg, NMSettingWired *s_wired, const char *va
 	              NM_SETTING_WIRED_WAKE_ON_LAN, wol_flags,
 	              NM_SETTING_WIRED_WAKE_ON_LAN_PASSWORD, ignore_wol_password ? NULL : wol_password,
 	              NM_SETTING_WIRED_AUTO_NEGOTIATE, autoneg,
-	              NM_SETTING_WIRED_SPEED, autoneg ? 0 : speed,
-	              NM_SETTING_WIRED_DUPLEX, autoneg ? NULL : duplex,
+	              NM_SETTING_WIRED_SPEED, speed,
+	              NM_SETTING_WIRED_DUPLEX, duplex,
 	              NULL);
 }
 
diff --git a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
index bdad7389..fdb2e10a 100644
--- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
+++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
@@ -1135,6 +1135,9 @@ write_wired_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
 	/* Stuff ETHTOOL_OPT with required options */
 	str = NULL;
 	auto_negotiate = nm_setting_wired_get_auto_negotiate (s_wired);
+	speed = nm_setting_wired_get_speed (s_wired);
+	duplex = nm_setting_wired_get_duplex (s_wired);
+
 	/* autoneg off + speed 0 + duplex NULL, means we want NM
 	 * to skip link configuration which is default. So write
 	 * down link config only if we have auto-negotiate true or
@@ -1143,18 +1146,14 @@ write_wired_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
 	if (auto_negotiate) {
 		str = g_string_sized_new (64);
 		g_string_printf (str, "autoneg on");
-	} else {
-		speed = nm_setting_wired_get_speed (s_wired);
-		duplex = nm_setting_wired_get_duplex (s_wired);
-		if (speed || duplex) {
-			str = g_string_sized_new (64);
-			g_string_printf (str, "autoneg off");
-			if (speed)
-				g_string_append_printf (str, " speed %u", speed);
-			if (duplex)
-				g_string_append_printf (str, " duplex %s", duplex);
-		}
+	} else if (speed || duplex) {
+		str = g_string_sized_new (64);
+		g_string_printf (str, "autoneg off");
 	}
+	if (speed)
+		g_string_append_printf (str, " speed %u", speed);
+	if (duplex)
+		g_string_append_printf (str, " duplex %s", duplex);
 
 	wol = nm_setting_wired_get_wake_on_lan (s_wired);
 	wol_password = nm_setting_wired_get_wake_on_lan_password (s_wired);
@@ -2568,6 +2567,7 @@ write_ip6_setting (NMConnection *connection,
 		svUnsetValue (ifcfg, "IPV6INIT");
 		svUnsetValue (ifcfg, "IPV6_AUTOCONF");
 		svUnsetValue (ifcfg, "DHCPV6C");
+		svUnsetValue (ifcfg, "DHCPv6_DUID");
 		svUnsetValue (ifcfg, "DHCPV6_HOSTNAME");
 		svUnsetValue (ifcfg, "DHCPV6_SEND_HOSTNAME");
 		svUnsetValue (ifcfg, "IPV6_DEFROUTE");
@@ -2608,6 +2608,9 @@ write_ip6_setting (NMConnection *connection,
 		svUnsetValue (ifcfg, "DHCPV6C");
 	}
 
+	svSetValueStr (ifcfg, "DHCPV6_DUID",
+	               nm_setting_ip6_config_get_dhcp_duid (NM_SETTING_IP6_CONFIG (s_ip6)));
+
 	write_ip6_setting_dhcp_hostname (s_ip6, ifcfg);
 
 	/* Write out IP addresses */
diff --git a/src/supplicant/nm-supplicant-interface.c b/src/supplicant/nm-supplicant-interface.c
index 3511b151..71e6a35a 100644
--- a/src/supplicant/nm-supplicant-interface.c
+++ b/src/supplicant/nm-supplicant-interface.c
@@ -129,7 +129,7 @@ typedef struct {
 	GHashTable *   bss_proxies;
 	char *         current_bss;
 
-	gint32         last_scan; /* timestamp as returned by nm_utils_get_monotonic_timestamp_s() */
+	gint64         last_scan; /* timestamp as returned by nm_utils_get_monotonic_timestamp_ms() */
 
 } NMSupplicantInterfacePrivate;
 
@@ -209,7 +209,7 @@ bss_proxy_properties_changed_cb (GDBusProxy *proxy,
 	NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self);
 
 	if (priv->scanning)
-		priv->last_scan = nm_utils_get_monotonic_timestamp_s ();
+		priv->last_scan = nm_utils_get_monotonic_timestamp_ms ();
 
 	g_signal_emit (self, signals[BSS_UPDATED], 0,
 	               g_dbus_proxy_get_object_path (proxy),
@@ -344,7 +344,7 @@ set_state (NMSupplicantInterface *self, NMSupplicantInterfaceState new_state)
 
 	if (   priv->state == NM_SUPPLICANT_INTERFACE_STATE_SCANNING
 	    || old_state == NM_SUPPLICANT_INTERFACE_STATE_SCANNING)
-		priv->last_scan = nm_utils_get_monotonic_timestamp_s ();
+		priv->last_scan = nm_utils_get_monotonic_timestamp_ms ();
 
 	/* Disconnect reason is no longer relevant when not in the DISCONNECTED state */
 	if (priv->state != NM_SUPPLICANT_INTERFACE_STATE_DISCONNECTED)
@@ -406,7 +406,7 @@ set_scanning (NMSupplicantInterface *self, gboolean new_scanning)
 
 		/* Cache time of last scan completion */
 		if (priv->scanning == FALSE)
-			priv->last_scan = nm_utils_get_monotonic_timestamp_s ();
+			priv->last_scan = nm_utils_get_monotonic_timestamp_ms ();
 
 		_notify (self, PROP_SCANNING);
 	}
@@ -438,8 +438,8 @@ nm_supplicant_interface_get_current_bss (NMSupplicantInterface *self)
 	return priv->state >= NM_SUPPLICANT_INTERFACE_STATE_READY ? priv->current_bss : NULL;
 }
 
-gint32
-nm_supplicant_interface_get_last_scan_time (NMSupplicantInterface *self)
+gint64
+nm_supplicant_interface_get_last_scan (NMSupplicantInterface *self)
 {
 	return NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self)->last_scan;
 }
@@ -987,7 +987,7 @@ wpas_iface_scan_done (GDBusProxy *proxy,
 	NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self);
 
 	/* Cache last scan completed time */
-	priv->last_scan = nm_utils_get_monotonic_timestamp_s ();
+	priv->last_scan = nm_utils_get_monotonic_timestamp_ms ();
 	priv->scan_done_success |= success;
 	scan_done_emit_signal (self);
 }
@@ -1002,7 +1002,7 @@ wpas_iface_bss_added (GDBusProxy *proxy,
 	NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self);
 
 	if (priv->scanning)
-		priv->last_scan = nm_utils_get_monotonic_timestamp_s ();
+		priv->last_scan = nm_utils_get_monotonic_timestamp_ms ();
 
 	bss_add_new (self, path);
 }
diff --git a/src/supplicant/nm-supplicant-interface.h b/src/supplicant/nm-supplicant-interface.h
index f32ad8dd..31272b3c 100644
--- a/src/supplicant/nm-supplicant-interface.h
+++ b/src/supplicant/nm-supplicant-interface.h
@@ -110,7 +110,7 @@ gboolean nm_supplicant_interface_get_scanning (NMSupplicantInterface *self);
 
 const char *nm_supplicant_interface_get_current_bss (NMSupplicantInterface *self);
 
-gint32 nm_supplicant_interface_get_last_scan_time (NMSupplicantInterface *self);
+gint64 nm_supplicant_interface_get_last_scan (NMSupplicantInterface *self);
 
 const char *nm_supplicant_interface_get_ifname (NMSupplicantInterface *self);
 
diff --git a/src/systemd/sd-adapt/copy.h b/src/systemd/sd-adapt/copy.h
new file mode 100644
index 00000000..637892c2
--- /dev/null
+++ b/src/systemd/sd-adapt/copy.h
@@ -0,0 +1,3 @@
+#pragma once
+
+/* dummy header */
diff --git a/src/systemd/src/basic/alloc-util.c b/src/systemd/src/basic/alloc-util.c
index 79b823de..ef405098 100644
--- a/src/systemd/src/basic/alloc-util.c
+++ b/src/systemd/src/basic/alloc-util.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
diff --git a/src/systemd/src/basic/alloc-util.h b/src/systemd/src/basic/alloc-util.h
index bae6a284..ebe42889 100644
--- a/src/systemd/src/basic/alloc-util.h
+++ b/src/systemd/src/basic/alloc-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <alloca.h>
 #include <stddef.h>
 #include <stdlib.h>
diff --git a/src/systemd/src/basic/async.h b/src/systemd/src/basic/async.h
index 36f33377..31606131 100644
--- a/src/systemd/src/basic/async.h
+++ b/src/systemd/src/basic/async.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2013 Lennart Poettering
-***/
-
 int asynchronous_job(void* (*func)(void *p), void *arg);
 
 int asynchronous_sync(pid_t *ret_pid);
diff --git a/src/systemd/src/basic/escape.c b/src/systemd/src/basic/escape.c
index f51de788..5c82a545 100644
--- a/src/systemd/src/basic/escape.c
+++ b/src/systemd/src/basic/escape.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
@@ -17,8 +12,10 @@
 #include "macro.h"
 #include "utf8.h"
 
-size_t cescape_char(char c, char *buf) {
-        char * buf_old = buf;
+int cescape_char(char c, char *buf) {
+        char *buf_old = buf;
+
+        /* Needs space for 4 characters in the buffer */
 
         switch (c) {
 
diff --git a/src/systemd/src/basic/escape.h b/src/systemd/src/basic/escape.h
index 80b0946e..c612a7c0 100644
--- a/src/systemd/src/basic/escape.h
+++ b/src/systemd/src/basic/escape.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <inttypes.h>
 #include <stddef.h>
 #include <stdint.h>
@@ -47,7 +41,7 @@ typedef enum EscapeStyle {
 
 char *cescape(const char *s);
 char *cescape_length(const char *s, size_t n);
-size_t cescape_char(char c, char *buf);
+int cescape_char(char c, char *buf);
 
 int cunescape(const char *s, UnescapeFlags flags, char **ret);
 int cunescape_length(const char *s, size_t length, UnescapeFlags flags, char **ret);
diff --git a/src/systemd/src/basic/ether-addr-util.c b/src/systemd/src/basic/ether-addr-util.c
index 75de9a19..6f946c3e 100644
--- a/src/systemd/src/basic/ether-addr-util.c
+++ b/src/systemd/src/basic/ether-addr-util.c
@@ -1,8 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright 2014 Tom Gundersen
+  Copyright © 2014 Tom Gundersen
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/basic/ether-addr-util.h b/src/systemd/src/basic/ether-addr-util.h
index f7e0de54..f02cefea 100644
--- a/src/systemd/src/basic/ether-addr-util.h
+++ b/src/systemd/src/basic/ether-addr-util.h
@@ -2,9 +2,7 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright 2014 Tom Gundersen
+  Copyright © 2014 Tom Gundersen
 ***/
 
 #include <net/ethernet.h>
diff --git a/src/systemd/src/basic/extract-word.c b/src/systemd/src/basic/extract-word.c
index 2adb8966..404fe615 100644
--- a/src/systemd/src/basic/extract-word.c
+++ b/src/systemd/src/basic/extract-word.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
diff --git a/src/systemd/src/basic/extract-word.h b/src/systemd/src/basic/extract-word.h
index d2113948..8c63b7c3 100644
--- a/src/systemd/src/basic/extract-word.h
+++ b/src/systemd/src/basic/extract-word.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include "macro.h"
 
 typedef enum ExtractFlags {
diff --git a/src/systemd/src/basic/fd-util.c b/src/systemd/src/basic/fd-util.c
index 6a753195..71babe2f 100644
--- a/src/systemd/src/basic/fd-util.c
+++ b/src/systemd/src/basic/fd-util.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
@@ -14,10 +9,13 @@
 #include <sys/stat.h>
 #include <unistd.h>
 
+#include "alloc-util.h"
+#include "copy.h"
 #include "dirent-util.h"
 #include "fd-util.h"
 #include "fileio.h"
 #include "fs-util.h"
+#include "io-util.h"
 #include "macro.h"
 #include "memfd-util.h"
 #include "missing.h"
@@ -566,6 +564,201 @@ try_dev_shm_without_o_tmpfile:
 
         return -EOPNOTSUPP;
 }
+
+/* When the data is smaller or equal to 64K, try to place the copy in a memfd/pipe */
+#define DATA_FD_MEMORY_LIMIT (64U*1024U)
+
+/* If memfd/pipe didn't work out, then let's use a file in /tmp up to a size of 1M. If it's large than that use /var/tmp instead. */
+#define DATA_FD_TMP_LIMIT (1024U*1024U)
+
+int fd_duplicate_data_fd(int fd) {
+
+        _cleanup_close_ int copy_fd = -1, tmp_fd = -1;
+        _cleanup_free_ void *remains = NULL;
+        size_t remains_size = 0;
+        const char *td;
+        struct stat st;
+        int r;
+
+        /* Creates a 'data' fd from the specified source fd, containing all the same data in a read-only fashion, but
+         * independent of it (i.e. the source fd can be closed and unmounted after this call succeeded). Tries to be
+         * somewhat smart about where to place the data. In the best case uses a memfd(). If memfd() are not supported
+         * uses a pipe instead. For larger data will use an unlinked file in /tmp, and for even larger data one in
+         * /var/tmp. */
+
+        if (fstat(fd, &st) < 0)
+                return -errno;
+
+        /* For now, let's only accept regular files, sockets, pipes and char devices */
+        if (S_ISDIR(st.st_mode))
+                return -EISDIR;
+        if (S_ISLNK(st.st_mode))
+                return -ELOOP;
+        if (!S_ISREG(st.st_mode) && !S_ISSOCK(st.st_mode) && !S_ISFIFO(st.st_mode) && !S_ISCHR(st.st_mode))
+                return -EBADFD;
+
+        /* If we have reason to believe the data is bounded in size, then let's use memfds or pipes as backing fd. Note
+         * that we use the reported regular file size only as a hint, given that there are plenty special files in
+         * /proc and /sys which report a zero file size but can be read from. */
+
+        if (!S_ISREG(st.st_mode) || st.st_size < DATA_FD_MEMORY_LIMIT) {
+
+                /* Try a memfd first */
+                copy_fd = memfd_new("data-fd");
+                if (copy_fd >= 0) {
+                        off_t f;
+
+                        r = copy_bytes(fd, copy_fd, DATA_FD_MEMORY_LIMIT, 0);
+                        if (r < 0)
+                                return r;
+
+                        f = lseek(copy_fd, 0, SEEK_SET);
+                        if (f != 0)
+                                return -errno;
+
+                        if (r == 0) {
+                                /* Did it fit into the limit? If so, we are done. */
+                                r = memfd_set_sealed(copy_fd);
+                                if (r < 0)
+                                        return r;
+
+                                return TAKE_FD(copy_fd);
+                        }
+
+                        /* Hmm, pity, this didn't fit. Let's fall back to /tmp then, see below */
+
+                } else {
+                        _cleanup_(close_pairp) int pipefds[2] = { -1, -1 };
+                        int isz;
+
+                        /* If memfds aren't available, use a pipe. Set O_NONBLOCK so that we will get EAGAIN rather
+                         * then block indefinitely when we hit the pipe size limit */
+
+                        if (pipe2(pipefds, O_CLOEXEC|O_NONBLOCK) < 0)
+                                return -errno;
+
+                        isz = fcntl(pipefds[1], F_GETPIPE_SZ, 0);
+                        if (isz < 0)
+                                return -errno;
+
+                        /* Try to enlarge the pipe size if necessary */
+                        if ((size_t) isz < DATA_FD_MEMORY_LIMIT) {
+
+                                (void) fcntl(pipefds[1], F_SETPIPE_SZ, DATA_FD_MEMORY_LIMIT);
+
+                                isz = fcntl(pipefds[1], F_GETPIPE_SZ, 0);
+                                if (isz < 0)
+                                        return -errno;
+                        }
+
+                        if ((size_t) isz >= DATA_FD_MEMORY_LIMIT) {
+
+                                r = copy_bytes_full(fd, pipefds[1], DATA_FD_MEMORY_LIMIT, 0, &remains, &remains_size);
+                                if (r < 0 && r != -EAGAIN)
+                                        return r; /* If we get EAGAIN it could be because of the source or because of
+                                                   * the destination fd, we can't know, as sendfile() and friends won't
+                                                   * tell us. Hence, treat this as reason to fall back, just to be
+                                                   * sure. */
+                                if (r == 0) {
+                                        /* Everything fit in, yay! */
+                                        (void) fd_nonblock(pipefds[0], false);
+
+                                        return TAKE_FD(pipefds[0]);
+                                }
+
+                                /* Things didn't fit in. But we read data into the pipe, let's remember that, so that
+                                 * when writing the new file we incorporate this first. */
+                                copy_fd = TAKE_FD(pipefds[0]);
+                        }
+                }
+        }
+
+        /* If we have reason to believe this will fit fine in /tmp, then use that as first fallback. */
+        if ((!S_ISREG(st.st_mode) || st.st_size < DATA_FD_TMP_LIMIT) &&
+            (DATA_FD_MEMORY_LIMIT + remains_size) < DATA_FD_TMP_LIMIT) {
+                off_t f;
+
+                tmp_fd = open_tmpfile_unlinkable(NULL /* NULL as directory means /tmp */, O_RDWR|O_CLOEXEC);
+                if (tmp_fd < 0)
+                        return tmp_fd;
+
+                if (copy_fd >= 0) {
+                        /* If we tried a memfd/pipe first and it ended up being too large, then copy this into the
+                         * temporary file first. */
+
+                        r = copy_bytes(copy_fd, tmp_fd, UINT64_MAX, 0);
+                        if (r < 0)
+                                return r;
+
+                        assert(r == 0);
+                }
+
+                if (remains_size > 0) {
+                        /* If there were remaining bytes (i.e. read into memory, but not written out yet) from the
+                         * failed copy operation, let's flush them out next. */
+
+                        r = loop_write(tmp_fd, remains, remains_size, false);
+                        if (r < 0)
+                                return r;
+                }
+
+                r = copy_bytes(fd, tmp_fd, DATA_FD_TMP_LIMIT - DATA_FD_MEMORY_LIMIT - remains_size, COPY_REFLINK);
+                if (r < 0)
+                        return r;
+                if (r == 0)
+                        goto finish;  /* Yay, it fit in */
+
+                /* It didn't fit in. Let's not forget to use what we already used */
+                f = lseek(tmp_fd, 0, SEEK_SET);
+                if (f != 0)
+                        return -errno;
+
+                safe_close(copy_fd);
+                copy_fd = TAKE_FD(tmp_fd);
+
+                remains = mfree(remains);
+                remains_size = 0;
+        }
+
+        /* As last fallback use /var/tmp */
+        r = var_tmp_dir(&td);
+        if (r < 0)
+                return r;
+
+        tmp_fd = open_tmpfile_unlinkable(td, O_RDWR|O_CLOEXEC);
+        if (tmp_fd < 0)
+                return tmp_fd;
+
+        if (copy_fd >= 0) {
+                /* If we tried a memfd/pipe first, or a file in /tmp, and it ended up being too large, than copy this
+                 * into the temporary file first. */
+                r = copy_bytes(copy_fd, tmp_fd, UINT64_MAX, COPY_REFLINK);
+                if (r < 0)
+                        return r;
+
+                assert(r == 0);
+        }
+
+        if (remains_size > 0) {
+                /* Then, copy in any read but not yet written bytes. */
+                r = loop_write(tmp_fd, remains, remains_size, false);
+                if (r < 0)
+                        return r;
+        }
+
+        /* Copy in the rest */
+        r = copy_bytes(fd, tmp_fd, UINT64_MAX, COPY_REFLINK);
+        if (r < 0)
+                return r;
+
+        assert(r == 0);
+
+finish:
+        /* Now convert the O_RDWR file descriptor into an O_RDONLY one (and as side effect seek to the beginning of the
+         * file again */
+
+        return fd_reopen(tmp_fd, O_RDONLY|O_CLOEXEC);
+}
 #endif /* NM_IGNORED */
 
 int fd_move_above_stdio(int fd) {
@@ -739,4 +932,28 @@ int fd_reopen(int fd, int flags) {
 
         return new_fd;
 }
+
+int read_nr_open(void) {
+        _cleanup_free_ char *nr_open = NULL;
+        int r;
+
+        /* Returns the kernel's current fd limit, either by reading it of /proc/sys if that works, or using the
+         * hard-coded default compiled-in value of current kernels (1M) if not. This call will never fail. */
+
+        r = read_one_line_file("/proc/sys/fs/nr_open", &nr_open);
+        if (r < 0)
+                log_debug_errno(r, "Failed to read /proc/sys/fs/nr_open, ignoring: %m");
+        else {
+                int v;
+
+                r = safe_atoi(nr_open, &v);
+                if (r < 0)
+                        log_debug_errno(r, "Failed to parse /proc/sys/fs/nr_open value '%s', ignoring: %m", nr_open);
+                else
+                        return v;
+        }
+
+        /* If we fail, fallback to the hard-coded kernel limit of 1024 * 1024. */
+        return 1024 * 1024;
+}
 #endif /* NM_IGNORED */
diff --git a/src/systemd/src/basic/fd-util.h b/src/systemd/src/basic/fd-util.h
index 89c3f34c..8adc959d 100644
--- a/src/systemd/src/basic/fd-util.h
+++ b/src/systemd/src/basic/fd-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <dirent.h>
 #include <stdbool.h>
 #include <stdio.h>
@@ -81,6 +75,8 @@ enum {
 
 int acquire_data_fd(const void *data, size_t size, unsigned flags);
 
+int fd_duplicate_data_fd(int fd);
+
 /* Hint: ENETUNREACH happens if we try to connect to "non-existing" special IP addresses, such as ::5 */
 #define ERRNO_IS_DISCONNECT(r) \
         IN_SET(r, ENOTCONN, ECONNRESET, ECONNREFUSED, ECONNABORTED, EPIPE, ENETUNREACH)
@@ -106,3 +102,5 @@ static inline int make_null_stdio(void) {
         })
 
 int fd_reopen(int fd, int flags);
+
+int read_nr_open(void);
diff --git a/src/systemd/src/basic/fileio.c b/src/systemd/src/basic/fileio.c
index 4f71384e..2d3aef2c 100644
--- a/src/systemd/src/basic/fileio.c
+++ b/src/systemd/src/basic/fileio.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
@@ -209,6 +204,25 @@ fail:
         return 0;
 }
 
+int write_string_filef(
+                const char *fn,
+                WriteStringFileFlags flags,
+                const char *format, ...) {
+
+        _cleanup_free_ char *p = NULL;
+        va_list ap;
+        int r;
+
+        va_start(ap, format);
+        r = vasprintf(&p, format, ap);
+        va_end(ap);
+
+        if (r < 0)
+                return -ENOMEM;
+
+        return write_string_file(fn, p, flags);
+}
+
 int read_one_line_file(const char *fn, char **line) {
         _cleanup_fclose_ FILE *f = NULL;
         int r;
@@ -267,29 +281,35 @@ int verify_file(const char *fn, const char *blob, bool accept_extra_nl) {
 #endif /* NM_IGNORED */
 
 int read_full_stream(FILE *f, char **contents, size_t *size) {
-        size_t n, l;
         _cleanup_free_ char *buf = NULL;
         struct stat st;
+        size_t n, l;
+        int fd;
 
         assert(f);
         assert(contents);
 
-        if (fstat(fileno(f), &st) < 0)
-                return -errno;
-
         n = LINE_MAX;
 
-        if (S_ISREG(st.st_mode)) {
+        fd = fileno(f);
+        if (fd >= 0) { /* If the FILE* object is backed by an fd (as opposed to memory or such, see fmemopen(), let's
+                        * optimize our buffering) */
 
-                /* Safety check */
-                if (st.st_size > READ_FULL_BYTES_MAX)
-                        return -E2BIG;
+                if (fstat(fileno(f), &st) < 0)
+                        return -errno;
+
+                if (S_ISREG(st.st_mode)) {
+
+                        /* Safety check */
+                        if (st.st_size > READ_FULL_BYTES_MAX)
+                                return -E2BIG;
 
-                /* Start with the right file size, but be prepared for files from /proc which generally report a file
-                 * size of 0. Note that we increase the size to read here by one, so that the first read attempt
-                 * already makes us notice the EOF. */
-                if (st.st_size > 0)
-                        n = st.st_size + 1;
+                        /* Start with the right file size, but be prepared for files from /proc which generally report a file
+                         * size of 0. Note that we increase the size to read here by one, so that the first read attempt
+                         * already makes us notice the EOF. */
+                        if (st.st_size > 0)
+                                n = st.st_size + 1;
+                }
         }
 
         l = 0;
@@ -680,21 +700,41 @@ static int parse_env_file_push(
         return 0;
 }
 
-int parse_env_file(
+int parse_env_filev(
+                FILE *f,
                 const char *fname,
-                const char *newline, ...) {
+                const char *newline,
+                va_list ap) {
 
-        va_list ap;
         int r, n_pushed = 0;
+        va_list aq;
 
         if (!newline)
                 newline = NEWLINE;
 
+        va_copy(aq, ap);
+        r = parse_env_file_internal(f, fname, newline, parse_env_file_push, &aq, &n_pushed);
+        va_end(aq);
+        if (r < 0)
+                return r;
+
+        return n_pushed;
+}
+
+int parse_env_file(
+                FILE *f,
+                const char *fname,
+                const char *newline,
+                ...) {
+
+        va_list ap;
+        int r;
+
         va_start(ap, newline);
-        r = parse_env_file_internal(NULL, fname, newline, parse_env_file_push, &ap, &n_pushed);
+        r = parse_env_filev(f, fname, newline, ap);
         va_end(ap);
 
-        return r < 0 ? r : n_pushed;
+        return r;
 }
 
 #if 0 /* NM_IGNORED */
@@ -1218,7 +1258,7 @@ int tempfn_xxxxxx(const char *p, const char *extra, char **ret) {
 
         strcpy(stpcpy(stpcpy(stpcpy(mempcpy(t, p, fn - p), ".#"), extra), fn), "XXXXXX");
 
-        *ret = path_kill_slashes(t);
+        *ret = path_simplify(t, false);
         return 0;
 }
 
@@ -1260,7 +1300,7 @@ int tempfn_random(const char *p, const char *extra, char **ret) {
 
         *x = 0;
 
-        *ret = path_kill_slashes(t);
+        *ret = path_simplify(t, false);
         return 0;
 }
 
@@ -1300,7 +1340,7 @@ int tempfn_random_child(const char *p, const char *extra, char **ret) {
 
         *x = 0;
 
-        *ret = path_kill_slashes(t);
+        *ret = path_simplify(t, false);
         return 0;
 }
 
@@ -1528,21 +1568,29 @@ int read_nul_string(FILE *f, char **ret) {
 }
 
 int mkdtemp_malloc(const char *template, char **ret) {
-        char *p;
+        _cleanup_free_ char *p = NULL;
+        int r;
 
-        assert(template);
         assert(ret);
 
-        p = strdup(template);
+        if (template)
+                p = strdup(template);
+        else {
+                const char *tmp;
+
+                r = tmp_dir(&tmp);
+                if (r < 0)
+                        return r;
+
+                p = strjoin(tmp, "/XXXXXX");
+        }
         if (!p)
                 return -ENOMEM;
 
-        if (!mkdtemp(p)) {
-                free(p);
+        if (!mkdtemp(p))
                 return -errno;
-        }
 
-        *ret = p;
+        *ret = TAKE_PTR(p);
         return 0;
 }
 
diff --git a/src/systemd/src/basic/fileio.h b/src/systemd/src/basic/fileio.h
index bed7c8fb..77e6206e 100644
--- a/src/systemd/src/basic/fileio.h
+++ b/src/systemd/src/basic/fileio.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <dirent.h>
 #include <stdbool.h>
 #include <stddef.h>
@@ -17,12 +11,12 @@
 #include "time-util.h"
 
 typedef enum {
-        WRITE_STRING_FILE_CREATE            = 1<<0,
-        WRITE_STRING_FILE_ATOMIC            = 1<<1,
-        WRITE_STRING_FILE_AVOID_NEWLINE     = 1<<2,
-        WRITE_STRING_FILE_VERIFY_ON_FAILURE = 1<<3,
-        WRITE_STRING_FILE_SYNC              = 1<<4,
-        WRITE_STRING_FILE_DISABLE_BUFFER    = 1<<5,
+        WRITE_STRING_FILE_CREATE            = 1 << 0,
+        WRITE_STRING_FILE_ATOMIC            = 1 << 1,
+        WRITE_STRING_FILE_AVOID_NEWLINE     = 1 << 2,
+        WRITE_STRING_FILE_VERIFY_ON_FAILURE = 1 << 3,
+        WRITE_STRING_FILE_SYNC              = 1 << 4,
+        WRITE_STRING_FILE_DISABLE_BUFFER    = 1 << 5,
 
         /* And before you wonder, why write_string_file_atomic_label_ts() is a separate function instead of just one
            more flag here: it's about linking: we don't want to pull -lselinux into all users of write_string_file()
@@ -39,13 +33,16 @@ static inline int write_string_file(const char *fn, const char *line, WriteStrin
         return write_string_file_ts(fn, line, flags, NULL);
 }
 
+int write_string_filef(const char *fn, WriteStringFileFlags flags, const char *format, ...) _printf_(3, 4);
+
 int read_one_line_file(const char *fn, char **line);
 int read_full_file(const char *fn, char **contents, size_t *size);
 int read_full_stream(FILE *f, char **contents, size_t *size);
 
 int verify_file(const char *fn, const char *blob, bool accept_extra_nl);
 
-int parse_env_file(const char *fname, const char *separator, ...) _sentinel_;
+int parse_env_filev(FILE *f, const char *fname, const char *separator, va_list ap);
+int parse_env_file(FILE *f, const char *fname, const char *separator, ...) _sentinel_;
 int load_env_file(FILE *f, const char *fname, const char *separator, char ***l);
 int load_env_file_pairs(FILE *f, const char *fname, const char *separator, char ***l);
 
diff --git a/src/systemd/src/basic/fs-util.c b/src/systemd/src/basic/fs-util.c
index 049b238e..e3ae9916 100644
--- a/src/systemd/src/basic/fs-util.c
+++ b/src/systemd/src/basic/fs-util.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
@@ -234,6 +229,22 @@ int chmod_and_chown(const char *path, mode_t mode, uid_t uid, gid_t gid) {
 
         return 0;
 }
+
+int fchmod_and_chown(int fd, mode_t mode, uid_t uid, gid_t gid) {
+        /* Under the assumption that we are running privileged we
+         * first change the access mode and only then hand out
+         * ownership to avoid a window where access is too open. */
+
+        if (mode != MODE_INVALID)
+                if (fchmod(fd, mode) < 0)
+                        return -errno;
+
+        if (uid != UID_INVALID || gid != GID_INVALID)
+                if (fchown(fd, uid, gid) < 0)
+                        return -errno;
+
+        return 0;
+}
 #endif /* NM_IGNORED */
 
 int fchmod_umask(int fd, mode_t m) {
@@ -249,7 +260,7 @@ int fchmod_umask(int fd, mode_t m) {
 
 #if 0 /* NM_IGNORED */
 int fchmod_opath(int fd, mode_t m) {
-        char procfs_path[strlen("/proc/self/fd/") + DECIMAL_STR_MAX(int)];
+        char procfs_path[STRLEN("/proc/self/fd/") + DECIMAL_STR_MAX(int)];
 
         /* This function operates also on fd that might have been opened with
          * O_PATH. Indeed fchmodat() doesn't have the AT_EMPTY_PATH flag like
@@ -571,6 +582,7 @@ int unlink_or_warn(const char *filename) {
 
         return 0;
 }
+#endif /* NM_IGNORED */
 
 int inotify_add_watch_fd(int fd, int what, uint32_t mask) {
         char path[STRLEN("/proc/self/fd/") + DECIMAL_STR_MAX(int) + 1];
@@ -586,6 +598,7 @@ int inotify_add_watch_fd(int fd, int what, uint32_t mask) {
         return r;
 }
 
+#if 0 /* NM_IGNORED */
 static bool safe_transition(const struct stat *a, const struct stat *b) {
         /* Returns true if the transition from a to b is safe, i.e. that we never transition from unprivileged to
          * privileged files or directories. Why bother? So that unprivileged code can't symlink to privileged files
@@ -609,10 +622,10 @@ int chase_symlinks(const char *path, const char *original_root, unsigned flags,
         assert(path);
 
         /* Either the file may be missing, or we return an fd to the final object, but both make no sense */
-        if ((flags & (CHASE_NONEXISTENT|CHASE_OPEN)) == (CHASE_NONEXISTENT|CHASE_OPEN))
+        if (FLAGS_SET(flags, CHASE_NONEXISTENT | CHASE_OPEN))
                 return -EINVAL;
 
-        if ((flags & (CHASE_STEP|CHASE_OPEN)) == (CHASE_STEP|CHASE_OPEN))
+        if (FLAGS_SET(flags, CHASE_STEP | CHASE_OPEN))
                 return -EINVAL;
 
         if (isempty(path))
@@ -1073,6 +1086,15 @@ int access_fd(int fd, int mode) {
         return r;
 }
 
+void unlink_tempfilep(char (*p)[]) {
+        /* If the file is created with mkstemp(), it will (almost always)
+         * change the suffix. Treat this as a sign that the file was
+         * successfully created. We ignore both the rare case where the
+         * original suffix is used and unlink failures. */
+        if (!endswith(*p, ".XXXXXX"))
+                (void) unlink_noerrno(*p);
+}
+
 int unlinkat_deallocate(int fd, const char *name, int flags) {
         _cleanup_close_ int truncate_fd = -1;
         struct stat st;
@@ -1153,9 +1175,9 @@ int fsync_directory_of_file(int fd) {
 
         r = fd_get_path(fd, &path);
         if (r < 0) {
-                log_debug("Failed to query /proc/self/fd/%d%s: %m",
-                          fd,
-                          r == -EOPNOTSUPP ? ", ignoring" : "");
+                log_debug_errno(r, "Failed to query /proc/self/fd/%d%s: %m",
+                                fd,
+                                r == -EOPNOTSUPP ? ", ignoring" : "");
 
                 if (r == -EOPNOTSUPP)
                         /* If /proc is not available, we're most likely running in some
diff --git a/src/systemd/src/basic/fs-util.h b/src/systemd/src/basic/fs-util.h
index 6157fe81..28566773 100644
--- a/src/systemd/src/basic/fs-util.h
+++ b/src/systemd/src/basic/fs-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <dirent.h>
 #include <fcntl.h>
 #include <limits.h>
@@ -31,6 +25,7 @@ int readlink_value(const char *p, char **ret);
 int readlink_and_make_absolute(const char *p, char **r);
 
 int chmod_and_chown(const char *path, mode_t mode, uid_t uid, gid_t gid);
+int fchmod_and_chown(int fd, mode_t mode, uid_t uid, gid_t gid);
 
 int fchmod_umask(int fd, mode_t mode);
 int fchmod_opath(int fd, mode_t m);
@@ -70,13 +65,13 @@ union inotify_event_buffer {
 int inotify_add_watch_fd(int fd, int what, uint32_t mask);
 
 enum {
-        CHASE_PREFIX_ROOT = 1U << 0,   /* If set, the specified path will be prefixed by the specified root before beginning the iteration */
-        CHASE_NONEXISTENT = 1U << 1,   /* If set, it's OK if the path doesn't actually exist. */
-        CHASE_NO_AUTOFS   = 1U << 2,   /* If set, return -EREMOTE if autofs mount point found */
-        CHASE_SAFE        = 1U << 3,   /* If set, return EPERM if we ever traverse from unprivileged to privileged files or directories */
-        CHASE_OPEN        = 1U << 4,   /* If set, return an O_PATH object to the final component */
-        CHASE_TRAIL_SLASH = 1U << 5,   /* If set, any trailing slash will be preserved */
-        CHASE_STEP        = 1U << 6,   /* If set, just execute a single step of the normalization */
+        CHASE_PREFIX_ROOT = 1 << 0, /* If set, the specified path will be prefixed by the specified root before beginning the iteration */
+        CHASE_NONEXISTENT = 1 << 1, /* If set, it's OK if the path doesn't actually exist. */
+        CHASE_NO_AUTOFS   = 1 << 2, /* If set, return -EREMOTE if autofs mount point found */
+        CHASE_SAFE        = 1 << 3, /* If set, return EPERM if we ever traverse from unprivileged to privileged files or directories */
+        CHASE_OPEN        = 1 << 4, /* If set, return an O_PATH object to the final component */
+        CHASE_TRAIL_SLASH = 1 << 5, /* If set, any trailing slash will be preserved */
+        CHASE_STEP        = 1 << 6, /* If set, just execute a single step of the normalization */
 };
 
 /* How many iterations to execute before returning -ELOOP */
@@ -104,6 +99,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(char*, unlink_and_free);
 
 int access_fd(int fd, int mode);
 
+void unlink_tempfilep(char (*p)[]);
 int unlinkat_deallocate(int fd, const char *name, int flags);
 
 int fsync_directory_of_file(int fd);
diff --git a/src/systemd/src/basic/hash-funcs.c b/src/systemd/src/basic/hash-funcs.c
index cb763f56..7ed35cb1 100644
--- a/src/systemd/src/basic/hash-funcs.c
+++ b/src/systemd/src/basic/hash-funcs.c
@@ -1,9 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-  Copyright 2014 Michal Schmidt
+  Copyright © 2014 Michal Schmidt
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/basic/hash-funcs.h b/src/systemd/src/basic/hash-funcs.h
index 0c963af8..3715c56e 100644
--- a/src/systemd/src/basic/hash-funcs.h
+++ b/src/systemd/src/basic/hash-funcs.h
@@ -2,10 +2,7 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-  Copyright 2014 Michal Schmidt
+  Copyright © 2014 Michal Schmidt
 ***/
 
 #include "macro.h"
diff --git a/src/systemd/src/basic/hashmap.c b/src/systemd/src/basic/hashmap.c
index b8a8e37b..c91f8bd2 100644
--- a/src/systemd/src/basic/hashmap.c
+++ b/src/systemd/src/basic/hashmap.c
@@ -1,9 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-  Copyright 2014 Michal Schmidt
+  Copyright © 2014 Michal Schmidt
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/basic/hashmap.h b/src/systemd/src/basic/hashmap.h
index 701eecbd..d1d1b9c8 100644
--- a/src/systemd/src/basic/hashmap.h
+++ b/src/systemd/src/basic/hashmap.h
@@ -2,10 +2,7 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-  Copyright 2014 Michal Schmidt
+  Copyright © 2014 Michal Schmidt
 ***/
 
 #include <limits.h>
diff --git a/src/systemd/src/basic/hexdecoct.c b/src/systemd/src/basic/hexdecoct.c
index 1fe410f5..09f2a9e7 100644
--- a/src/systemd/src/basic/hexdecoct.c
+++ b/src/systemd/src/basic/hexdecoct.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
diff --git a/src/systemd/src/basic/hexdecoct.h b/src/systemd/src/basic/hexdecoct.h
index c2f11013..9477d16e 100644
--- a/src/systemd/src/basic/hexdecoct.h
+++ b/src/systemd/src/basic/hexdecoct.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdio.h>
diff --git a/src/systemd/src/basic/hostname-util.c b/src/systemd/src/basic/hostname-util.c
index 0feeaa5d..85708394 100644
--- a/src/systemd/src/basic/hostname-util.c
+++ b/src/systemd/src/basic/hostname-util.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2015 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
diff --git a/src/systemd/src/basic/hostname-util.h b/src/systemd/src/basic/hostname-util.h
index 8e29e9e1..74948172 100644
--- a/src/systemd/src/basic/hostname-util.h
+++ b/src/systemd/src/basic/hostname-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010-2015 Lennart Poettering
-***/
-
 #include <stdbool.h>
 #include <stdio.h>
 
diff --git a/src/systemd/src/basic/in-addr-util.c b/src/systemd/src/basic/in-addr-util.c
index 65748615..d945567a 100644
--- a/src/systemd/src/basic/in-addr-util.c
+++ b/src/systemd/src/basic/in-addr-util.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2014 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
diff --git a/src/systemd/src/basic/in-addr-util.h b/src/systemd/src/basic/in-addr-util.h
index acd567c9..956c00a8 100644
--- a/src/systemd/src/basic/in-addr-util.h
+++ b/src/systemd/src/basic/in-addr-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2014 Lennart Poettering
-***/
-
 #include <netinet/in.h>
 #include <stddef.h>
 #include <sys/socket.h>
diff --git a/src/systemd/src/basic/io-util.c b/src/systemd/src/basic/io-util.c
index 1bc5c345..6f46c944 100644
--- a/src/systemd/src/basic/io-util.c
+++ b/src/systemd/src/basic/io-util.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
diff --git a/src/systemd/src/basic/io-util.h b/src/systemd/src/basic/io-util.h
index e4717b6f..ed189b58 100644
--- a/src/systemd/src/basic/io-util.h
+++ b/src/systemd/src/basic/io-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdint.h>
diff --git a/src/systemd/src/basic/list.h b/src/systemd/src/basic/list.h
index 3ec7e73f..643e0bea 100644
--- a/src/systemd/src/basic/list.h
+++ b/src/systemd/src/basic/list.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 /* The head of the linked list. Use this in the structure that shall
  * contain the head of the linked list */
 #define LIST_HEAD(t,name)                                               \
diff --git a/src/systemd/src/basic/log.h b/src/systemd/src/basic/log.h
index e7d7c8b1..28edd572 100644
--- a/src/systemd/src/basic/log.h
+++ b/src/systemd/src/basic/log.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <stdarg.h>
 #include <stdbool.h>
 #include <stdlib.h>
@@ -251,7 +245,7 @@ int log_emergency_level(void);
 /* Structured logging */
 #define log_struct_errno(level, error, ...) \
         log_struct_internal(LOG_REALM_PLUS_LEVEL(LOG_REALM, level), \
-                            error, __FILE__, __LINE__, __func__, __VA_ARGS__)
+                            error, __FILE__, __LINE__, __func__, __VA_ARGS__, NULL)
 #define log_struct(level, ...) log_struct_errno(level, 0, __VA_ARGS__)
 
 #define log_struct_iovec_errno(level, error, iovec, n_iovec)            \
@@ -290,6 +284,8 @@ void log_set_open_when_needed(bool b);
  * stderr, the console or kmsg */
 void log_set_prohibit_ipc(bool b);
 
+int log_dup_console(void);
+
 int log_syntax_internal(
                 const char *unit,
                 int level,
diff --git a/src/systemd/src/basic/macro.h b/src/systemd/src/basic/macro.h
index c89fb84e..cdb54f82 100644
--- a/src/systemd/src/basic/macro.h
+++ b/src/systemd/src/basic/macro.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <inttypes.h>
 #include <stdbool.h>
 #include <sys/param.h>
@@ -366,6 +360,8 @@ static inline unsigned long ALIGN_POWER2(unsigned long u) {
 
 #define SET_FLAG(v, flag, b) \
         (v) = (b) ? ((v) | (flag)) : ((v) & ~(flag))
+#define FLAGS_SET(v, flags) \
+        (((v) & (flags)) == (flags))
 
 #define CASE_F(X) case X:
 #define CASE_F_1(CASE, X) CASE_F(X)
diff --git a/src/systemd/src/basic/mempool.c b/src/systemd/src/basic/mempool.c
index 07096766..a0154263 100644
--- a/src/systemd/src/basic/mempool.c
+++ b/src/systemd/src/basic/mempool.c
@@ -1,9 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright 2010-2014 Lennart Poettering
-  Copyright 2014 Michal Schmidt
+  Copyright © 2014 Michal Schmidt
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/basic/mempool.h b/src/systemd/src/basic/mempool.h
index 68249cd8..291415de 100644
--- a/src/systemd/src/basic/mempool.h
+++ b/src/systemd/src/basic/mempool.h
@@ -2,10 +2,7 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright 2011-2014 Lennart Poettering
-  Copyright 2014 Michal Schmidt
+  Copyright © 2014 Michal Schmidt
 ***/
 
 #include <stddef.h>
@@ -29,7 +26,6 @@ static struct mempool pool_name = { \
         .at_least = alloc_at_least, \
 }
 
-
 #if VALGRIND
 void mempool_drop(struct mempool *mp);
 #endif
diff --git a/src/systemd/src/basic/parse-util.c b/src/systemd/src/basic/parse-util.c
index ae43a041..7d6bcb5a 100644
--- a/src/systemd/src/basic/parse-util.c
+++ b/src/systemd/src/basic/parse-util.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
@@ -637,6 +632,58 @@ int parse_percent(const char *p) {
         return v;
 }
 
+int parse_permille_unbounded(const char *p) {
+        const char *pc, *pm, *dot, *n;
+        int r, q, v;
+
+        pm = endswith(p, "‰");
+        if (pm) {
+                n = strndupa(p, pm - p);
+                r = safe_atoi(n, &v);
+                if (r < 0)
+                        return r;
+        } else {
+                pc = endswith(p, "%");
+                if (!pc)
+                        return -EINVAL;
+
+                dot = memchr(p, '.', pc - p);
+                if (dot) {
+                        if (dot + 2 != pc)
+                                return -EINVAL;
+                        if (dot[1] < '0' || dot[1] > '9')
+                                return -EINVAL;
+                        q = dot[1] - '0';
+                        n = strndupa(p, dot - p);
+                } else {
+                        q = 0;
+                        n = strndupa(p, pc - p);
+                }
+                r = safe_atoi(n, &v);
+                if (r < 0)
+                        return r;
+                if (v > (INT_MAX - q) / 10)
+                        return -ERANGE;
+
+                v = v * 10 + q;
+        }
+
+        if (v < 0)
+                return -ERANGE;
+
+        return v;
+}
+
+int parse_permille(const char *p) {
+        int v;
+
+        v = parse_permille_unbounded(p);
+        if (v > 1000)
+                return -ERANGE;
+
+        return v;
+}
+
 int parse_nice(const char *p, int *ret) {
         int n, r;
 
diff --git a/src/systemd/src/basic/parse-util.h b/src/systemd/src/basic/parse-util.h
index 2b75b938..f3267f4c 100644
--- a/src/systemd/src/basic/parse-util.h
+++ b/src/systemd/src/basic/parse-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <inttypes.h>
 #include <limits.h>
 #include <stddef.h>
@@ -115,6 +109,9 @@ int parse_fractional_part_u(const char **s, size_t digits, unsigned *res);
 int parse_percent_unbounded(const char *p);
 int parse_percent(const char *p);
 
+int parse_permille_unbounded(const char *p);
+int parse_permille(const char *p);
+
 int parse_nice(const char *p, int *ret);
 
 int parse_ip_port(const char *s, uint16_t *ret);
diff --git a/src/systemd/src/basic/path-util.c b/src/systemd/src/basic/path-util.c
index 567fc61c..69bdb894 100644
--- a/src/systemd/src/basic/path-util.c
+++ b/src/systemd/src/basic/path-util.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010-2012 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
@@ -34,12 +29,13 @@
 #include "string-util.h"
 #include "strv.h"
 #include "time-util.h"
+#include "utf8.h"
 
-#if 0 /* NM_IGNORED */
 bool path_is_absolute(const char *p) {
         return p[0] == '/';
 }
 
+#if 0 /* NM_IGNORED */
 bool is_path(const char *p) {
         return !!strchr(p, '/');
 }
@@ -130,8 +126,8 @@ int path_make_absolute_cwd(const char *p, char **ret) {
 }
 
 int path_make_relative(const char *from_dir, const char *to_path, char **_r) {
-        char *r, *p;
-        unsigned n_parents;
+        char *f, *t, *r, *p;
+        unsigned n_parents = 0;
 
         assert(from_dir);
         assert(to_path);
@@ -139,85 +135,81 @@ int path_make_relative(const char *from_dir, const char *to_path, char **_r) {
 
         /* Strips the common part, and adds ".." elements as necessary. */
 
-        if (!path_is_absolute(from_dir))
+        if (!path_is_absolute(from_dir) || !path_is_absolute(to_path))
                 return -EINVAL;
 
-        if (!path_is_absolute(to_path))
-                return -EINVAL;
+        f = strdupa(from_dir);
+        t = strdupa(to_path);
+
+        path_simplify(f, true);
+        path_simplify(t, true);
 
         /* Skip the common part. */
         for (;;) {
                 size_t a, b;
 
-                from_dir += strspn(from_dir, "/");
-                to_path += strspn(to_path, "/");
+                f += *f == '/';
+                t += *t == '/';
 
-                if (!*from_dir) {
-                        if (!*to_path)
+                if (!*f) {
+                        if (!*t)
                                 /* from_dir equals to_path. */
                                 r = strdup(".");
                         else
                                 /* from_dir is a parent directory of to_path. */
-                                r = strdup(to_path);
+                                r = strdup(t);
                         if (!r)
                                 return -ENOMEM;
 
-                        path_kill_slashes(r);
-
                         *_r = r;
                         return 0;
                 }
 
-                if (!*to_path)
+                if (!*t)
                         break;
 
-                a = strcspn(from_dir, "/");
-                b = strcspn(to_path, "/");
+                a = strcspn(f, "/");
+                b = strcspn(t, "/");
 
-                if (a != b)
+                if (a != b || memcmp(f, t, a) != 0)
                         break;
 
-                if (memcmp(from_dir, to_path, a) != 0)
-                        break;
-
-                from_dir += a;
-                to_path += b;
+                f += a;
+                t += b;
         }
 
         /* If we're here, then "from_dir" has one or more elements that need to
          * be replaced with "..". */
 
         /* Count the number of necessary ".." elements. */
-        for (n_parents = 0;;) {
+        for (; *f;) {
                 size_t w;
 
-                from_dir += strspn(from_dir, "/");
-
-                if (!*from_dir)
-                        break;
-
-                w = strcspn(from_dir, "/");
+                w = strcspn(f, "/");
 
                 /* If this includes ".." we can't do a simple series of "..", refuse */
-                if (w == 2 && from_dir[0] == '.' && from_dir[1] == '.')
+                if (w == 2 && f[0] == '.' && f[1] == '.')
                         return -EINVAL;
 
-                /* Count number of elements, except if they are "." */
-                if (w != 1 || from_dir[0] != '.')
-                        n_parents++;
+                /* Count number of elements */
+                n_parents++;
 
-                from_dir += w;
+                f += w;
+                f += *f == '/';
         }
 
-        r = new(char, n_parents * 3 + strlen(to_path) + 1);
+        r = new(char, n_parents * 3 + strlen(t) + 1);
         if (!r)
                 return -ENOMEM;
 
         for (p = r; n_parents > 0; n_parents--)
                 p = mempcpy(p, "../", 3);
 
-        strcpy(p, to_path);
-        path_kill_slashes(r);
+        if (*t)
+                strcpy(p, t);
+        else
+                /* Remove trailing slash */
+                *(--p) = 0;
 
         *_r = r;
         return 0;
@@ -238,7 +230,7 @@ int path_strv_make_absolute_cwd(char **l) {
                 if (r < 0)
                         return r;
 
-                path_kill_slashes(t);
+                path_simplify(t, false);
                 free_and_replace(*s, t);
         }
 
@@ -339,17 +331,30 @@ char **path_strv_resolve_uniq(char **l, const char *root) {
 }
 #endif /* NM_IGNORED */
 
-char *path_kill_slashes(char *path) {
+char *path_simplify(char *path, bool kill_dots) {
         char *f, *t;
-        bool slash = false;
+        bool slash = false, ignore_slash = false, absolute;
+
+        assert(path);
 
-        /* Removes redundant inner and trailing slashes. Modifies the
-         * passed string in-place.
+        /* Removes redundant inner and trailing slashes. Also removes unnecessary dots
+         * if kill_dots is true. Modifies the passed string in-place.
          *
-         * ///foo///bar/ becomes /foo/bar
+         * ///foo//./bar/.   becomes /foo/./bar/.  (if kill_dots is false)
+         * ///foo//./bar/.   becomes /foo/bar      (if kill_dots is true)
+         * .//./foo//./bar/. becomes ./foo/bar     (if kill_dots is false)
+         * .//./foo//./bar/. becomes foo/bar       (if kill_dots is true)
          */
 
-        for (f = path, t = path; *f; f++) {
+        absolute = path_is_absolute(path);
+
+        f = path;
+        if (kill_dots && *f == '.' && IN_SET(f[1], 0, '/')) {
+                ignore_slash = true;
+                f++;
+        }
+
+        for (t = path; *f; f++) {
 
                 if (*f == '/') {
                         slash = true;
@@ -357,17 +362,21 @@ char *path_kill_slashes(char *path) {
                 }
 
                 if (slash) {
+                        if (kill_dots && *f == '.' && IN_SET(f[1], 0, '/'))
+                                continue;
+
                         slash = false;
-                        *(t++) = '/';
+                        if (ignore_slash)
+                                ignore_slash = false;
+                        else
+                                *(t++) = '/';
                 }
 
                 *(t++) = *f;
         }
 
-        /* Special rule, if we are talking of the root directory, a
-        trailing slash is good */
-
-        if (t == path && slash)
+        /* Special rule, if we are talking of the root directory, a trailing slash is good */
+        if (absolute && t == path)
                 *(t++) = '/';
 
         *t = 0;
@@ -535,7 +544,7 @@ int find_binary(const char *name, char **ret) {
                         /* Found it! */
 
                         if (ret) {
-                                *ret = path_kill_slashes(j);
+                                *ret = path_simplify(j, false);
                                 j = NULL;
                         }
 
@@ -689,12 +698,11 @@ int parse_path_argument_and_warn(const char *path, bool suppress_root, char **ar
         if (r < 0)
                 return log_error_errno(r, "Failed to parse path \"%s\" and make it absolute: %m", path);
 
-        path_kill_slashes(p);
+        path_simplify(p, false);
         if (suppress_root && empty_or_root(p))
                 p = mfree(p);
 
-        free(*arg);
-        *arg = p;
+        free_and_replace(*arg, p);
 
         return 0;
 }
@@ -778,7 +786,6 @@ bool filename_is_valid(const char *p) {
         return true;
 }
 
-#if 0 /* NM_IGNORED */
 bool path_is_normalized(const char *p) {
 
         if (isempty(p))
@@ -802,6 +809,7 @@ bool path_is_normalized(const char *p) {
         return true;
 }
 
+#if 0 /* NM_IGNORED */
 char *file_in_same_dir(const char *path, const char *filename) {
         char *e, *ret;
         size_t k;
@@ -880,17 +888,36 @@ bool hidden_or_backup_file(const char *filename) {
 
 bool is_device_path(const char *path) {
 
-        /* Returns true on paths that refer to a device, either in
-         * sysfs or in /dev */
+        /* Returns true on paths that likely refer to a device, either by path in sysfs or to something in /dev */
+
+        return PATH_STARTSWITH_SET(path, "/dev/", "/sys/");
+}
+
+bool valid_device_node_path(const char *path) {
+
+        /* Some superficial checks whether the specified path is a valid device node path, all without looking at the
+         * actual device node. */
+
+        if (!PATH_STARTSWITH_SET(path, "/dev/", "/run/systemd/inaccessible/"))
+                return false;
+
+        if (endswith(path, "/")) /* can't be a device node if it ends in a slash */
+                return false;
 
-        return path_startswith(path, "/dev/") ||
-               path_startswith(path, "/sys/");
+        return path_is_normalized(path);
 }
 
-bool is_deviceallow_pattern(const char *path) {
-        return path_startswith(path, "/dev/") ||
-               startswith(path, "block-") ||
-               startswith(path, "char-");
+bool valid_device_allow_pattern(const char *path) {
+        assert(path);
+
+        /* Like valid_device_node_path(), but also allows full-subsystem expressions, like DeviceAllow= and DeviceDeny=
+         * accept it */
+
+        if (startswith(path, "block-") ||
+            startswith(path, "char-"))
+                return true;
+
+        return valid_device_node_path(path);
 }
 
 int systemd_installation_has_version(const char *root, unsigned minimal_version) {
@@ -926,7 +953,7 @@ int systemd_installation_has_version(const char *root, unsigned minimal_version)
                 if (r < 0)
                         return r;
 
-                assert_se((c = endswith(path, "*.so")));
+                assert_se(c = endswith(path, "*.so"));
                 *c = '\0'; /* truncate the glob part */
 
                 STRV_FOREACH(name, names) {
@@ -975,6 +1002,7 @@ bool dot_or_dot_dot(const char *path) {
         return path[2] == 0;
 }
 
+#if 0 /* NM_IGNORED */
 bool empty_or_root(const char *root) {
 
         /* For operations relative to some root directory, returns true if the specified root directory is redundant,
@@ -985,3 +1013,51 @@ bool empty_or_root(const char *root) {
 
         return root[strspn(root, "/")] == 0;
 }
+
+int path_simplify_and_warn(
+                char *path,
+                unsigned flag,
+                const char *unit,
+                const char *filename,
+                unsigned line,
+                const char *lvalue) {
+
+        bool absolute, fatal = flag & PATH_CHECK_FATAL;
+
+        assert(!FLAGS_SET(flag, PATH_CHECK_ABSOLUTE | PATH_CHECK_RELATIVE));
+
+        if (!utf8_is_valid(path)) {
+                log_syntax_invalid_utf8(unit, LOG_ERR, filename, line, path);
+                return -EINVAL;
+        }
+
+        if (flag & (PATH_CHECK_ABSOLUTE | PATH_CHECK_RELATIVE)) {
+                absolute = path_is_absolute(path);
+
+                if (!absolute && (flag & PATH_CHECK_ABSOLUTE)) {
+                        log_syntax(unit, LOG_ERR, filename, line, 0,
+                                   "%s= path is not absolute%s: %s",
+                                   lvalue, fatal ? "" : ", ignoring", path);
+                        return -EINVAL;
+                }
+
+                if (absolute && (flag & PATH_CHECK_RELATIVE)) {
+                        log_syntax(unit, LOG_ERR, filename, line, 0,
+                                   "%s= path is absolute%s: %s",
+                                   lvalue, fatal ? "" : ", ignoring", path);
+                        return -EINVAL;
+                }
+        }
+
+        path_simplify(path, true);
+
+        if (!path_is_normalized(path)) {
+                log_syntax(unit, LOG_ERR, filename, line, 0,
+                           "%s= path is not normalized%s: %s",
+                           lvalue, fatal ? "" : ", ignoring", path);
+                return -EINVAL;
+        }
+
+        return 0;
+}
+#endif /* NM_IGNORED */
diff --git a/src/systemd/src/basic/path-util.h b/src/systemd/src/basic/path-util.h
index 79db819e..519060cf 100644
--- a/src/systemd/src/basic/path-util.h
+++ b/src/systemd/src/basic/path-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010-2012 Lennart Poettering
-***/
-
 #include <alloca.h>
 #include <stdbool.h>
 #include <stddef.h>
@@ -52,12 +46,12 @@ char* path_make_absolute(const char *p, const char *prefix);
 int safe_getcwd(char **ret);
 int path_make_absolute_cwd(const char *p, char **ret);
 int path_make_relative(const char *from_dir, const char *to_path, char **_r);
-char* path_kill_slashes(char *path);
 char* path_startswith(const char *path, const char *prefix) _pure_;
 int path_compare(const char *a, const char *b) _pure_;
 bool path_equal(const char *a, const char *b) _pure_;
 bool path_equal_or_files_same(const char *a, const char *b, int flags);
 char* path_join(const char *root, const char *path, const char *rest);
+char* path_simplify(char *path, bool kill_dots);
 
 static inline bool path_equal_ptr(const char *a, const char *b) {
         return !!a == !!b && (!a || path_equal(a, b));
@@ -103,11 +97,11 @@ int mkfs_exists(const char *fstype);
  * the tree, to root. Also returns "" (and not "/"!) for the root
  * directory. Excludes the specified directory itself */
 #define PATH_FOREACH_PREFIX(prefix, path) \
-        for (char *_slash = ({ path_kill_slashes(strcpy(prefix, path)); streq(prefix, "/") ? NULL : strrchr(prefix, '/'); }); _slash && ((*_slash = 0), true); _slash = strrchr((prefix), '/'))
+        for (char *_slash = ({ path_simplify(strcpy(prefix, path), false); streq(prefix, "/") ? NULL : strrchr(prefix, '/'); }); _slash && ((*_slash = 0), true); _slash = strrchr((prefix), '/'))
 
 /* Same as PATH_FOREACH_PREFIX but also includes the specified path itself */
 #define PATH_FOREACH_PREFIX_MORE(prefix, path) \
-        for (char *_slash = ({ path_kill_slashes(strcpy(prefix, path)); if (streq(prefix, "/")) prefix[0] = 0; strrchr(prefix, 0); }); _slash && ((*_slash = 0), true); _slash = strrchr((prefix), '/'))
+        for (char *_slash = ({ path_simplify(strcpy(prefix, path), false); if (streq(prefix, "/")) prefix[0] = 0; strrchr(prefix, 0); }); _slash && ((*_slash = 0), true); _slash = strrchr((prefix), '/'))
 
 char *prefix_root(const char *root, const char *path);
 
@@ -149,7 +143,9 @@ char *file_in_same_dir(const char *path, const char *filename);
 bool hidden_or_backup_file(const char *filename) _pure_;
 
 bool is_device_path(const char *path);
-bool is_deviceallow_pattern(const char *path);
+
+bool valid_device_node_path(const char *path);
+bool valid_device_allow_pattern(const char *path);
 
 int systemd_installation_has_version(const char *root, unsigned minimal_version);
 
@@ -169,3 +165,11 @@ bool empty_or_root(const char *root);
 static inline const char *empty_to_root(const char *path) {
         return isempty(path) ? "/" : path;
 }
+
+enum {
+        PATH_CHECK_FATAL    = 1 << 0,  /* If not set, then error message is appended with 'ignoring'. */
+        PATH_CHECK_ABSOLUTE = 1 << 1,
+        PATH_CHECK_RELATIVE = 1 << 2,
+};
+
+int path_simplify_and_warn(char *path, unsigned flag, const char *unit, const char *filename, unsigned line, const char *lvalue);
diff --git a/src/systemd/src/basic/prioq.c b/src/systemd/src/basic/prioq.c
index 805a6174..79900df3 100644
--- a/src/systemd/src/basic/prioq.c
+++ b/src/systemd/src/basic/prioq.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2013 Lennart Poettering
-***/
 
 /*
  * Priority Queue
diff --git a/src/systemd/src/basic/prioq.h b/src/systemd/src/basic/prioq.h
index e348c646..e0361752 100644
--- a/src/systemd/src/basic/prioq.h
+++ b/src/systemd/src/basic/prioq.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2013 Lennart Poettering
-***/
-
 #include <stdbool.h>
 
 #include "hashmap.h"
diff --git a/src/systemd/src/basic/process-util.c b/src/systemd/src/basic/process-util.c
index 4af99957..10aa0e56 100644
--- a/src/systemd/src/basic/process-util.c
+++ b/src/systemd/src/basic/process-util.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
@@ -19,6 +14,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/mman.h>
+#include <sys/mount.h>
 #include <sys/personality.h>
 #include <sys/prctl.h>
 #include <sys/types.h>
@@ -80,20 +76,31 @@ int get_process_state(pid_t pid) {
         return (unsigned char) state;
 }
 
-int get_process_comm(pid_t pid, char **name) {
+int get_process_comm(pid_t pid, char **ret) {
+        _cleanup_free_ char *escaped = NULL, *comm = NULL;
         const char *p;
         int r;
 
-        assert(name);
+        assert(ret);
         assert(pid >= 0);
 
+        escaped = new(char, TASK_COMM_LEN);
+        if (!escaped)
+                return -ENOMEM;
+
         p = procfs_file_alloca(pid, "comm");
 
-        r = read_one_line_file(p, name);
+        r = read_one_line_file(p, &comm);
         if (r == -ENOENT)
                 return -ESRCH;
+        if (r < 0)
+                return r;
 
-        return r;
+        /* Escape unprintable characters, just in case, but don't grow the string beyond the underlying size */
+        cellescape(escaped, TASK_COMM_LEN, comm);
+
+        *ret = TAKE_PTR(escaped);
+        return 0;
 }
 
 int get_process_cmdline(pid_t pid, size_t max_length, bool comm_fallback, char **line) {
@@ -251,15 +258,10 @@ int get_process_cmdline(pid_t pid, size_t max_length, bool comm_fallback, char *
                                 memcpy(ans, "[...]", max_length-1);
                                 ans[max_length-1] = 0;
                         } else {
-                                char *e;
-
                                 t[max_length - 6] = 0;
 
                                 /* Chop off final spaces */
-                                e = strchr(t, 0);
-                                while (e > t && isspace(e[-1]))
-                                        e--;
-                                *e = 0;
+                                delete_trailing_chars(t, WHITESPACE);
 
                                 ans = strjoin("[", t, "...]");
                         }
@@ -300,7 +302,7 @@ int rename_process(const char name[]) {
          * can use PR_SET_NAME, which sets the thread name for the calling thread. */
         if (prctl(PR_SET_NAME, name) < 0)
                 log_debug_errno(errno, "PR_SET_NAME failed: %m");
-        if (l > 15) /* Linux process names can be 15 chars at max */
+        if (l >= TASK_COMM_LEN) /* Linux process names can be 15 chars at max */
                 truncated = true;
 
         /* Second step, change glibc's ID of the process name. */
@@ -744,14 +746,17 @@ int wait_for_terminate_and_check(const char *name, pid_t pid, WaitFlags flags) {
 
 /*
  * Return values:
- * < 0 : wait_for_terminate_with_timeout() failed to get the state of the
- *       process, the process timed out, the process was terminated by a
- *       signal, or failed for an unknown reason.
+ *
+ * < 0 : wait_for_terminate_with_timeout() failed to get the state of the process, the process timed out, the process
+ *       was terminated by a signal, or failed for an unknown reason.
+ *
  * >=0 : The process terminated normally with no failures.
  *
- * Success is indicated by a return value of zero, a timeout is indicated
- * by ETIMEDOUT, and all other child failure states are indicated by error
- * is indicated by a non-zero value.
+ * Success is indicated by a return value of zero, a timeout is indicated by ETIMEDOUT, and all other child failure
+ * states are indicated by error is indicated by a non-zero value.
+ *
+ * This call assumes SIGCHLD has been blocked already, in particular before the child to wait for has been forked off
+ * to remain entirely race-free.
  */
 int wait_for_terminate_with_timeout(pid_t pid, usec_t timeout) {
         sigset_t mask;
@@ -1353,6 +1358,16 @@ int safe_fork_full(
                 }
         }
 
+        if (FLAGS_SET(flags, FORK_NEW_MOUNTNS | FORK_MOUNTNS_SLAVE)) {
+
+                /* Optionally, make sure we never propagate mounts to the host. */
+
+                if (mount(NULL, "/", NULL, MS_SLAVE | MS_REC, NULL) < 0) {
+                        log_full_errno(prio, errno, "Failed to remount root directory as MS_SLAVE: %m");
+                        _exit(EXIT_FAILURE);
+                }
+        }
+
         if (flags & FORK_CLOSE_ALL_FDS) {
                 /* Close the logs here in case it got reopened above, as close_all_fds() would close them for us */
                 log_close();
diff --git a/src/systemd/src/basic/process-util.h b/src/systemd/src/basic/process-util.h
index e3bf36bf..e11164bd 100644
--- a/src/systemd/src/basic/process-util.h
+++ b/src/systemd/src/basic/process-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <alloca.h>
 #include <errno.h>
 #include <sched.h>
@@ -51,8 +45,8 @@ int get_process_ppid(pid_t pid, pid_t *ppid);
 int wait_for_terminate(pid_t pid, siginfo_t *status);
 
 typedef enum WaitFlags {
-        WAIT_LOG_ABNORMAL             = 1U << 0,
-        WAIT_LOG_NON_ZERO_EXIT_STATUS = 1U << 1,
+        WAIT_LOG_ABNORMAL             = 1 << 0,
+        WAIT_LOG_NON_ZERO_EXIT_STATUS = 1 << 1,
 
         /* A shortcut for requesting the most complete logging */
         WAIT_LOG = WAIT_LOG_ABNORMAL|WAIT_LOG_NON_ZERO_EXIT_STATUS,
@@ -157,14 +151,15 @@ void reset_cached_pid(void);
 int must_be_root(void);
 
 typedef enum ForkFlags {
-        FORK_RESET_SIGNALS = 1U << 0,
-        FORK_CLOSE_ALL_FDS = 1U << 1,
-        FORK_DEATHSIG      = 1U << 2,
-        FORK_NULL_STDIO    = 1U << 3,
-        FORK_REOPEN_LOG    = 1U << 4,
-        FORK_LOG           = 1U << 5,
-        FORK_WAIT          = 1U << 6,
-        FORK_NEW_MOUNTNS   = 1U << 7,
+        FORK_RESET_SIGNALS = 1 << 0,
+        FORK_CLOSE_ALL_FDS = 1 << 1,
+        FORK_DEATHSIG      = 1 << 2,
+        FORK_NULL_STDIO    = 1 << 3,
+        FORK_REOPEN_LOG    = 1 << 4,
+        FORK_LOG           = 1 << 5,
+        FORK_WAIT          = 1 << 6,
+        FORK_NEW_MOUNTNS   = 1 << 7,
+        FORK_MOUNTNS_SLAVE = 1 << 8,
 } ForkFlags;
 
 int safe_fork_full(const char *name, const int except_fds[], size_t n_except_fds, ForkFlags flags, pid_t *ret_pid);
diff --git a/src/systemd/src/basic/random-util.c b/src/systemd/src/basic/random-util.c
index d80751cf..01a8488f 100644
--- a/src/systemd/src/basic/random-util.c
+++ b/src/systemd/src/basic/random-util.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
@@ -48,9 +43,9 @@ int acquire_random_bytes(void *p, size_t n, bool high_quality_required) {
          * for us. */
 
         /* Use the getrandom() syscall unless we know we don't have it. */
-        if (have_syscall != 0) {
+        if (have_syscall != 0 && !HAS_FEATURE_MEMORY_SANITIZER) {
 #if !HAVE_GETRANDOM
-                /* XXX: NM: systemd calls the syscall directly in this case. Don't add that workaround.
+                /* NetworkManager Note: systemd calls the syscall directly in this case. Don't add that workaround.
                  * If you don't compile against a libc that provides getrandom(), you don't get it. */
                 r = -1;
                 errno = ENOSYS;
diff --git a/src/systemd/src/basic/random-util.h b/src/systemd/src/basic/random-util.h
index 72391705..9a103f0e 100644
--- a/src/systemd/src/basic/random-util.h
+++ b/src/systemd/src/basic/random-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdint.h>
diff --git a/src/systemd/src/basic/refcnt.h b/src/systemd/src/basic/refcnt.h
index 0d5b3f4e..d2be6086 100644
--- a/src/systemd/src/basic/refcnt.h
+++ b/src/systemd/src/basic/refcnt.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2013 Lennart Poettering
-***/
-
 /* A type-safe atomic refcounter.
  *
  * DO NOT USE THIS UNLESS YOU ACTUALLY CARE ABOUT THREAD SAFETY! */
diff --git a/src/systemd/src/basic/set.h b/src/systemd/src/basic/set.h
index dc0f1e17..66471381 100644
--- a/src/systemd/src/basic/set.h
+++ b/src/systemd/src/basic/set.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include "extract-word.h"
 #include "hashmap.h"
 #include "macro.h"
diff --git a/src/systemd/src/basic/signal-util.h b/src/systemd/src/basic/signal-util.h
index 0c43467b..92f2804c 100644
--- a/src/systemd/src/basic/signal-util.h
+++ b/src/systemd/src/basic/signal-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010-2015 Lennart Poettering
-***/
-
 #include <signal.h>
 
 #include "macro.h"
diff --git a/src/systemd/src/basic/socket-util.c b/src/systemd/src/basic/socket-util.c
index aa06070e..a71db5a7 100644
--- a/src/systemd/src/basic/socket-util.c
+++ b/src/systemd/src/basic/socket-util.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
@@ -793,7 +788,7 @@ static const char* const socket_address_bind_ipv6_only_table[_SOCKET_ADDRESS_BIN
 
 DEFINE_STRING_TABLE_LOOKUP(socket_address_bind_ipv6_only, SocketAddressBindIPv6Only);
 
-SocketAddressBindIPv6Only parse_socket_address_bind_ipv6_only_or_bool(const char *n) {
+SocketAddressBindIPv6Only socket_address_bind_ipv6_only_or_bool_from_string(const char *n) {
         int r;
 
         r = parse_boolean(n);
diff --git a/src/systemd/src/basic/socket-util.h b/src/systemd/src/basic/socket-util.h
index c2d21b45..e2db795a 100644
--- a/src/systemd/src/basic/socket-util.h
+++ b/src/systemd/src/basic/socket-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <netinet/ether.h>
 #include <netinet/in.h>
 #include <stdbool.h>
@@ -118,7 +112,7 @@ int socknameinfo_pretty(union sockaddr_union *sa, socklen_t salen, char **_ret);
 
 const char* socket_address_bind_ipv6_only_to_string(SocketAddressBindIPv6Only b) _const_;
 SocketAddressBindIPv6Only socket_address_bind_ipv6_only_from_string(const char *s) _pure_;
-SocketAddressBindIPv6Only parse_socket_address_bind_ipv6_only_or_bool(const char *s);
+SocketAddressBindIPv6Only socket_address_bind_ipv6_only_or_bool_from_string(const char *s);
 
 int netlink_family_to_string_alloc(int b, char **s);
 int netlink_family_from_string(const char *s) _pure_;
diff --git a/src/systemd/src/basic/stat-util.c b/src/systemd/src/basic/stat-util.c
index 28e75618..9892d8bc 100644
--- a/src/systemd/src/basic/stat-util.c
+++ b/src/systemd/src/basic/stat-util.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010-2012 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
@@ -135,32 +130,6 @@ int path_is_read_only_fs(const char *path) {
         return false;
 }
 
-int path_is_os_tree(const char *path) {
-        int r;
-
-        assert(path);
-
-        /* Does the path exist at all? If not, generate an error immediately. This is useful so that a missing root dir
-         * always results in -ENOENT, and we can properly distuingish the case where the whole root doesn't exist from
-         * the case where just the os-release file is missing. */
-        if (laccess(path, F_OK) < 0)
-                return -errno;
-
-        /* We use /usr/lib/os-release as flag file if something is an OS */
-        r = chase_symlinks("/usr/lib/os-release", path, CHASE_PREFIX_ROOT, NULL);
-        if (r == -ENOENT) {
-
-                /* Also check for the old location in /etc, just in case. */
-                r = chase_symlinks("/etc/os-release", path, CHASE_PREFIX_ROOT, NULL);
-                if (r == -ENOENT)
-                        return 0; /* We got nothing */
-        }
-        if (r < 0)
-                return r;
-
-        return 1;
-}
-
 int files_same(const char *filea, const char *fileb, int flags) {
         struct stat a, b;
 
diff --git a/src/systemd/src/basic/stat-util.h b/src/systemd/src/basic/stat-util.h
index d1e8d330..f8014ed3 100644
--- a/src/systemd/src/basic/stat-util.h
+++ b/src/systemd/src/basic/stat-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010-2012 Lennart Poettering
-***/
-
 #include <stdbool.h>
 #include <stddef.h>
 #include <sys/stat.h>
@@ -35,7 +29,6 @@ int null_or_empty_path(const char *fn);
 int null_or_empty_fd(int fd);
 
 int path_is_read_only_fs(const char *path);
-int path_is_os_tree(const char *path);
 
 int files_same(const char *filea, const char *fileb, int flags);
 
diff --git a/src/systemd/src/basic/stdio-util.h b/src/systemd/src/basic/stdio-util.h
index 5330789a..73c03274 100644
--- a/src/systemd/src/basic/stdio-util.h
+++ b/src/systemd/src/basic/stdio-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <printf.h>
 #include <stdarg.h>
 #include <stdio.h>
diff --git a/src/systemd/src/basic/string-table.c b/src/systemd/src/basic/string-table.c
index 34723b4c..94412ed2 100644
--- a/src/systemd/src/basic/string-table.c
+++ b/src/systemd/src/basic/string-table.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
diff --git a/src/systemd/src/basic/string-table.h b/src/systemd/src/basic/string-table.h
index a39206fb..9bd78793 100644
--- a/src/systemd/src/basic/string-table.h
+++ b/src/systemd/src/basic/string-table.h
@@ -2,12 +2,6 @@
 
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <errno.h>
 #include <stddef.h>
 #include <stdio.h>
@@ -77,7 +71,6 @@ ssize_t string_table_lookup(const char * const *table, size_t len, const char *k
                 return (type) -1;                                       \
         }                                                               \
 
-
 #define _DEFINE_STRING_TABLE_LOOKUP(name,type,scope)                    \
         _DEFINE_STRING_TABLE_LOOKUP_TO_STRING(name,type,scope)          \
         _DEFINE_STRING_TABLE_LOOKUP_FROM_STRING(name,type,scope)
@@ -102,3 +95,18 @@ ssize_t string_table_lookup(const char * const *table, size_t len, const char *k
         _DEFINE_STRING_TABLE_LOOKUP_TO_STRING_FALLBACK(name,type,max,static)
 #define DEFINE_PRIVATE_STRING_TABLE_LOOKUP_FROM_STRING_FALLBACK(name,type,max) \
         _DEFINE_STRING_TABLE_LOOKUP_FROM_STRING_FALLBACK(name,type,max,static)
+
+#define DUMP_STRING_TABLE(name,type,max)                                \
+        do {                                                            \
+                type _k;                                                \
+                flockfile(stdout);                                      \
+                for (_k = 0; _k < (max); _k++) {                        \
+                        const char *_t;                                 \
+                        _t = name##_to_string(_k);                      \
+                        if (!_t)                                        \
+                                continue;                               \
+                        fputs_unlocked(_t, stdout);                     \
+                        fputc_unlocked('\n', stdout);                   \
+                }                                                       \
+                funlockfile(stdout);                                    \
+        } while(false)
diff --git a/src/systemd/src/basic/string-util.c b/src/systemd/src/basic/string-util.c
index a60c7dcc..1747f35b 100644
--- a/src/systemd/src/basic/string-util.c
+++ b/src/systemd/src/basic/string-util.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
@@ -16,6 +11,7 @@
 #include <string.h>
 
 #include "alloc-util.h"
+#include "escape.h"
 #include "gunicode.h"
 #include "locale-util.h"
 #include "macro.h"
@@ -271,23 +267,12 @@ char *strjoin_real(const char *x, ...) {
 }
 
 char *strstrip(char *s) {
-        char *e;
-
         if (!s)
                 return NULL;
 
-        /* Drops trailing whitespace. Modifies the string in
-         * place. Returns pointer to first non-space character */
-
-        s += strspn(s, WHITESPACE);
-
-        for (e = strchr(s, 0); e > s; e --)
-                if (!strchr(WHITESPACE, e[-1]))
-                        break;
-
-        *e = 0;
+        /* Drops trailing whitespace. Modifies the string in place. Returns pointer to first non-space character */
 
-        return s;
+        return delete_trailing_chars(skip_leading_chars(s, WHITESPACE), WHITESPACE);
 }
 
 char *delete_chars(char *s, const char *bad) {
@@ -458,9 +443,23 @@ bool string_has_cc(const char *p, const char *ok) {
 }
 
 #if 0 /* NM_IGNORED */
+static int write_ellipsis(char *buf, bool unicode) {
+        if (unicode || is_locale_utf8()) {
+                buf[0] = 0xe2; /* tri-dot ellipsis: … */
+                buf[1] = 0x80;
+                buf[2] = 0xa6;
+        } else {
+                buf[0] = '.';
+                buf[1] = '.';
+                buf[2] = '.';
+        }
+
+        return 3;
+}
+
 static char *ascii_ellipsize_mem(const char *s, size_t old_length, size_t new_length, unsigned percent) {
-        size_t x, need_space;
-        char *r;
+        size_t x, need_space, suffix_len;
+        char *t;
 
         assert(s);
         assert(percent <= 100);
@@ -496,8 +495,8 @@ static char *ascii_ellipsize_mem(const char *s, size_t old_length, size_t new_le
          * either for the UTF-8 encoded character or for three ASCII characters. */
         need_space = is_locale_utf8() ? 1 : 3;
 
-        r = new(char, new_length+3);
-        if (!r)
+        t = new(char, new_length+3);
+        if (!t)
                 return NULL;
 
         assert(new_length >= need_space);
@@ -505,23 +504,13 @@ static char *ascii_ellipsize_mem(const char *s, size_t old_length, size_t new_le
         x = ((new_length - need_space) * percent + 50) / 100;
         assert(x <= new_length - need_space);
 
-        memcpy(r, s, x);
-
-        if (is_locale_utf8()) {
-                r[x+0] = 0xe2; /* tri-dot ellipsis: … */
-                r[x+1] = 0x80;
-                r[x+2] = 0xa6;
-        } else {
-                r[x+0] = '.';
-                r[x+1] = '.';
-                r[x+2] = '.';
-        }
-
-        memcpy(r + x + 3,
-               s + old_length - (new_length - x - need_space),
-               new_length - x - need_space + 1);
+        memcpy(t, s, x);
+        write_ellipsis(t + x, false);
+        suffix_len = new_length - x - need_space;
+        memcpy(t + x + 3, s + old_length - suffix_len, suffix_len);
+        *(t + x + 3 + suffix_len) = '\0';
 
-        return r;
+        return t;
 }
 
 char *ellipsize_mem(const char *s, size_t old_length, size_t new_length, unsigned percent) {
@@ -552,42 +541,56 @@ char *ellipsize_mem(const char *s, size_t old_length, size_t new_length, unsigne
                 return strdup("");
 
         /* If no multibyte characters use ascii_ellipsize_mem for speed */
-        if (ascii_is_valid(s))
+        if (ascii_is_valid_n(s, old_length))
                 return ascii_ellipsize_mem(s, old_length, new_length, percent);
 
         x = ((new_length - 1) * percent) / 100;
         assert(x <= new_length - 1);
 
         k = 0;
-        for (i = s; k < x && i < s + old_length; i = utf8_next_char(i)) {
+        for (i = s; i < s + old_length; i = utf8_next_char(i)) {
                 char32_t c;
+                int w;
 
                 r = utf8_encoded_to_unichar(i, &c);
                 if (r < 0)
                         return NULL;
-                k += unichar_iswide(c) ? 2 : 1;
-        }
 
-        if (k > x) /* last character was wide and went over quota */
-                x++;
+                w = unichar_iswide(c) ? 2 : 1;
+                if (k + w <= x)
+                        k += w;
+                else
+                        break;
+        }
 
-        for (j = s + old_length; k < new_length && j > i; ) {
+        for (j = s + old_length; j > i; ) {
                 char32_t c;
+                int w;
+                const char *jj;
 
-                j = utf8_prev_char(j);
-                r = utf8_encoded_to_unichar(j, &c);
+                jj = utf8_prev_char(j);
+                r = utf8_encoded_to_unichar(jj, &c);
                 if (r < 0)
                         return NULL;
-                k += unichar_iswide(c) ? 2 : 1;
+
+                w = unichar_iswide(c) ? 2 : 1;
+                if (k + w <= new_length) {
+                        k += w;
+                        j = jj;
+                } else
+                        break;
         }
         assert(i <= j);
 
         /* we don't actually need to ellipsize */
         if (i == j)
-                return memdup(s, old_length + 1);
+                return memdup_suffix0(s, old_length);
 
-        /* make space for ellipsis */
-        j = utf8_next_char(j);
+        /* make space for ellipsis, if possible */
+        if (j < s + old_length)
+                j = utf8_next_char(j);
+        else if (i > s)
+                i = utf8_prev_char(i);
 
         len = i - s;
         len2 = s + old_length - j;
@@ -601,21 +604,81 @@ char *ellipsize_mem(const char *s, size_t old_length, size_t new_length, unsigne
         */
 
         memcpy(e, s, len);
-        e[len + 0] = 0xe2; /* tri-dot ellipsis: … */
-        e[len + 1] = 0x80;
-        e[len + 2] = 0xa6;
-
-        memcpy(e + len + 3, j, len2 + 1);
+        write_ellipsis(e + len, true);
+        memcpy(e + len + 3, j, len2);
+        *(e + len + 3 + len2) = '\0';
 
         return e;
 }
 
-char *ellipsize(const char *s, size_t length, unsigned percent) {
+char *cellescape(char *buf, size_t len, const char *s) {
+        /* Escape and ellipsize s into buffer buf of size len. Only non-control ASCII
+         * characters are copied as they are, everything else is escaped. The result
+         * is different then if escaping and ellipsization was performed in two
+         * separate steps, because each sequence is either stored in full or skipped.
+         *
+         * This function should be used for logging about strings which expected to
+         * be plain ASCII in a safe way.
+         *
+         * An ellipsis will be used if s is too long. It was always placed at the
+         * very end.
+         */
 
-        if (length == (size_t) -1)
-                return strdup(s);
+        size_t i = 0, last_char_width[4] = {}, k = 0, j;
+
+        assert(len > 0); /* at least a terminating NUL */
+
+        for (;;) {
+                char four[4];
+                int w;
+
+                if (*s == 0) /* terminating NUL detected? then we are done! */
+                        goto done;
+
+                w = cescape_char(*s, four);
+                if (i + w + 1 > len) /* This character doesn't fit into the buffer anymore? In that case let's
+                                      * ellipsize at the previous location */
+                        break;
+
+                /* OK, there was space, let's add this escaped character to the buffer */
+                memcpy(buf + i, four, w);
+                i += w;
+
+                /* And remember its width in the ring buffer */
+                last_char_width[k] = w;
+                k = (k + 1) % 4;
+
+                s++;
+        }
+
+        /* Ellipsation is necessary. This means we might need to truncate the string again to make space for 4
+         * characters ideally, but the buffer is shorter than that in the first place take what we can get */
+        for (j = 0; j < ELEMENTSOF(last_char_width); j++) {
+
+                if (i + 4 <= len) /* nice, we reached our space goal */
+                        break;
+
+                k = k == 0 ? 3 : k - 1;
+                if (last_char_width[k] == 0) /* bummer, we reached the beginning of the strings */
+                        break;
+
+                assert(i >= last_char_width[k]);
+                i -= last_char_width[k];
+        }
+
+        if (i + 4 <= len) /* yay, enough space */
+                i += write_ellipsis(buf + i, false);
+        else if (i + 3 <= len) { /* only space for ".." */
+                buf[i++] = '.';
+                buf[i++] = '.';
+        } else if (i + 2 <= len) /* only space for a single "." */
+                buf[i++] = '.';
+        else
+                assert(i + 1 <= len);
 
-        return ellipsize_mem(s, strlen(s), length, percent);
+ done:
+        buf[i] = '\0';
+        return buf;
 }
 #endif /* NM_IGNORED */
 
diff --git a/src/systemd/src/basic/string-util.h b/src/systemd/src/basic/string-util.h
index 5a10eeab..c0cc4e78 100644
--- a/src/systemd/src/basic/string-util.h
+++ b/src/systemd/src/basic/string-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <alloca.h>
 #include <stdbool.h>
 #include <stddef.h>
@@ -156,7 +150,14 @@ static inline bool _pure_ in_charset(const char *s, const char* charset) {
 bool string_has_cc(const char *p, const char *ok) _pure_;
 
 char *ellipsize_mem(const char *s, size_t old_length_bytes, size_t new_length_columns, unsigned percent);
-char *ellipsize(const char *s, size_t length, unsigned percent);
+static inline char *ellipsize(const char *s, size_t length, unsigned percent) {
+        return ellipsize_mem(s, strlen(s), length, percent);
+}
+
+char *cellescape(char *buf, size_t len, const char *s);
+
+/* This limit is arbitrary, enough to give some idea what the string contains */
+#define CELLESCAPE_DEFAULT_LENGTH 64
 
 bool nulstr_contains(const char *nulstr, const char *needle);
 
@@ -209,3 +210,21 @@ static inline size_t strlen_ptr(const char *s) {
 
         return strlen(s);
 }
+
+/* Like startswith(), but operates on arbitrary memory blocks */
+static inline void *memory_startswith(const void *p, size_t sz, const char *token) {
+        size_t n;
+
+        assert(token);
+
+        n = strlen(token);
+        if (sz < n)
+                return NULL;
+
+        assert(p);
+
+        if (memcmp(p, token, n) != 0)
+                return NULL;
+
+        return (uint8_t*) p + n;
+}
diff --git a/src/systemd/src/basic/strv.c b/src/systemd/src/basic/strv.c
index 9d5000aa..9da8cece 100644
--- a/src/systemd/src/basic/strv.c
+++ b/src/systemd/src/basic/strv.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
diff --git a/src/systemd/src/basic/strv.h b/src/systemd/src/basic/strv.h
index 958c5f3a..51d03db9 100644
--- a/src/systemd/src/basic/strv.h
+++ b/src/systemd/src/basic/strv.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <fnmatch.h>
 #include <stdarg.h>
 #include <stdbool.h>
diff --git a/src/systemd/src/basic/time-util.c b/src/systemd/src/basic/time-util.c
index fa9f66f2..aafa0375 100644
--- a/src/systemd/src/basic/time-util.c
+++ b/src/systemd/src/basic/time-util.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
@@ -285,8 +280,11 @@ static char *format_timestamp_internal(
                 return NULL; /* Timestamp is unset */
 
         /* Let's not format times with years > 9999 */
-        if (t > USEC_TIMESTAMP_FORMATTABLE_MAX)
-                return NULL;
+        if (t > USEC_TIMESTAMP_FORMATTABLE_MAX) {
+                assert(l >= strlen("--- XXXX-XX-XX XX:XX:XX") + 1);
+                strcpy(buf, "--- XXXX-XX-XX XX:XX:XX");
+                return buf;
+        }
 
         sec = (time_t) (t / USEC_PER_SEC); /* Round down */
 
@@ -485,7 +483,7 @@ char *format_timespan(char *buf, size_t l, usec_t t, usec_t accuracy) {
                 /* Let's see if we should shows this in dot notation */
                 if (t < USEC_PER_MINUTE && b > 0) {
                         usec_t cc;
-                        int j;
+                        signed char j;
 
                         j = 0;
                         for (cc = table[i].usec; cc > 1; cc /= 10)
@@ -1314,6 +1312,9 @@ bool timezone_is_valid(const char *name, int log_level) {
         if (slash)
                 return false;
 
+        if (p - name >= PATH_MAX)
+                return false;
+
         t = strjoina("/usr/share/zoneinfo/", name);
 
         fd = open(t, O_RDONLY|O_CLOEXEC);
@@ -1467,4 +1468,28 @@ bool in_utc_timezone(void) {
 
         return timezone == 0 && daylight == 0;
 }
+
+int time_change_fd(void) {
+
+        /* We only care for the cancellation event, hence we set the timeout to the latest possible value. */
+        static const struct itimerspec its = {
+                .it_value.tv_sec = TIME_T_MAX,
+        };
+
+        _cleanup_close_ int fd;
+
+        assert_cc(sizeof(time_t) == sizeof(TIME_T_MAX));
+
+        /* Uses TFD_TIMER_CANCEL_ON_SET to get notifications whenever CLOCK_REALTIME makes a jump relative to
+         * CLOCK_MONOTONIC. */
+
+        fd = timerfd_create(CLOCK_REALTIME, TFD_NONBLOCK|TFD_CLOEXEC);
+        if (fd < 0)
+                return -errno;
+
+        if (timerfd_settime(fd, TFD_TIMER_ABSTIME|TFD_TIMER_CANCEL_ON_SET, &its, NULL) < 0)
+                return -errno;
+
+        return TAKE_FD(fd);
+}
 #endif /* NM_IGNORED */
diff --git a/src/systemd/src/basic/time-util.h b/src/systemd/src/basic/time-util.h
index e720688c..344f2dc5 100644
--- a/src/systemd/src/basic/time-util.h
+++ b/src/systemd/src/basic/time-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <inttypes.h>
 #include <stdbool.h>
 #include <stddef.h>
@@ -183,5 +177,7 @@ static inline usec_t usec_sub_signed(usec_t timestamp, int64_t delta) {
 /* With a 32bit time_t we can't go beyond 2038... */
 #define USEC_TIMESTAMP_FORMATTABLE_MAX ((usec_t) 2147483647000000)
 #else
-#error "Yuck, time_t is neither 4 not 8 bytes wide?"
+#error "Yuck, time_t is neither 4 nor 8 bytes wide?"
 #endif
+
+int time_change_fd(void);
diff --git a/src/systemd/src/basic/umask-util.h b/src/systemd/src/basic/umask-util.h
index ce705247..e964292e 100644
--- a/src/systemd/src/basic/umask-util.h
+++ b/src/systemd/src/basic/umask-util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <stdbool.h>
 #include <sys/stat.h>
 #include <sys/types.h>
diff --git a/src/systemd/src/basic/utf8.c b/src/systemd/src/basic/utf8.c
index 7a382204..80de43c5 100644
--- a/src/systemd/src/basic/utf8.c
+++ b/src/systemd/src/basic/utf8.c
@@ -1,9 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright 2008-2011 Kay Sievers
-  Copyright 2012 Lennart Poettering
+  Copyright © 2008-2011 Kay Sievers
 ***/
 
 /* Parts of this file are based on the GLIB utf8 validation functions. The
@@ -249,6 +246,9 @@ char *utf8_escape_non_printable(const char *str) {
 char *ascii_is_valid(const char *str) {
         const char *p;
 
+        /* Check whether the string consists of valid ASCII bytes,
+         * i.e values between 0 and 127, inclusive. */
+
         assert(str);
 
         for (p = str; *p; p++)
@@ -258,6 +258,21 @@ char *ascii_is_valid(const char *str) {
         return (char*) str;
 }
 
+char *ascii_is_valid_n(const char *str, size_t len) {
+        size_t i;
+
+        /* Very similar to ascii_is_valid(), but checks exactly len
+         * bytes and rejects any NULs in that range. */
+
+        assert(str);
+
+        for (i = 0; i < len; i++)
+                if ((unsigned char) str[i] >= 128 || str[i] == 0)
+                        return NULL;
+
+        return (char*) str;
+}
+
 /**
  * utf8_encode_unichar() - Encode single UCS-4 character as UTF-8
  * @out_utf8: output buffer of at least 4 bytes or NULL
diff --git a/src/systemd/src/basic/utf8.h b/src/systemd/src/basic/utf8.h
index 0ebe36d9..f37f87ff 100644
--- a/src/systemd/src/basic/utf8.h
+++ b/src/systemd/src/basic/utf8.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2012 Lennart Poettering
-***/
-
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdint.h>
@@ -24,6 +18,7 @@ bool unichar_is_valid(char32_t c);
 
 const char *utf8_is_valid(const char *s) _pure_;
 char *ascii_is_valid(const char *s) _pure_;
+char *ascii_is_valid_n(const char *str, size_t len);
 
 bool utf8_is_printable_newline(const char* str, size_t length, bool newline) _pure_;
 #define utf8_is_printable(str, length) utf8_is_printable_newline(str, length, true)
diff --git a/src/systemd/src/basic/util.c b/src/systemd/src/basic/util.c
index 12e2f451..ba7474f0 100644
--- a/src/systemd/src/basic/util.c
+++ b/src/systemd/src/basic/util.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
@@ -269,7 +264,7 @@ int container_get_leader(const char *machine, pid_t *pid) {
                 return -EINVAL;
 
         p = strjoina("/run/systemd/machines/", machine);
-        r = parse_env_file(p, NEWLINE, "LEADER", &s, "CLASS", &class, NULL);
+        r = parse_env_file(NULL, p, NEWLINE, "LEADER", &s, "CLASS", &class, NULL);
         if (r == -ENOENT)
                 return -EHOSTDOWN;
         if (r < 0)
@@ -410,6 +405,7 @@ uint64_t physical_memory(void) {
         uint64_t mem, lim;
         size_t ps;
         long sc;
+        int r;
 
         /* We return this as uint64_t in case we are running as 32bit process on a 64bit kernel with huge amounts of
          * memory.
@@ -423,13 +419,40 @@ uint64_t physical_memory(void) {
         ps = page_size();
         mem = (uint64_t) sc * (uint64_t) ps;
 
-        if (cg_get_root_path(&root) < 0)
+        r = cg_get_root_path(&root);
+        if (r < 0) {
+                log_debug_errno(r, "Failed to determine root cgroup, ignoring cgroup memory limit: %m");
                 return mem;
+        }
 
-        if (cg_get_attribute("memory", root, "memory.limit_in_bytes", &value))
+        r = cg_all_unified();
+        if (r < 0) {
+                log_debug_errno(r, "Failed to determine root unified mode, ignoring cgroup memory limit: %m");
                 return mem;
+        }
+        if (r > 0) {
+                r = cg_get_attribute("memory", root, "memory.max", &value);
+                if (r < 0) {
+                        log_debug_errno(r, "Failed to read memory.max cgroup attribute, ignoring cgroup memory limit: %m");
+                        return mem;
+                }
+
+                if (streq(value, "max"))
+                        return mem;
+        } else {
+                r = cg_get_attribute("memory", root, "memory.limit_in_bytes", &value);
+                if (r < 0) {
+                        log_debug_errno(r, "Failed to read memory.limit_in_bytes cgroup attribute, ignoring cgroup memory limit: %m");
+                        return mem;
+                }
+        }
 
-        if (safe_atou64(value, &lim) < 0)
+        r = safe_atou64(value, &lim);
+        if (r < 0) {
+                log_debug_errno(r, "Failed to parse cgroup memory limit '%s', ignoring: %m", value);
+                return mem;
+        }
+        if (lim == UINT64_MAX)
                 return mem;
 
         /* Make sure the limit is a multiple of our own page size */
@@ -470,6 +493,7 @@ uint64_t system_tasks_max(void) {
 
         uint64_t a = TASKS_MAX, b = TASKS_MAX;
         _cleanup_free_ char *root = NULL;
+        int r;
 
         /* Determine the maximum number of tasks that may run on this system. We check three sources to determine this
          * limit:
@@ -480,13 +504,24 @@ uint64_t system_tasks_max(void) {
          *
          * And then pick the smallest of the three */
 
-        (void) procfs_tasks_get_limit(&a);
+        r = procfs_tasks_get_limit(&a);
+        if (r < 0)
+                log_debug_errno(r, "Failed to read maximum number of tasks from /proc, ignoring: %m");
 
-        if (cg_get_root_path(&root) >= 0) {
+        r = cg_get_root_path(&root);
+        if (r < 0)
+                log_debug_errno(r, "Failed to determine cgroup root path, ignoring: %m");
+        else {
                 _cleanup_free_ char *value = NULL;
 
-                if (cg_get_attribute("pids", root, "pids.max", &value) >= 0)
-                        (void) safe_atou64(value, &b);
+                r = cg_get_attribute("pids", root, "pids.max", &value);
+                if (r < 0)
+                        log_debug_errno(r, "Failed to read pids.max attribute of cgroup root, ignoring: %m");
+                else if (!streq(value, "max")) {
+                        r = safe_atou64(value, &b);
+                        if (r < 0)
+                                log_debug_errno(r, "Failed to parse pids.max attribute of cgroup root, ignoring: %m");
+                }
         }
 
         return MIN3(TASKS_MAX,
diff --git a/src/systemd/src/basic/util.h b/src/systemd/src/basic/util.h
index ad1931f7..9699d228 100644
--- a/src/systemd/src/basic/util.h
+++ b/src/systemd/src/basic/util.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <alloca.h>
 #include <errno.h>
 #include <fcntl.h>
diff --git a/src/systemd/src/libsystemd-network/arp-util.c b/src/systemd/src/libsystemd-network/arp-util.c
index 26db7ea8..1b711c95 100644
--- a/src/systemd/src/libsystemd-network/arp-util.c
+++ b/src/systemd/src/libsystemd-network/arp-util.c
@@ -1,9 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Axis Communications AB. All rights reserved.
-  Copyright (C) 2015 Tom Gundersen
+  Copyright © 2014 Axis Communications AB. All rights reserved.
+  Copyright © 2015 Tom Gundersen
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/libsystemd-network/arp-util.h b/src/systemd/src/libsystemd-network/arp-util.h
index 86864e9f..10c68486 100644
--- a/src/systemd/src/libsystemd-network/arp-util.h
+++ b/src/systemd/src/libsystemd-network/arp-util.h
@@ -2,9 +2,7 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Axis Communications AB. All rights reserved.
+  Copyright © 2014 Axis Communications AB. All rights reserved.
 ***/
 
 #include <netinet/if_ether.h>
diff --git a/src/systemd/src/libsystemd-network/dhcp-identifier.c b/src/systemd/src/libsystemd-network/dhcp-identifier.c
index 6f8adfa6..75357367 100644
--- a/src/systemd/src/libsystemd-network/dhcp-identifier.c
+++ b/src/systemd/src/libsystemd-network/dhcp-identifier.c
@@ -1,8 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2015 Tom Gundersen <teg@jklmen>
+  Copyright © 2015 Tom Gundersen <teg@jklmen>
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/libsystemd-network/dhcp-identifier.h b/src/systemd/src/libsystemd-network/dhcp-identifier.h
index c0a10b6c..42d4956d 100644
--- a/src/systemd/src/libsystemd-network/dhcp-identifier.h
+++ b/src/systemd/src/libsystemd-network/dhcp-identifier.h
@@ -2,9 +2,7 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2015 Tom Gundersen <teg@jklmen>
+  Copyright © 2015 Tom Gundersen <teg@jklmen>
 ***/
 
 #include "sd-id128.h"
diff --git a/src/systemd/src/libsystemd-network/dhcp-internal.h b/src/systemd/src/libsystemd-network/dhcp-internal.h
index f8276222..257a3c2e 100644
--- a/src/systemd/src/libsystemd-network/dhcp-internal.h
+++ b/src/systemd/src/libsystemd-network/dhcp-internal.h
@@ -2,10 +2,8 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2013 Intel Corporation. All rights reserved.
-  Copyright (C) 2014 Tom Gundersen
+  Copyright © 2013 Intel Corporation. All rights reserved.
+  Copyright © 2014 Tom Gundersen
 ***/
 
 #include <linux/if_packet.h>
diff --git a/src/systemd/src/libsystemd-network/dhcp-lease-internal.h b/src/systemd/src/libsystemd-network/dhcp-lease-internal.h
index 66c213e2..fabac183 100644
--- a/src/systemd/src/libsystemd-network/dhcp-lease-internal.h
+++ b/src/systemd/src/libsystemd-network/dhcp-lease-internal.h
@@ -2,10 +2,8 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2013 Intel Corporation. All rights reserved.
-  Copyright (C) 2014 Tom Gundersen
+  Copyright © 2013 Intel Corporation. All rights reserved.
+  Copyright © 2014 Tom Gundersen
 ***/
 
 #include <stdint.h>
diff --git a/src/systemd/src/libsystemd-network/dhcp-network.c b/src/systemd/src/libsystemd-network/dhcp-network.c
index 37c1ba19..90fe29d0 100644
--- a/src/systemd/src/libsystemd-network/dhcp-network.c
+++ b/src/systemd/src/libsystemd-network/dhcp-network.c
@@ -1,8 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2013 Intel Corporation. All rights reserved.
+  Copyright © 2013 Intel Corporation. All rights reserved.
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/libsystemd-network/dhcp-option.c b/src/systemd/src/libsystemd-network/dhcp-option.c
index 86e67358..4a4f7de0 100644
--- a/src/systemd/src/libsystemd-network/dhcp-option.c
+++ b/src/systemd/src/libsystemd-network/dhcp-option.c
@@ -1,8 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2013 Intel Corporation. All rights reserved.
+  Copyright © 2013 Intel Corporation. All rights reserved.
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/libsystemd-network/dhcp-packet.c b/src/systemd/src/libsystemd-network/dhcp-packet.c
index 136bab9d..214aed8e 100644
--- a/src/systemd/src/libsystemd-network/dhcp-packet.c
+++ b/src/systemd/src/libsystemd-network/dhcp-packet.c
@@ -1,9 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2013 Intel Corporation. All rights reserved.
-  Copyright (C) 2014 Tom Gundersen
+  Copyright © 2013 Intel Corporation. All rights reserved.
+  Copyright © 2014 Tom Gundersen
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/libsystemd-network/dhcp-protocol.h b/src/systemd/src/libsystemd-network/dhcp-protocol.h
index 2230e094..f0366324 100644
--- a/src/systemd/src/libsystemd-network/dhcp-protocol.h
+++ b/src/systemd/src/libsystemd-network/dhcp-protocol.h
@@ -2,9 +2,7 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2013 Intel Corporation. All rights reserved.
+  Copyright © 2013 Intel Corporation. All rights reserved.
 ***/
 
 #include <netinet/ip.h>
diff --git a/src/systemd/src/libsystemd-network/dhcp6-internal.h b/src/systemd/src/libsystemd-network/dhcp6-internal.h
index 33c43320..f1cbd6a4 100644
--- a/src/systemd/src/libsystemd-network/dhcp6-internal.h
+++ b/src/systemd/src/libsystemd-network/dhcp6-internal.h
@@ -2,9 +2,7 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014-2015 Intel Corporation. All rights reserved.
+  Copyright © 2014-2015 Intel Corporation. All rights reserved.
 ***/
 
 #include <net/ethernet.h>
diff --git a/src/systemd/src/libsystemd-network/dhcp6-lease-internal.h b/src/systemd/src/libsystemd-network/dhcp6-lease-internal.h
index 2bf54997..dc85c437 100644
--- a/src/systemd/src/libsystemd-network/dhcp6-lease-internal.h
+++ b/src/systemd/src/libsystemd-network/dhcp6-lease-internal.h
@@ -2,10 +2,8 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Tom Gundersen
-  Copyright (C) 2014-2015 Intel Corporation. All rights reserved.
+  Copyright © 2014 Tom Gundersen
+  Copyright © 2014-2015 Intel Corporation. All rights reserved.
 ***/
 
 #include <stdint.h>
diff --git a/src/systemd/src/libsystemd-network/dhcp6-network.c b/src/systemd/src/libsystemd-network/dhcp6-network.c
index 2c6dc713..98aa6261 100644
--- a/src/systemd/src/libsystemd-network/dhcp6-network.c
+++ b/src/systemd/src/libsystemd-network/dhcp6-network.c
@@ -1,8 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Intel Corporation. All rights reserved.
+  Copyright © 2014 Intel Corporation. All rights reserved.
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/libsystemd-network/dhcp6-option.c b/src/systemd/src/libsystemd-network/dhcp6-option.c
index 87ae96a2..a8a56463 100644
--- a/src/systemd/src/libsystemd-network/dhcp6-option.c
+++ b/src/systemd/src/libsystemd-network/dhcp6-option.c
@@ -1,8 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014-2015 Intel Corporation. All rights reserved.
+  Copyright © 2014-2015 Intel Corporation. All rights reserved.
 ***/
 
 #include "nm-sd-adapt.h"
@@ -143,7 +141,7 @@ int dhcp6_option_append_ia(uint8_t **buf, size_t *buflen, DHCP6IA *ia) {
 }
 
 int dhcp6_option_append_fqdn(uint8_t **buf, size_t *buflen, const char *fqdn) {
-        uint8_t buffer[1 + DNS_WIRE_FOMAT_HOSTNAME_MAX];
+        uint8_t buffer[1 + DNS_WIRE_FORMAT_HOSTNAME_MAX];
         int r;
 
         assert_return(buf && *buf && buflen && fqdn, -EINVAL);
diff --git a/src/systemd/src/libsystemd-network/dhcp6-protocol.h b/src/systemd/src/libsystemd-network/dhcp6-protocol.h
index 18417062..ffae4453 100644
--- a/src/systemd/src/libsystemd-network/dhcp6-protocol.h
+++ b/src/systemd/src/libsystemd-network/dhcp6-protocol.h
@@ -2,9 +2,7 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Intel Corporation. All rights reserved.
+  Copyright © 2014 Intel Corporation. All rights reserved.
 ***/
 
 #include <netinet/ip6.h>
diff --git a/src/systemd/src/libsystemd-network/lldp-internal.h b/src/systemd/src/libsystemd-network/lldp-internal.h
index 06cf7e8d..e5650988 100644
--- a/src/systemd/src/libsystemd-network/lldp-internal.h
+++ b/src/systemd/src/libsystemd-network/lldp-internal.h
@@ -2,10 +2,8 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Tom Gundersen
-  Copyright (C) 2014 Susant Sahani
+  Copyright © 2014 Tom Gundersen
+  Copyright © 2014 Susant Sahani
 ***/
 
 #include "sd-event.h"
diff --git a/src/systemd/src/libsystemd-network/lldp-neighbor.c b/src/systemd/src/libsystemd-network/lldp-neighbor.c
index 373e34c8..c28c9956 100644
--- a/src/systemd/src/libsystemd-network/lldp-neighbor.c
+++ b/src/systemd/src/libsystemd-network/lldp-neighbor.c
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2016 Lennart Poettering
-***/
 
 #include "nm-sd-adapt.h"
 
diff --git a/src/systemd/src/libsystemd-network/lldp-neighbor.h b/src/systemd/src/libsystemd-network/lldp-neighbor.h
index fae49c59..494bc517 100644
--- a/src/systemd/src/libsystemd-network/lldp-neighbor.h
+++ b/src/systemd/src/libsystemd-network/lldp-neighbor.h
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2016 Lennart Poettering
-***/
-
 #include <inttypes.h>
 #include <stdbool.h>
 #include <sys/types.h>
diff --git a/src/systemd/src/libsystemd-network/lldp-network.c b/src/systemd/src/libsystemd-network/lldp-network.c
index 307cf6c3..bc6c20d1 100644
--- a/src/systemd/src/libsystemd-network/lldp-network.c
+++ b/src/systemd/src/libsystemd-network/lldp-network.c
@@ -1,9 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Tom Gundersen
-  Copyright (C) 2014 Susant Sahani
+  Copyright © 2014 Tom Gundersen
+  Copyright © 2014 Susant Sahani
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/libsystemd-network/lldp-network.h b/src/systemd/src/libsystemd-network/lldp-network.h
index 7a1e8b10..1d773acc 100644
--- a/src/systemd/src/libsystemd-network/lldp-network.h
+++ b/src/systemd/src/libsystemd-network/lldp-network.h
@@ -2,10 +2,8 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Tom Gundersen
-  Copyright (C) 2014 Susant Sahani
+  Copyright © 2014 Tom Gundersen
+  Copyright © 2014 Susant Sahani
 ***/
 
 #include "sd-event.h"
diff --git a/src/systemd/src/libsystemd-network/network-internal.c b/src/systemd/src/libsystemd-network/network-internal.c
index e05f52d4..308762ee 100644
--- a/src/systemd/src/libsystemd-network/network-internal.c
+++ b/src/systemd/src/libsystemd-network/network-internal.c
@@ -1,8 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
- This file is part of systemd.
-
- Copyright (C) 2013 Tom Gundersen <teg@jklm.no>
+ Copyright © 2013 Tom Gundersen <teg@jklm.no>
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/libsystemd-network/network-internal.h b/src/systemd/src/libsystemd-network/network-internal.h
index d0076f45..ef69e701 100644
--- a/src/systemd/src/libsystemd-network/network-internal.h
+++ b/src/systemd/src/libsystemd-network/network-internal.h
@@ -2,9 +2,7 @@
 #pragma once
 
 /***
- This file is part of systemd.
-
- Copyright (C) 2013 Tom Gundersen <teg@jklm.no>
+ Copyright © 2013 Tom Gundersen <teg@jklm.no>
 ***/
 
 #include <stdbool.h>
@@ -12,6 +10,7 @@
 #include "sd-dhcp-lease.h"
 
 #include "condition.h"
+#include "conf-parser.h"
 #include "set.h"
 #include "udev.h"
 
@@ -35,33 +34,15 @@ bool net_match_config(Set *match_mac,
                       const char *dev_type,
                       const char *dev_name);
 
-int config_parse_net_condition(const char *unit, const char *filename, unsigned line,
-                               const char *section, unsigned section_line, const char *lvalue,
-                               int ltype, const char *rvalue, void *data, void *userdata);
-
-int config_parse_hwaddr(const char *unit, const char *filename, unsigned line,
-                        const char *section, unsigned section_line, const char *lvalue,
-                        int ltype, const char *rvalue, void *data, void *userdata);
-
-int config_parse_hwaddrs(const char *unit, const char *filename, unsigned line,
-                         const char *section, unsigned section_line, const char *lvalue,
-                         int ltype, const char *rvalue, void *data, void *userdata);
-
-int config_parse_ifnames(const char *unit, const char *filename, unsigned line,
-                         const char *section, unsigned section_line, const char *lvalue,
-                         int ltype, const char *rvalue, void *data, void *userdata);
-
-int config_parse_ifalias(const char *unit, const char *filename, unsigned line,
-                         const char *section, unsigned section_line, const char *lvalue,
-                         int ltype, const char *rvalue, void *data, void *userdata);
-
-int config_parse_iaid(const char *unit, const char *filename, unsigned line,
-                      const char *section, unsigned section_line, const char *lvalue,
-                      int ltype, const char *rvalue, void *data, void *userdata);
-
-int config_parse_bridge_port_priority(const char *unit, const char *filename, unsigned line,
-                      const char *section, unsigned section_line, const char *lvalue,
-                      int ltype, const char *rvalue, void *data, void *userdata);
+#if 0 /* NM_IGNORED */
+CONFIG_PARSER_PROTOTYPE(config_parse_net_condition);
+CONFIG_PARSER_PROTOTYPE(config_parse_hwaddr);
+CONFIG_PARSER_PROTOTYPE(config_parse_hwaddrs);
+CONFIG_PARSER_PROTOTYPE(config_parse_ifnames);
+CONFIG_PARSER_PROTOTYPE(config_parse_ifalias);
+CONFIG_PARSER_PROTOTYPE(config_parse_iaid);
+CONFIG_PARSER_PROTOTYPE(config_parse_bridge_port_priority);
+#endif /* NM_IGNORED */
 
 int net_get_unique_predictable_data(struct udev_device *device, uint64_t *result);
 const char *net_get_name(struct udev_device *device);
diff --git a/src/systemd/src/libsystemd-network/sd-dhcp-client.c b/src/systemd/src/libsystemd-network/sd-dhcp-client.c
index ef2620f4..c2f81e1c 100644
--- a/src/systemd/src/libsystemd-network/sd-dhcp-client.c
+++ b/src/systemd/src/libsystemd-network/sd-dhcp-client.c
@@ -1,8 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2013 Intel Corporation. All rights reserved.
+  Copyright © 2013 Intel Corporation. All rights reserved.
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/libsystemd-network/sd-dhcp-lease.c b/src/systemd/src/libsystemd-network/sd-dhcp-lease.c
index d92c5126..33a0796a 100644
--- a/src/systemd/src/libsystemd-network/sd-dhcp-lease.c
+++ b/src/systemd/src/libsystemd-network/sd-dhcp-lease.c
@@ -1,9 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2013 Intel Corporation. All rights reserved.
-  Copyright (C) 2014 Tom Gundersen
+  Copyright © 2013 Intel Corporation. All rights reserved.
+  Copyright © 2014 Tom Gundersen
 ***/
 
 #include "nm-sd-adapt.h"
@@ -1036,7 +1034,7 @@ int dhcp_lease_load(sd_dhcp_lease **ret, const char *lease_file) {
         if (r < 0)
                 return r;
 
-        r = parse_env_file(lease_file, NEWLINE,
+        r = parse_env_file(NULL, lease_file, NEWLINE,
                            "ADDRESS", &address,
                            "ROUTER", &router,
                            "NETMASK", &netmask,
diff --git a/src/systemd/src/libsystemd-network/sd-dhcp6-client.c b/src/systemd/src/libsystemd-network/sd-dhcp6-client.c
index 1cec6022..ca03f580 100644
--- a/src/systemd/src/libsystemd-network/sd-dhcp6-client.c
+++ b/src/systemd/src/libsystemd-network/sd-dhcp6-client.c
@@ -1,8 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014-2015 Intel Corporation. All rights reserved.
+  Copyright © 2014-2015 Intel Corporation. All rights reserved.
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/libsystemd-network/sd-dhcp6-lease.c b/src/systemd/src/libsystemd-network/sd-dhcp6-lease.c
index 3952cd99..1c8346d4 100644
--- a/src/systemd/src/libsystemd-network/sd-dhcp6-lease.c
+++ b/src/systemd/src/libsystemd-network/sd-dhcp6-lease.c
@@ -1,9 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Tom Gundersen
-  Copyright (C) 2014-2015 Intel Corporation. All rights reserved.
+  Copyright © 2014 Tom Gundersen
+  Copyright © 2014-2015 Intel Corporation. All rights reserved.
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/libsystemd-network/sd-ipv4acd.c b/src/systemd/src/libsystemd-network/sd-ipv4acd.c
index ed98c0b6..3766c1f3 100644
--- a/src/systemd/src/libsystemd-network/sd-ipv4acd.c
+++ b/src/systemd/src/libsystemd-network/sd-ipv4acd.c
@@ -1,9 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Axis Communications AB. All rights reserved.
-  Copyright (C) 2015 Tom Gundersen
+  Copyright © 2014 Axis Communications AB. All rights reserved.
+  Copyright © 2015 Tom Gundersen
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/libsystemd-network/sd-ipv4ll.c b/src/systemd/src/libsystemd-network/sd-ipv4ll.c
index 001ebbd8..ca1e0bdb 100644
--- a/src/systemd/src/libsystemd-network/sd-ipv4ll.c
+++ b/src/systemd/src/libsystemd-network/sd-ipv4ll.c
@@ -1,9 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Axis Communications AB. All rights reserved.
-  Copyright (C) 2015 Tom Gundersen
+  Copyright © 2014 Axis Communications AB. All rights reserved.
+  Copyright © 2015 Tom Gundersen
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/libsystemd-network/sd-lldp.c b/src/systemd/src/libsystemd-network/sd-lldp.c
index d88a0c6f..ea1dda4d 100644
--- a/src/systemd/src/libsystemd-network/sd-lldp.c
+++ b/src/systemd/src/libsystemd-network/sd-lldp.c
@@ -1,9 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Tom Gundersen
-  Copyright (C) 2014 Susant Sahani
+  Copyright © 2014 Tom Gundersen
+  Copyright © 2014 Susant Sahani
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/libsystemd/sd-event/sd-event.c b/src/systemd/src/libsystemd/sd-event/sd-event.c
index 8a9b8055..f4d5dbe4 100644
--- a/src/systemd/src/libsystemd/sd-event/sd-event.c
+++ b/src/systemd/src/libsystemd/sd-event/sd-event.c
@@ -1,8 +1,5 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright 2013 Lennart Poettering
 ***/
 
 #include "nm-sd-adapt.h"
@@ -17,6 +14,7 @@
 
 #include "alloc-util.h"
 #include "fd-util.h"
+#include "fs-util.h"
 #include "hashmap.h"
 #include "list.h"
 #include "macro.h"
@@ -45,6 +43,7 @@ typedef enum EventSourceType {
         SOURCE_POST,
         SOURCE_EXIT,
         SOURCE_WATCHDOG,
+        SOURCE_INOTIFY,
         _SOURCE_EVENT_SOURCE_TYPE_MAX,
         _SOURCE_EVENT_SOURCE_TYPE_INVALID = -1
 } EventSourceType;
@@ -62,6 +61,7 @@ static const char* const event_source_type_table[_SOURCE_EVENT_SOURCE_TYPE_MAX]
         [SOURCE_POST] = "post",
         [SOURCE_EXIT] = "exit",
         [SOURCE_WATCHDOG] = "watchdog",
+        [SOURCE_INOTIFY] = "inotify",
 };
 
 DEFINE_PRIVATE_STRING_TABLE_LOOKUP_TO_STRING(event_source_type, int);
@@ -73,12 +73,15 @@ typedef enum WakeupType {
         WAKEUP_EVENT_SOURCE,
         WAKEUP_CLOCK_DATA,
         WAKEUP_SIGNAL_DATA,
+        WAKEUP_INOTIFY_DATA,
         _WAKEUP_TYPE_MAX,
         _WAKEUP_TYPE_INVALID = -1,
 } WakeupType;
 
 #define EVENT_SOURCE_IS_TIME(t) IN_SET((t), SOURCE_TIME_REALTIME, SOURCE_TIME_BOOTTIME, SOURCE_TIME_MONOTONIC, SOURCE_TIME_REALTIME_ALARM, SOURCE_TIME_BOOTTIME_ALARM)
 
+struct inode_data;
+
 struct sd_event_source {
         WakeupType wakeup;
 
@@ -102,6 +105,8 @@ struct sd_event_source {
         uint64_t pending_iteration;
         uint64_t prepare_iteration;
 
+        sd_event_destroy_t destroy_callback;
+
         LIST_FIELDS(sd_event_source, sources);
 
         union {
@@ -140,6 +145,12 @@ struct sd_event_source {
                         sd_event_handler_t callback;
                         unsigned prioq_index;
                 } exit;
+                struct {
+                        sd_event_inotify_handler_t callback;
+                        uint32_t mask;
+                        struct inode_data *inode_data;
+                        LIST_FIELDS(sd_event_source, by_inode_data);
+                } inotify;
         };
 };
 
@@ -174,6 +185,64 @@ struct signal_data {
         sd_event_source *current;
 };
 
+/* A structure listing all event sources currently watching a specific inode */
+struct inode_data {
+        /* The identifier for the inode, the combination of the .st_dev + .st_ino fields of the file */
+        ino_t ino;
+        dev_t dev;
+
+        /* An fd of the inode to watch. The fd is kept open until the next iteration of the loop, so that we can
+         * rearrange the priority still until then, as we need the original inode to change the priority as we need to
+         * add a watch descriptor to the right inotify for the priority which we can only do if we have a handle to the
+         * original inode. We keep a list of all inode_data objects with an open fd in the to_close list (see below) of
+         * the sd-event object, so that it is efficient to close everything, before entering the next event loop
+         * iteration. */
+        int fd;
+
+        /* The inotify "watch descriptor" */
+        int wd;
+
+        /* The combination of the mask of all inotify watches on this inode we manage. This is also the mask that has
+         * most recently been set on the watch descriptor. */
+        uint32_t combined_mask;
+
+        /* All event sources subscribed to this inode */
+        LIST_HEAD(sd_event_source, event_sources);
+
+        /* The inotify object we watch this inode with */
+        struct inotify_data *inotify_data;
+
+        /* A linked list of all inode data objects with fds to close (see above) */
+        LIST_FIELDS(struct inode_data, to_close);
+};
+
+/* A structure encapsulating an inotify fd */
+struct inotify_data {
+        WakeupType wakeup;
+
+        /* For each priority we maintain one inotify fd, so that we only have to dequeue a single event per priority at
+         * a time */
+
+        int fd;
+        int64_t priority;
+
+        Hashmap *inodes; /* The inode_data structures keyed by dev+ino */
+        Hashmap *wd;     /* The inode_data structures keyed by the watch descriptor for each */
+
+        /* The buffer we read inotify events into */
+        union inotify_event_buffer buffer;
+        size_t buffer_filled; /* fill level of the buffer */
+
+        /* How many event sources are currently marked pending for this inotify. We won't read new events off the
+         * inotify fd as long as there are still pending events on the inotify (because we have no strategy of queuing
+         * the events locally if they can't be coalesced). */
+        unsigned n_pending;
+
+        /* A linked list of all inotify objects with data already read, that still need processing. We keep this list
+         * to make it efficient to figure out what inotify objects to process data on next. */
+        LIST_FIELDS(struct inotify_data, buffered);
+};
+
 struct sd_event {
         unsigned n_ref;
 
@@ -204,6 +273,14 @@ struct sd_event {
 
         Prioq *exit;
 
+        Hashmap *inotify_data; /* indexed by priority */
+
+        /* A list of inode structures that still have an fd open, that we need to close before the next loop iteration */
+        LIST_HEAD(struct inode_data, inode_data_to_close);
+
+        /* A list of inotify objects that already have events buffered which aren't processed yet */
+        LIST_HEAD(struct inotify_data, inotify_data_buffered);
+
         pid_t original_pid;
 
         uint64_t iteration;
@@ -233,6 +310,7 @@ struct sd_event {
 static thread_local sd_event *default_event = NULL;
 
 static void source_disconnect(sd_event_source *s);
+static void event_gc_inode_data(sd_event *e, struct inode_data *d);
 
 static sd_event *event_resolve(sd_event *e) {
         return e == SD_EVENT_DEFAULT ? default_event : e;
@@ -414,6 +492,8 @@ static void event_free(sd_event *e) {
         free(e->signal_sources);
         hashmap_free(e->signal_data);
 
+        hashmap_free(e->inotify_data);
+
         hashmap_free(e->child_sources);
         set_free(e->post_sources);
         free(e);
@@ -425,16 +505,32 @@ _public_ int sd_event_new(sd_event** ret) {
 
         assert_return(ret, -EINVAL);
 
-        e = new0(sd_event, 1);
+        e = new(sd_event, 1);
         if (!e)
                 return -ENOMEM;
 
-        e->n_ref = 1;
-        e->watchdog_fd = e->epoll_fd = e->realtime.fd = e->boottime.fd = e->monotonic.fd = e->realtime_alarm.fd = e->boottime_alarm.fd = -1;
-        e->realtime.next = e->boottime.next = e->monotonic.next = e->realtime_alarm.next = e->boottime_alarm.next = USEC_INFINITY;
-        e->realtime.wakeup = e->boottime.wakeup = e->monotonic.wakeup = e->realtime_alarm.wakeup = e->boottime_alarm.wakeup = WAKEUP_CLOCK_DATA;
-        e->original_pid = getpid_cached();
-        e->perturb = USEC_INFINITY;
+        *e = (sd_event) {
+                .n_ref = 1,
+                .epoll_fd = -1,
+                .watchdog_fd = -1,
+                .realtime.wakeup = WAKEUP_CLOCK_DATA,
+                .realtime.fd = -1,
+                .realtime.next = USEC_INFINITY,
+                .boottime.wakeup = WAKEUP_CLOCK_DATA,
+                .boottime.fd = -1,
+                .boottime.next = USEC_INFINITY,
+                .monotonic.wakeup = WAKEUP_CLOCK_DATA,
+                .monotonic.fd = -1,
+                .monotonic.next = USEC_INFINITY,
+                .realtime_alarm.wakeup = WAKEUP_CLOCK_DATA,
+                .realtime_alarm.fd = -1,
+                .realtime_alarm.next = USEC_INFINITY,
+                .boottime_alarm.wakeup = WAKEUP_CLOCK_DATA,
+                .boottime_alarm.fd = -1,
+                .boottime_alarm.next = USEC_INFINITY,
+                .perturb = USEC_INFINITY,
+                .original_pid = getpid_cached(),
+        };
 
         r = prioq_ensure_allocated(&e->pending, pending_prioq_compare);
         if (r < 0)
@@ -520,18 +616,17 @@ static int source_io_register(
                 int enabled,
                 uint32_t events) {
 
-        struct epoll_event ev = {};
+        struct epoll_event ev;
         int r;
 
         assert(s);
         assert(s->type == SOURCE_IO);
         assert(enabled != SD_EVENT_OFF);
 
-        ev.events = events;
-        ev.data.ptr = s;
-
-        if (enabled == SD_EVENT_ONESHOT)
-                ev.events |= EPOLLONESHOT;
+        ev = (struct epoll_event) {
+                .events = events | (enabled == SD_EVENT_ONESHOT ? EPOLLONESHOT : 0),
+                .data.ptr = s,
+        };
 
         if (s->io.registered)
                 r = epoll_ctl(s->event->epoll_fd, EPOLL_CTL_MOD, s->io.fd, &ev);
@@ -623,7 +718,7 @@ static int event_make_signal_data(
                 int sig,
                 struct signal_data **ret) {
 
-        struct epoll_event ev = {};
+        struct epoll_event ev;
         struct signal_data *d;
         bool added = false;
         sigset_t ss_copy;
@@ -638,7 +733,7 @@ static int event_make_signal_data(
         if (e->signal_sources && e->signal_sources[sig])
                 priority = e->signal_sources[sig]->priority;
         else
-                priority = 0;
+                priority = SD_EVENT_PRIORITY_NORMAL;
 
         d = hashmap_get(e->signal_data, &priority);
         if (d) {
@@ -652,13 +747,15 @@ static int event_make_signal_data(
                 if (r < 0)
                         return r;
 
-                d = new0(struct signal_data, 1);
+                d = new(struct signal_data, 1);
                 if (!d)
                         return -ENOMEM;
 
-                d->wakeup = WAKEUP_SIGNAL_DATA;
-                d->fd  = -1;
-                d->priority = priority;
+                *d = (struct signal_data) {
+                        .wakeup = WAKEUP_SIGNAL_DATA,
+                        .fd = -1,
+                        .priority = priority,
+                };
 
                 r = hashmap_put(e->signal_data, &d->priority, d);
                 if (r < 0) {
@@ -688,8 +785,10 @@ static int event_make_signal_data(
 
         d->fd = fd_move_above_stdio(r);
 
-        ev.events = EPOLLIN;
-        ev.data.ptr = d;
+        ev = (struct epoll_event) {
+                .events = EPOLLIN,
+                .data.ptr = d,
+        };
 
         r = epoll_ctl(e->epoll_fd, EPOLL_CTL_ADD, d->fd, &ev);
         if (r < 0)  {
@@ -856,6 +955,41 @@ static void source_disconnect(sd_event_source *s) {
                 prioq_remove(s->event->exit, s, &s->exit.prioq_index);
                 break;
 
+        case SOURCE_INOTIFY: {
+                struct inode_data *inode_data;
+
+                inode_data = s->inotify.inode_data;
+                if (inode_data) {
+                        struct inotify_data *inotify_data;
+                        assert_se(inotify_data = inode_data->inotify_data);
+
+                        /* Detach this event source from the inode object */
+                        LIST_REMOVE(inotify.by_inode_data, inode_data->event_sources, s);
+                        s->inotify.inode_data = NULL;
+
+                        if (s->pending) {
+                                assert(inotify_data->n_pending > 0);
+                                inotify_data->n_pending--;
+                        }
+
+                        /* Note that we don't reduce the inotify mask for the watch descriptor here if the inode is
+                         * continued to being watched. That's because inotify doesn't really have an API for that: we
+                         * can only change watch masks with access to the original inode either by fd or by path. But
+                         * paths aren't stable, and keeping an O_PATH fd open all the time would mean wasting an fd
+                         * continously and keeping the mount busy which we can't really do. We could reconstruct the
+                         * original inode from /proc/self/fdinfo/$INOTIFY_FD (as all watch descriptors are listed
+                         * there), but given the need for open_by_handle_at() which is privileged and not universally
+                         * available this would be quite an incomplete solution. Hence we go the other way, leave the
+                         * mask set, even if it is not minimized now, and ignore all events we aren't interested in
+                         * anymore after reception. Yes, this sucks, but … Linux … */
+
+                        /* Maybe release the inode data (and its inotify) */
+                        event_gc_inode_data(s->event, inode_data);
+                }
+
+                break;
+        }
+
         default:
                 assert_not_reached("Wut? I shouldn't exist.");
         }
@@ -883,7 +1017,10 @@ static void source_free(sd_event_source *s) {
         source_disconnect(s);
 
         if (s->type == SOURCE_IO && s->io.owned)
-                safe_close(s->io.fd);
+                s->io.fd = safe_close(s->io.fd);
+
+        if (s->destroy_callback)
+                s->destroy_callback(s->userdata);
 
         free(s->description);
         free(s);
@@ -930,6 +1067,19 @@ static int source_set_pending(sd_event_source *s, bool b) {
                         d->current = NULL;
         }
 
+        if (s->type == SOURCE_INOTIFY) {
+
+                assert(s->inotify.inode_data);
+                assert(s->inotify.inode_data->inotify_data);
+
+                if (b)
+                        s->inotify.inode_data->inotify_data->n_pending ++;
+                else {
+                        assert(s->inotify.inode_data->inotify_data->n_pending > 0);
+                        s->inotify.inode_data->inotify_data->n_pending --;
+                }
+        }
+
         return 0;
 }
 
@@ -938,15 +1088,18 @@ static sd_event_source *source_new(sd_event *e, bool floating, EventSourceType t
 
         assert(e);
 
-        s = new0(sd_event_source, 1);
+        s = new(sd_event_source, 1);
         if (!s)
                 return NULL;
 
-        s->n_ref = 1;
-        s->event = e;
-        s->floating = floating;
-        s->type = type;
-        s->pending_index = s->prepare_index = PRIOQ_IDX_NULL;
+        *s = (struct sd_event_source) {
+                .n_ref = 1,
+                .event = e,
+                .floating = floating,
+                .type = type,
+                .pending_index = PRIOQ_IDX_NULL,
+                .prepare_index = PRIOQ_IDX_NULL,
+        };
 
         if (!floating)
                 sd_event_ref(e);
@@ -1023,7 +1176,7 @@ static int event_setup_timer_fd(
                 struct clock_data *d,
                 clockid_t clock) {
 
-        struct epoll_event ev = {};
+        struct epoll_event ev;
         int r, fd;
 
         assert(e);
@@ -1038,8 +1191,10 @@ static int event_setup_timer_fd(
 
         fd = fd_move_above_stdio(fd);
 
-        ev.events = EPOLLIN;
-        ev.data.ptr = d;
+        ev = (struct epoll_event) {
+                .events = EPOLLIN,
+                .data.ptr = d,
+        };
 
         r = epoll_ctl(e->epoll_fd, EPOLL_CTL_ADD, fd, &ev);
         if (r < 0) {
@@ -1378,6 +1533,405 @@ _public_ int sd_event_add_exit(
         return 0;
 }
 
+static void event_free_inotify_data(sd_event *e, struct inotify_data *d) {
+        assert(e);
+
+        if (!d)
+                return;
+
+        assert(hashmap_isempty(d->inodes));
+        assert(hashmap_isempty(d->wd));
+
+        if (d->buffer_filled > 0)
+                LIST_REMOVE(buffered, e->inotify_data_buffered, d);
+
+        hashmap_free(d->inodes);
+        hashmap_free(d->wd);
+
+        assert_se(hashmap_remove(e->inotify_data, &d->priority) == d);
+
+        if (d->fd >= 0) {
+                if (epoll_ctl(e->epoll_fd, EPOLL_CTL_DEL, d->fd, NULL) < 0)
+                        log_debug_errno(errno, "Failed to remove inotify fd from epoll, ignoring: %m");
+
+                safe_close(d->fd);
+        }
+        free(d);
+}
+
+static int event_make_inotify_data(
+                sd_event *e,
+                int64_t priority,
+                struct inotify_data **ret) {
+
+        _cleanup_close_ int fd = -1;
+        struct inotify_data *d;
+        struct epoll_event ev;
+        int r;
+
+        assert(e);
+
+        d = hashmap_get(e->inotify_data, &priority);
+        if (d) {
+                if (ret)
+                        *ret = d;
+                return 0;
+        }
+
+        fd = inotify_init1(IN_NONBLOCK|O_CLOEXEC);
+        if (fd < 0)
+                return -errno;
+
+        fd = fd_move_above_stdio(fd);
+
+        r = hashmap_ensure_allocated(&e->inotify_data, &uint64_hash_ops);
+        if (r < 0)
+                return r;
+
+        d = new(struct inotify_data, 1);
+        if (!d)
+                return -ENOMEM;
+
+        *d = (struct inotify_data) {
+                .wakeup = WAKEUP_INOTIFY_DATA,
+                .fd = TAKE_FD(fd),
+                .priority = priority,
+        };
+
+        r = hashmap_put(e->inotify_data, &d->priority, d);
+        if (r < 0) {
+                d->fd = safe_close(d->fd);
+                free(d);
+                return r;
+        }
+
+        ev = (struct epoll_event) {
+                .events = EPOLLIN,
+                .data.ptr = d,
+        };
+
+        if (epoll_ctl(e->epoll_fd, EPOLL_CTL_ADD, d->fd, &ev) < 0) {
+                r = -errno;
+                d->fd = safe_close(d->fd); /* let's close this ourselves, as event_free_inotify_data() would otherwise
+                                            * remove the fd from the epoll first, which we don't want as we couldn't
+                                            * add it in the first place. */
+                event_free_inotify_data(e, d);
+                return r;
+        }
+
+        if (ret)
+                *ret = d;
+
+        return 1;
+}
+
+static int inode_data_compare(const void *a, const void *b) {
+        const struct inode_data *x = a, *y = b;
+
+        assert(x);
+        assert(y);
+
+        if (x->dev < y->dev)
+                return -1;
+        if (x->dev > y->dev)
+                return 1;
+
+        if (x->ino < y->ino)
+                return -1;
+        if (x->ino > y->ino)
+                return 1;
+
+        return 0;
+}
+
+static void inode_data_hash_func(const void *p, struct siphash *state) {
+        const struct inode_data *d = p;
+
+        assert(p);
+
+        siphash24_compress(&d->dev, sizeof(d->dev), state);
+        siphash24_compress(&d->ino, sizeof(d->ino), state);
+}
+
+const struct hash_ops inode_data_hash_ops = {
+        .hash = inode_data_hash_func,
+        .compare = inode_data_compare
+};
+
+static void event_free_inode_data(
+                sd_event *e,
+                struct inode_data *d) {
+
+        assert(e);
+
+        if (!d)
+                return;
+
+        assert(!d->event_sources);
+
+        if (d->fd >= 0) {
+                LIST_REMOVE(to_close, e->inode_data_to_close, d);
+                safe_close(d->fd);
+        }
+
+        if (d->inotify_data) {
+
+                if (d->wd >= 0) {
+                        if (d->inotify_data->fd >= 0) {
+                                /* So here's a problem. At the time this runs the watch descriptor might already be
+                                 * invalidated, because an IN_IGNORED event might be queued right the moment we enter
+                                 * the syscall. Hence, whenever we get EINVAL, ignore it entirely, since it's a very
+                                 * likely case to happen. */
+
+                                if (inotify_rm_watch(d->inotify_data->fd, d->wd) < 0 && errno != EINVAL)
+                                        log_debug_errno(errno, "Failed to remove watch descriptor %i from inotify, ignoring: %m", d->wd);
+                        }
+
+                        assert_se(hashmap_remove(d->inotify_data->wd, INT_TO_PTR(d->wd)) == d);
+                }
+
+                assert_se(hashmap_remove(d->inotify_data->inodes, d) == d);
+        }
+
+        free(d);
+}
+
+static void event_gc_inode_data(
+                sd_event *e,
+                struct inode_data *d) {
+
+        struct inotify_data *inotify_data;
+
+        assert(e);
+
+        if (!d)
+                return;
+
+        if (d->event_sources)
+                return;
+
+        inotify_data = d->inotify_data;
+        event_free_inode_data(e, d);
+
+        if (inotify_data && hashmap_isempty(inotify_data->inodes))
+                event_free_inotify_data(e, inotify_data);
+}
+
+static int event_make_inode_data(
+                sd_event *e,
+                struct inotify_data *inotify_data,
+                dev_t dev,
+                ino_t ino,
+                struct inode_data **ret) {
+
+        struct inode_data *d, key;
+        int r;
+
+        assert(e);
+        assert(inotify_data);
+
+        key = (struct inode_data) {
+                .ino = ino,
+                .dev = dev,
+        };
+
+        d = hashmap_get(inotify_data->inodes, &key);
+        if (d) {
+                if (ret)
+                        *ret = d;
+
+                return 0;
+        }
+
+        r = hashmap_ensure_allocated(&inotify_data->inodes, &inode_data_hash_ops);
+        if (r < 0)
+                return r;
+
+        d = new(struct inode_data, 1);
+        if (!d)
+                return -ENOMEM;
+
+        *d = (struct inode_data) {
+                .dev = dev,
+                .ino = ino,
+                .wd = -1,
+                .fd = -1,
+                .inotify_data = inotify_data,
+        };
+
+        r = hashmap_put(inotify_data->inodes, d, d);
+        if (r < 0) {
+                free(d);
+                return r;
+        }
+
+        if (ret)
+                *ret = d;
+
+        return 1;
+}
+
+static uint32_t inode_data_determine_mask(struct inode_data *d) {
+        bool excl_unlink = true;
+        uint32_t combined = 0;
+        sd_event_source *s;
+
+        assert(d);
+
+        /* Combines the watch masks of all event sources watching this inode. We generally just OR them together, but
+         * the IN_EXCL_UNLINK flag is ANDed instead.
+         *
+         * Note that we add all sources to the mask here, regardless whether enabled, disabled or oneshot. That's
+         * because we cannot change the mask anymore after the event source was created once, since the kernel has no
+         * API for that. Hence we need to subscribe to the maximum mask we ever might be interested in, and supress
+         * events we don't care for client-side. */
+
+        LIST_FOREACH(inotify.by_inode_data, s, d->event_sources) {
+
+                if ((s->inotify.mask & IN_EXCL_UNLINK) == 0)
+                        excl_unlink = false;
+
+                combined |= s->inotify.mask;
+        }
+
+        return (combined & ~(IN_ONESHOT|IN_DONT_FOLLOW|IN_ONLYDIR|IN_EXCL_UNLINK)) | (excl_unlink ? IN_EXCL_UNLINK : 0);
+}
+
+static int inode_data_realize_watch(sd_event *e, struct inode_data *d) {
+        uint32_t combined_mask;
+        int wd, r;
+
+        assert(d);
+        assert(d->fd >= 0);
+
+        combined_mask = inode_data_determine_mask(d);
+
+        if (d->wd >= 0 && combined_mask == d->combined_mask)
+                return 0;
+
+        r = hashmap_ensure_allocated(&d->inotify_data->wd, NULL);
+        if (r < 0)
+                return r;
+
+        wd = inotify_add_watch_fd(d->inotify_data->fd, d->fd, combined_mask);
+        if (wd < 0)
+                return -errno;
+
+        if (d->wd < 0) {
+                r = hashmap_put(d->inotify_data->wd, INT_TO_PTR(wd), d);
+                if (r < 0) {
+                        (void) inotify_rm_watch(d->inotify_data->fd, wd);
+                        return r;
+                }
+
+                d->wd = wd;
+
+        } else if (d->wd != wd) {
+
+                log_debug("Weird, the watch descriptor we already knew for this inode changed?");
+                (void) inotify_rm_watch(d->fd, wd);
+                return -EINVAL;
+        }
+
+        d->combined_mask = combined_mask;
+        return 1;
+}
+
+_public_ int sd_event_add_inotify(
+                sd_event *e,
+                sd_event_source **ret,
+                const char *path,
+                uint32_t mask,
+                sd_event_inotify_handler_t callback,
+                void *userdata) {
+
+        bool rm_inotify = false, rm_inode = false;
+        struct inotify_data *inotify_data = NULL;
+        struct inode_data *inode_data = NULL;
+        _cleanup_close_ int fd = -1;
+        sd_event_source *s;
+        struct stat st;
+        int r;
+
+        assert_return(e, -EINVAL);
+        assert_return(e = event_resolve(e), -ENOPKG);
+        assert_return(path, -EINVAL);
+        assert_return(callback, -EINVAL);
+        assert_return(e->state != SD_EVENT_FINISHED, -ESTALE);
+        assert_return(!event_pid_changed(e), -ECHILD);
+
+        /* Refuse IN_MASK_ADD since we coalesce watches on the same inode, and hence really don't want to merge
+         * masks. Or in other words, this whole code exists only to manage IN_MASK_ADD type operations for you, hence
+         * the user can't use them for us. */
+        if (mask & IN_MASK_ADD)
+                return -EINVAL;
+
+        fd = open(path, O_PATH|O_CLOEXEC|
+                  (mask & IN_ONLYDIR ? O_DIRECTORY : 0)|
+                  (mask & IN_DONT_FOLLOW ? O_NOFOLLOW : 0));
+        if (fd < 0)
+                return -errno;
+
+        if (fstat(fd, &st) < 0)
+                return -errno;
+
+        s = source_new(e, !ret, SOURCE_INOTIFY);
+        if (!s)
+                return -ENOMEM;
+
+        s->enabled = mask & IN_ONESHOT ? SD_EVENT_ONESHOT : SD_EVENT_ON;
+        s->inotify.mask = mask;
+        s->inotify.callback = callback;
+        s->userdata = userdata;
+
+        /* Allocate an inotify object for this priority, and an inode object within it */
+        r = event_make_inotify_data(e, SD_EVENT_PRIORITY_NORMAL, &inotify_data);
+        if (r < 0)
+                goto fail;
+        rm_inotify = r > 0;
+
+        r = event_make_inode_data(e, inotify_data, st.st_dev, st.st_ino, &inode_data);
+        if (r < 0)
+                goto fail;
+        rm_inode = r > 0;
+
+        /* Keep the O_PATH fd around until the first iteration of the loop, so that we can still change the priority of
+         * the event source, until then, for which we need the original inode. */
+        if (inode_data->fd < 0) {
+                inode_data->fd = TAKE_FD(fd);
+                LIST_PREPEND(to_close, e->inode_data_to_close, inode_data);
+        }
+
+        /* Link our event source to the inode data object */
+        LIST_PREPEND(inotify.by_inode_data, inode_data->event_sources, s);
+        s->inotify.inode_data = inode_data;
+
+        rm_inode = rm_inotify = false;
+
+        /* Actually realize the watch now */
+        r = inode_data_realize_watch(e, inode_data);
+        if (r < 0)
+                goto fail;
+
+        (void) sd_event_source_set_description(s, path);
+
+        if (ret)
+                *ret = s;
+
+        return 0;
+
+fail:
+        source_free(s);
+
+        if (rm_inode)
+                event_free_inode_data(e, inode_data);
+
+        if (rm_inotify)
+                event_free_inotify_data(e, inotify_data);
+
+        return r;
+}
+
 _public_ sd_event_source* sd_event_source_ref(sd_event_source *s) {
 
         if (!s)
@@ -1532,6 +2086,10 @@ _public_ int sd_event_source_set_io_events(sd_event_source *s, uint32_t events)
         if (s->io.events == events && !(events & EPOLLET))
                 return 0;
 
+        r = source_set_pending(s, false);
+        if (r < 0)
+                return r;
+
         if (s->enabled != SD_EVENT_OFF) {
                 r = source_io_register(s, s->enabled, events);
                 if (r < 0)
@@ -1539,7 +2097,6 @@ _public_ int sd_event_source_set_io_events(sd_event_source *s, uint32_t events)
         }
 
         s->io.events = events;
-        source_set_pending(s, false);
 
         return 0;
 }
@@ -1572,6 +2129,9 @@ _public_ int sd_event_source_get_priority(sd_event_source *s, int64_t *priority)
 }
 
 _public_ int sd_event_source_set_priority(sd_event_source *s, int64_t priority) {
+        bool rm_inotify = false, rm_inode = false;
+        struct inotify_data *new_inotify_data = NULL;
+        struct inode_data *new_inode_data = NULL;
         int r;
 
         assert_return(s, -EINVAL);
@@ -1581,7 +2141,59 @@ _public_ int sd_event_source_set_priority(sd_event_source *s, int64_t priority)
         if (s->priority == priority)
                 return 0;
 
-        if (s->type == SOURCE_SIGNAL && s->enabled != SD_EVENT_OFF) {
+        if (s->type == SOURCE_INOTIFY) {
+                struct inode_data *old_inode_data;
+
+                assert(s->inotify.inode_data);
+                old_inode_data = s->inotify.inode_data;
+
+                /* We need the original fd to change the priority. If we don't have it we can't change the priority,
+                 * anymore. Note that we close any fds when entering the next event loop iteration, i.e. for inotify
+                 * events we allow priority changes only until the first following iteration. */
+                if (old_inode_data->fd < 0)
+                        return -EOPNOTSUPP;
+
+                r = event_make_inotify_data(s->event, priority, &new_inotify_data);
+                if (r < 0)
+                        return r;
+                rm_inotify = r > 0;
+
+                r = event_make_inode_data(s->event, new_inotify_data, old_inode_data->dev, old_inode_data->ino, &new_inode_data);
+                if (r < 0)
+                        goto fail;
+                rm_inode = r > 0;
+
+                if (new_inode_data->fd < 0) {
+                        /* Duplicate the fd for the new inode object if we don't have any yet */
+                        new_inode_data->fd = fcntl(old_inode_data->fd, F_DUPFD_CLOEXEC, 3);
+                        if (new_inode_data->fd < 0) {
+                                r = -errno;
+                                goto fail;
+                        }
+
+                        LIST_PREPEND(to_close, s->event->inode_data_to_close, new_inode_data);
+                }
+
+                /* Move the event source to the new inode data structure */
+                LIST_REMOVE(inotify.by_inode_data, old_inode_data->event_sources, s);
+                LIST_PREPEND(inotify.by_inode_data, new_inode_data->event_sources, s);
+                s->inotify.inode_data = new_inode_data;
+
+                /* Now create the new watch */
+                r = inode_data_realize_watch(s->event, new_inode_data);
+                if (r < 0) {
+                        /* Move it back */
+                        LIST_REMOVE(inotify.by_inode_data, new_inode_data->event_sources, s);
+                        LIST_PREPEND(inotify.by_inode_data, old_inode_data->event_sources, s);
+                        s->inotify.inode_data = old_inode_data;
+                        goto fail;
+                }
+
+                s->priority = priority;
+
+                event_gc_inode_data(s->event, old_inode_data);
+
+        } else if (s->type == SOURCE_SIGNAL && s->enabled != SD_EVENT_OFF) {
                 struct signal_data *old, *d;
 
                 /* Move us from the signalfd belonging to the old
@@ -1611,6 +2223,15 @@ _public_ int sd_event_source_set_priority(sd_event_source *s, int64_t priority)
                 prioq_reshuffle(s->event->exit, s, &s->exit.prioq_index);
 
         return 0;
+
+fail:
+        if (rm_inode)
+                event_free_inode_data(s->event, new_inode_data);
+
+        if (rm_inotify)
+                event_free_inotify_data(s->event, new_inotify_data);
+
+        return r;
 }
 
 _public_ int sd_event_source_get_enabled(sd_event_source *s, int *m) {
@@ -1639,6 +2260,13 @@ _public_ int sd_event_source_set_enabled(sd_event_source *s, int m) {
 
         if (m == SD_EVENT_OFF) {
 
+                /* Unset the pending flag when this event source is disabled */
+                if (!IN_SET(s->type, SOURCE_DEFER, SOURCE_EXIT)) {
+                        r = source_set_pending(s, false);
+                        if (r < 0)
+                                return r;
+                }
+
                 switch (s->type) {
 
                 case SOURCE_IO:
@@ -1685,6 +2313,7 @@ _public_ int sd_event_source_set_enabled(sd_event_source *s, int m) {
 
                 case SOURCE_DEFER:
                 case SOURCE_POST:
+                case SOURCE_INOTIFY:
                         s->enabled = m;
                         break;
 
@@ -1693,6 +2322,14 @@ _public_ int sd_event_source_set_enabled(sd_event_source *s, int m) {
                 }
 
         } else {
+
+                /* Unset the pending flag when this event source is enabled */
+                if (s->enabled == SD_EVENT_OFF && !IN_SET(s->type, SOURCE_DEFER, SOURCE_EXIT)) {
+                        r = source_set_pending(s, false);
+                        if (r < 0)
+                                return r;
+                }
+
                 switch (s->type) {
 
                 case SOURCE_IO:
@@ -1757,6 +2394,7 @@ _public_ int sd_event_source_set_enabled(sd_event_source *s, int m) {
 
                 case SOURCE_DEFER:
                 case SOURCE_POST:
+                case SOURCE_INOTIFY:
                         s->enabled = m;
                         break;
 
@@ -1786,15 +2424,18 @@ _public_ int sd_event_source_get_time(sd_event_source *s, uint64_t *usec) {
 
 _public_ int sd_event_source_set_time(sd_event_source *s, uint64_t usec) {
         struct clock_data *d;
+        int r;
 
         assert_return(s, -EINVAL);
         assert_return(EVENT_SOURCE_IS_TIME(s->type), -EDOM);
         assert_return(s->event->state != SD_EVENT_FINISHED, -ESTALE);
         assert_return(!event_pid_changed(s->event), -ECHILD);
 
-        s->time.next = usec;
+        r = source_set_pending(s, false);
+        if (r < 0)
+                return r;
 
-        source_set_pending(s, false);
+        s->time.next = usec;
 
         d = event_get_clock_data(s->event, s->type);
         assert(d);
@@ -1818,6 +2459,7 @@ _public_ int sd_event_source_get_time_accuracy(sd_event_source *s, uint64_t *use
 
 _public_ int sd_event_source_set_time_accuracy(sd_event_source *s, uint64_t usec) {
         struct clock_data *d;
+        int r;
 
         assert_return(s, -EINVAL);
         assert_return(usec != (uint64_t) -1, -EINVAL);
@@ -1825,13 +2467,15 @@ _public_ int sd_event_source_set_time_accuracy(sd_event_source *s, uint64_t usec
         assert_return(s->event->state != SD_EVENT_FINISHED, -ESTALE);
         assert_return(!event_pid_changed(s->event), -ECHILD);
 
+        r = source_set_pending(s, false);
+        if (r < 0)
+                return r;
+
         if (usec == 0)
                 usec = DEFAULT_ACCURACY_USEC;
 
         s->time.accuracy = usec;
 
-        source_set_pending(s, false);
-
         d = event_get_clock_data(s->event, s->type);
         assert(d);
 
@@ -1861,6 +2505,16 @@ _public_ int sd_event_source_get_child_pid(sd_event_source *s, pid_t *pid) {
         return 0;
 }
 
+_public_ int sd_event_source_get_inotify_mask(sd_event_source *s, uint32_t *mask) {
+        assert_return(s, -EINVAL);
+        assert_return(mask, -EINVAL);
+        assert_return(s->type == SOURCE_INOTIFY, -EDOM);
+        assert_return(!event_pid_changed(s->event), -ECHILD);
+
+        *mask = s->inotify.mask;
+        return 0;
+}
+
 _public_ int sd_event_source_set_prepare(sd_event_source *s, sd_event_handler_t callback) {
         int r;
 
@@ -2194,6 +2848,7 @@ static int process_signal(sd_event *e, struct signal_data *d, uint32_t events) {
         int r;
 
         assert(e);
+        assert(d);
         assert_return(events == EPOLLIN, -EIO);
 
         /* If there's a signal queued on this priority and SIGCHLD is
@@ -2250,6 +2905,160 @@ static int process_signal(sd_event *e, struct signal_data *d, uint32_t events) {
         }
 }
 
+static int event_inotify_data_read(sd_event *e, struct inotify_data *d, uint32_t revents) {
+        ssize_t n;
+
+        assert(e);
+        assert(d);
+
+        assert_return(revents == EPOLLIN, -EIO);
+
+        /* If there's already an event source pending for this priority, don't read another */
+        if (d->n_pending > 0)
+                return 0;
+
+        /* Is the read buffer non-empty? If so, let's not read more */
+        if (d->buffer_filled > 0)
+                return 0;
+
+        n = read(d->fd, &d->buffer, sizeof(d->buffer));
+        if (n < 0) {
+                if (IN_SET(errno, EAGAIN, EINTR))
+                        return 0;
+
+                return -errno;
+        }
+
+        assert(n > 0);
+        d->buffer_filled = (size_t) n;
+        LIST_PREPEND(buffered, e->inotify_data_buffered, d);
+
+        return 1;
+}
+
+static void event_inotify_data_drop(sd_event *e, struct inotify_data *d, size_t sz) {
+        assert(e);
+        assert(d);
+        assert(sz <= d->buffer_filled);
+
+        if (sz == 0)
+                return;
+
+        /* Move the rest to the buffer to the front, in order to get things properly aligned again */
+        memmove(d->buffer.raw, d->buffer.raw + sz, d->buffer_filled - sz);
+        d->buffer_filled -= sz;
+
+        if (d->buffer_filled == 0)
+                LIST_REMOVE(buffered, e->inotify_data_buffered, d);
+}
+
+static int event_inotify_data_process(sd_event *e, struct inotify_data *d) {
+        int r;
+
+        assert(e);
+        assert(d);
+
+        /* If there's already an event source pending for this priority, don't read another */
+        if (d->n_pending > 0)
+                return 0;
+
+        while (d->buffer_filled > 0) {
+                size_t sz;
+
+                /* Let's validate that the event structures are complete */
+                if (d->buffer_filled < offsetof(struct inotify_event, name))
+                        return -EIO;
+
+                sz = offsetof(struct inotify_event, name) + d->buffer.ev.len;
+                if (d->buffer_filled < sz)
+                        return -EIO;
+
+                if (d->buffer.ev.mask & IN_Q_OVERFLOW) {
+                        struct inode_data *inode_data;
+                        Iterator i;
+
+                        /* The queue overran, let's pass this event to all event sources connected to this inotify
+                         * object */
+
+                        HASHMAP_FOREACH(inode_data, d->inodes, i) {
+                                sd_event_source *s;
+
+                                LIST_FOREACH(inotify.by_inode_data, s, inode_data->event_sources) {
+
+                                        if (s->enabled == SD_EVENT_OFF)
+                                                continue;
+
+                                        r = source_set_pending(s, true);
+                                        if (r < 0)
+                                                return r;
+                                }
+                        }
+                } else {
+                        struct inode_data *inode_data;
+                        sd_event_source *s;
+
+                        /* Find the inode object for this watch descriptor. If IN_IGNORED is set we also remove it from
+                         * our watch descriptor table. */
+                        if (d->buffer.ev.mask & IN_IGNORED) {
+
+                                inode_data = hashmap_remove(d->wd, INT_TO_PTR(d->buffer.ev.wd));
+                                if (!inode_data) {
+                                        event_inotify_data_drop(e, d, sz);
+                                        continue;
+                                }
+
+                                /* The watch descriptor was removed by the kernel, let's drop it here too */
+                                inode_data->wd = -1;
+                        } else {
+                                inode_data = hashmap_get(d->wd, INT_TO_PTR(d->buffer.ev.wd));
+                                if (!inode_data) {
+                                        event_inotify_data_drop(e, d, sz);
+                                        continue;
+                                }
+                        }
+
+                        /* Trigger all event sources that are interested in these events. Also trigger all event
+                         * sources if IN_IGNORED or IN_UNMOUNT is set. */
+                        LIST_FOREACH(inotify.by_inode_data, s, inode_data->event_sources) {
+
+                                if (s->enabled == SD_EVENT_OFF)
+                                        continue;
+
+                                if ((d->buffer.ev.mask & (IN_IGNORED|IN_UNMOUNT)) == 0 &&
+                                    (s->inotify.mask & d->buffer.ev.mask & IN_ALL_EVENTS) == 0)
+                                        continue;
+
+                                r = source_set_pending(s, true);
+                                if (r < 0)
+                                        return r;
+                        }
+                }
+
+                /* Something pending now? If so, let's finish, otherwise let's read more. */
+                if (d->n_pending > 0)
+                        return 1;
+        }
+
+        return 0;
+}
+
+static int process_inotify(sd_event *e) {
+        struct inotify_data *d;
+        int r, done = 0;
+
+        assert(e);
+
+        LIST_FOREACH(buffered, d, e->inotify_data_buffered) {
+                r = event_inotify_data_process(e, d);
+                if (r < 0)
+                        return r;
+                if (r > 0)
+                        done ++;
+        }
+
+        return done;
+}
+
 static int source_dispatch(sd_event_source *s) {
         EventSourceType saved_type;
         int r = 0;
@@ -2319,7 +3128,7 @@ static int source_dispatch(sd_event_source *s) {
 
                 /* Now, reap the PID for good. */
                 if (zombie)
-                        waitid(P_PID, s->child.pid, &s->child.siginfo, WNOHANG|WEXITED);
+                        (void) waitid(P_PID, s->child.pid, &s->child.siginfo, WNOHANG|WEXITED);
 
                 break;
         }
@@ -2336,6 +3145,28 @@ static int source_dispatch(sd_event_source *s) {
                 r = s->exit.callback(s, s->userdata);
                 break;
 
+        case SOURCE_INOTIFY: {
+                struct sd_event *e = s->event;
+                struct inotify_data *d;
+                size_t sz;
+
+                assert(s->inotify.inode_data);
+                assert_se(d = s->inotify.inode_data->inotify_data);
+
+                assert(d->buffer_filled >= offsetof(struct inotify_event, name));
+                sz = offsetof(struct inotify_event, name) + d->buffer.ev.len;
+                assert(d->buffer_filled >= sz);
+
+                r = s->inotify.callback(s, &d->buffer.ev, s->userdata);
+
+                /* When no event is pending anymore on this inotify object, then let's drop the event from the
+                 * buffer. */
+                if (d->n_pending == 0)
+                        event_inotify_data_drop(e, d, sz);
+
+                break;
+        }
+
         case SOURCE_WATCHDOG:
         case _SOURCE_EVENT_SOURCE_TYPE_MAX:
         case _SOURCE_EVENT_SOURCE_TYPE_INVALID:
@@ -2470,6 +3301,25 @@ static int process_watchdog(sd_event *e) {
         return arm_watchdog(e);
 }
 
+static void event_close_inode_data_fds(sd_event *e) {
+        struct inode_data *d;
+
+        assert(e);
+
+        /* Close the fds pointing to the inodes to watch now. We need to close them as they might otherwise pin
+         * filesystems. But we can't close them right-away as we need them as long as the user still wants to make
+         * adjustments to the even source, such as changing the priority (which requires us to remove and readd a watch
+         * for the inode). Hence, let's close them when entering the first iteration after they were added, as a
+         * compromise. */
+
+        while ((d = e->inode_data_to_close)) {
+                assert(d->fd >= 0);
+                d->fd = safe_close(d->fd);
+
+                LIST_REMOVE(to_close, e->inode_data_to_close, d);
+        }
+}
+
 _public_ int sd_event_prepare(sd_event *e) {
         int r;
 
@@ -2510,6 +3360,8 @@ _public_ int sd_event_prepare(sd_event *e) {
         if (r < 0)
                 return r;
 
+        event_close_inode_data_fds(e);
+
         if (event_next_pending(e) || e->need_process_child)
                 goto pending;
 
@@ -2545,6 +3397,10 @@ _public_ int sd_event_wait(sd_event *e, uint64_t timeout) {
         ev_queue_max = MAX(e->n_sources, 1u);
         ev_queue = newa(struct epoll_event, ev_queue_max);
 
+        /* If we still have inotify data buffered, then query the other fds, but don't wait on it */
+        if (e->inotify_data_buffered)
+                timeout = 0;
+
         m = epoll_wait(e->epoll_fd, ev_queue, ev_queue_max,
                        timeout == (uint64_t) -1 ? -1 : (int) ((timeout + USEC_PER_MSEC - 1) / USEC_PER_MSEC));
         if (m < 0) {
@@ -2582,6 +3438,10 @@ _public_ int sd_event_wait(sd_event *e, uint64_t timeout) {
                                 r = process_signal(e, ev_queue[i].data.ptr, ev_queue[i].events);
                                 break;
 
+                        case WAKEUP_INOTIFY_DATA:
+                                r = event_inotify_data_read(e, ev_queue[i].data.ptr, ev_queue[i].events);
+                                break;
+
                         default:
                                 assert_not_reached("Invalid wake-up pointer");
                         }
@@ -2620,6 +3480,10 @@ _public_ int sd_event_wait(sd_event *e, uint64_t timeout) {
                         goto finish;
         }
 
+        r = process_inotify(e);
+        if (r < 0)
+                goto finish;
+
         if (event_next_pending(e)) {
                 e->state = SD_EVENT_PENDING;
 
@@ -2858,7 +3722,7 @@ _public_ int sd_event_set_watchdog(sd_event *e, int b) {
                 return e->watchdog;
 
         if (b) {
-                struct epoll_event ev = {};
+                struct epoll_event ev;
 
                 r = sd_watchdog_enabled(false, &e->watchdog_period);
                 if (r <= 0)
@@ -2876,8 +3740,10 @@ _public_ int sd_event_set_watchdog(sd_event *e, int b) {
                 if (r < 0)
                         goto fail;
 
-                ev.events = EPOLLIN;
-                ev.data.ptr = INT_TO_PTR(SOURCE_WATCHDOG);
+                ev = (struct epoll_event) {
+                        .events = EPOLLIN,
+                        .data.ptr = INT_TO_PTR(SOURCE_WATCHDOG),
+                };
 
                 r = epoll_ctl(e->epoll_fd, EPOLL_CTL_ADD, e->watchdog_fd, &ev);
                 if (r < 0) {
@@ -2916,4 +3782,20 @@ _public_ int sd_event_get_iteration(sd_event *e, uint64_t *ret) {
         *ret = e->iteration;
         return 0;
 }
+
+_public_ int sd_event_source_set_destroy_callback(sd_event_source *s, sd_event_destroy_t callback) {
+        assert_return(s, -EINVAL);
+
+        s->destroy_callback = callback;
+        return 0;
+}
+
+_public_ int sd_event_source_get_destroy_callback(sd_event_source *s, sd_event_destroy_t *ret) {
+        assert_return(s, -EINVAL);
+
+        if (ret)
+                *ret = s->destroy_callback;
+
+        return !!s->destroy_callback;
+}
 #endif /* NM_IGNORED */
diff --git a/src/systemd/src/libsystemd/sd-id128/id128-util.c b/src/systemd/src/libsystemd/sd-id128/id128-util.c
index 26eef0fd..03a38699 100644
--- a/src/systemd/src/libsystemd/sd-id128/id128-util.c
+++ b/src/systemd/src/libsystemd/sd-id128/id128-util.c
@@ -1,8 +1,5 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright 2016 Lennart Poettering
 ***/
 
 #include "nm-sd-adapt.h"
diff --git a/src/systemd/src/libsystemd/sd-id128/id128-util.h b/src/systemd/src/libsystemd/sd-id128/id128-util.h
index 9aeb27a2..f0b4eca5 100644
--- a/src/systemd/src/libsystemd/sd-id128/id128-util.h
+++ b/src/systemd/src/libsystemd/sd-id128/id128-util.h
@@ -2,9 +2,6 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright 2016 Lennart Poettering
 ***/
 
 #include <stdbool.h>
diff --git a/src/systemd/src/libsystemd/sd-id128/sd-id128.c b/src/systemd/src/libsystemd/sd-id128/sd-id128.c
index de0ae600..8fe8ff43 100644
--- a/src/systemd/src/libsystemd/sd-id128/sd-id128.c
+++ b/src/systemd/src/libsystemd/sd-id128/sd-id128.c
@@ -1,8 +1,5 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright 2011 Lennart Poettering
 ***/
 
 #include "nm-sd-adapt.h"
@@ -102,7 +99,7 @@ _public_ int sd_id128_get_machine(sd_id128_t *ret) {
                         return r;
 
                 if (sd_id128_is_null(saved_machine_id))
-                        return -EINVAL;
+                        return -ENOMEDIUM;
         }
 
         *ret = saved_machine_id;
diff --git a/src/systemd/src/shared/dns-domain.c b/src/systemd/src/shared/dns-domain.c
index 3f41be62..ab034043 100644
--- a/src/systemd/src/shared/dns-domain.c
+++ b/src/systemd/src/shared/dns-domain.c
@@ -1,8 +1,5 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 /***
-  This file is part of systemd.
-
-  Copyright 2014 Lennart Poettering
  ***/
 
 #include "nm-sd-adapt.h"
@@ -360,10 +357,7 @@ int dns_label_undo_idna(const char *encoded, size_t encoded_size, char *decoded,
         if (encoded_size <= 0 || encoded_size > DNS_LABEL_MAX)
                 return -EINVAL;
 
-        if (encoded_size < sizeof(IDNA_ACE_PREFIX)-1)
-                return 0;
-
-        if (memcmp(encoded, IDNA_ACE_PREFIX, sizeof(IDNA_ACE_PREFIX) -1) != 0)
+        if (!memory_startswith(encoded, encoded_size, IDNA_ACE_PREFIX))
                 return 0;
 
         input = stringprep_utf8_to_ucs4(encoded, encoded_size, &input_size);
diff --git a/src/systemd/src/shared/dns-domain.h b/src/systemd/src/shared/dns-domain.h
index 47bd5357..8781eec6 100644
--- a/src/systemd/src/shared/dns-domain.h
+++ b/src/systemd/src/shared/dns-domain.h
@@ -2,9 +2,6 @@
 #pragma once
 
 /***
-  This file is part of systemd.
-
-  Copyright 2014 Lennart Poettering
  ***/
 
 #include <errno.h>
@@ -25,7 +22,7 @@
 #define DNS_HOSTNAME_MAX 253
 
 /* Maximum length of a full hostname, on the wire, including the final NUL byte */
-#define DNS_WIRE_FOMAT_HOSTNAME_MAX 255
+#define DNS_WIRE_FORMAT_HOSTNAME_MAX 255
 
 /* Maximum number of labels per valid hostname */
 #define DNS_N_LABELS_MAX 127
diff --git a/src/systemd/src/systemd/_sd-common.h b/src/systemd/src/systemd/_sd-common.h
index b4400e7b..7b54d179 100644
--- a/src/systemd/src/systemd/_sd-common.h
+++ b/src/systemd/src/systemd/_sd-common.h
@@ -3,9 +3,6 @@
 #define foosdcommonhfoo
 
 /***
-  This file is part of systemd.
-
-  Copyright 2013 Lennart Poettering
 
   systemd is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as published by
diff --git a/src/systemd/src/systemd/sd-dhcp-client.h b/src/systemd/src/systemd/sd-dhcp-client.h
index fd0a5693..931b0e89 100644
--- a/src/systemd/src/systemd/sd-dhcp-client.h
+++ b/src/systemd/src/systemd/sd-dhcp-client.h
@@ -3,9 +3,7 @@
 #define foosddhcpclienthfoo
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2013 Intel Corporation. All rights reserved.
+  Copyright © 2013 Intel Corporation. All rights reserved.
 
   systemd is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as published by
diff --git a/src/systemd/src/systemd/sd-dhcp-lease.h b/src/systemd/src/systemd/sd-dhcp-lease.h
index 3cc7fcab..16c05661 100644
--- a/src/systemd/src/systemd/sd-dhcp-lease.h
+++ b/src/systemd/src/systemd/sd-dhcp-lease.h
@@ -3,10 +3,8 @@
 #define foosddhcpleasehfoo
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2013 Intel Corporation. All rights reserved.
-  Copyright (C) 2014 Tom Gundersen
+  Copyright © 2013 Intel Corporation. All rights reserved.
+  Copyright © 2014 Tom Gundersen
 
   systemd is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as published by
diff --git a/src/systemd/src/systemd/sd-dhcp6-client.h b/src/systemd/src/systemd/sd-dhcp6-client.h
index cadb32a0..4f3b2d9e 100644
--- a/src/systemd/src/systemd/sd-dhcp6-client.h
+++ b/src/systemd/src/systemd/sd-dhcp6-client.h
@@ -3,9 +3,7 @@
 #define foosddhcp6clienthfoo
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Intel Corporation. All rights reserved.
+  Copyright © 2014 Intel Corporation. All rights reserved.
 
   systemd is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as published by
diff --git a/src/systemd/src/systemd/sd-dhcp6-lease.h b/src/systemd/src/systemd/sd-dhcp6-lease.h
index 22a5f8ce..a673de5e 100644
--- a/src/systemd/src/systemd/sd-dhcp6-lease.h
+++ b/src/systemd/src/systemd/sd-dhcp6-lease.h
@@ -3,10 +3,8 @@
 #define foosddhcp6leasehfoo
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Tom Gundersen
-  Copyright (C) 2014-2015 Intel Corporation. All rights reserved.
+  Copyright © 2014 Tom Gundersen
+  Copyright © 2014-2015 Intel Corporation. All rights reserved.
 
   systemd is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as published by
diff --git a/src/systemd/src/systemd/sd-event.h b/src/systemd/src/systemd/sd-event.h
index ec4b7bcf..7fcae4ac 100644
--- a/src/systemd/src/systemd/sd-event.h
+++ b/src/systemd/src/systemd/sd-event.h
@@ -3,9 +3,6 @@
 #define foosdeventhfoo
 
 /***
-  This file is part of systemd.
-
-  Copyright 2013 Lennart Poettering
 
   systemd is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as published by
@@ -24,6 +21,7 @@
 #include <inttypes.h>
 #include <signal.h>
 #include <sys/epoll.h>
+#include <sys/inotify.h>
 #include <sys/signalfd.h>
 #include <sys/types.h>
 #include <time.h>
@@ -78,6 +76,8 @@ typedef int (*sd_event_child_handler_t)(sd_event_source *s, const siginfo_t *si,
 #else
 typedef void* sd_event_child_handler_t;
 #endif
+typedef int (*sd_event_inotify_handler_t)(sd_event_source *s, const struct inotify_event *event, void *userdata);
+typedef void (*sd_event_destroy_t)(void *userdata);
 
 int sd_event_default(sd_event **e);
 
@@ -89,6 +89,7 @@ int sd_event_add_io(sd_event *e, sd_event_source **s, int fd, uint32_t events, s
 int sd_event_add_time(sd_event *e, sd_event_source **s, clockid_t clock, uint64_t usec, uint64_t accuracy, sd_event_time_handler_t callback, void *userdata);
 int sd_event_add_signal(sd_event *e, sd_event_source **s, int sig, sd_event_signal_handler_t callback, void *userdata);
 int sd_event_add_child(sd_event *e, sd_event_source **s, pid_t pid, int options, sd_event_child_handler_t callback, void *userdata);
+int sd_event_add_inotify(sd_event *e, sd_event_source **s, const char *path, uint32_t mask, sd_event_inotify_handler_t callback, void *userdata);
 int sd_event_add_defer(sd_event *e, sd_event_source **s, sd_event_handler_t callback, void *userdata);
 int sd_event_add_post(sd_event *e, sd_event_source **s, sd_event_handler_t callback, void *userdata);
 int sd_event_add_exit(sd_event *e, sd_event_source **s, sd_event_handler_t callback, void *userdata);
@@ -139,6 +140,9 @@ int sd_event_source_set_time_accuracy(sd_event_source *s, uint64_t usec);
 int sd_event_source_get_time_clock(sd_event_source *s, clockid_t *clock);
 int sd_event_source_get_signal(sd_event_source *s);
 int sd_event_source_get_child_pid(sd_event_source *s, pid_t *pid);
+int sd_event_source_get_inotify_mask(sd_event_source *s, uint32_t *ret);
+int sd_event_source_set_destroy_callback(sd_event_source *s, sd_event_destroy_t callback);
+int sd_event_source_get_destroy_callback(sd_event_source *s, sd_event_destroy_t *ret);
 
 /* Define helpers so that __attribute__((cleanup(sd_event_unrefp))) and similar may be used. */
 _SD_DEFINE_POINTER_CLEANUP_FUNC(sd_event, sd_event_unref);
diff --git a/src/systemd/src/systemd/sd-id128.h b/src/systemd/src/systemd/sd-id128.h
index 67fc5956..b24fd06f 100644
--- a/src/systemd/src/systemd/sd-id128.h
+++ b/src/systemd/src/systemd/sd-id128.h
@@ -3,9 +3,6 @@
 #define foosdid128hfoo
 
 /***
-  This file is part of systemd.
-
-  Copyright 2011 Lennart Poettering
 
   systemd is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as published by
diff --git a/src/systemd/src/systemd/sd-ipv4acd.h b/src/systemd/src/systemd/sd-ipv4acd.h
index 677ae3b2..259db263 100644
--- a/src/systemd/src/systemd/sd-ipv4acd.h
+++ b/src/systemd/src/systemd/sd-ipv4acd.h
@@ -3,10 +3,8 @@
 #define foosdipv4acdfoo
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Axis Communications AB. All rights reserved.
-  Copyright (C) 2015 Tom Gundersen
+  Copyright © 2014 Axis Communications AB. All rights reserved.
+  Copyright © 2015 Tom Gundersen
 
   systemd is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as published by
diff --git a/src/systemd/src/systemd/sd-ipv4ll.h b/src/systemd/src/systemd/sd-ipv4ll.h
index c330b0ae..71bd4cfe 100644
--- a/src/systemd/src/systemd/sd-ipv4ll.h
+++ b/src/systemd/src/systemd/sd-ipv4ll.h
@@ -3,9 +3,7 @@
 #define foosdipv4llfoo
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Axis Communications AB. All rights reserved.
+  Copyright © 2014 Axis Communications AB. All rights reserved.
 
   systemd is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as published by
diff --git a/src/systemd/src/systemd/sd-lldp.h b/src/systemd/src/systemd/sd-lldp.h
index 0a76fa63..11a2119a 100644
--- a/src/systemd/src/systemd/sd-lldp.h
+++ b/src/systemd/src/systemd/sd-lldp.h
@@ -3,10 +3,8 @@
 #define foosdlldphfoo
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Tom Gundersen
-  Copyright (C) 2014 Susant Sahani
+  Copyright © 2014 Tom Gundersen
+  Copyright © 2014 Susant Sahani
 
   systemd is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as published by
diff --git a/src/systemd/src/systemd/sd-ndisc.h b/src/systemd/src/systemd/sd-ndisc.h
index 15211450..6b6249ca 100644
--- a/src/systemd/src/systemd/sd-ndisc.h
+++ b/src/systemd/src/systemd/sd-ndisc.h
@@ -3,9 +3,7 @@
 #define foosdndiscfoo
 
 /***
-  This file is part of systemd.
-
-  Copyright (C) 2014 Intel Corporation. All rights reserved.
+  Copyright © 2014 Intel Corporation. All rights reserved.
 
   systemd is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as published by
diff --git a/tools/test-networkmanager-service.py b/tools/test-networkmanager-service.py
index 8563aa19..ab63b60a 100755
--- a/tools/test-networkmanager-service.py
+++ b/tools/test-networkmanager-service.py
@@ -15,13 +15,15 @@ except Exception as e:
     print("Cannot load gi.NM: %s" % (str(e)))
     sys.exit(77)
 
+import os
 import dbus
 import dbus.service
 import dbus.mainloop.glib
 import random
-import collections
 import uuid
 import hashlib
+import socket
+import collections
 
 ###############################################################################
 
@@ -43,49 +45,470 @@ class TestError(AssertionError):
 
 ###############################################################################
 
-IFACE_DBUS = 'org.freedesktop.DBus'
+class Util:
 
-class UnknownInterfaceException(dbus.DBusException):
-    _dbus_error_name = IFACE_DBUS + '.UnknownInterface'
+    PY3 = (sys.version_info[0] == 3)
 
-class UnknownPropertyException(dbus.DBusException):
-    _dbus_error_name = IFACE_DBUS + '.UnknownProperty'
+    @staticmethod
+    def addr_family_check(family, allow_af_unspec = False):
+        if family == socket.AF_INET:
+            return
+        if family == socket.AF_INET6:
+            return
+        if allow_af_unspec and family == socket.AF_UNSPEC:
+            return
+        raise TestError('invalid address family %s' % (family))
 
-class Util:
+    @staticmethod
+    def ip_addr_pton(addr, family=None):
+        if addr is None:
+            return (None, None)
+        if family is not None and family is not socket.AF_UNSPEC:
+            Util.addr_family_check(family)
+            a = socket.inet_pton(family, addr)
+        else:
+            a = None
+            family = None
+            try:
+                a = socket.inet_pton(socket.AF_INET, addr)
+                family = socket.AF_INET
+            except:
+                a = socket.inet_pton(socket.AF_INET6, addr)
+                family = socket.AF_INET6
+        if Util.PY3:
+            a = tuple([int(c) for c in a])
+        else:
+            a = tuple([ord(c) for c in a])
+        return (a, family)
+
+    @staticmethod
+    def ip_addr_ntop(addr, family = None):
+        if Util.PY3:
+            a = bytes(addr)
+        else:
+            a = ''.join([chr(c) for c in addr])
+        if len(a) == 4:
+            f = socket.AF_INET
+        elif len(a) == 16:
+            f = socket.AF_INET6
+        else:
+            raise TestError("Invalid binary IP address '%s'" % (repr(addr)))
+        if family is not None and f != family:
+            raise TestError("Unexpected address family. Expected %s but ip address was %s" % (family, repr(addr)))
+        return socket.inet_ntop(f, a)
+
+    @staticmethod
+    def ip_addr_norm(addr, family = None):
+        a, family = Util.ip_addr_pton(addr, family)
+        return (Util.ip_addr_ntop(a, family), family)
+
+    @staticmethod
+    def ip4_addr_ne32(addr):
+        a, family = Util.ip_addr_pton(addr, socket.AF_INET)
+        n = 0
+        for i in range(4):
+            n = (n << 8) + a[i]
+        return socket.htonl(n)
 
     @staticmethod
-    def pseudorandom_stream(seed, length = None):
-        seed = str(seed)
+    def ip6_addr_ay(addr):
+        return Util.ip_addr_pton(addr, socket.AF_INET6)[0]
+
+    @staticmethod
+    def ip_net_parse(net, family = None):
+        parts = net.split('/')
+        if len(parts) != 2:
+            raise TestError("Invalid IP network '%s' has not '/' for the prefix length" % (net))
+        prefix = int(parts[1])
+        addr, family = Util.ip_addr_norm(parts[0], family)
+        if family == socket.AF_INET:
+            if prefix < 0 or prefix > 32:
+                raise TestError("Invalid prefix length for IPv4 address '%s'" % (net))
+        else:
+            if prefix < 0 or prefix > 128:
+                raise TestError("Invalid prefix length for IPv4 address '%s'" % (net))
+        return (addr, prefix, family)
+
+    class RandomSeed():
+        def __init__(self, seed):
+            self.cnt = 0
+            self.seed = str(seed)
+        def _next(self):
+            c = self.cnt
+            self.cnt += 1
+            return self.seed + '-' + str(c)
+        @staticmethod
+        def wrap(seed):
+            if seed is None:
+                return None
+            if isinstance(seed, Util.RandomSeed):
+                return seed
+            return Util.RandomSeed(seed)
+        @staticmethod
+        def get(seed, extra_seed = None):
+            if seed is None:
+                return None
+            if isinstance(seed, Util.RandomSeed):
+                seed = seed._next()
+            else:
+                seed = str(seed)
+            if extra_seed is None:
+                try:
+                    extra_seed = Util.RandomSeed._extra_seed
+                except:
+                    extra_seed = os.environ.get('NM_TEST_NETWORKMANAGER_SERVICE_SEED', '')
+                    Util.RandomSeed._extra_seed = extra_seed
+            return extra_seed + seed
+
+    @staticmethod
+    def random_stream(seed, length = None):
+        seed = Util.RandomSeed.wrap(seed)
+        # generates a stream of integers, in the range [0..255]
+        if seed is None:
+            # without a seed, we generate new random numbers.
+            while length is None or length > 0:
+                yield random.randint(0, 255)
+                if length is not None:
+                    length -= 1
+            return
         v = None
-        i = 0
         while length is None or length > 0:
             if not v:
-                s = seed + str(i)
+                s = Util.RandomSeed.get(seed)
                 s = s.encode('utf8')
                 v = hashlib.sha256(s).hexdigest()
-                i += 1
             yield int(v[0:2], 16)
             v = v[2:]
             if length is not None:
                 length -= 1
 
     @staticmethod
-    def pseudorandom_num(seed, v_end, v_start = 0):
+    def random_int(seed, v_start = _DEFAULT_ARG, v_end = _DEFAULT_ARG):
+        # - if neither start not end is give, return a number in the range
+        #   u32 range [0, 0xFFFFFFFF]
+        # - if only start is given (the first argument), interpret it as
+        #   the range of the interval. That is, return random number in
+        #   range [0, start-1]
+        # - if end and start is given, return a random number with this
+        #   range (inclusive!): [start, end]
+        if v_end is _DEFAULT_ARG:
+            # if only one edge is provided (no v_end), then the range
+            # is [0, v_start[. That is, random_int(seed, 5), returns
+            # values from 0 to 4.
+            if v_start is _DEFAULT_ARG:
+                # by default, return a 32u integer.
+                v_end = 0x100000000
+            else:
+                v_end = v_start
+            v_start = 0
+        else:
+            if v_start is _DEFAULT_ARG:
+                raise TestError("Cannot specify end without start")
+            # if a full range is provided, v_end is included.
+            # random_int(seed, 0, 4) returns values from 0 to 4.
+            v_end += 1
         n = 0
         span = v_end - v_start
-        for r in Util.pseudorandom_stream(seed):
+        assert span > 0
+        for r in Util.random_stream(seed):
             n = n * 256 + r
             if n > span:
                 break
         return v_start + (n % span)
 
     @staticmethod
-    def random_mac(seed = None):
-        if seed is None:
-            r = tuple([random.randint(0, 255) for x in range(6)])
+    def random_bool(seed):
+        return Util.random_int(seed, 0, 1) == 1
+
+    @staticmethod
+    def random_subset(seed, all_set):
+        all_set = list(all_set)
+        result = []
+        seed = Util.RandomSeed.wrap(seed)
+        for i in list(range(Util.random_int(Util.RandomSeed.get(seed), len(all_set) + 1))):
+            idx = Util.random_int(Util.RandomSeed.get(seed), len(all_set))
+            result.append(all_set[idx])
+            del all_set[idx]
+        return result
+
+    @staticmethod
+    def random_mac(seed):
+        return '%02X:%02X:%02X:%02X:%02X:%02X' % tuple(Util.random_stream(seed, 6))
+
+    @staticmethod
+    def random_ip(seed, net = None, family = None):
+        if net is not None:
+            mask, prefix, family = Util.ip_net_parse(net, family)
+            a_mask, unused = Util.ip_addr_pton(mask, family)
+        else:
+            prefix = None
+            Util.addr_family_check(family)
+        if family == socket.AF_INET:
+            l = 4
         else:
-            r = tuple(Util.pseudorandom_stream(seed, 6))
-        return '%02X:%02X:%02X:%02X:%02X:%02X' % r
+            l = 16
+        a = tuple(Util.random_stream(seed, l))
+        if prefix is not None:
+            a2 = []
+            for i in range(l):
+                if prefix == 0:
+                    c = a[i]
+                elif prefix >= 8:
+                    c = a_mask[i]
+                    prefix -= 8
+                else:
+                    c = 0xFF & (0xFF << (8 - prefix))
+                    c = (a[i] & ~c) | (a_mask[i] & c)
+                    prefix = 0
+                a2.append(c)
+            a = tuple(a2)
+        return (Util.ip_addr_ntop(a, family), family)
+
+    @staticmethod
+    def eprint(*args, **kwargs):
+        print(*args, file=sys.stderr, **kwargs)
+
+    @staticmethod
+    def variant_from_dbus(val):
+        if isinstance(val, (dbus.String, str)):
+            return GLib.Variant('s', str(val))
+        if isinstance(val, dbus.UInt32):
+            return GLib.Variant('u', int(val))
+        if isinstance(val, dbus.Boolean):
+            return GLib.Variant('b', bool(val))
+        if isinstance(val, dbus.Byte):
+            return GLib.Variant('y', int(val))
+        if isinstance(val, dbus.Array):
+            try:
+                if val.signature == 's':
+                    return GLib.Variant('as', [Util.variant_from_dbus(x) for x in val])
+                if val.signature == 'b':
+                    return GLib.Variant('ab', [Util.variant_from_dbus(x) for x in val])
+                if val.signature == 'y':
+                    return GLib.Variant('ay', [int(x) for x in val])
+                if val.signature == 'u':
+                    return GLib.Variant('au', [Util.variant_from_dbus(x) for x in val])
+                if val.signature == 'ay':
+                    return GLib.Variant('aay', [Util.variant_from_dbus(x) for x in val])
+                if val.signature == 'au':
+                    return GLib.Variant('aau', [Util.variant_from_dbus(x) for x in val])
+                if val.signature == 'a{sv}':
+                    return GLib.Variant('aa{sv}', [collections.OrderedDict([(str(k), Util.variant_from_dbus(v)) for k, v in addr.items()]) for addr in val])
+                if val.signature == '(ayuay)':
+                    return GLib.Variant('a(ayuay)', [Util.variant_from_dbus(x) for x in val])
+                if val.signature == '(ayuayu)':
+                    return GLib.Variant('a(ayuayu)', [Util.variant_from_dbus(x) for x in val])
+            except Exception as e:
+                raise Exception("Cannot convert array element to type '%s': %s" % (val.signature, e.message))
+        if isinstance(val, dbus.Dictionary):
+            if val.signature == 'ss':
+                return GLib.Variant('a{ss}', collections.OrderedDict([(str(k), str(v)) for k, v in val.items()]))
+            if val.signature == 'sv':
+                return GLib.Variant('a{sv}', collections.OrderedDict([(str(k), Util.variant_from_dbus(v)) for k, v in val.items()]))
+            if val.signature == 'sa{sv}':
+                c = collections.OrderedDict([
+                          (str(key1),
+                           collections.OrderedDict([(str(key2), Util.variant_from_dbus(arr2)) for key2, arr2 in arr1.items()])
+                          ) for key1, arr1 in val.items()
+                    ])
+                return GLib.Variant('a{sa{sv}}', c)
+
+        raise Exception("Unsupported type for value '%s'" % (repr(val)))
+
+###############################################################################
+
+IFACE_DBUS              = 'org.freedesktop.DBus'
+IFACE_OBJECT_MANAGER    = 'org.freedesktop.DBus.ObjectManager'
+IFACE_CONNECTION        = 'org.freedesktop.NetworkManager.Settings.Connection'
+IFACE_DEVICE            = 'org.freedesktop.NetworkManager.Device'
+IFACE_WIFI              = 'org.freedesktop.NetworkManager.Device.Wireless'
+IFACE_WIMAX             = 'org.freedesktop.NetworkManager.Device.WiMax'
+IFACE_TEST              = 'org.freedesktop.NetworkManager.LibnmGlibTest'
+IFACE_NM                = 'org.freedesktop.NetworkManager'
+IFACE_SETTINGS          = 'org.freedesktop.NetworkManager.Settings'
+IFACE_AGENT_MANAGER     = 'org.freedesktop.NetworkManager.AgentManager'
+IFACE_AGENT             = 'org.freedesktop.NetworkManager.SecretAgent'
+IFACE_WIRED             = 'org.freedesktop.NetworkManager.Device.Wired'
+IFACE_VLAN              = 'org.freedesktop.NetworkManager.Device.Vlan'
+IFACE_WIFI_AP           = 'org.freedesktop.NetworkManager.AccessPoint'
+IFACE_WIMAX_NSP         = 'org.freedesktop.NetworkManager.WiMax.Nsp'
+IFACE_ACTIVE_CONNECTION = 'org.freedesktop.NetworkManager.Connection.Active'
+IFACE_VPN_CONNECTION    = 'org.freedesktop.NetworkManager.VPN.Connection'
+IFACE_DNS_MANAGER       = 'org.freedesktop.NetworkManager.DnsManager'
+IFACE_IP4_CONFIG        = 'org.freedesktop.NetworkManager.IP4Config'
+IFACE_IP6_CONFIG        = 'org.freedesktop.NetworkManager.IP6Config'
+IFACE_DHCP4_CONFIG      = 'org.freedesktop.NetworkManager.DHCP4Config'
+IFACE_DHCP6_CONFIG      = 'org.freedesktop.NetworkManager.DHCP6Config'
+
+###############################################################################
+
+class BusErr:
+
+    class UnknownInterfaceException(dbus.DBusException):
+        _dbus_error_name = IFACE_DBUS + '.UnknownInterface'
+
+    class UnknownPropertyException(dbus.DBusException):
+        _dbus_error_name = IFACE_DBUS + '.UnknownProperty'
+
+    class InvalidPropertyException(dbus.DBusException):
+        _dbus_error_name = IFACE_CONNECTION + '.InvalidProperty'
+
+    class MissingPropertyException(dbus.DBusException):
+        _dbus_error_name = IFACE_CONNECTION + '.MissingProperty'
+
+    class InvalidSettingException(dbus.DBusException):
+        _dbus_error_name = IFACE_CONNECTION + '.InvalidSetting'
+
+    class MissingSettingException(dbus.DBusException):
+        _dbus_error_name = IFACE_CONNECTION + '.MissingSetting'
+
+    class NotSoftwareException(dbus.DBusException):
+        _dbus_error_name = IFACE_DEVICE + '.NotSoftware'
+
+    class ApNotFoundException(dbus.DBusException):
+        _dbus_error_name = IFACE_WIFI + '.AccessPointNotFound'
+
+    class NspNotFoundException(dbus.DBusException):
+        _dbus_error_name = IFACE_WIMAX + '.NspNotFound'
+
+    class PermissionDeniedException(dbus.DBusException):
+        _dbus_error_name = IFACE_NM + '.PermissionDenied'
+
+    class UnknownDeviceException(dbus.DBusException):
+        _dbus_error_name = IFACE_NM + '.UnknownDevice'
+
+    class UnknownConnectionException(dbus.DBusException):
+        _dbus_error_name = IFACE_NM + '.UnknownConnection'
+
+    class InvalidHostnameException(dbus.DBusException):
+        _dbus_error_name = IFACE_SETTINGS + '.InvalidHostname'
+
+    class NoSecretsException(dbus.DBusException):
+        _dbus_error_name = IFACE_AGENT_MANAGER + '.NoSecrets'
+
+    class UserCanceledException(dbus.DBusException):
+        _dbus_error_name = IFACE_AGENT_MANAGER + '.UserCanceled'
+
+    @staticmethod
+    def from_nmerror(e):
+        try:
+            domain, code = (e.domain, e.code)
+        except:
+            return None
+        if domain == GLib.quark_to_string(NM.ConnectionError.quark()):
+            if code == NM.ConnectionError.MISSINGSETTING:
+                return BusErr.MissingSettingException(e.message)
+            if code == NM.ConnectionError.INVALIDPROPERTY:
+                return BusErr.InvalidPropertyException(e.message)
+        return None
+
+    @staticmethod
+    def raise_nmerror(e):
+        e2 = BusErr.from_nmerror(e)
+        if e2 is not None:
+            raise e2
+        raise e
+
+###############################################################################
+
+class NmUtil:
+
+    @staticmethod
+    def con_hash_to_connection(con_hash, do_verify = False, do_normalize = False):
+
+        x_con = []
+        for v_setting_name, v_setting in list(con_hash.items()):
+            if isinstance(v_setting_name, (dbus.String, str)):
+                v_setting_name = str(v_setting_name)
+            else:
+                raise Exception("Expected string dict, but got '%s' key" % (v_setting_name))
+            x_setting = []
+            for v_property_name, v_value in list(v_setting.items()):
+                if isinstance(v_property_name, (dbus.String, str)):
+                    v_property_name = str(v_property_name)
+                else:
+                    raise Exception("Expected string dict, but got '%s' subkey under %s (%s)" % (v_property_name, v_setting_name, repr(con_hash)))
+                try:
+                    v = Util.variant_from_dbus(v_value)
+                except Exception as e:
+                    raise Exception("Unsupported value %s.%s = %s (%s)" % (v_setting_name, v_property_name, v_value, str(e)))
+                x_setting.append((v_property_name, v))
+
+            x_con.append((v_setting_name, collections.OrderedDict(x_setting)))
+
+        x_con = GLib.Variant('a{sa{sv}}', collections.OrderedDict(x_con))
+
+        assert GLib.Variant.equal(x_con, Util.variant_from_dbus(con_hash))
+
+        try:
+            con = NM.SimpleConnection.new_from_dbus(x_con)
+        except:
+            if do_verify:
+                raise
+            return None
+
+        if do_normalize:
+            try:
+                con.normalize()
+            except:
+                if do_verify:
+                    raise
+
+        if do_verify:
+            con.verify()
+
+        return con
+
+    @staticmethod
+    def con_hash_verify(con_hash, do_verify_strict = True):
+        if NM.SETTING_CONNECTION_SETTING_NAME not in con_hash:
+            raise BusErr.MissingSettingException('connection: setting is required')
+        s_con = con_hash[NM.SETTING_CONNECTION_SETTING_NAME]
+        if NM.SETTING_CONNECTION_TYPE not in s_con:
+            raise BusErr.MissingPropertyException('connection.type: property is required')
+        if NM.SETTING_CONNECTION_UUID not in s_con:
+            raise BusErr.MissingPropertyException('connection.uuid: property is required')
+        if NM.SETTING_CONNECTION_ID not in s_con:
+            raise BusErr.MissingPropertyException('connection.id: property is required')
+
+        if not do_verify_strict:
+            return;
+        t = s_con[NM.SETTING_CONNECTION_TYPE]
+        if t not in [ NM.SETTING_WIRED_SETTING_NAME,
+                      NM.SETTING_WIRELESS_SETTING_NAME,
+                      NM.SETTING_VLAN_SETTING_NAME,
+                      NM.SETTING_WIMAX_SETTING_NAME,
+                      NM.SETTING_VPN_SETTING_NAME ]:
+            raise BusErr.InvalidPropertyException('connection.type: unsupported connection type "%s"' % (t))
+
+        try:
+            con_nm = NmUtil.con_hash_to_connection(con_hash, do_verify = True, do_normalize = True)
+        except Exception as e:
+            BusErr.raise_nmerror(e)
+
+    @staticmethod
+    def con_hash_get_id(con_hash):
+        if NM.SETTING_CONNECTION_SETTING_NAME in con_hash:
+            s_con = con_hash[NM.SETTING_CONNECTION_SETTING_NAME]
+            if NM.SETTING_CONNECTION_ID in s_con:
+                return s_con[NM.SETTING_CONNECTION_ID]
+        return None
+
+    @staticmethod
+    def con_hash_get_uuid(con_hash):
+        if NM.SETTING_CONNECTION_SETTING_NAME in con_hash:
+            s_con = con_hash[NM.SETTING_CONNECTION_SETTING_NAME]
+            if NM.SETTING_CONNECTION_UUID in s_con:
+                return s_con[NM.SETTING_CONNECTION_UUID]
+        return None
+
+    @staticmethod
+    def con_hash_get_type(con_hash):
+        if NM.SETTING_CONNECTION_SETTING_NAME in con_hash:
+            s_con = con_hash[NM.SETTING_CONNECTION_SETTING_NAME]
+            if NM.SETTING_CONNECTION_TYPE in s_con:
+                return s_con[NM.SETTING_CONNECTION_TYPE]
+        return None
 
 ###############################################################################
 
@@ -103,11 +526,8 @@ class ExportedObj(dbus.service.Object):
 
     @staticmethod
     def to_path_array(src):
-        array = dbus.Array([], signature=dbus.Signature('o'))
-        if src is not None:
-            for o in src:
-                array.append(ExportedObj.to_path(o))
-        return array
+        return dbus.Array([ExportedObj.to_path(o) for o in src] if src else [],
+                          signature=dbus.Signature('o'))
 
     @staticmethod
     def to_path(src):
@@ -145,7 +565,7 @@ class ExportedObj(dbus.service.Object):
 
     def _dbus_interface_get(self, dbus_iface):
         if dbus_iface not in self._dbus_ifaces:
-            raise UnknownInterfaceException()
+            raise BusErr.UnknownInterfaceException()
         return self._dbus_ifaces[dbus_iface]
 
     def _dbus_interface_get_property(self, dbus_interface, propname = None):
@@ -153,14 +573,14 @@ class ExportedObj(dbus.service.Object):
         if propname is None:
             return props
         if propname not in props:
-            raise UnknownPropertyException()
+            raise BusErr.UnknownPropertyException()
         return props[propname]
 
     def _dbus_property_get(self, dbus_iface, propname = None):
         return self._dbus_interface_get_property(self._dbus_interface_get(dbus_iface),
                                                  propname)
 
-    def _dbus_property_set(self, dbus_iface, propname, value, allow_detect_dbus_iface = False, dry_run = False):
+    def _dbus_property_set(self, dbus_iface, propname, value, allow_detect_dbus_iface = False, dry_run = False, force_update = False):
         if allow_detect_dbus_iface and not dbus_iface:
             props = None
             for p, dbus_interface in self._dbus_ifaces.items():
@@ -184,15 +604,27 @@ class ExportedObj(dbus.service.Object):
             if propname not in props:
                 raise TestError("No property '%s' on '%s' on '%s'" % (propname, dbus_iface, self.path))
 
-            if     isinstance(self, ActiveConnection) \
-               and dbus_iface == 'org.freedesktop.NetworkManager.Connection.Active' \
-               and propname == 'State':
-                return
-            else:
+            permission_granted = False
+
+            if isinstance(self, ActiveConnection):
+                if dbus_iface == IFACE_ACTIVE_CONNECTION:
+                    if propname == PRP_ACTIVE_CONNECTION_STATE:
+                        permission_granted = True
+                elif dbus_iface == IFACE_VPN_CONNECTION:
+                    if propname == PRP_VPN_CONNECTION_VPN_STATE:
+                        permission_granted = True
+
+            if not permission_granted:
                 raise TestError("Cannot set property '%s' on '%s' on '%s' via D-Bus" % (propname, dbus_iface, self.path))
 
+            return
+
         assert propname in props
 
+        if not force_update:
+            if props[propname] == value:
+                return
+
         props[propname] = value
         self._dbus_property_notify(dbus_iface, propname)
 
@@ -232,11 +664,6 @@ class ExportedObj(dbus.service.Object):
 
 ###############################################################################
 
-IFACE_DEVICE = 'org.freedesktop.NetworkManager.Device'
-
-class NotSoftwareException(dbus.DBusException):
-    _dbus_error_name = IFACE_DEVICE + '.NotSoftware'
-
 PRP_DEVICE_UDI                   = "Udi"
 PRP_DEVICE_IFACE                 = "Interface"
 PRP_DEVICE_DRIVER                = "Driver"
@@ -263,16 +690,21 @@ class Device(ExportedObj):
 
         ExportedObj.__init__(self, ExportedObj.create_path(Device), ident)
 
+        self.ip4_config = None
+        self.ip6_config = None
+        self.dhcp4_config = None
+        self.dhcp6_config = None
+
         props = {
             PRP_DEVICE_UDI:                   "/sys/devices/virtual/%s" % (iface),
             PRP_DEVICE_IFACE:                 iface,
             PRP_DEVICE_DRIVER:                "virtual",
             PRP_DEVICE_STATE:                 dbus.UInt32(NM.DeviceState.UNAVAILABLE),
             PRP_DEVICE_ACTIVE_CONNECTION:     ExportedObj.to_path(None),
-            PRP_DEVICE_IP4_CONFIG:            ExportedObj.to_path(None),
-            PRP_DEVICE_IP6_CONFIG:            ExportedObj.to_path(None),
-            PRP_DEVICE_DHCP4_CONFIG:          ExportedObj.to_path(None),
-            PRP_DEVICE_DHCP6_CONFIG:          ExportedObj.to_path(None),
+            PRP_DEVICE_IP4_CONFIG:            ExportedObj.to_path(self.ip4_config),
+            PRP_DEVICE_IP6_CONFIG:            ExportedObj.to_path(self.ip6_config),
+            PRP_DEVICE_DHCP4_CONFIG:          ExportedObj.to_path(self.dhcp4_config),
+            PRP_DEVICE_DHCP6_CONFIG:          ExportedObj.to_path(self.dhcp6_config),
             PRP_DEVICE_MANAGED:               True,
             PRP_DEVICE_AUTOCONNECT:           True,
             PRP_DEVICE_DEVICE_TYPE:           dbus.UInt32(devtype),
@@ -281,6 +713,34 @@ class Device(ExportedObj):
 
         self.dbus_interface_add(IFACE_DEVICE, props, Device.PropertiesChanged)
 
+    def start(self):
+        self.ip4_config = IP4Config()
+        self._dbus_property_set(IFACE_DEVICE, PRP_DEVICE_IP4_CONFIG, ExportedObj.to_path(self.ip4_config))
+        self.ip6_config = IP6Config()
+        self._dbus_property_set(IFACE_DEVICE, PRP_DEVICE_IP6_CONFIG, ExportedObj.to_path(self.ip6_config))
+        self.dhcp4_config = Dhcp4Config()
+        self._dbus_property_set(IFACE_DEVICE, PRP_DEVICE_DHCP4_CONFIG, ExportedObj.to_path(self.dhcp4_config))
+        self.dhcp6_config = Dhcp6Config()
+        self._dbus_property_set(IFACE_DEVICE, PRP_DEVICE_DHCP6_CONFIG, ExportedObj.to_path(self.dhcp6_config))
+
+    def stop(self):
+        self._dbus_property_set(IFACE_DEVICE, PRP_DEVICE_IP4_CONFIG, ExportedObj.to_path(None))
+        if self.ip4_config is not None:
+            self.ip4_config.unexport()
+            self.ip4_config = None
+        self._dbus_property_set(IFACE_DEVICE, PRP_DEVICE_IP6_CONFIG, ExportedObj.to_path(None))
+        if self.ip6_config is not None:
+            self.ip6_config.unexport()
+            self.ip6_config = None
+        self._dbus_property_set(IFACE_DEVICE, PRP_DEVICE_DHCP4_CONFIG, ExportedObj.to_path(None))
+        if self.dhcp4_config is not None:
+            self.dhcp4_config.unexport()
+            self.dhcp4_config = None
+        self._dbus_property_set(IFACE_DEVICE, PRP_DEVICE_DHCP6_CONFIG, ExportedObj.to_path(None))
+        if self.dhcp6_config is not None:
+            self.dhcp6_config.unexport()
+            self.dhcp6_config = None
+
     @dbus.service.method(dbus_interface=IFACE_DEVICE, in_signature='', out_signature='')
     def Disconnect(self):
         pass
@@ -288,7 +748,7 @@ class Device(ExportedObj):
     @dbus.service.method(dbus_interface=IFACE_DEVICE, in_signature='', out_signature='')
     def Delete(self):
         # We don't currently support any software device types, so...
-        raise NotSoftwareException()
+        raise BusErr.NotSoftwareException()
         pass
 
     @dbus.service.signal(IFACE_DEVICE, signature='a{sv}')
@@ -298,9 +758,25 @@ class Device(ExportedObj):
     def set_active_connection(self, ac):
         self._dbus_property_set(IFACE_DEVICE, PRP_DEVICE_ACTIVE_CONNECTION, ac)
 
-###############################################################################
+    def connection_is_available(self, con_inst):
+        if con_inst.is_vpn():
+            return False
+        if isinstance(self, WiredDevice):
+            if con_inst.get_type() == NM.SETTING_WIRED_SETTING_NAME:
+                return True
+        elif isinstance(self, WifiDevice):
+            if con_inst.get_type() == NM.SETTING_WIRELESS_SETTING_NAME:
+                return True
+        return False
+
+    def available_connections_get(self):
+        return [c for c in gl.settings.get_connections() if self.connection_is_available(c)]
 
-IFACE_WIRED = 'org.freedesktop.NetworkManager.Device.Wired'
+    def available_connections_update(self):
+        self._dbus_property_set(IFACE_DEVICE, PRP_DEVICE_AVAILABLE_CONNECTIONS,
+                                ExportedObj.to_path_array(self.available_connections_get()))
+
+###############################################################################
 
 PRP_WIRED_HW_ADDRESS       = "HwAddress"
 PRP_WIRED_PERM_HW_ADDRESS  = "PermHwAddress"
@@ -333,8 +809,6 @@ class WiredDevice(Device):
 
 ###############################################################################
 
-IFACE_VLAN = 'org.freedesktop.NetworkManager.Device.Vlan'
-
 PRP_VLAN_HW_ADDRESS = "HwAddress"
 PRP_VLAN_CARRIER    = "Carrier"
 PRP_VLAN_VLAN_ID    = "VlanId"
@@ -357,8 +831,6 @@ class VlanDevice(Device):
 
 ###############################################################################
 
-IFACE_WIFI_AP = 'org.freedesktop.NetworkManager.AccessPoint'
-
 PRP_WIFI_AP_FLAGS       = "Flags"
 PRP_WIFI_AP_WPA_FLAGS   = "WpaFlags"
 PRP_WIFI_AP_RSN_FLAGS   = "RsnFlags"
@@ -389,7 +861,7 @@ class WifiAp(ExportedObj):
         if bssid is None:
             bssid = Util.random_mac(self.path)
         if strength is None:
-            strength = Util.pseudorandom_num(self.path, 100)
+            strength = Util.random_int(self.path, 100)
 
         self.ssid = ssid
         self.strength_counter = 0
@@ -416,7 +888,7 @@ class WifiAp(ExportedObj):
 
     def strength_cb(self, ignored):
         self.strength_counter += 1
-        strength = Util.pseudorandom_num(self.path + str(self.strength_counter), 100)
+        strength = Util.random_int(self.path + str(self.strength_counter), 100)
         self._dbus_property_set(IFACE_WIFI_AP, PRP_WIFI_AP_STRENGTH, strength)
         return True
 
@@ -426,11 +898,6 @@ class WifiAp(ExportedObj):
 
 ###############################################################################
 
-IFACE_WIFI = 'org.freedesktop.NetworkManager.Device.Wireless'
-
-class ApNotFoundException(dbus.DBusException):
-    _dbus_error_name = IFACE_WIFI + '.AccessPointNotFound'
-
 PRP_WIFI_HW_ADDRESS = "HwAddress"
 PRP_WIFI_PERM_HW_ADDRESS = "PermHwAddress"
 PRP_WIFI_MODE = "Mode"
@@ -438,6 +905,7 @@ PRP_WIFI_BITRATE = "Bitrate"
 PRP_WIFI_ACCESS_POINTS = "AccessPoints"
 PRP_WIFI_ACTIVE_ACCESS_POINT = "ActiveAccessPoint"
 PRP_WIFI_WIRELESS_CAPABILITIES = "WirelessCapabilities"
+PRP_WIFI_LAST_SCAN = "LastScan"
 
 class WifiDevice(Device):
     def __init__(self, iface, mac = None, ident = None):
@@ -456,6 +924,7 @@ class WifiDevice(Device):
             PRP_WIFI_WIRELESS_CAPABILITIES: dbus.UInt32(0xFF),
             PRP_WIFI_ACCESS_POINTS:         ExportedObj.to_path_array(self.aps),
             PRP_WIFI_ACTIVE_ACCESS_POINT:   ExportedObj.to_path(None),
+            PRP_WIFI_LAST_SCAN:             NM.utils_get_timestamp_msec(),
         }
 
         self.dbus_interface_add(IFACE_WIFI, props, WifiDevice.PropertiesChanged)
@@ -504,13 +973,11 @@ class WifiDevice(Device):
             if ap.path == path:
                 self.remove_ap(ap)
                 return
-        raise ApNotFoundException("AP %s not found" % path)
+        raise BusErr.ApNotFoundException("AP %s not found" % path)
 
 
 ###############################################################################
 
-IFACE_WIMAX_NSP = 'org.freedesktop.NetworkManager.WiMax.Nsp'
-
 PRP_WIMAX_NSP_NAME = "Name"
 PRP_WIMAX_NSP_SIGNAL_QUALITY = "SignalQuality"
 PRP_WIMAX_NSP_NETWORK_TYPE = "NetworkType"
@@ -549,11 +1016,6 @@ class WimaxNsp(ExportedObj):
 
 ###############################################################################
 
-IFACE_WIMAX = 'org.freedesktop.NetworkManager.Device.WiMax'
-
-class NspNotFoundException(dbus.DBusException):
-    _dbus_error_name = IFACE_WIMAX + '.NspNotFound'
-
 PRP_WIMAX_NSPS = "Nsps"
 PRP_WIMAX_HW_ADDRESS = "HwAddress"
 PRP_WIMAX_CENTER_FREQUENCY = "CenterFrequency"
@@ -623,12 +1085,10 @@ class WimaxDevice(Device):
             if nsp.path == path:
                 self.remove_nsp(nsp)
                 return
-        raise NspNotFoundException("NSP %s not found" % path)
+        raise BusErr.NspNotFoundException("NSP %s not found" % path)
 
 ###############################################################################
 
-IFACE_ACTIVE_CONNECTION = 'org.freedesktop.NetworkManager.Connection.Active'
-
 PRP_ACTIVE_CONNECTION_CONNECTION = "Connection"
 PRP_ACTIVE_CONNECTION_SPECIFIC_OBJECT = "SpecificObject"
 PRP_ACTIVE_CONNECTION_ID = "Id"
@@ -645,29 +1105,32 @@ PRP_ACTIVE_CONNECTION_DHCP6CONFIG = "Dhcp6Config"
 PRP_ACTIVE_CONNECTION_VPN = "Vpn"
 PRP_ACTIVE_CONNECTION_MASTER = "Master"
 
+PRP_VPN_CONNECTION_VPN_STATE = 'VpnState'
+PRP_VPN_CONNECTION_BANNER    = 'Banner'
+
 class ActiveConnection(ExportedObj):
 
     path_counter_next = 1
     path_prefix = "/org/freedesktop/NetworkManager/ActiveConnection/"
 
-    def __init__(self, device, connection, specific_object):
+    def __init__(self, device, con_inst, specific_object):
 
         ExportedObj.__init__(self, ExportedObj.create_path(ActiveConnection))
 
         self.device = device
-        self.conn = connection
+        self.con_inst = con_inst
+        self.is_vpn = con_inst.is_vpn()
 
         self._activation_id = None
 
-        conn_settings = self.conn.GetSettings()
-        s_con = conn_settings['connection']
+        s_con = con_inst.con_hash[NM.SETTING_CONNECTION_SETTING_NAME]
 
         props = {
-            PRP_ACTIVE_CONNECTION_CONNECTION:      ExportedObj.to_path(self.conn),
+            PRP_ACTIVE_CONNECTION_CONNECTION:      ExportedObj.to_path(con_inst),
             PRP_ACTIVE_CONNECTION_SPECIFIC_OBJECT: ExportedObj.to_path(specific_object),
-            PRP_ACTIVE_CONNECTION_ID:              s_con['id'],
-            PRP_ACTIVE_CONNECTION_UUID:            s_con['uuid'],
-            PRP_ACTIVE_CONNECTION_TYPE:            s_con['type'],
+            PRP_ACTIVE_CONNECTION_ID:              s_con[NM.SETTING_CONNECTION_ID],
+            PRP_ACTIVE_CONNECTION_UUID:            s_con[NM.SETTING_CONNECTION_UUID],
+            PRP_ACTIVE_CONNECTION_TYPE:            s_con[NM.SETTING_CONNECTION_TYPE],
             PRP_ACTIVE_CONNECTION_DEVICES:         ExportedObj.to_path_array([self.device]),
             PRP_ACTIVE_CONNECTION_STATE:           dbus.UInt32(NM.ActiveConnectionState.UNKNOWN),
             PRP_ACTIVE_CONNECTION_DEFAULT:         False,
@@ -676,12 +1139,21 @@ class ActiveConnection(ExportedObj):
             PRP_ACTIVE_CONNECTION_DEFAULT6:        False,
             PRP_ACTIVE_CONNECTION_IP6CONFIG:       ExportedObj.to_path(None),
             PRP_ACTIVE_CONNECTION_DHCP6CONFIG:     ExportedObj.to_path(None),
-            PRP_ACTIVE_CONNECTION_VPN:             False,
+            PRP_ACTIVE_CONNECTION_VPN:             self.is_vpn,
             PRP_ACTIVE_CONNECTION_MASTER:          ExportedObj.to_path(None),
         }
 
         self.dbus_interface_add(IFACE_ACTIVE_CONNECTION, props, ActiveConnection.PropertiesChanged)
 
+        if self.is_vpn:
+            props = {
+                PRP_VPN_CONNECTION_VPN_STATE: dbus.UInt32(NM.VpnConnectionState.UNKNOWN),
+                PRP_VPN_CONNECTION_BANNER:    '*** VPN connection %s ***' % (con_inst.get_id()),
+            }
+
+            self.dbus_interface_add(IFACE_VPN_CONNECTION, props, ActiveConnection.VpnPropertiesChanged)
+
+
     def _set_state(self, state, reason):
         state = dbus.UInt32(state)
         self._dbus_property_set(IFACE_ACTIVE_CONNECTION, PRP_ACTIVE_CONNECTION_STATE, state)
@@ -711,6 +1183,11 @@ class ActiveConnection(ExportedObj):
         assert self._activation_id is None
         self._activation_id = GLib.timeout_add(50, self._activation_step1)
 
+    @dbus.service.signal(IFACE_VPN_CONNECTION, signature='a{sv}')
+    def PropertiesChanged(self, changed):
+        pass
+    VpnPropertiesChanged = PropertiesChanged
+
     @dbus.service.signal(IFACE_ACTIVE_CONNECTION, signature='a{sv}')
     def PropertiesChanged(self, changed):
         pass
@@ -719,19 +1196,11 @@ class ActiveConnection(ExportedObj):
     def StateChanged(self, state, reason):
         pass
 
-###############################################################################
-
-IFACE_TEST = 'org.freedesktop.NetworkManager.LibnmGlibTest'
-IFACE_NM = 'org.freedesktop.NetworkManager'
-
-class PermissionDeniedException(dbus.DBusException):
-    _dbus_error_name = IFACE_NM + '.PermissionDenied'
-
-class UnknownDeviceException(dbus.DBusException):
-    _dbus_error_name = IFACE_NM + '.UnknownDevice'
+    @dbus.service.signal(IFACE_VPN_CONNECTION, signature='uu')
+    def VpnStateChanged(self, state, reason):
+        pass
 
-class UnknownConnectionException(dbus.DBusException):
-    _dbus_error_name = IFACE_NM + '.UnknownConnection'
+###############################################################################
 
 PRP_NM_DEVICES                   = 'Devices'
 PRP_NM_ALL_DEVICES               = 'AllDevices'
@@ -796,44 +1265,57 @@ class NetworkManager(ExportedObj):
 
     @dbus.service.method(dbus_interface=IFACE_NM, in_signature='s', out_signature='o')
     def GetDeviceByIpIface(self, ip_iface):
-        d = self.find_device_first(ip_iface = ip_iface, require = UnknownDeviceException)
+        d = self.find_device_first(ip_iface = ip_iface, require = BusErr.UnknownDeviceException)
         return ExportedObj.to_path(d)
 
     @dbus.service.method(dbus_interface=IFACE_NM, in_signature='ooo', out_signature='o')
     def ActivateConnection(self, conpath, devpath, specific_object):
         try:
-            connection = gl.settings.get_connection(conpath)
+            con_inst = gl.settings.get_connection(conpath)
         except Exception as e:
-            raise UnknownConnectionException("Connection not found")
+            raise BusErr.UnknownConnectionException("Connection not found")
 
-        hash = connection.GetSettings()
-        s_con = hash['connection']
+        con_hash = con_inst.con_hash
+        con_type = NmUtil.con_hash_get_type(con_hash)
 
         device = self.find_device_first(path = devpath)
-        if not device and s_con['type'] == 'vlan':
-            ifname = s_con['interface-name']
-            device = VlanDevice(ifname)
-            self.add_device(device)
         if not device:
-            raise UnknownDeviceException("No device found for the requested iface.")
+            if con_type == NM.SETTING_WIRED_SETTING_NAME:
+                device = self.find_device_first(dev_type = WiredDevice)
+            elif con_type == NM.SETTING_WIRELESS_SETTING_NAME:
+                device = self.find_device_first(dev_type = WifiDevice)
+            elif con_type == NM.SETTING_VLAN_SETTING_NAME:
+                ifname = con_hash[NM.SETTING_CONNECTION_SETTING_NAME]['interface-name']
+                device = VlanDevice(ifname)
+                self.add_device(device)
+            elif con_type == NM.SETTING_VPN_SETTING_NAME:
+                for ac in self.active_connections:
+                    if ac.is_vpn:
+                        continue
+                    if ac.device:
+                        device = ac.device
+                        break
+
+        if not device:
+            raise BusErr.UnknownDeviceException("No device found for the requested iface.")
 
         # See if we need secrets. For the moment, we only support WPA
-        if '802-11-wireless-security' in hash:
-            s_wsec = hash['802-11-wireless-security']
+        if '802-11-wireless-security' in con_hash:
+            s_wsec = con_hash['802-11-wireless-security']
             if (s_wsec['key-mgmt'] == 'wpa-psk' and 'psk' not in s_wsec):
-                secrets = gl.agent_manager.get_secrets(hash, conpath, '802-11-wireless-security')
+                secrets = gl.agent_manager.get_secrets(con_hash, conpath, '802-11-wireless-security')
                 if secrets is None:
-                    raise NoSecretsException("No secret agent available")
+                    raise BusErr.NoSecretsException("No secret agent available")
                 if '802-11-wireless-security' not in secrets:
-                    raise NoSecretsException("No secrets provided")
+                    raise BusErr.NoSecretsException("No secrets provided")
                 s_wsec = secrets['802-11-wireless-security']
                 if 'psk' not in s_wsec:
-                    raise NoSecretsException("No secrets provided")
+                    raise BusErr.NoSecretsException("No secrets provided")
 
-        ac = ActiveConnection(device, connection, None)
+        ac = ActiveConnection(device, con_inst, None)
         self.active_connection_add(ac)
 
-        if s_con['id'] == 'object-creation-failed-test':
+        if NmUtil.con_hash_get_id(con_hash) == 'object-creation-failed-test':
             # FIXME: this is not the right test, to delete the active-connection
             # before returning it. It's the wrong order of what NetworkManager
             # would do.
@@ -855,9 +1337,9 @@ class NetworkManager(ExportedObj):
         ac.unexport()
 
     @dbus.service.method(dbus_interface=IFACE_NM, in_signature='a{sa{sv}}oo', out_signature='oo')
-    def AddAndActivateConnection(self, connection, devpath, specific_object):
-        device = self.find_device_first(path = devpath, require = UnknownDeviceException)
-        conpath = gl.settings.AddConnection(connection)
+    def AddAndActivateConnection(self, con_hash, devpath, specific_object):
+        device = self.find_device_first(path = devpath, require = BusErr.UnknownDeviceException)
+        conpath = gl.settings.AddConnection(con_hash)
         return (conpath, self.ActivateConnection(conpath, devpath, specific_object))
 
     @dbus.service.method(dbus_interface=IFACE_NM, in_signature='o', out_signature='')
@@ -903,13 +1385,13 @@ class NetworkManager(ExportedObj):
 
     @dbus.service.method(dbus_interface=IFACE_NM, in_signature='', out_signature='u')
     def CheckConnectivity(self):
-        raise PermissionDeniedException("You fail")
+        raise BusErr.PermissionDeniedException("You fail")
 
     @dbus.service.signal(IFACE_NM, signature='o')
     def DeviceAdded(self, devpath):
         pass
 
-    def find_devices(self, ident = _DEFAULT_ARG, path = _DEFAULT_ARG, iface = _DEFAULT_ARG, ip_iface = _DEFAULT_ARG):
+    def find_devices(self, ident = _DEFAULT_ARG, path = _DEFAULT_ARG, iface = _DEFAULT_ARG, ip_iface = _DEFAULT_ARG, dev_type = _DEFAULT_ARG):
         r = None
         for d in self.devices:
             if ident is not _DEFAULT_ARG:
@@ -925,17 +1407,20 @@ class NetworkManager(ExportedObj):
                 # ignore iface/ip_iface distinction for now
                 if d.iface != ip_iface:
                     continue
+            if dev_type is not _DEFAULT_ARG:
+                if not isinstance(d, dev_type):
+                    continue
             yield d
 
-    def find_device_first(self, ident = _DEFAULT_ARG, path = _DEFAULT_ARG, iface = _DEFAULT_ARG, ip_iface = _DEFAULT_ARG, require = None):
+    def find_device_first(self, ident = _DEFAULT_ARG, path = _DEFAULT_ARG, iface = _DEFAULT_ARG, ip_iface = _DEFAULT_ARG, dev_type = _DEFAULT_ARG, require = None):
         r = None
-        for d in self.find_devices(ident = ident, path = path, iface = iface, ip_iface = ip_iface):
+        for d in self.find_devices(ident = ident, path = path, iface = iface, ip_iface = ip_iface, dev_type = dev_type):
             r = d
             break
         if r is None and require:
             if require is TestError:
                 raise TestError('Device not found')
-            raise UnknownDeviceException('Device not found')
+            raise BusErr.UnknownDeviceException('Device not found')
         return r
 
     def add_device(self, device):
@@ -946,15 +1431,21 @@ class NetworkManager(ExportedObj):
         self._dbus_property_set(IFACE_NM, PRP_NM_DEVICES, ExportedObj.to_path_array(self.devices))
         self._dbus_property_set(IFACE_NM, PRP_NM_ALL_DEVICES, ExportedObj.to_path_array(self.devices))
         self.DeviceAdded(ExportedObj.to_path(device))
+        device.start()
         return device
 
     def remove_device(self, device):
+        device.stop()
         self.devices.remove(device)
         self._dbus_property_set(IFACE_NM, PRP_NM_DEVICES, ExportedObj.to_path_array(self.devices))
         self._dbus_property_set(IFACE_NM, PRP_NM_ALL_DEVICES, ExportedObj.to_path_array(self.devices))
         self.DeviceRemoved(ExportedObj.to_path(device))
         device.unexport()
 
+    def devices_available_connections_update(self):
+        for d in self.devices:
+            d.available_connections_update()
+
     @dbus.service.signal(IFACE_NM, signature='o')
     def DeviceRemoved(self, devpath):
         pass
@@ -968,8 +1459,8 @@ class NetworkManager(ExportedObj):
         gl.mainloop.quit()
 
     @dbus.service.method(IFACE_TEST, in_signature='a{ss}', out_signature='a(sss)')
-    def FindConnections(self, args):
-        return [(c.path, c.get_uuid(), c.get_id()) for c in gl.settings.find_connections(**args)]
+    def FindConnections(self, selector_args):
+        return [(c.path, c.get_uuid(), c.get_id()) for c in gl.settings.find_connections(**selector_args)]
 
     @dbus.service.method(IFACE_TEST, in_signature='a(oa(sa(sv)))', out_signature='')
     def SetProperties(self, all_args):
@@ -1048,12 +1539,18 @@ class NetworkManager(ExportedObj):
         gl.settings.auto_remove_next_connection()
 
     @dbus.service.method(dbus_interface=IFACE_TEST, in_signature='a{sa{sv}}b', out_signature='o')
-    def AddConnection(self, connection, verify_connection):
-        return gl.settings.add_connection(connection, verify_connection)
+    def AddConnection(self, con_hash, do_verify_strict):
+        return gl.settings.add_connection(con_hash, do_verify_strict)
 
     @dbus.service.method(dbus_interface=IFACE_TEST, in_signature='sa{sa{sv}}b', out_signature='')
-    def UpdateConnection(self, path, connection, verify_connection):
-        return gl.settings.update_connection(connection, path, verify_connection)
+    def UpdateConnection(self, path, con_hash, do_verify_strict):
+        return gl.settings.update_connection(con_hash, path, do_verify_strict)
+
+    @dbus.service.method(dbus_interface=IFACE_TEST, in_signature='ba{ss}', out_signature='')
+    def ConnectionSetVisible(self, vis, selector_args):
+        cons = list(gl.settings.find_connections(**selector_args))
+        assert(len(cons) == 1)
+        cons[0].SetVisible(vis)
 
     @dbus.service.method(dbus_interface=IFACE_TEST, in_signature='', out_signature='')
     def Restart(self):
@@ -1063,100 +1560,67 @@ class NetworkManager(ExportedObj):
 
 ###############################################################################
 
-IFACE_CONNECTION = 'org.freedesktop.NetworkManager.Settings.Connection'
-
-class InvalidPropertyException(dbus.DBusException):
-    _dbus_error_name = IFACE_CONNECTION + '.InvalidProperty'
-
-class MissingPropertyException(dbus.DBusException):
-    _dbus_error_name = IFACE_CONNECTION + '.MissingProperty'
-
-class InvalidSettingException(dbus.DBusException):
-    _dbus_error_name = IFACE_CONNECTION + '.InvalidSetting'
-
-class MissingSettingException(dbus.DBusException):
-    _dbus_error_name = IFACE_CONNECTION + '.MissingSetting'
-
 PRP_CONNECTION_UNSAVED = 'Unsaved'
+PRP_CONNECTION_FILENAME = 'Filename'
 
 class Connection(ExportedObj):
-    def __init__(self, path_counter, settings, verify_connection=True):
+    def __init__(self, path_counter, con_hash, do_verify_strict=True):
 
         path = "/org/freedesktop/NetworkManager/Settings/Connection/%s" % (path_counter)
 
         ExportedObj.__init__(self, path)
 
-        if 'connection' not in settings:
-            settings['connection'] = { }
-        if self.get_id(settings) is None:
-            settings['connection']['id'] = 'connection-%s' % (path_counter)
-        if self.get_uuid(settings) is None:
-            settings['connection']['uuid'] = str(uuid.uuid3(uuid.NAMESPACE_URL, path))
-        self.verify(settings, verify_strict=verify_connection)
+        s_con = con_hash.get(NM.SETTING_CONNECTION_SETTING_NAME)
+        if s_con is None:
+            s_con = {}
+            con_hash[NM.SETTING_CONNECTION_SETTING_NAME] = s_con
+        if NmUtil.con_hash_get_id(con_hash) is None:
+            s_con[NM.SETTING_CONNECTION_ID] = 'connection-%s' % (path_counter)
+        if NmUtil.con_hash_get_uuid(con_hash) is None:
+            s_con[NM.SETTING_CONNECTION_UUID] = str(uuid.uuid3(uuid.NAMESPACE_URL, path))
+
+        NmUtil.con_hash_verify(con_hash, do_verify_strict=do_verify_strict)
 
         self.path = path
-        self.settings = settings
+        self.con_hash = con_hash
         self.visible = True
 
         props = {
             PRP_CONNECTION_UNSAVED: False,
+            PRP_CONNECTION_FILENAME: "/etc/NetworkManager/system-connections/" + self.get_id(),
         }
 
         self.dbus_interface_add(IFACE_CONNECTION, props)
 
-    def get_id(self, settings=None):
-        if settings is None:
-            settings = self.settings
-        if 'connection' in settings:
-            s_con = settings['connection']
-            if 'id' in s_con:
-                return s_con['id']
-        return None
+    def get_id(self):
+        return NmUtil.con_hash_get_id(self.con_hash)
 
-    def get_uuid(self, settings=None):
-        if settings is None:
-            settings = self.settings
-        if 'connection' in settings:
-            s_con = settings['connection']
-            if 'uuid' in s_con:
-                return s_con['uuid']
-        return None
+    def get_uuid(self):
+        return NmUtil.con_hash_get_uuid(self.con_hash)
 
-    def verify(self, settings=None, verify_strict=True):
-        if settings is None:
-            settings = self.settings;
-        if 'connection' not in settings:
-            raise MissingSettingException('connection: setting is required')
-        s_con = settings['connection']
-        if 'type' not in s_con:
-            raise MissingPropertyException('connection.type: property is required')
-        if 'uuid' not in s_con:
-            raise MissingPropertyException('connection.uuid: property is required')
-        if 'id' not in s_con:
-            raise MissingPropertyException('connection.id: property is required')
-
-        if not verify_strict:
-            return;
-        t = s_con['type']
-        if t not in ['802-3-ethernet', '802-11-wireless', 'vlan', 'wimax']:
-            raise InvalidPropertyException('connection.type: unsupported connection type "%s"' % (t))
+    def get_type(self):
+        return NmUtil.con_hash_get_type(self.con_hash)
+
+    def is_vpn(self):
+        return self.get_type() == NM.SETTING_VPN_SETTING_NAME
 
-    def update_connection(self, settings, verify_connection):
-        self.verify(settings, verify_strict=verify_connection)
+    def update_connection(self, con_hash, do_verify_strict):
+
+        NmUtil.con_hash_verify(con_hash, do_verify_strict = do_verify_strict)
 
         old_uuid = self.get_uuid()
-        new_uuid = self.get_uuid(settings)
+        new_uuid = NmUtil.con_hash_get_uuid(con_hash)
         if old_uuid != new_uuid:
-            raise InvalidPropertyException('connection.uuid: cannot change the uuid from %s to %s' % (old_uuid, new_uuid))
+            raise BusErr.InvalidPropertyException('connection.uuid: cannot change the uuid from %s to %s' % (old_uuid, new_uuid))
 
-        self.settings = settings;
+        self.con_hash = con_hash;
         self.Updated()
 
     @dbus.service.method(dbus_interface=IFACE_CONNECTION, in_signature='', out_signature='a{sa{sv}}')
     def GetSettings(self):
         if not self.visible:
-            raise PermissionDeniedException()
-        return self.settings
+            raise BusErr.PermissionDeniedException()
+        return self.con_hash
 
     @dbus.service.method(dbus_interface=IFACE_CONNECTION, in_signature='b', out_signature='')
     def SetVisible(self, vis):
@@ -1168,12 +1632,12 @@ class Connection(ExportedObj):
         gl.settings.delete_connection(self)
 
     @dbus.service.method(dbus_interface=IFACE_CONNECTION, in_signature='a{sa{sv}}', out_signature='')
-    def Update(self, settings):
-        self.update_connection(settings, True)
+    def Update(self, con_hash):
+        self.update_connection(con_hash, True)
 
     @dbus.service.method(dbus_interface=IFACE_CONNECTION, in_signature='a{sa{sv}}ua{sv}', out_signature='a{sv}')
-    def Update2(self, settings, flags, args):
-        self.update_connection(settings, True)
+    def Update2(self, con_hash, flags, args):
+        self.update_connection(con_hash, True)
         return []
 
     @dbus.service.signal(IFACE_CONNECTION, signature='')
@@ -1186,11 +1650,6 @@ class Connection(ExportedObj):
 
 ###############################################################################
 
-IFACE_SETTINGS = 'org.freedesktop.NetworkManager.Settings'
-
-class InvalidHostnameException(dbus.DBusException):
-    _dbus_error_name = IFACE_SETTINGS + '.InvalidHostname'
-
 PRP_SETTINGS_HOSTNAME = 'Hostname'
 PRP_SETTINGS_CAN_MODIFY = 'CanModify'
 PRP_SETTINGS_CONNECTIONS = 'Connections'
@@ -1218,8 +1677,17 @@ class Settings(ExportedObj):
     def get_connection(self, path):
         return self.connections[path]
 
+    def get_connections(self, stable_order = True):
+        cons = list(self.connections.values())
+        if stable_order:
+            cons.sort(key = lambda c: (Util.random_int(c.get_id()), Util.random_int(c.path)))
+        return cons
+
+    def get_connection_paths(self, stable_order = True):
+        return [c.path for c in self.get_connections(stable_order = stable_order)]
+
     def find_connections(self, path = None, con_id = None, con_uuid = None):
-        for c in self.connections.values():
+        for c in self.get_connections():
             if path is not None:
                 if c.path != path:
                     continue
@@ -1233,50 +1701,51 @@ class Settings(ExportedObj):
 
     @dbus.service.method(dbus_interface=IFACE_SETTINGS, in_signature='', out_signature='ao')
     def ListConnections(self):
-        return self.connections.keys()
+        return self.get_connection_paths()
 
     @dbus.service.method(dbus_interface=IFACE_SETTINGS, in_signature='a{sa{sv}}', out_signature='o')
-    def AddConnection(self, settings):
-        return self.add_connection(settings)
+    def AddConnection(self, con_hash):
+        return self.add_connection(con_hash)
 
-    def add_connection(self, settings, verify_connection=True):
+    def add_connection(self, con_hash, do_verify_strict=True):
         self.c_counter += 1
-        con = Connection(self.c_counter, settings, verify_connection)
+        con_inst = Connection(self.c_counter, con_hash, do_verify_strict)
 
-        uuid = con.get_uuid()
-        if uuid in [c.get_uuid() for c in self.connections.values()]:
-            raise InvalidSettingException('cannot add duplicate connection with uuid %s' % (uuid))
+        uuid = con_inst.get_uuid()
+        if uuid in [c.get_uuid() for c in self.get_connections(stable_order = False)]:
+            raise BusErr.InvalidSettingException('cannot add duplicate connection with uuid %s' % (uuid))
 
-        con.export()
-        self.connections[con.path] = con
-        self.NewConnection(con.path)
-        self._dbus_property_set(IFACE_SETTINGS, PRP_SETTINGS_CONNECTIONS, dbus.Array(self.connections.keys(), 'o'))
+        con_inst.export()
+        self.connections[con_inst.path] = con_inst
+        self.NewConnection(con_inst.path)
+        self._dbus_property_set(IFACE_SETTINGS, PRP_SETTINGS_CONNECTIONS, dbus.Array(self.get_connection_paths(), 'o'))
 
         if self.remove_next_connection:
             self.remove_next_connection = False
-            self.delete_connection(con)
+            self.delete_connection(con_inst)
 
-        return con.path
+        gl.manager.devices_available_connections_update()
 
-    def update_connection(self, connection, path=None, verify_connection=True):
-        if path is None:
-            path = connection.path
+        return con_inst.path
+
+    def update_connection(self, con_hash, path=None, do_verify_strict=True):
         if path not in self.connections:
-            raise UnknownConnectionException('Connection not found')
-        con = self.connections[path]
-        con.update_connection(connection, verify_connection)
+            raise BusErr.UnknownConnectionException('Connection not found')
+        self.connections[path].update_connection(con_hash, do_verify_strict)
+
+    def delete_connection(self, con_inst):
+        del self.connections[con_inst.path]
+        self._dbus_property_set(IFACE_SETTINGS, PRP_SETTINGS_CONNECTIONS, dbus.Array(self.get_connection_paths(), 'o'))
+        con_inst.Removed()
+        con_inst.unexport()
 
-    def delete_connection(self, connection):
-        del self.connections[connection.path]
-        self._dbus_property_set(IFACE_SETTINGS, PRP_SETTINGS_CONNECTIONS, dbus.Array(self.connections.keys(), 'o'))
-        connection.Removed()
-        connection.unexport()
+        gl.manager.devices_available_connections_update()
 
     @dbus.service.method(dbus_interface=IFACE_SETTINGS, in_signature='s', out_signature='')
     def SaveHostname(self, hostname):
         # Arbitrary requirement to test error handling
         if hostname.find('.') == -1:
-            raise InvalidHostnameException()
+            raise BusErr.InvalidHostnameException()
         self._dbus_property_set(IFACE_SETTINGS, PRP_SETTINGS_HOSTNAME, hostname)
 
     @dbus.service.signal(IFACE_SETTINGS, signature='o')
@@ -1293,7 +1762,349 @@ class Settings(ExportedObj):
 
 ###############################################################################
 
-IFACE_DNS_MANAGER = 'org.freedesktop.NetworkManager.DnsManager'
+PRP_IP4_CONFIG_ADDRESSES   = 'Addresses'
+PRP_IP4_CONFIG_ADDRESSDATA = 'AddressData'
+PRP_IP4_CONFIG_GATEWAY     = 'Gateway'
+PRP_IP4_CONFIG_ROUTES      = 'Routes'
+PRP_IP4_CONFIG_ROUTEDATA   = 'RouteData'
+PRP_IP4_CONFIG_NAMESERVERS = 'Nameservers'
+PRP_IP4_CONFIG_DOMAINS     = 'Domains'
+PRP_IP4_CONFIG_SEARCHES    = 'Searches'
+PRP_IP4_CONFIG_DNSOPTIONS  = 'DnsOptions'
+PRP_IP4_CONFIG_DNSPRIORITY = 'DnsPriority'
+PRP_IP4_CONFIG_WINSSERVERS = 'WinsServers'
+
+class IP4Config(ExportedObj):
+
+    path_counter_next = 1
+    path_prefix = "/org/freedesktop/NetworkManager/IP4Config/"
+
+    def __init__(self, generate_seed = _DEFAULT_ARG):
+        ExportedObj.__init__(self, ExportedObj.create_path(IP4Config))
+
+        if generate_seed == _DEFAULT_ARG:
+            generate_seed = self.path
+
+        props = self._props_generate(generate_seed)
+        self.dbus_interface_add(IFACE_IP4_CONFIG, props, IP4Config.PropertiesChanged)
+        self.export()
+
+    def _props_generate(self, generate_seed):
+        seed = Util.RandomSeed.wrap(generate_seed)
+
+        gateway = None
+        if seed:
+            if Util.random_bool(seed):
+                gateway = Util.random_ip(seed, net = '192.168.0.0/16')[0]
+
+        addrs = []
+        if seed:
+            for n in range(0, Util.random_int(seed, 4)):
+                a = {
+                    'addr':    Util.random_ip(seed, net = '192.168.0.0/16')[0],
+                    'prefix':  Util.random_int(seed, 17, 32),
+                    'gateway': gateway if n == 0 else None,
+                }
+                addrs.append(a)
+
+        routes = []
+        if seed:
+            for n in range(0, Util.random_int(seed, 4)):
+                a = {
+                    'dest':     Util.random_ip(seed, net = '192.168.0.0/16')[0],
+                    'prefix':   Util.random_int(seed, 17, 32),
+                    'next-hop': None if (Util.random_int(seed) % 3 == 0) else Util.random_ip(seed, net = '192.168.0.0/16')[0],
+                    'metric':   -1 if (Util.random_int(seed) % 3 == 0) else Util.random_int(seed, 0, 0xFFFFFFFF),
+                }
+                routes.append(a)
+
+        nameservers = []
+        if seed:
+            nameservers = list([Util.random_ip(seed, net = '192.168.0.0/16')[0] for x in range(Util.random_int(seed, 4))])
+
+        names_selection = ['foo1.bar', 'foo2.bar', 'foo3.bar', 'foo4.bar', 'fo.o.bar', 'fo.x.y'];
+
+        domains = []
+        if seed:
+            domains = Util.random_subset(seed, ['dom4.' + s for s in names_selection])
+
+        searches = []
+        if seed:
+            domains = Util.random_subset(seed, ['sear4.' + s for s in names_selection])
+
+        dnsoptions = []
+        if seed:
+            dnsoptions = Util.random_subset(seed, ['dns4-opt1', 'dns4-opt2', 'dns4-opt3', 'dns4-opt4'])
+
+        dnspriority = 0
+        if seed:
+            dnspriority = Util.random_int(seed, -10000, 10000)
+
+        winsservers = []
+        if seed:
+            winsservers = list([Util.random_ip(seed, net = '192.168.0.0/16')[0] for x in range(Util.random_int(seed, 4))])
+
+        return {
+            PRP_IP4_CONFIG_ADDRESSES:   dbus.Array([
+                                                [ Util.ip4_addr_ne32(a['addr']),
+                                                  a['prefix'],
+                                                  Util.ip4_addr_ne32(a['gateway']) if a['gateway'] else 0
+                                                ] for a in addrs
+                                            ],
+                                            'au'),
+            PRP_IP4_CONFIG_ADDRESSDATA: dbus.Array([
+                                                dbus.Dictionary(collections.OrderedDict( [ ('address', dbus.String(a['addr'])),
+                                                                                           ('prefix',  dbus.UInt32(a['prefix']))] + \
+                                                                                        ([ ('gateway', dbus.String(a['gateway'])) ] if a['gateway'] else [])),
+                                                                'sv')
+                                                for a in addrs
+                                            ],
+                                            'a{sv}'),
+            PRP_IP4_CONFIG_GATEWAY:     dbus.String(gateway) if gateway else "",
+            PRP_IP4_CONFIG_ROUTES:      dbus.Array([
+                                                [ Util.ip4_addr_ne32(a['dest']),
+                                                  a['prefix'],
+                                                  Util.ip4_addr_ne32(a['next-hop'] or '0.0.0.0'),
+                                                  max(a['metric'], 0)
+                                                ] for a in routes
+                                            ],
+                                            'au'),
+            PRP_IP4_CONFIG_ROUTEDATA:   dbus.Array([
+                                                dbus.Dictionary(collections.OrderedDict( [ ('dest',     dbus.String(a['dest'])),
+                                                                                           ('prefix',   dbus.UInt32(a['prefix']))] + \
+                                                                                        ([ ('next-hop', dbus.String(a['next-hop'])) ] if a['next-hop'] else []) + \
+                                                                                        ([ ('metric',   dbus.UInt32(a['metric'])) ] if a['metric'] != -1 else [])),
+                                                                'sv')
+                                                for a in routes
+                                            ],
+                                            'a{sv}'),
+            PRP_IP4_CONFIG_NAMESERVERS: dbus.Array([dbus.UInt32(Util.ip4_addr_ne32(n)) for n in nameservers], 'u'),
+            PRP_IP4_CONFIG_DOMAINS:     dbus.Array(domains, 's'),
+            PRP_IP4_CONFIG_SEARCHES:    dbus.Array(searches, 's'),
+            PRP_IP4_CONFIG_DNSOPTIONS:  dbus.Array(dnsoptions, 's'),
+            PRP_IP4_CONFIG_DNSPRIORITY: dbus.Int32(dnspriority),
+            PRP_IP4_CONFIG_WINSSERVERS: dbus.Array([dbus.UInt32(Util.ip4_addr_ne32(n)) for n in winsservers], 'u'),
+        }
+
+    def props_regenerate(self, generate_seed):
+        props = self.generate_props(generate_seed)
+        for k,v in props.items():
+            self._dbus_property_set(IFACE_IP4_CONFIG, k, v)
+
+    @dbus.service.signal(IFACE_IP4_CONFIG, signature='a{sv}')
+    def PropertiesChanged(self, path):
+        pass
+
+###############################################################################
+
+PRP_IP6_CONFIG_ADDRESSES   = "Addresses"
+PRP_IP6_CONFIG_ADDRESSDATA = "AddressData"
+PRP_IP6_CONFIG_GATEWAY     = "Gateway"
+PRP_IP6_CONFIG_ROUTES      = "Routes"
+PRP_IP6_CONFIG_ROUTEDATA   = "RouteData"
+PRP_IP6_CONFIG_NAMESERVERS = "Nameservers"
+PRP_IP6_CONFIG_DOMAINS     = "Domains"
+PRP_IP6_CONFIG_SEARCHES    = "Searches"
+PRP_IP6_CONFIG_DNSOPTIONS  = "DnsOptions"
+PRP_IP6_CONFIG_DNSPRIORITY = "DnsPriority"
+
+class IP6Config(ExportedObj):
+
+    path_counter_next = 1
+    path_prefix = "/org/freedesktop/NetworkManager/IP6Config/"
+
+    def __init__(self, generate_seed = _DEFAULT_ARG):
+        ExportedObj.__init__(self, ExportedObj.create_path(IP6Config))
+
+        if generate_seed == _DEFAULT_ARG:
+            generate_seed = self.path
+
+        props = self._props_generate(generate_seed)
+        self.dbus_interface_add(IFACE_IP6_CONFIG, props, IP6Config.PropertiesChanged)
+        self.export()
+
+    def _props_generate(self, generate_seed):
+        seed = Util.RandomSeed.wrap(generate_seed)
+
+        gateway = None
+        if seed:
+            if Util.random_bool(seed):
+                gateway = Util.random_ip(seed, net = '2001:a::/64')[0]
+
+        addrs = []
+        if seed:
+            for n in range(0, Util.random_int(seed, 4)):
+                a = {
+                    'addr':    Util.random_ip(seed, net = '2001:a::/64')[0],
+                    'prefix':  Util.random_int(seed, 65, 128),
+                    'gateway': gateway if n == 0 else None,
+                }
+                addrs.append(a)
+
+        routes = []
+        if seed:
+            for n in range(0, Util.random_int(seed, 4)):
+                a = {
+                    'dest':     Util.random_ip(seed, net = '2001:a::/64')[0],
+                    'prefix':   Util.random_int(seed, 65, 128),
+                    'next-hop': None if (Util.random_int(seed) % 3 == 0) else Util.random_ip(seed, net = '2001:a::/64')[0],
+                    'metric':   -1 if (Util.random_int(seed) % 3 == 0) else Util.random_int(seed, 0, 0xFFFFFFFF),
+                }
+                routes.append(a)
+
+        nameservers = []
+        if seed:
+            nameservers = list([Util.random_ip(seed, net = '2001:a::/64')[0] for x in range(Util.random_int(seed, 4))])
+
+        names_selection = ['foo1.bar', 'foo2.bar', 'foo3.bar', 'foo4.bar', 'fo.o.bar', 'fo.x.y'];
+
+        domains = []
+        if seed:
+            domains = Util.random_subset(seed, ['dom6.' + s for s in names_selection])
+
+        searches = []
+        if seed:
+            domains = Util.random_subset(seed, ['sear6.' + s for s in names_selection])
+
+        dnsoptions = []
+        if seed:
+            dnsoptions = Util.random_subset(seed, ['dns6-opt1', 'dns6-opt2', 'dns6-opt3', 'dns6-opt4'])
+
+        dnspriority = 0
+        if seed:
+            dnspriority = Util.random_int(seed, -10000, 10000)
+
+        return {
+            PRP_IP6_CONFIG_ADDRESSES:   dbus.Array([
+                                                [ Util.ip6_addr_ay(a['addr']),
+                                                  a['prefix'],
+                                                  Util.ip6_addr_ay(a['gateway'] or '::')
+                                                ] for a in addrs
+                                            ],
+                                            '(ayuay)'),
+            PRP_IP6_CONFIG_ADDRESSDATA: dbus.Array([
+                                                dbus.Dictionary(collections.OrderedDict( [ ('address', dbus.String(a['addr'])),
+                                                                                           ('prefix',  dbus.UInt32(a['prefix']))] + \
+                                                                                        ([ ('gateway', dbus.String(a['gateway'])) ] if a['gateway'] else [])),
+                                                                'sv')
+                                                for a in addrs
+                                            ],
+                                            'a{sv}'),
+            PRP_IP6_CONFIG_GATEWAY:     dbus.String(gateway) if gateway else "",
+            PRP_IP6_CONFIG_ROUTES:      dbus.Array([
+                                                [ Util.ip6_addr_ay(a['dest']),
+                                                  a['prefix'],
+                                                  Util.ip6_addr_ay(a['next-hop'] or '::'),
+                                                  max(a['metric'], 0)
+                                                ] for a in routes
+                                            ],
+                                            '(ayuayu)'),
+            PRP_IP6_CONFIG_ROUTEDATA:   dbus.Array([
+                                                dbus.Dictionary(collections.OrderedDict( [ ('dest',     dbus.String(a['dest'])),
+                                                                                           ('prefix',   dbus.UInt32(a['prefix']))] + \
+                                                                                        ([ ('next-hop', dbus.String(a['next-hop'])) ] if a['next-hop'] else []) + \
+                                                                                        ([ ('metric',   dbus.UInt32(a['metric'])) ] if a['metric'] != -1 else [])),
+                                                                'sv')
+                                                for a in routes
+                                            ],
+                                            'a{sv}'),
+            PRP_IP6_CONFIG_NAMESERVERS: dbus.Array([Util.ip6_addr_ay(n) for n in nameservers], 'ay'),
+            PRP_IP6_CONFIG_DOMAINS:     dbus.Array(domains, 's'),
+            PRP_IP6_CONFIG_SEARCHES:    dbus.Array(searches, 's'),
+            PRP_IP6_CONFIG_DNSOPTIONS:  dbus.Array(dnsoptions, 's'),
+            PRP_IP6_CONFIG_DNSPRIORITY: dbus.Int32(dnspriority),
+        }
+
+    def props_regenerate(self, generate_seed):
+        props = self.generate_props(generate_seed)
+        for k,v in props.items():
+            self._dbus_property_set(IFACE_IP6_CONFIG, k, v)
+
+    @dbus.service.signal(IFACE_IP6_CONFIG, signature='a{sv}')
+    def PropertiesChanged(self, path):
+        pass
+
+###############################################################################
+
+PRP_DHCP4_CONFIG_OPTIONS   = 'Options'
+
+class Dhcp4Config(ExportedObj):
+
+    path_counter_next = 1
+    path_prefix = "/org/freedesktop/NetworkManager/DHCP4Config/"
+
+    def __init__(self, generate_seed = _DEFAULT_ARG):
+        ExportedObj.__init__(self, ExportedObj.create_path(Dhcp4Config))
+
+        if generate_seed == _DEFAULT_ARG:
+            generate_seed = self.path
+
+        props = self._props_generate(generate_seed)
+        self.dbus_interface_add(IFACE_DHCP4_CONFIG, props, Dhcp4Config.PropertiesChanged)
+        self.export()
+
+    def _props_generate(self, generate_seed):
+        seed = Util.RandomSeed.wrap(generate_seed)
+
+        options = []
+        if seed:
+            options = Util.random_subset(seed, [('dhcp-4-opt-' + str(i), 'val-' + str(i)) for i in range(10)])
+
+        return {
+            PRP_DHCP4_CONFIG_OPTIONS: dbus.Dictionary(collections.OrderedDict(options),
+                                                      'sv')
+        }
+
+    def props_regenerate(self, generate_seed):
+        props = self.generate_props(generate_seed)
+        for k,v in props.items():
+            self._dbus_property_set(IFACE_DHCP4_CONFIG, k, v)
+
+    @dbus.service.signal(IFACE_DHCP4_CONFIG, signature='a{sv}')
+    def PropertiesChanged(self, path):
+        pass
+
+###############################################################################
+
+PRP_DHCP6_CONFIG_OPTIONS   = 'Options'
+
+class Dhcp6Config(ExportedObj):
+
+    path_counter_next = 1
+    path_prefix = "/org/freedesktop/NetworkManager/DHCP6Config/"
+
+    def __init__(self, generate_seed = _DEFAULT_ARG):
+        ExportedObj.__init__(self, ExportedObj.create_path(Dhcp6Config))
+
+        if generate_seed == _DEFAULT_ARG:
+            generate_seed = self.path
+
+        props = self._props_generate(generate_seed)
+        self.dbus_interface_add(IFACE_DHCP6_CONFIG, props, Dhcp6Config.PropertiesChanged)
+        self.export()
+
+    def _props_generate(self, generate_seed):
+        seed = Util.RandomSeed.wrap(generate_seed)
+
+        options = []
+        if seed:
+            options = Util.random_subset(seed, [('dhcp-6-opt-' + str(i), 'val-' + str(i)) for i in range(10)])
+
+        return {
+            PRP_DHCP4_CONFIG_OPTIONS: dbus.Dictionary(collections.OrderedDict(options),
+                                                      'sv')
+        }
+
+    def props_regenerate(self, generate_seed):
+        props = self.generate_props(generate_seed)
+        for k,v in props.items():
+            self._dbus_property_set(IFACE_DHCP6_CONFIG, k, v)
+
+    @dbus.service.signal(IFACE_DHCP6_CONFIG, signature='a{sv}')
+    def PropertiesChanged(self, path):
+        pass
+
+###############################################################################
 
 PRP_DNS_MANAGER_MODE          = 'Mode'
 PRP_DNS_MANAGER_RC_MANAGER    = 'RcManager'
@@ -1323,21 +2134,12 @@ class DnsManager(ExportedObj):
 
 ###############################################################################
 
-IFACE_AGENT_MANAGER = 'org.freedesktop.NetworkManager.AgentManager'
-IFACE_AGENT = 'org.freedesktop.NetworkManager.SecretAgent'
-
 PATH_SECRET_AGENT = '/org/freedesktop/NetworkManager/SecretAgent'
 
 FLAG_ALLOW_INTERACTION = 0x1
 FLAG_REQUEST_NEW = 0x2
 FLAG_USER_REQUESTED = 0x4
 
-class NoSecretsException(dbus.DBusException):
-    _dbus_error_name = IFACE_AGENT_MANAGER + '.NoSecrets'
-
-class UserCanceledException(dbus.DBusException):
-    _dbus_error_name = IFACE_AGENT_MANAGER + '.UserCanceled'
-
 class AgentManager(dbus.service.Object):
     def __init__(self):
         dbus.service.Object.__init__(self, gl.bus, "/org/freedesktop/NetworkManager/AgentManager")
@@ -1361,7 +2163,7 @@ class AgentManager(dbus.service.Object):
     def Unregister(self, sender=None):
         del self.agents[sender]
 
-    def get_secrets(self, connection, path, setting_name):
+    def get_secrets(self, con_hash, path, setting_name):
         if len(self.agents) == 0:
             return None
 
@@ -1369,21 +2171,19 @@ class AgentManager(dbus.service.Object):
         for sender in self.agents:
             agent = self.agents[sender]
             try:
-                secrets = agent.GetSecrets(connection, path, setting_name,
+                secrets = agent.GetSecrets(con_hash, path, setting_name,
                                            dbus.Array([], 's'),
                                            FLAG_ALLOW_INTERACTION | FLAG_USER_REQUESTED,
                                            dbus_interface=IFACE_AGENT)
                 break
             except dbus.DBusException as e:
                 if e.get_dbus_name() == IFACE_AGENT + '.UserCanceled':
-                    raise UserCanceledException('User canceled')
+                    raise BusErr.UserCanceledException('User canceled')
                 continue
         return secrets
 
 ###############################################################################
 
-IFACE_OBJECT_MANAGER = 'org.freedesktop.DBus.ObjectManager'
-
 class ObjectManager(dbus.service.Object):
     def __init__(self, object_path):
         dbus.service.Object.__init__(self, gl.bus, object_path)