summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am3
-rw-r--r--Makefile.in14
-rw-r--r--NEWS20
-rw-r--r--TODO55
-rw-r--r--aclocal.m41
-rw-r--r--callouts/Makefile.in11
-rw-r--r--callouts/nm-dispatcher-action.c6
-rw-r--r--callouts/tests/Makefile.in11
-rw-r--r--cli/Makefile.in11
-rw-r--r--cli/src/Makefile.in11
-rw-r--r--cli/src/common.c198
-rw-r--r--cli/src/common.h4
-rw-r--r--cli/src/connections.c260
-rw-r--r--cli/src/devices.c723
-rw-r--r--cli/src/network-manager.c158
-rw-r--r--cli/src/settings.c64
-rw-r--r--cli/src/settings.h2
-rw-r--r--cli/src/utils.c38
-rw-r--r--cli/src/utils.h2
-rwxr-xr-xconfigure372
-rw-r--r--configure.ac27
-rw-r--r--data/Makefile.in11
-rw-r--r--docs/Makefile.in11
-rw-r--r--docs/api/Makefile.in11
-rw-r--r--docs/api/html/NetworkManager.devhelp228
-rw-r--r--docs/api/html/index.html32
-rw-r--r--docs/api/html/ix01.html2
-rw-r--r--docs/api/html/ref-migrating.html58
-rw-r--r--docs/api/html/ref-settings.html48
-rw-r--r--docs/api/html/spec.html95
-rw-r--r--docs/api/settings-spec.xml6
-rw-r--r--docs/api/spec.html95
-rw-r--r--docs/api/version.xml2
-rw-r--r--docs/libnm-glib/Makefile.am1
-rw-r--r--docs/libnm-glib/Makefile.in12
-rw-r--r--docs/libnm-glib/html/NMDevice.html212
-rw-r--r--docs/libnm-glib/html/NMDeviceBond.html287
-rw-r--r--docs/libnm-glib/html/NMDeviceBt.html74
-rw-r--r--docs/libnm-glib/html/NMDeviceEthernet.html68
-rw-r--r--docs/libnm-glib/html/NMDeviceInfiniband.html293
-rw-r--r--docs/libnm-glib/html/NMDeviceModem.html62
-rw-r--r--docs/libnm-glib/html/NMDeviceOlpcMesh.html324
-rw-r--r--docs/libnm-glib/html/NMDeviceVlan.html333
-rw-r--r--docs/libnm-glib/html/NMDeviceWifi.html82
-rw-r--r--docs/libnm-glib/html/NMDeviceWimax.html72
-rw-r--r--docs/libnm-glib/html/NMObject.html109
-rw-r--r--docs/libnm-glib/html/NMRemoteConnection.html67
-rw-r--r--docs/libnm-glib/html/NMSecretAgent.html42
-rw-r--r--docs/libnm-glib/html/NMWimaxNsp.html4
-rw-r--r--docs/libnm-glib/html/api-index-full.html539
-rw-r--r--docs/libnm-glib/html/ch02.html14
-rw-r--r--docs/libnm-glib/html/index.html14
-rw-r--r--docs/libnm-glib/html/index.sgml169
-rw-r--r--docs/libnm-glib/html/libnm-glib-NMVPNPlugin.html52
-rw-r--r--docs/libnm-glib/html/libnm-glib.devhelp2139
-rw-r--r--docs/libnm-glib/html/object-tree.html8
-rw-r--r--docs/libnm-glib/libnm-glib-docs.xml4
-rw-r--r--docs/libnm-glib/libnm-glib-sections.txt188
-rw-r--r--docs/libnm-glib/tmpl/nm-device-adsl.sgml93
-rw-r--r--docs/libnm-glib/tmpl/nm-device-bond.sgml26
-rw-r--r--docs/libnm-glib/tmpl/nm-device-bt.sgml28
-rw-r--r--docs/libnm-glib/tmpl/nm-device-ethernet.sgml27
-rw-r--r--docs/libnm-glib/tmpl/nm-device-infiniband-bindings.sgml29
-rw-r--r--docs/libnm-glib/tmpl/nm-device-infiniband.sgml27
-rw-r--r--docs/libnm-glib/tmpl/nm-device-modem.sgml26
-rw-r--r--docs/libnm-glib/tmpl/nm-device-olpc-mesh.sgml25
-rw-r--r--docs/libnm-glib/tmpl/nm-device-vlan.sgml27
-rw-r--r--docs/libnm-glib/tmpl/nm-device-wifi.sgml29
-rw-r--r--docs/libnm-glib/tmpl/nm-device-wimax.sgml27
-rw-r--r--docs/libnm-glib/tmpl/nm-device.sgml83
-rw-r--r--docs/libnm-glib/tmpl/nm-exported-connection-bindings.sgml213
-rw-r--r--docs/libnm-glib/tmpl/nm-exported-connection-glue.sgml247
-rw-r--r--docs/libnm-glib/tmpl/nm-object.sgml34
-rw-r--r--docs/libnm-glib/tmpl/nm-secret-agent-glue.sgml240
-rw-r--r--docs/libnm-glib/tmpl/nm-secret-agent.sgml17
-rw-r--r--docs/libnm-glib/tmpl/nm-settings-system-bindings.sgml120
-rw-r--r--docs/libnm-glib/tmpl/nm-vpn-plugin.sgml22
-rw-r--r--docs/libnm-util/Makefile.in11
-rw-r--r--docs/libnm-util/html/NMConnection.html48
-rw-r--r--docs/libnm-util/html/NMSetting.html7
-rw-r--r--docs/libnm-util/html/NMSettingBond.html547
-rw-r--r--docs/libnm-util/html/NMSettingConnection.html4
-rw-r--r--docs/libnm-util/html/NMSettingInfiniband.html318
-rw-r--r--docs/libnm-util/html/NMSettingOlpcMesh.html4
-rw-r--r--docs/libnm-util/html/NMSettingPPP.html288
-rw-r--r--docs/libnm-util/html/NMSettingPPPOE.html34
-rw-r--r--docs/libnm-util/html/NMSettingVlan.html708
-rw-r--r--docs/libnm-util/html/NMSettingWimax.html4
-rw-r--r--docs/libnm-util/html/NMSettingWireless.html43
-rw-r--r--docs/libnm-util/html/NMSettingWirelessSecurity.html8
-rw-r--r--docs/libnm-util/html/api-index-full.html292
-rw-r--r--docs/libnm-util/html/ch01.html11
-rw-r--r--docs/libnm-util/html/index.html9
-rw-r--r--docs/libnm-util/html/index.sgml118
-rw-r--r--docs/libnm-util/html/libnm-util-nm-utils.html37
-rw-r--r--docs/libnm-util/html/libnm-util.devhelp295
-rw-r--r--docs/libnm-util/html/object-tree.html18
-rw-r--r--docs/libnm-util/libnm-util-docs.sgml3
-rw-r--r--docs/libnm-util/libnm-util-sections.txt44
-rw-r--r--docs/libnm-util/libnm-util.types2
-rw-r--r--docs/libnm-util/tmpl/libnm-util-unused.sgml260
-rw-r--r--docs/libnm-util/tmpl/nm-connection.sgml9
-rw-r--r--docs/libnm-util/tmpl/nm-setting-wireless.sgml21
-rw-r--r--examples/C/Makefile.in11
-rw-r--r--examples/C/glib/Makefile.in11
-rw-r--r--examples/C/qt/Makefile.in11
-rw-r--r--examples/Makefile.in11
-rw-r--r--examples/python/Makefile.am4
-rw-r--r--examples/python/Makefile.in15
-rw-r--r--examples/ruby/Makefile.in11
-rw-r--r--examples/shell/Makefile.in11
-rw-r--r--include/Makefile.in11
-rw-r--r--include/NetworkManager.h6
-rw-r--r--include/NetworkManagerVPN.h91
-rw-r--r--include/nm-glib-compat.h10
-rw-r--r--include/nm-settings-flags.h1
-rw-r--r--include/nm-version.h2
-rw-r--r--initscript/Arch/Makefile.in11
-rw-r--r--initscript/Debian/Makefile.in11
-rw-r--r--initscript/Gentoo/Makefile.in11
-rw-r--r--initscript/Makefile.in11
-rw-r--r--initscript/Mandriva/Makefile.in11
-rw-r--r--initscript/RedHat/Makefile.in11
-rw-r--r--initscript/SUSE/Makefile.in11
-rw-r--r--initscript/Slackware/Makefile.in11
-rw-r--r--initscript/linexa/Makefile.in11
-rw-r--r--initscript/paldo/Makefile.in11
-rw-r--r--introspection/Makefile.am1
-rw-r--r--introspection/Makefile.in12
-rw-r--r--introspection/all.xml.in1
-rw-r--r--introspection/nm-device-adsl.xml21
-rw-r--r--introspection/nm-device-wifi.xml13
-rw-r--r--introspection/nm-device.xml23
-rw-r--r--introspection/nm-secret-agent.xml8
-rw-r--r--introspection/nm-vpn-plugin.xml50
-rw-r--r--libnm-glib/Makefile.am7
-rw-r--r--libnm-glib/Makefile.in38
-rw-r--r--libnm-glib/libnm-glib.ver11
-rw-r--r--libnm-glib/nm-access-point.c14
-rw-r--r--libnm-glib/nm-access-point.h1
-rw-r--r--libnm-glib/nm-active-connection.c14
-rw-r--r--libnm-glib/nm-client.c243
-rw-r--r--libnm-glib/nm-device-adsl.c245
-rw-r--r--libnm-glib/nm-device-adsl.h77
-rw-r--r--libnm-glib/nm-device-bond.c9
-rw-r--r--libnm-glib/nm-device-bt.c14
-rw-r--r--libnm-glib/nm-device-ethernet.c15
-rw-r--r--libnm-glib/nm-device-infiniband.c9
-rw-r--r--libnm-glib/nm-device-modem.c15
-rw-r--r--libnm-glib/nm-device-olpc-mesh.c14
-rw-r--r--libnm-glib/nm-device-vlan.c9
-rw-r--r--libnm-glib/nm-device-wifi.c14
-rw-r--r--libnm-glib/nm-device-wimax.c21
-rw-r--r--libnm-glib/nm-device.c177
-rw-r--r--libnm-glib/nm-device.h7
-rw-r--r--libnm-glib/nm-dhcp4-config.c2
-rw-r--r--libnm-glib/nm-dhcp6-config.c2
-rw-r--r--libnm-glib/nm-glib-enum-types.c41
-rw-r--r--libnm-glib/nm-glib-enum-types.h4
-rw-r--r--libnm-glib/nm-glib-marshal.c45
-rw-r--r--libnm-glib/nm-glib-marshal.h14
-rw-r--r--libnm-glib/nm-ip4-config.c2
-rw-r--r--libnm-glib/nm-ip6-config.c2
-rw-r--r--libnm-glib/nm-object-cache.c25
-rw-r--r--libnm-glib/nm-object-cache.h1
-rw-r--r--libnm-glib/nm-object.c112
-rw-r--r--libnm-glib/nm-object.h27
-rw-r--r--libnm-glib/nm-remote-connection.c11
-rw-r--r--libnm-glib/nm-remote-connection.h30
-rw-r--r--libnm-glib/nm-remote-settings.c138
-rw-r--r--libnm-glib/nm-secret-agent.c42
-rw-r--r--libnm-glib/nm-secret-agent.h7
-rw-r--r--libnm-glib/nm-vpn-connection.c2
-rw-r--r--libnm-glib/nm-vpn-plugin-ui-interface.h1
-rw-r--r--libnm-glib/nm-vpn-plugin-utils.c3
-rw-r--r--libnm-glib/nm-vpn-plugin.c400
-rw-r--r--libnm-glib/nm-vpn-plugin.h48
-rw-r--r--libnm-glib/nm-wimax-nsp.c14
-rw-r--r--libnm-glib/tests/Makefile.in11
-rw-r--r--libnm-util/Makefile.am5
-rw-r--r--libnm-util/Makefile.in28
-rw-r--r--libnm-util/libnm-util.ver13
-rw-r--r--libnm-util/nm-connection.c25
-rw-r--r--libnm-util/nm-connection.h2
-rw-r--r--libnm-util/nm-setting-adsl.c461
-rw-r--r--libnm-util/nm-setting-adsl.h100
-rw-r--r--libnm-util/nm-setting-bluetooth.c2
-rw-r--r--libnm-util/nm-setting-bond.c14
-rw-r--r--libnm-util/nm-setting-ip6-config.c20
-rw-r--r--libnm-util/nm-setting-ppp.c36
-rw-r--r--libnm-util/nm-setting-pppoe.c4
-rw-r--r--libnm-util/nm-setting-vlan.c5
-rw-r--r--libnm-util/nm-setting-wireless-security.c2
-rw-r--r--libnm-util/nm-setting-wireless.c47
-rw-r--r--libnm-util/nm-setting-wireless.h4
-rw-r--r--libnm-util/nm-utils-enum-types.c21
-rw-r--r--libnm-util/nm-utils-enum-types.h2
-rw-r--r--libnm-util/nm-utils.c4
-rw-r--r--libnm-util/tests/Makefile.in11
-rw-r--r--libnm-util/tests/certs/Makefile.in11
-rw-r--r--libnm-util/tests/test-general.c2
-rw-r--r--m4/intltool.m473
-rw-r--r--m4/vapigen.m488
-rw-r--r--man/Makefile.in11
-rw-r--r--man/nmcli.1285
-rw-r--r--man/nmcli.1.in285
-rw-r--r--po/Makefile.in.in13
-rw-r--r--po/POTFILES.in1
-rw-r--r--po/de.po1810
-rw-r--r--po/eo.po1712
-rw-r--r--po/gl.po1689
-rw-r--r--po/id.po1995
-rw-r--r--po/lt.po2177
-rw-r--r--po/pl.po1424
-rw-r--r--po/sl.po1771
-rw-r--r--po/sv.po2294
-rw-r--r--policy/Makefile.in11
-rw-r--r--policy/org.freedesktop.NetworkManager.policy12
-rw-r--r--src/Makefile.am13
-rw-r--r--src/Makefile.in125
-rw-r--r--src/NetworkManagerUtils.c5
-rw-r--r--src/backends/Makefile.in11
-rw-r--r--src/backends/NetworkManagerRedHat.c6
-rw-r--r--src/bluez-manager/Makefile.in11
-rw-r--r--src/bluez-manager/nm-bluez-adapter.c80
-rw-r--r--src/bluez-manager/nm-bluez-adapter.h6
-rw-r--r--src/bluez-manager/nm-bluez-device.c223
-rw-r--r--src/bluez-manager/nm-bluez-device.h7
-rw-r--r--src/bluez-manager/nm-bluez-manager.c64
-rw-r--r--src/bluez-manager/nm-bluez-manager.h11
-rw-r--r--src/dhcp-manager/Makefile.am3
-rw-r--r--src/dhcp-manager/Makefile.in16
-rw-r--r--src/dhcp-manager/nm-dhcp-client.c58
-rw-r--r--src/dhcp-manager/nm-dhcp-dhclient.c10
-rw-r--r--src/dhcp-manager/nm-dhcp-dhcpcd.c7
-rw-r--r--src/dhcp-manager/tests/Makefile.in11
-rw-r--r--src/dns-manager/Makefile.am2
-rw-r--r--src/dns-manager/Makefile.in14
-rw-r--r--src/dns-manager/nm-dns-manager.c161
-rw-r--r--src/dns-manager/nm-dns-manager.h4
-rw-r--r--src/dns-manager/nm-dns-plugin.c9
-rw-r--r--src/dnsmasq-manager/Makefile.am2
-rw-r--r--src/dnsmasq-manager/Makefile.in14
-rw-r--r--src/dnsmasq-manager/nm-dnsmasq-manager.c9
-rw-r--r--src/firewall-manager/Makefile.in11
-rw-r--r--src/generated/Makefile.in11
-rw-r--r--src/generated/nm-enum-types.c133
-rw-r--r--src/generated/nm-enum-types.h18
-rw-r--r--src/generated/nm-marshal.c142
-rw-r--r--src/generated/nm-marshal.h58
-rw-r--r--src/ip6-manager/Makefile.in11
-rw-r--r--src/ip6-manager/nm-ip6-manager.c592
-rw-r--r--src/logging/Makefile.in11
-rw-r--r--src/logging/nm-logging.c3
-rw-r--r--src/logging/nm-logging.h1
-rw-r--r--src/main.c193
-rw-r--r--src/modem-manager/Makefile.in11
-rw-r--r--src/modem-manager/nm-modem.c12
-rw-r--r--src/nm-activation-request.c6
-rw-r--r--src/nm-connection-provider.c112
-rw-r--r--src/nm-connection-provider.h106
-rw-r--r--src/nm-device-adsl.c841
-rw-r--r--src/nm-device-adsl.h66
-rw-r--r--src/nm-device-bt.c16
-rw-r--r--src/nm-device-ethernet.c5
-rw-r--r--src/nm-device-modem.c9
-rw-r--r--src/nm-device-olpc-mesh.c16
-rw-r--r--src/nm-device-private.h2
-rw-r--r--src/nm-device-vlan.c4
-rw-r--r--src/nm-device-wifi.c234
-rw-r--r--src/nm-device-wifi.h1
-rw-r--r--src/nm-device-wired.c38
-rw-r--r--src/nm-device.c427
-rw-r--r--src/nm-device.h25
-rw-r--r--src/nm-ip4-config.c82
-rw-r--r--src/nm-ip4-config.h2
-rw-r--r--src/nm-ip6-config.c106
-rw-r--r--src/nm-ip6-config.h5
-rw-r--r--src/nm-manager.c427
-rw-r--r--src/nm-netlink-compat.c8
-rw-r--r--src/nm-netlink-utils.c4
-rw-r--r--src/nm-policy.c725
-rw-r--r--src/nm-system.c268
-rw-r--r--src/nm-system.h11
-rw-r--r--src/nm-udev-manager.c156
-rw-r--r--src/nm-wifi-ap.c19
-rw-r--r--src/org.freedesktop.NetworkManager.conf7
-rw-r--r--src/posix-signals/Makefile.am15
-rw-r--r--src/posix-signals/Makefile.in640
-rw-r--r--src/posix-signals/nm-posix-signals.c62
-rw-r--r--src/posix-signals/nm-posix-signals.h36
-rw-r--r--src/ppp-manager/Makefile.am4
-rw-r--r--src/ppp-manager/Makefile.in16
-rw-r--r--src/ppp-manager/nm-ppp-manager.c63
-rw-r--r--src/settings/Makefile.in11
-rw-r--r--src/settings/nm-settings-connection.c2
-rw-r--r--src/settings/nm-settings.c116
-rw-r--r--src/settings/plugins/Makefile.am2
-rw-r--r--src/settings/plugins/Makefile.in17
-rw-r--r--src/settings/plugins/example/Makefile.am40
-rw-r--r--src/settings/plugins/example/Makefile.in712
-rw-r--r--src/settings/plugins/example/README35
-rw-r--r--src/settings/plugins/example/common.h56
-rw-r--r--src/settings/plugins/example/errors.c40
-rw-r--r--src/settings/plugins/example/nm-example-connection.c191
-rw-r--r--src/settings/plugins/example/nm-example-connection.h55
-rw-r--r--src/settings/plugins/example/plugin.c868
-rw-r--r--src/settings/plugins/example/plugin.h55
-rw-r--r--src/settings/plugins/example/reader.c46
-rw-r--r--src/settings/plugins/example/writer.c55
-rw-r--r--src/settings/plugins/ifcfg-rh/Makefile.am2
-rw-r--r--src/settings/plugins/ifcfg-rh/Makefile.in14
-rw-r--r--src/settings/plugins/ifcfg-rh/reader.c28
-rw-r--r--src/settings/plugins/ifcfg-rh/tests/Makefile.in11
-rw-r--r--src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.in11
-rw-r--r--src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-22
-rw-r--r--src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c4
-rw-r--r--src/settings/plugins/ifcfg-rh/utils.c2
-rw-r--r--src/settings/plugins/ifcfg-rh/writer.c1
-rw-r--r--src/settings/plugins/ifcfg-suse/Makefile.in11
-rw-r--r--src/settings/plugins/ifnet/Makefile.am2
-rw-r--r--src/settings/plugins/ifnet/Makefile.in14
-rw-r--r--src/settings/plugins/ifnet/net_parser.c46
-rw-r--r--src/settings/plugins/ifnet/net_utils.c10
-rw-r--r--src/settings/plugins/ifnet/tests/Makefile.am3
-rw-r--r--src/settings/plugins/ifnet/tests/Makefile.in17
-rw-r--r--src/settings/plugins/ifnet/tests/net2
-rw-r--r--src/settings/plugins/ifnet/tests/test_all.c3
-rw-r--r--src/settings/plugins/ifupdown/Makefile.in11
-rw-r--r--src/settings/plugins/ifupdown/tests/Makefile.am3
-rw-r--r--src/settings/plugins/ifupdown/tests/Makefile.in14
-rw-r--r--src/settings/plugins/ifupdown/tests/test18-wired-static-verify-ip66
-rw-r--r--src/settings/plugins/keyfile/Makefile.in11
-rw-r--r--src/settings/plugins/keyfile/reader.c3
-rw-r--r--src/settings/plugins/keyfile/tests/Makefile.in11
-rw-r--r--src/settings/plugins/keyfile/tests/keyfiles/Makefile.in11
-rw-r--r--src/settings/tests/Makefile.in11
-rw-r--r--src/supplicant-manager/Makefile.in11
-rw-r--r--src/supplicant-manager/nm-supplicant-interface.c158
-rw-r--r--src/supplicant-manager/nm-supplicant-interface.h7
-rw-r--r--src/supplicant-manager/tests/Makefile.in11
-rw-r--r--src/tests/Makefile.in11
-rw-r--r--src/vpn-manager/Makefile.am2
-rw-r--r--src/vpn-manager/Makefile.in14
-rw-r--r--src/vpn-manager/nm-vpn-connection.c851
-rw-r--r--src/vpn-manager/nm-vpn-connection.h10
-rw-r--r--src/vpn-manager/nm-vpn-manager.c17
-rw-r--r--src/vpn-manager/nm-vpn-manager.h6
-rw-r--r--src/vpn-manager/nm-vpn-service.c20
-rw-r--r--src/wifi/Makefile.in11
-rw-r--r--src/wifi/wifi-utils-nl80211.c42
-rw-r--r--src/wimax/Makefile.in11
-rw-r--r--test/Makefile.in11
-rw-r--r--tools/Makefile.in11
-rw-r--r--vapi/Makefile.am27
-rw-r--r--vapi/Makefile.in611
-rw-r--r--vapi/Makefile.vapigen60
-rw-r--r--vapi/NMClient-1.0.metadata109
-rw-r--r--vapi/NetworkManager-1.0.metadata152
-rw-r--r--vapi/libnm-glib.deps3
-rw-r--r--vapi/libnm-util.deps2
361 files changed, 30084 insertions, 9997 deletions
diff --git a/Makefile.am b/Makefile.am
index bcd403bd..9515dc80 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -16,7 +16,8 @@ SUBDIRS = \
 	po \
 	man \
 	docs \
-	examples
+	examples \
+	vapi
 
 EXTRA_DIST = \
 	CONTRIBUTING \
diff --git a/Makefile.in b/Makefile.in
index b87cf8aa..ad781673 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -54,7 +54,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
@@ -217,6 +217,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -312,6 +316,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -350,6 +357,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -386,7 +395,8 @@ SUBDIRS = \
 	po \
 	man \
 	docs \
-	examples
+	examples \
+	vapi
 
 EXTRA_DIST = \
 	CONTRIBUTING \
diff --git a/NEWS b/NEWS
index 096869b4..192541db 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,24 @@
 ==============================================
+NetworkManager-0.9.6
+Overview of changes since NetworkManager-0.9.4
+==============================================
+
+This is a new stable release of NetworkManager.  Notable changes include:
+
+* Many libnm-glib fixes, including crashes when NetworkManager restarts
+* Enhanced IPv6 stability and compatibility
+* Fix regression in carrier handling for devices that don't support carrier detect
+* Add ability to connect to new WiFi networks from nmcli
+* Add native support for ADSL modems using PPPoE or PPPoATM
+* Reduce number of changes made to DNS information during connection setup
+* Add support for IPv6-enabled VPN connections
+* Add device driver version, firmware version, and autoconnect properties to D-Bus API
+* Add on-demand WiFi scan support
+* Fix IPv6 default gateway handling for DHCPv6
+* Add Vala language bindings
+
+
+==============================================
 NetworkManager-0.9.4
 Overview of changes since NetworkManager-0.9.2
 ==============================================
diff --git a/TODO b/TODO
index 2348b3c6..f08da718 100644
--- a/TODO
+++ b/TODO
@@ -34,23 +34,6 @@ NM_STATE_CONNECTED_LOCAL, NM_STATE_CONNECTED_SITE, or NM_STATE_CONNECTED_GLOBAL
 based on it and the device's state.
 
 
-* ADSL support
-
-NetworkManager should natively support ADSL modems using one of the 3 main
-connection methods, PPP over ATM (pppoa), PPP over Ethernet (pppoe), or
-IP over ATM (ipoatm).  Initial support could be targeted at just pppoa and
-pppoe, and there is some code in NetworkManager already for pppoe.  More info
-about ADSL configuration on Linux in general is here:
-
-http://atm.eagle-usb.org/wakka.php?wiki=UeagleAtmDoc
-
-Big thanks to Pantelis Koukousoulas for getting ADSL working for PPPoA and PPPoE
-methods in the 'adsl' branch in NetworkManager git.  We need more testing, IPv6
-PPP support, and also support for multiple ADSL devices (by reading the "atmindex"
-attribute from the sysfs directory for the ATM interface on 2.6.38.8 and later
-kernels).
-
-
 * Real Access Point mode support
 
 Now that NetworkManager requires wpa_supplicant 0.7.x or later, we can add
@@ -70,44 +53,6 @@ provide Ad-Hoc connection sharing support for those devices and switch between
 Ad-Hoc and AP mode depending on device capabilities.
 
 
-* On-Demand WiFi Scan support
-
-Single-user and embedded devices often use a continuous wifi scan when the
-networking configuration interface is open to quickly allow users to find their
-wifi network.  NM periodically scans, but this could take as long as 2 mintues
-to update the list.  Note that WiFi scans require 2 - 10 seconds to complete,
-and during this time normal traffic (video, VOIP, streaming music, downloads,
-etc) is not transmitted, so a WiFi scan is a disruptive operation to the user.
-
-A D-Bus method should be added to the NMDeviceWifi device to allow user
-applications to request a scan.  This request should be rate-limited to no
-more than once every 10 seconds to give time for traffic to resume when the
-scan is done, and to lessen the effect of any DDoS by malicious user
-applications.  This request should also be restricted by one or more PolicyKit
-permissions like org.freedesktop.NetworkManager.network-control.
-
-To begin, a new method definition should be added to the
-introspection/nm-device-wifi.xml for a method called "RequestScan" which takes
-an argument called "options" of type of "a{sv}".  This argument will be used
-later.  An annotation (like the other functions have) should be added so that
-the method will be called "impl_device_request_scan".
-
-Next, the corresponding method implementation should be added to
-src/nm-device-wifi.c by adding the prototype for impl_device_request_scan
-near the top of the file, and implementing it below.  The implementation will
-recieve a GHashTable corresponding to the "a{sv}" argument list from the XML
-file, but we can ignore that for now.
-
-The incoming request should be authenticated using nm_auth_get_caller_uid()
-and additionally starting a PolicyKit authentication check with
-with nm_auth_chain_new().  See the function manager_device_disconnect_request()
-in src/nm-manager.c for an example of this.
-
-Only after the caller is authorized to scan should the request be checked
-against the last scan timestamp, and if the last scan was 10 seconds or more
-ago, a new scan should be requested.
-
-
 * Reconnect to WiFi Networks Only If They Succeeded Once
 
 Currently, NetworkManager will attempt to connect to a previously attempted
diff --git a/aclocal.m4 b/aclocal.m4
index ededf4ea..c3221edb 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1245,3 +1245,4 @@ m4_include([m4/lt~obsolete.m4])
 m4_include([m4/nls.m4])
 m4_include([m4/po.m4])
 m4_include([m4/progtest.m4])
+m4_include([m4/vapigen.m4])
diff --git a/callouts/Makefile.in b/callouts/Makefile.in
index 4b46ce2a..015aa792 100644
--- a/callouts/Makefile.in
+++ b/callouts/Makefile.in
@@ -51,7 +51,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -261,6 +261,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -356,6 +360,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -394,6 +401,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/callouts/nm-dispatcher-action.c b/callouts/nm-dispatcher-action.c
index 54186a98..a4ccde10 100644
--- a/callouts/nm-dispatcher-action.c
+++ b/callouts/nm-dispatcher-action.c
@@ -545,14 +545,14 @@ main (int argc, char **argv)
 	loop = g_main_loop_new (NULL, FALSE);
 
 	if (!dbus_init (d))
-		return -1;
+		return 1;
 	if (!start_dbus_service (d))
-		return -1;
+		return 1;
 
 	d->persist = persist;
 	d->handler = g_object_new (HANDLER_TYPE, NULL);
 	if (!d->handler)
-		return -1;
+		return 1;
 	g_object_set_data (G_OBJECT (d->handler), "dispatcher", d);
 
 	dbus_g_object_type_install_info (HANDLER_TYPE, &dbus_glib_nm_dispatcher_object_info);
diff --git a/callouts/tests/Makefile.in b/callouts/tests/Makefile.in
index 1d71988d..4c076413 100644
--- a/callouts/tests/Makefile.in
+++ b/callouts/tests/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -170,6 +170,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -265,6 +269,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -303,6 +310,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/cli/Makefile.in b/cli/Makefile.in
index 46ab6733..38ef6a53 100644
--- a/cli/Makefile.in
+++ b/cli/Makefile.in
@@ -46,7 +46,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -174,6 +174,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -269,6 +273,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -307,6 +314,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/cli/src/Makefile.in b/cli/src/Makefile.in
index ea5214e5..854628c2 100644
--- a/cli/src/Makefile.in
+++ b/cli/src/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -172,6 +172,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -267,6 +271,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -305,6 +312,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/cli/src/common.c b/cli/src/common.c
index e9a5d760..193ea33f 100644
--- a/cli/src/common.c
+++ b/cli/src/common.c
@@ -358,3 +358,201 @@ print_dhcp6_config (NMDHCP6Config *dhcp6, NmCli *nmc, const char *group_prefix)
 	return FALSE;
 }
 
+const char *
+nmc_device_state_to_string (NMDeviceState state)
+{
+	switch (state) {
+	case NM_DEVICE_STATE_UNMANAGED:
+		return _("unmanaged");
+	case NM_DEVICE_STATE_UNAVAILABLE:
+		return _("unavailable");
+	case NM_DEVICE_STATE_DISCONNECTED:
+		return _("disconnected");
+	case NM_DEVICE_STATE_PREPARE:
+		return _("connecting (prepare)");
+	case NM_DEVICE_STATE_CONFIG:
+		return _("connecting (configuring)");
+	case NM_DEVICE_STATE_NEED_AUTH:
+		return _("connecting (need authentication)");
+	case NM_DEVICE_STATE_IP_CONFIG:
+		return _("connecting (getting IP configuration)");
+	case NM_DEVICE_STATE_IP_CHECK:
+		return _("connecting (checking IP connectivity)");
+	case NM_DEVICE_STATE_SECONDARIES:
+		return _("connecting (starting secondary connections)");
+	case NM_DEVICE_STATE_ACTIVATED:
+		return _("connected");
+	case NM_DEVICE_STATE_DEACTIVATING:
+		return _("deactivating");
+	case NM_DEVICE_STATE_FAILED:
+		return _("connection failed");
+	default:
+		return _("unknown");
+	}
+}
+
+const char *
+nmc_device_reason_to_string (NMDeviceStateReason reason)
+{
+	switch (reason) {
+	case NM_DEVICE_STATE_REASON_NONE:
+		return _("No reason given");
+
+	case NM_DEVICE_STATE_REASON_UNKNOWN:
+		return _("Unknown error");
+
+	case NM_DEVICE_STATE_REASON_NOW_MANAGED:
+		return _("Device is now managed");
+
+	case NM_DEVICE_STATE_REASON_NOW_UNMANAGED:
+		return _("Device is now unmanaged");
+
+	case NM_DEVICE_STATE_REASON_CONFIG_FAILED:
+		return _("The device could not be readied for configuration");
+
+	case NM_DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE:
+		return _("IP configuration could not be reserved (no available address, timeout, etc)");
+
+	case NM_DEVICE_STATE_REASON_IP_CONFIG_EXPIRED:
+		return _("The IP configuration is no longer valid");
+
+	case NM_DEVICE_STATE_REASON_NO_SECRETS:
+		return _("Secrets were required, but not provided");
+
+	case NM_DEVICE_STATE_REASON_SUPPLICANT_DISCONNECT:
+		return _("802.1X supplicant disconnected");
+
+	case NM_DEVICE_STATE_REASON_SUPPLICANT_CONFIG_FAILED:
+		return _("802.1X supplicant configuration failed");
+
+	case NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED:
+		return _("802.1X supplicant failed");
+
+	case NM_DEVICE_STATE_REASON_SUPPLICANT_TIMEOUT:
+		return _("802.1X supplicant took too long to authenticate");
+
+	case NM_DEVICE_STATE_REASON_PPP_START_FAILED:
+		return _("PPP service failed to start");
+
+	case NM_DEVICE_STATE_REASON_PPP_DISCONNECT:
+		return _("PPP service disconnected");
+
+	case NM_DEVICE_STATE_REASON_PPP_FAILED:
+		return _("PPP failed");
+
+	case NM_DEVICE_STATE_REASON_DHCP_START_FAILED:
+		return _("DHCP client failed to start");
+
+	case NM_DEVICE_STATE_REASON_DHCP_ERROR:
+		return _("DHCP client error");
+
+	case NM_DEVICE_STATE_REASON_DHCP_FAILED:
+		return _("DHCP client failed");
+
+	case NM_DEVICE_STATE_REASON_SHARED_START_FAILED:
+		return _("Shared connection service failed to start");
+
+	case NM_DEVICE_STATE_REASON_SHARED_FAILED:
+		return _("Shared connection service failed");
+
+	case NM_DEVICE_STATE_REASON_AUTOIP_START_FAILED:
+		return _("AutoIP service failed to start");
+
+	case NM_DEVICE_STATE_REASON_AUTOIP_ERROR:
+		return _("AutoIP service error");
+
+	case NM_DEVICE_STATE_REASON_AUTOIP_FAILED:
+		return _("AutoIP service failed");
+
+	case NM_DEVICE_STATE_REASON_MODEM_BUSY:
+		return _("The line is busy");
+
+	case NM_DEVICE_STATE_REASON_MODEM_NO_DIAL_TONE:
+		return _("No dial tone");
+
+	case NM_DEVICE_STATE_REASON_MODEM_NO_CARRIER:
+		return _("No carrier could be established");
+
+	case NM_DEVICE_STATE_REASON_MODEM_DIAL_TIMEOUT:
+		return _("The dialing request timed out");
+
+	case NM_DEVICE_STATE_REASON_MODEM_DIAL_FAILED:
+		return _("The dialing attempt failed");
+
+	case NM_DEVICE_STATE_REASON_MODEM_INIT_FAILED:
+		return _("Modem initialization failed");
+
+	case NM_DEVICE_STATE_REASON_GSM_APN_FAILED:
+		return _("Failed to select the specified APN");
+
+	case NM_DEVICE_STATE_REASON_GSM_REGISTRATION_NOT_SEARCHING:
+		return _("Not searching for networks");
+
+	case NM_DEVICE_STATE_REASON_GSM_REGISTRATION_DENIED:
+		return _("Network registration denied");
+
+	case NM_DEVICE_STATE_REASON_GSM_REGISTRATION_TIMEOUT:
+		return _("Network registration timed out");
+
+	case NM_DEVICE_STATE_REASON_GSM_REGISTRATION_FAILED:
+		return _("Failed to register with the requested network");
+
+	case NM_DEVICE_STATE_REASON_GSM_PIN_CHECK_FAILED:
+		return _("PIN check failed");
+
+	case NM_DEVICE_STATE_REASON_FIRMWARE_MISSING:
+		return _("Necessary firmware for the device may be missing");
+
+	case NM_DEVICE_STATE_REASON_REMOVED:
+		return _("The device was removed");
+
+	case NM_DEVICE_STATE_REASON_SLEEPING:
+		return _("NetworkManager went to sleep");
+
+	case NM_DEVICE_STATE_REASON_CONNECTION_REMOVED:
+		return _("The device's active connection disappeared");
+
+	case NM_DEVICE_STATE_REASON_USER_REQUESTED:
+		return _("Device disconnected by user or client");
+
+	case NM_DEVICE_STATE_REASON_CARRIER:
+		return _("Carrier/link changed");
+
+	case NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED:
+		return _("The device's existing connection was assumed");
+
+	case NM_DEVICE_STATE_REASON_SUPPLICANT_AVAILABLE:
+		return _("The supplicant is now available");
+
+	case NM_DEVICE_STATE_REASON_MODEM_NOT_FOUND:
+		return _("The modem could not be found");
+
+	case NM_DEVICE_STATE_REASON_BT_FAILED:
+		return _("The Bluetooth connection failed or timed out");
+
+	case NM_DEVICE_STATE_REASON_GSM_SIM_NOT_INSERTED:
+		return _("GSM Modem's SIM card not inserted");
+
+	case NM_DEVICE_STATE_REASON_GSM_SIM_PIN_REQUIRED:
+		return _("GSM Modem's SIM PIN required");
+
+	case NM_DEVICE_STATE_REASON_GSM_SIM_PUK_REQUIRED:
+		return _("GSM Modem's SIM PUK required");
+
+	case NM_DEVICE_STATE_REASON_GSM_SIM_WRONG:
+		return _("GSM Modem's SIM wrong");
+
+	case NM_DEVICE_STATE_REASON_INFINIBAND_MODE:
+		return _("InfiniBand device does not support connected mode");
+
+        case NM_DEVICE_STATE_REASON_DEPENDENCY_FAILED:
+		return _("A dependency of the connection failed");
+
+	case NM_DEVICE_STATE_REASON_BR2684_FAILED:
+		return _("A problem with the RFC 2684 Ethernet over ADSL bridge");
+
+	default:
+		return _("Unknown");
+	}
+}
+
diff --git a/cli/src/common.h b/cli/src/common.h
index 85015a9f..89412d28 100644
--- a/cli/src/common.h
+++ b/cli/src/common.h
@@ -28,6 +28,7 @@
 #include <nm-ip6-config.h>
 #include <nm-dhcp4-config.h>
 #include <nm-dhcp6-config.h>
+#include <nm-device.h>
 
 #include "nmcli.h"
 
@@ -36,4 +37,7 @@ gboolean print_ip6_config (NMIP6Config *cfg6, NmCli *nmc, const char *group_pref
 gboolean print_dhcp4_config (NMDHCP4Config *dhcp4, NmCli *nmc, const char *group_prefix);
 gboolean print_dhcp6_config (NMDHCP6Config *dhcp6, NmCli *nmc, const char *group_prefix);
 
+const char * nmc_device_state_to_string (NMDeviceState state);
+const char * nmc_device_reason_to_string (NMDeviceStateReason reason);
+
 #endif /* NMC_COMMON_H */
diff --git a/cli/src/connections.c b/cli/src/connections.c
index ea5211f5..8e654864 100644
--- a/cli/src/connections.c
+++ b/cli/src/connections.c
@@ -33,6 +33,7 @@
 
 #include <nm-client.h>
 #include <nm-device-ethernet.h>
+#include <nm-device-adsl.h>
 #include <nm-device-wifi.h>
 #if WITH_WIMAX
 #include <nm-device-wimax.h>
@@ -92,6 +93,7 @@ static NmcOutputField nmc_fields_settings_names[] = {
 	SETTING_FIELD (NM_SETTING_INFINIBAND_SETTING_NAME, 0),            /* 16 */
 	SETTING_FIELD (NM_SETTING_BOND_SETTING_NAME, 0),                  /* 17 */
 	SETTING_FIELD (NM_SETTING_VLAN_SETTING_NAME, 0),                  /* 18 */
+	SETTING_FIELD (NM_SETTING_ADSL_SETTING_NAME, 0),                  /* 19 */
 	{NULL, NULL, 0, NULL, 0}
 };
 #define NMC_FIELDS_SETTINGS_NAMES_ALL_X  NM_SETTING_CONNECTION_SETTING_NAME","\
@@ -104,6 +106,7 @@ static NmcOutputField nmc_fields_settings_names[] = {
                                          NM_SETTING_SERIAL_SETTING_NAME","\
                                          NM_SETTING_PPP_SETTING_NAME","\
                                          NM_SETTING_PPPOE_SETTING_NAME","\
+                                         NM_SETTING_ADSL_SETTING_NAME","\
                                          NM_SETTING_GSM_SETTING_NAME","\
                                          NM_SETTING_CDMA_SETTING_NAME","\
                                          NM_SETTING_BLUETOOTH_SETTING_NAME","\
@@ -178,6 +181,7 @@ typedef struct {
 extern GMainLoop *loop;
 
 static ArgsInfo args_info;
+static guint progress_id = 0;  /* ID of event source for displaying progress */
 
 static void
 usage (void)
@@ -210,6 +214,11 @@ static const char *real_con_commands[] = {
 static void
 quit (void)
 {
+	if (progress_id) {
+		g_source_remove (progress_id);
+		nmc_terminal_erase_line ();
+	}
+
 	g_main_loop_quit (loop);  /* quit main loop */
 }
 
@@ -432,6 +441,15 @@ nmc_connection_detail (NMConnection *connection, NmCli *nmc)
 				continue;
 			}
 		}
+
+		if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[19].name)) {
+			NMSettingAdsl *s_adsl = nm_connection_get_setting_adsl (connection);
+			if (s_adsl) {
+				setting_adsl_details (s_adsl, nmc);
+				was_output = TRUE;
+				continue;
+			}
+		}
 	}
 
 	if (print_settings_array)
@@ -687,6 +705,21 @@ fill_in_fields_con_status (NMActiveConnection *active, GSList *con_list)
 	if (dev_str->len > 0)
 		g_string_truncate (dev_str, dev_str->len - 1);  /* Cut off last ',' */
 
+	/* Fill field values */
+	nmc_fields_con_status[0].value = nmc_fields_status_details_groups[0].name;
+	nmc_fields_con_status[1].value = _("N/A");
+	nmc_fields_con_status[2].value = nm_active_connection_get_uuid (active);
+	nmc_fields_con_status[3].value = dev_str->str;
+	nmc_fields_con_status[4].value = active_connection_state_to_string (state);
+	nmc_fields_con_status[5].value = nm_active_connection_get_default (active) ? _("yes") : _("no");
+	nmc_fields_con_status[6].value = nm_active_connection_get_default6 (active) ? _("yes") : _("no");
+	nmc_fields_con_status[7].value = nm_active_connection_get_specific_object (active);
+	nmc_fields_con_status[8].value = NM_IS_VPN_CONNECTION (active) ? _("yes") : _("no");
+	nmc_fields_con_status[9].value = nm_object_get_path (NM_OBJECT (active));
+	nmc_fields_con_status[10].value = nm_active_connection_get_connection (active);
+	nmc_fields_con_status[11].value = _("N/A");
+	nmc_fields_con_status[12].value = nm_active_connection_get_master (active);
+
 	for (iter = con_list; iter; iter = g_slist_next (iter)) {
 		NMConnection *connection = (NMConnection *) iter->data;
 		const char *con_path = nm_connection_get_path (connection);
@@ -696,20 +729,9 @@ fill_in_fields_con_status (NMActiveConnection *active, GSList *con_list)
 			s_con = nm_connection_get_setting_connection (connection);
 			g_assert (s_con != NULL);
 
-			/* Fill field values */
-			nmc_fields_con_status[0].value = nmc_fields_status_details_groups[0].name;
+			/* Fill field values that depend on NMConnection */
 			nmc_fields_con_status[1].value = nm_setting_connection_get_id (s_con);
-			nmc_fields_con_status[2].value = nm_setting_connection_get_uuid (s_con);
-			nmc_fields_con_status[3].value = dev_str->str;
-			nmc_fields_con_status[4].value = active_connection_state_to_string (state);
-			nmc_fields_con_status[5].value = nm_active_connection_get_default (active) ? _("yes") : _("no");
-			nmc_fields_con_status[6].value = nm_active_connection_get_default6 (active) ? _("yes") : _("no");
-			nmc_fields_con_status[7].value = nm_active_connection_get_specific_object (active);
-			nmc_fields_con_status[8].value = NM_IS_VPN_CONNECTION (active) ? _("yes") : _("no");
-			nmc_fields_con_status[9].value = nm_object_get_path (NM_OBJECT (active));
-			nmc_fields_con_status[10].value = nm_active_connection_get_connection (active);
 			nmc_fields_con_status[11].value = nm_setting_connection_get_zone (s_con);
-			nmc_fields_con_status[12].value = nm_active_connection_get_master (active);
 
 			success = TRUE;
 			break;
@@ -1336,10 +1358,12 @@ active_connection_state_cb (NMActiveConnection *active, GParamSpec *pspec, gpoin
 
 	state = nm_active_connection_get_state (active);
 
-	printf (_("state: %s\n"), active_connection_state_to_string (state));
-
 	if (state == NM_ACTIVE_CONNECTION_STATE_ACTIVATED) {
-		printf (_("Connection activated\n"));
+		if (nmc->print_output == NMC_PRINT_PRETTY) {
+			nmc_terminal_erase_line ();
+			printf (_("Connection successfully activated (D-Bus active path: %s)\n"),
+			        nm_object_get_path (NM_OBJECT (active)));
+		}
 		quit ();
 	} else if (state == NM_ACTIVE_CONNECTION_STATE_UNKNOWN) {
 		g_string_printf (nmc->return_text, _("Error: Connection activation failed."));
@@ -1361,17 +1385,22 @@ vpn_connection_state_cb (NMVPNConnection *vpn,
 	case NM_VPN_CONNECTION_STATE_NEED_AUTH:
 	case NM_VPN_CONNECTION_STATE_CONNECT:
 	case NM_VPN_CONNECTION_STATE_IP_CONFIG_GET:
-		printf (_("state: %s (%d)\n"), vpn_connection_state_to_string (state), state);
+		/* no operation */
 		break;
 
 	case NM_VPN_CONNECTION_STATE_ACTIVATED:
-		printf (_("Connection activated\n"));
+		if (nmc->print_output == NMC_PRINT_PRETTY) {
+			nmc_terminal_erase_line ();
+			printf (_("VPN connection successfully activated (D-Bus active path: %s)\n"),
+			        nm_object_get_path (NM_OBJECT (vpn)));
+		}
 		quit ();
 		break;
 
 	case NM_VPN_CONNECTION_STATE_FAILED:
 	case NM_VPN_CONNECTION_STATE_DISCONNECTED:
-		g_string_printf (nmc->return_text, _("Error: Connection activation failed: %s."), vpn_connection_state_reason_to_string (reason));
+		g_string_printf (nmc->return_text, _("Error: Connection activation failed: %s."),
+		                 vpn_connection_state_reason_to_string (reason));
 		nmc->return_value = NMC_RESULT_ERROR_CON_ACTIVATION;
 		quit ();
 		break;
@@ -1381,6 +1410,85 @@ vpn_connection_state_cb (NMVPNConnection *vpn,
 	}
 }
 
+/* --- VPN state workaround BEGIN --- */
+static NMVPNConnectionState
+dbus_get_vpn_state (const char *path)
+{
+	DBusGConnection *connection;
+	DBusGProxy *proxy;
+	GError *error = NULL;
+	GValue value = {0,};
+	NMVPNConnectionState state = NM_VPN_CONNECTION_STATE_UNKNOWN;
+
+	connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, NULL);
+	proxy = dbus_g_proxy_new_for_name (connection,
+	                                   NM_DBUS_SERVICE,
+	                                   path,
+	                                   "org.freedesktop.DBus.Properties");
+	if (!proxy) {
+		g_warning ("%s: couldn't create D-Bus object proxy.", __func__);
+		dbus_g_connection_unref (connection);
+		return NM_VPN_CONNECTION_STATE_UNKNOWN;
+	}
+
+	/* Get VpnState property for object 'path' through D-Bus Get() call. */
+	if (dbus_g_proxy_call (proxy,
+	                       "Get", &error,
+	                       G_TYPE_STRING, NM_DBUS_INTERFACE_VPN_CONNECTION,
+	                       G_TYPE_STRING, "VpnState",
+	                       G_TYPE_INVALID,
+	                       G_TYPE_VALUE, &value, G_TYPE_INVALID)) {
+
+		state = g_value_get_uint (&value);
+	} else {
+		g_warning ("Error in getting active connection 'Vpn' property: (%d) %s",
+		           error->code, error->message);
+		g_error_free (error);
+	}
+
+	g_object_unref (proxy);
+	dbus_g_connection_unref (connection);
+
+	return state;
+}
+
+typedef struct {
+	NmCli *nmc;
+	NMVPNConnection *vpn;
+} VpnGetStateInfo;
+
+static gboolean
+get_vpn_state_cb (gpointer user_data)
+{
+	VpnGetStateInfo *info = (VpnGetStateInfo *) user_data;
+	NmCli *nmc = info->nmc;
+	NMVPNConnection *vpn = info->vpn;
+	NMVPNConnectionState state;
+
+	if (!NM_IS_OBJECT (vpn)) {
+		/* Active connection failed and dissapeared, quit. */
+		g_string_printf (nmc->return_text, _("Error: Connection activation failed."));
+		nmc->return_value = NMC_RESULT_ERROR_CON_ACTIVATION;
+		quit ();
+		g_free (info);
+		return FALSE;
+	}
+
+	state = dbus_get_vpn_state (nm_object_get_path (NM_OBJECT (vpn)));
+
+	vpn_connection_state_cb (vpn, state, NM_VPN_CONNECTION_STATE_REASON_UNKNOWN, nmc);
+
+	if (   state == NM_VPN_CONNECTION_STATE_ACTIVATED
+	    || state == NM_VPN_CONNECTION_STATE_FAILED
+	    || state == NM_VPN_CONNECTION_STATE_DISCONNECTED) {
+
+		g_free (info);
+		return FALSE;
+	} else
+		return TRUE;
+}
+/* --- VPN state workaround END --- */
+
 static gboolean
 timeout_cb (gpointer user_data)
 {
@@ -1394,10 +1502,58 @@ timeout_cb (gpointer user_data)
 	return FALSE;
 }
 
+static gboolean
+progress_cb (gpointer user_data)
+{
+	const char *str = (const char *) user_data;
+
+	nmc_terminal_show_progress (str);
+
+	return TRUE;
+}
+
+static gboolean
+progress_device_cb (gpointer user_data)
+{
+	NMDevice *device = (NMDevice *) user_data;
+
+	nmc_terminal_show_progress (device ? nmc_device_state_to_string (nm_device_get_state (device)) : "");
+
+	return TRUE;
+}
+
+static gboolean
+progress_vpn_cb (gpointer user_data)
+{
+	NMVPNConnection *vpn = (NMVPNConnection *) user_data;
+	const char *str;
+
+	/* VPN state workaround */
+#if 0
+	str = NM_IS_VPN_CONNECTION (vpn) ?
+	        vpn_connection_state_to_string (nm_vpn_connection_get_vpn_state (vpn)) :
+	        "";
+#endif
+	str = NM_IS_OBJECT (vpn) ?
+	        vpn_connection_state_to_string (dbus_get_vpn_state (nm_object_get_path (NM_OBJECT (vpn)))) :
+	        "";
+
+	nmc_terminal_show_progress (str);
+
+	return TRUE;
+}
+
+typedef struct {
+	NmCli *nmc;
+	NMDevice *device;
+} ActivateConnectionInfo;
+
 static void
 activate_connection_cb (NMClient *client, NMActiveConnection *active, GError *error, gpointer user_data)
 {
-	NmCli *nmc = (NmCli *) user_data;
+	ActivateConnectionInfo *info = (ActivateConnectionInfo *) user_data;
+	NmCli *nmc = info->nmc;
+	NMDevice *device = info->device;
 	NMActiveConnectionState state;
 
 	if (error) {
@@ -1407,27 +1563,61 @@ activate_connection_cb (NMClient *client, NMActiveConnection *active, GError *er
 	} else {
 		state = nm_active_connection_get_state (active);
 
-		printf (_("Active connection state: %s\n"), active_connection_state_to_string (state));
-		printf (_("Active connection path: %s\n"), nm_object_get_path (NM_OBJECT (active)));
-
 		if (nmc->nowait_flag || state == NM_ACTIVE_CONNECTION_STATE_ACTIVATED) {
-			/* don't want to wait or already activated */
+			/* User doesn't want to wait or already activated */
+			if (state == NM_ACTIVE_CONNECTION_STATE_ACTIVATED && nmc->print_output == NMC_PRINT_PRETTY) {
+				printf (_("Connection successfully activated (D-Bus active path: %s)\n"),
+				        nm_object_get_path (NM_OBJECT (active)));
+			}
 			quit ();
 		} else {
-			if (NM_IS_VPN_CONNECTION (active))
-				g_signal_connect (NM_VPN_CONNECTION (active), "vpn-state-changed", G_CALLBACK (vpn_connection_state_cb), nmc);
-			else
+			if (NM_IS_VPN_CONNECTION (active)) {
+				VpnGetStateInfo *vpn_info;
+
+				/* Monitor VPN state */
+				g_signal_connect (G_OBJECT (active), "vpn-state-changed", G_CALLBACK (vpn_connection_state_cb), nmc);
+
+				/* Start progress indication showing VPN states */
+				if (nmc->print_output == NMC_PRINT_PRETTY) {
+					if (progress_id)
+						g_source_remove (progress_id);
+					progress_id = g_timeout_add (120, progress_vpn_cb, NM_VPN_CONNECTION (active));
+				}
+
+				/* --- workaround BEGIN --- */
+				/* There is a bug in libnm-glib or dbus-glib - 'vpn-state-changed' signal
+				 * is never issued. After inspection it appears that PropertiesChanged and
+				 * VpnStateChanged D-Bus signals are not processed, even if they are seen
+				 * on D-Bus (checked via dbus-monitor). Until the bug is identified and
+				 * fixed, we check the VPN state every second.
+				 */
+				vpn_info = g_malloc0 (sizeof (VpnGetStateInfo));
+				vpn_info->nmc = nmc;
+				vpn_info->vpn = NM_VPN_CONNECTION (active);
+				g_timeout_add_seconds (1, get_vpn_state_cb, vpn_info);
+				/* --- workaround END --- */
+			} else {
 				g_signal_connect (active, "notify::state", G_CALLBACK (active_connection_state_cb), nmc);
 
+				/* Start progress indication showing device states */
+				if (nmc->print_output == NMC_PRINT_PRETTY) {
+					if (progress_id)
+						g_source_remove (progress_id);
+					progress_id = g_timeout_add (120, progress_device_cb, device);
+				}
+			}
+
 			/* Start timer not to loop forever when signals are not emitted */
 			g_timeout_add_seconds (nmc->timeout, timeout_cb, nmc);
 		}
 	}
+	g_free (info);
 }
 
 static NMCResultCode
 do_connection_up (NmCli *nmc, int argc, char **argv)
 {
+	ActivateConnectionInfo *info;
 	NMDevice *device = NULL;
 	const char *spec_object = NULL;
 	gboolean device_found;
@@ -1566,12 +1756,21 @@ do_connection_up (NmCli *nmc, int argc, char **argv)
 	 */
 	nmc->nowait_flag = !wait;
 	nmc->should_wait = TRUE;
+
+	info = g_malloc0 (sizeof (ActivateConnectionInfo));
+	info->nmc = nmc;
+	info->device = device;
+
 	nm_client_activate_connection (nmc->client,
 	                               connection,
 	                               device,
 	                               spec_object,
 	                               activate_connection_cb,
-	                               nmc);
+	                               info);
+
+	/* Start progress indication */
+	if (nmc->print_output == NMC_PRINT_PRETTY)
+		progress_id = g_timeout_add (120, progress_cb, "preparing");
 
 	return nmc->return_value;
 error:
@@ -1769,7 +1968,7 @@ parse_cmd (NmCli *nmc, int argc, char **argv)
 		nmc->return_value = do_connections_list (nmc, argc, argv);
 	} else {
 
-	 	if (matches (*argv, "list") == 0) {
+		if (matches (*argv, "list") == 0) {
 			nmc->return_value = do_connections_list (nmc, argc-1, argv+1);
 		}
 		else if (matches(*argv, "status") == 0) {
@@ -1836,7 +2035,7 @@ do_connections (NmCli *nmc, int argc, char **argv)
 	else {
 		while (real_con_commands[i] && matches (*argv, real_con_commands[i]) != 0)
 			i++;
- 		if (real_con_commands[i] != NULL)
+		if (real_con_commands[i] != NULL)
 			real_cmd = TRUE;
 	}
 
@@ -1847,6 +2046,9 @@ do_connections (NmCli *nmc, int argc, char **argv)
 		if (!nmc_versions_match (nmc))
 			return nmc->return_value;
 
+		/* Get NMClient object early */
+		nmc->get_client (nmc);
+
 		nmc->should_wait = TRUE;
 
 		args_info.nmc = nmc;
diff --git a/cli/src/devices.c b/cli/src/devices.c
index 0b1b6d6e..6b9367b4 100644
--- a/cli/src/devices.c
+++ b/cli/src/devices.c
@@ -23,6 +23,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include <errno.h>
+#include <netinet/ether.h>
 
 #include <glib.h>
 #include <glib/gi18n.h>
@@ -30,6 +31,7 @@
 #include <nm-client.h>
 #include <nm-device.h>
 #include <nm-device-ethernet.h>
+#include <nm-device-adsl.h>
 #include <nm-device-wifi.h>
 #include <nm-device-modem.h>
 #include <nm-device-bt.h>
@@ -46,6 +48,7 @@
 #include <nm-vpn-connection.h>
 #include <nm-setting-connection.h>
 #include <nm-setting-wired.h>
+#include <nm-setting-adsl.h>
 #include <nm-setting-pppoe.h>
 #include <nm-setting-wireless.h>
 #include <nm-setting-gsm.h>
@@ -105,17 +108,20 @@ static NmcOutputField nmc_fields_dev_list_general[] = {
 	{"VENDOR",            N_("VENDOR"),            20, NULL, 0},  /* 3 */
 	{"PRODUCT",           N_("PRODUCT"),           50, NULL, 0},  /* 4 */
 	{"DRIVER",            N_("DRIVER"),             9, NULL, 0},  /* 5 */
-	{"HWADDR",            N_("HWADDR"),            19, NULL, 0},  /* 6 */
-	{"STATE",             N_("STATE"),             14, NULL, 0},  /* 7 */
-	{"REASON",            N_("REASON"),            25, NULL, 0},  /* 8 */
-	{"UDI",               N_("UDI"),               64, NULL, 0},  /* 9 */
-	{"IP-IFACE",          N_("IP-IFACE"),          10, NULL, 0},  /* 10 */
-	{"NM-MANAGED",        N_("NM-MANAGED"),        15, NULL, 0},  /* 11 */
-	{"FIRMWARE-MISSING",  N_("FIRMWARE-MISSING"),  18, NULL, 0},  /* 12 */
-	{"CONNECTION",        N_("CONNECTION"),        51, NULL, 0},  /* 13 */
+	{"DRIVER-VERSION",    N_("DRIVER-VERSION"),    18, NULL, 0},  /* 6 */
+	{"FIRMWARE-VERSION",  N_("FIRMWARE-VERSION"),  18, NULL, 0},  /* 7 */
+	{"HWADDR",            N_("HWADDR"),            19, NULL, 0},  /* 8 */
+	{"STATE",             N_("STATE"),             14, NULL, 0},  /* 9 */
+	{"REASON",            N_("REASON"),            25, NULL, 0},  /* 10 */
+	{"UDI",               N_("UDI"),               64, NULL, 0},  /* 11 */
+	{"IP-IFACE",          N_("IP-IFACE"),          10, NULL, 0},  /* 12 */
+	{"NM-MANAGED",        N_("NM-MANAGED"),        15, NULL, 0},  /* 13 */
+	{"AUTOCONNECT",       N_("AUTOCONNECT"),       15, NULL, 0},  /* 14 */
+	{"FIRMWARE-MISSING",  N_("FIRMWARE-MISSING"),  18, NULL, 0},  /* 15 */
+	{"CONNECTION",        N_("CONNECTION"),        51, NULL, 0},  /* 16 */
 	{NULL, NULL, 0, NULL, 0}
 };
-#define NMC_FIELDS_DEV_LIST_GENERAL_ALL     "NAME,DEVICE,TYPE,VENDOR,PRODUCT,DRIVER,HWADDR,STATE,REASON,UDI,IP-IFACE,NM-MANAGED,FIRMWARE-MISSING,CONNECTION"
+#define NMC_FIELDS_DEV_LIST_GENERAL_ALL     "NAME,DEVICE,TYPE,VENDOR,PRODUCT,DRIVER,DRIVER-VERSION,FIRMWARE-VERSION,HWADDR,STATE,REASON,UDI,IP-IFACE,NM-MANAGED,AUTOCONNECT,FIRMWARE-MISSING,CONNECTION"
 #define NMC_FIELDS_DEV_LIST_GENERAL_COMMON  "NAME,DEVICE,TYPE,VENDOR,PRODUCT,DRIVER,HWADDR,STATE"
 
 /* Available fields for 'dev list' - CAPABILITIES part */
@@ -208,6 +214,8 @@ static NmcOutputField nmc_fields_dev_wimax_list[] = {
 /* glib main loop variable - defined in nmcli.c */
 extern GMainLoop *loop;
 
+static guint progress_id = 0;  /* ID of event source for displaying progress */
+
 static void
 usage (void)
 {
@@ -222,6 +230,8 @@ usage (void)
 	         "  list [iface <iface>]\n"
 	         "  disconnect iface <iface> [--nowait] [--timeout <timeout>]\n"
 	         "  wifi [list [iface <iface>] [bssid <BSSID>]]\n"
+	         "  wifi connect <(B)SSID> [password <password>] [wep-key-type key|phrase] [iface <iface>] [bssid <BSSID>] [name <name>]\n"
+	         "               [--private] [--nowait] [--timeout <timeout>]\n"
 #if WITH_WIMAX
 	         "  wimax [list [iface <iface>] [nsp <name>]]\n\n"
 #endif
@@ -232,201 +242,12 @@ usage (void)
 static void
 quit (void)
 {
-	g_main_loop_quit (loop);  /* quit main loop */
-}
-
-static const char *
-device_state_to_string (NMDeviceState state)
-{
-	switch (state) {
-	case NM_DEVICE_STATE_UNMANAGED:
-		return _("unmanaged");
-	case NM_DEVICE_STATE_UNAVAILABLE:
-		return _("unavailable");
-	case NM_DEVICE_STATE_DISCONNECTED:
-		return _("disconnected");
-	case NM_DEVICE_STATE_PREPARE:
-		return _("connecting (prepare)");
-	case NM_DEVICE_STATE_CONFIG:
-		return _("connecting (configuring)");
-	case NM_DEVICE_STATE_NEED_AUTH:
-		return _("connecting (need authentication)");
-	case NM_DEVICE_STATE_IP_CONFIG:
-		return _("connecting (getting IP configuration)");
-	case NM_DEVICE_STATE_IP_CHECK:
-		return _("connecting (checking IP connectivity)");
-	case NM_DEVICE_STATE_SECONDARIES:
-		return _("connecting (starting secondary connections)");
-	case NM_DEVICE_STATE_ACTIVATED:
-		return _("connected");
-	case NM_DEVICE_STATE_DEACTIVATING:
-		return _("deactivating");
-	case NM_DEVICE_STATE_FAILED:
-		return _("connection failed");
-	default:
-		return _("unknown");
+	if (progress_id) {
+		g_source_remove (progress_id);
+		nmc_terminal_erase_line ();
 	}
-}
-
-static const char *
-device_reason_to_string (NMDeviceStateReason reason)
-{
-	switch (reason) {
-	case NM_DEVICE_STATE_REASON_NONE:
-		return _("No reason given");
-
-	case NM_DEVICE_STATE_REASON_UNKNOWN:
-		return _("Unknown error");
-
-	case NM_DEVICE_STATE_REASON_NOW_MANAGED:
-		return _("Device is now managed");
-
-	case NM_DEVICE_STATE_REASON_NOW_UNMANAGED:
-		return _("Device is now unmanaged");
-
-	case NM_DEVICE_STATE_REASON_CONFIG_FAILED:
-		return _("The device could not be readied for configuration");
-
-	case NM_DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE:
-		return _("IP configuration could not be reserved (no available address, timeout, etc)");
-
-	case NM_DEVICE_STATE_REASON_IP_CONFIG_EXPIRED:
-		return _("The IP configuration is no longer valid");
-
-	case NM_DEVICE_STATE_REASON_NO_SECRETS:
-		return _("Secrets were required, but not provided");
-
-	case NM_DEVICE_STATE_REASON_SUPPLICANT_DISCONNECT:
-		return _("802.1X supplicant disconnected");
-
-	case NM_DEVICE_STATE_REASON_SUPPLICANT_CONFIG_FAILED:
-		return _("802.1X supplicant configuration failed");
-
-	case NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED:
-		return _("802.1X supplicant failed");
-
-	case NM_DEVICE_STATE_REASON_SUPPLICANT_TIMEOUT:
-		return _("802.1X supplicant took too long to authenticate");
-
-	case NM_DEVICE_STATE_REASON_PPP_START_FAILED:
-		return _("PPP service failed to start");
-
-	case NM_DEVICE_STATE_REASON_PPP_DISCONNECT:
-		return _("PPP service disconnected");
-
-	case NM_DEVICE_STATE_REASON_PPP_FAILED:
-		return _("PPP failed");
-
-	case NM_DEVICE_STATE_REASON_DHCP_START_FAILED:
-		return _("DHCP client failed to start");
-
-	case NM_DEVICE_STATE_REASON_DHCP_ERROR:
-		return _("DHCP client error");
-
-	case NM_DEVICE_STATE_REASON_DHCP_FAILED:
-		return _("DHCP client failed");
-
-	case NM_DEVICE_STATE_REASON_SHARED_START_FAILED:
-		return _("Shared connection service failed to start");
-
-	case NM_DEVICE_STATE_REASON_SHARED_FAILED:
-		return _("Shared connection service failed");
-
-	case NM_DEVICE_STATE_REASON_AUTOIP_START_FAILED:
-		return _("AutoIP service failed to start");
-
-	case NM_DEVICE_STATE_REASON_AUTOIP_ERROR:
-		return _("AutoIP service error");
-
-	case NM_DEVICE_STATE_REASON_AUTOIP_FAILED:
-		return _("AutoIP service failed");
-
-	case NM_DEVICE_STATE_REASON_MODEM_BUSY:
-		return _("The line is busy");
-
-	case NM_DEVICE_STATE_REASON_MODEM_NO_DIAL_TONE:
-		return _("No dial tone");
-
-	case NM_DEVICE_STATE_REASON_MODEM_NO_CARRIER:
-		return _("No carrier could be established");
 
-	case NM_DEVICE_STATE_REASON_MODEM_DIAL_TIMEOUT:
-		return _("The dialing request timed out");
-
-	case NM_DEVICE_STATE_REASON_MODEM_DIAL_FAILED:
-		return _("The dialing attempt failed");
-
-	case NM_DEVICE_STATE_REASON_MODEM_INIT_FAILED:
-		return _("Modem initialization failed");
-
-	case NM_DEVICE_STATE_REASON_GSM_APN_FAILED:
-		return _("Failed to select the specified APN");
-
-	case NM_DEVICE_STATE_REASON_GSM_REGISTRATION_NOT_SEARCHING:
-		return _("Not searching for networks");
-
-	case NM_DEVICE_STATE_REASON_GSM_REGISTRATION_DENIED:
-		return _("Network registration denied");
-
-	case NM_DEVICE_STATE_REASON_GSM_REGISTRATION_TIMEOUT:
-		return _("Network registration timed out");
-
-	case NM_DEVICE_STATE_REASON_GSM_REGISTRATION_FAILED:
-		return _("Failed to register with the requested network");
-
-	case NM_DEVICE_STATE_REASON_GSM_PIN_CHECK_FAILED:
-		return _("PIN check failed");
-
-	case NM_DEVICE_STATE_REASON_FIRMWARE_MISSING:
-		return _("Necessary firmware for the device may be missing");
-
-	case NM_DEVICE_STATE_REASON_REMOVED:
-		return _("The device was removed");
-
-	case NM_DEVICE_STATE_REASON_SLEEPING:
-		return _("NetworkManager went to sleep");
-
-	case NM_DEVICE_STATE_REASON_CONNECTION_REMOVED:
-		return _("The device's active connection disappeared");
-
-	case NM_DEVICE_STATE_REASON_USER_REQUESTED:
-		return _("Device disconnected by user or client");
-
-	case NM_DEVICE_STATE_REASON_CARRIER:
-		return _("Carrier/link changed");
-
-	case NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED:
-		return _("The device's existing connection was assumed");
-
-	case NM_DEVICE_STATE_REASON_SUPPLICANT_AVAILABLE:
-		return _("The supplicant is now available");
-
-	case NM_DEVICE_STATE_REASON_MODEM_NOT_FOUND:
-		return _("The modem could not be found");
-
-	case NM_DEVICE_STATE_REASON_BT_FAILED:
-		return _("The Bluetooth connection failed or timed out");
-
-	case NM_DEVICE_STATE_REASON_GSM_SIM_NOT_INSERTED:
-		return _("GSM Modem's SIM card not inserted");
-
-	case NM_DEVICE_STATE_REASON_GSM_SIM_PIN_REQUIRED:
-		return _("GSM Modem's SIM PIN required");
-
-	case NM_DEVICE_STATE_REASON_GSM_SIM_PUK_REQUIRED:
-		return _("GSM Modem's SIM PUK required");
-
-	case NM_DEVICE_STATE_REASON_GSM_SIM_WRONG:
-		return _("GSM Modem's SIM wrong");
-
-	case NM_DEVICE_STATE_REASON_INFINIBAND_MODE:
-		return _("InfiniBand device does not support connected mode");
-
-        case NM_DEVICE_STATE_REASON_DEPENDENCY_FAILED:
-		return _("A dependency of the connection failed");
-	default:
-		return _("Unknown");
-	}
+	g_main_loop_quit (loop);  /* quit main loop */
 }
 
 /* Convert device type to string. Use setting names strings to match with
@@ -440,6 +261,8 @@ device_type_to_string (NMDevice *device)
 	switch (nm_device_get_device_type (device)) {
 	case NM_DEVICE_TYPE_ETHERNET:
 		return NM_SETTING_WIRED_SETTING_NAME;
+	case NM_DEVICE_TYPE_ADSL:
+		return NM_SETTING_ADSL_SETTING_NAME;
 	case NM_DEVICE_TYPE_WIFI:
 		return NM_SETTING_WIRELESS_SETTING_NAME;
 	case NM_DEVICE_TYPE_MODEM:
@@ -505,7 +328,7 @@ ap_wpa_rsn_flags_to_string (NM80211ApSecurityFlags flags)
 
 	i = 0;
 	while (flags_str[i])
-		 g_free (flags_str[i++]);
+		g_free (flags_str[i++]);
 
 	return ret_str;
 }
@@ -745,8 +568,8 @@ show_device_info (gpointer data, gpointer user_data)
 			else if (NM_IS_DEVICE_VLAN (device))
 				hwaddr = nm_device_vlan_get_hw_address (NM_DEVICE_VLAN (device));
 
-			state_str = g_strdup_printf ("%d (%s)", state, device_state_to_string (state));
-			reason_str = g_strdup_printf ("%d (%s)", reason, device_reason_to_string (reason));
+			state_str = g_strdup_printf ("%d (%s)", state, nmc_device_state_to_string (state));
+			reason_str = g_strdup_printf ("%d (%s)", reason, nmc_device_reason_to_string (reason));
 
 			nmc->allowed_fields[0].value = nmc_fields_dev_list_sections[0].name;  /* "GENERAL"*/
 			nmc->allowed_fields[1].value = nm_device_get_iface (device);
@@ -754,14 +577,17 @@ show_device_info (gpointer data, gpointer user_data)
 			nmc->allowed_fields[3].value = nm_device_get_vendor (device);
 			nmc->allowed_fields[4].value = nm_device_get_product (device);
 			nmc->allowed_fields[5].value = nm_device_get_driver (device) ? nm_device_get_driver (device) : _("(unknown)");
-			nmc->allowed_fields[6].value = hwaddr ? hwaddr : _("(unknown)");
-			nmc->allowed_fields[7].value = state_str;
-			nmc->allowed_fields[8].value = reason_str;
-			nmc->allowed_fields[9].value = nm_device_get_udi (device);
-			nmc->allowed_fields[10].value = nm_device_get_ip_iface (device);
-			nmc->allowed_fields[11].value = nm_device_get_managed (device) ? _("yes") : _("no");
-			nmc->allowed_fields[12].value = nm_device_get_firmware_missing (device) ? _("yes") : _("no");
-			nmc->allowed_fields[13].value = (acon = nm_device_get_active_connection (device)) ?
+			nmc->allowed_fields[6].value = nm_device_get_driver_version (device);
+			nmc->allowed_fields[7].value = nm_device_get_firmware_version (device);
+			nmc->allowed_fields[8].value = hwaddr ? hwaddr : _("(unknown)");
+			nmc->allowed_fields[9].value = state_str;
+			nmc->allowed_fields[10].value = reason_str;
+			nmc->allowed_fields[11].value = nm_device_get_udi (device);
+			nmc->allowed_fields[12].value = nm_device_get_ip_iface (device);
+			nmc->allowed_fields[13].value = nm_device_get_managed (device) ? _("yes") : _("no");
+			nmc->allowed_fields[14].value = nm_device_get_autoconnect (device) ? _("yes") : _("no");
+			nmc->allowed_fields[15].value = nm_device_get_firmware_missing (device) ? _("yes") : _("no");
+			nmc->allowed_fields[16].value = (acon = nm_device_get_active_connection (device)) ?
 			                                   nm_object_get_path (NM_OBJECT (acon)) : _("not connected");
 
 			nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX;
@@ -975,7 +801,7 @@ show_device_status (NMDevice *device, NmCli *nmc)
 {
 	nmc->allowed_fields[0].value = nm_device_get_iface (device);
 	nmc->allowed_fields[1].value = device_type_to_string (device);
-	nmc->allowed_fields[2].value = device_state_to_string (nm_device_get_state (device));
+	nmc->allowed_fields[2].value = nmc_device_state_to_string (nm_device_get_state (device));
 	nmc->allowed_fields[3].value = nm_object_get_path (NM_OBJECT (device));
 
 	nmc->print_fields.flags &= ~NMC_PF_FLAG_MAIN_HEADER_ADD & ~NMC_PF_FLAG_MAIN_HEADER_ONLY & ~NMC_PF_FLAG_FIELD_NAMES; /* Clear header flags */
@@ -1110,7 +936,7 @@ do_devices_list (NmCli *nmc, int argc, char **argv)
 				device = candidate;
 		}
 		if (!device) {
-		 	g_string_printf (nmc->return_text, _("Error: Device '%s' not found."), iface);
+			g_string_printf (nmc->return_text, _("Error: Device '%s' not found."), iface);
 			nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
 			goto error;
 		}
@@ -1151,6 +977,16 @@ timeout_cb (gpointer user_data)
 	return FALSE;
 }
 
+static gboolean
+progress_cb (gpointer user_data)
+{
+	NMDevice *device = (NMDevice *) user_data;
+
+	nmc_terminal_show_progress (device ? nmc_device_state_to_string (nm_device_get_state (device)) : "");
+
+	return TRUE;
+}
+
 static void
 disconnect_device_cb (NMDevice *device, GError *error, gpointer user_data)
 {
@@ -1166,10 +1002,13 @@ disconnect_device_cb (NMDevice *device, GError *error, gpointer user_data)
 		quit ();
 	} else {
 		state = nm_device_get_state (device);
-		printf (_("Device state: %d (%s)\n"), state, device_state_to_string (state));
 
 		if (nmc->nowait_flag || state == NM_DEVICE_STATE_DISCONNECTED) {
 			/* Don't want to wait or device already disconnected */
+			if (state == NM_DEVICE_STATE_DISCONNECTED && nmc->print_output == NMC_PRINT_PRETTY) {
+				nmc_terminal_erase_line ();
+				printf (_("Device '%s' has been disconnected.\n"), nm_device_get_iface (device));
+			}
 			quit ();
 		} else {
 			g_signal_connect (device, "notify::state", G_CALLBACK (device_state_cb), nmc);
@@ -1273,6 +1112,10 @@ do_device_disconnect (NmCli *nmc, int argc, char **argv)
 	nmc->should_wait = TRUE;
 	nm_device_disconnect (device, disconnect_device_cb, nmc);
 
+	/* Start progress indication */
+	if (nmc->print_output == NMC_PRINT_PRETTY)
+		progress_id = g_timeout_add (120, progress_cb, device);
+
 error:
 	return nmc->return_value;
 }
@@ -1399,7 +1242,7 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
 		}
 
 		if (!device) {
-		 	g_string_printf (nmc->return_text, _("Error: Device '%s' not found."), iface);
+			g_string_printf (nmc->return_text, _("Error: Device '%s' not found."), iface);
 			nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
 			goto error;
 		}
@@ -1419,7 +1262,7 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
 					g_free (bssid_up);
 				}
 				if (!ap) {
-				 	g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."), bssid_user);
+					g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."), bssid_user);
 					nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
 					goto error;
 				}
@@ -1436,7 +1279,7 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
 				show_acces_point_info (device, nmc);
 			}
 		} else {
-		 	g_string_printf (nmc->return_text, _("Error: Device '%s' is not a WiFi device."), iface);
+			g_string_printf (nmc->return_text, _("Error: Device '%s' is not a WiFi device."), iface);
 			nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
 			goto error;
 		}
@@ -1473,7 +1316,7 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
 				}
 			}
 			if (!ap) {
-			 	g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."), bssid_user);
+				g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."), bssid_user);
 				nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
 				goto error;
 			}
@@ -1490,6 +1333,433 @@ error:
 	return nmc->return_value;
 }
 
+static void
+monitor_device_state_cb (NMDevice *device, GParamSpec *pspec, gpointer user_data)
+{
+	NmCli *nmc = (NmCli *) user_data;
+	NMDeviceState state;
+	NMDeviceStateReason reason;
+
+	state = nm_device_get_state_reason (device, &reason);
+
+	if (state == NM_DEVICE_STATE_ACTIVATED) {
+		if (nmc->print_output == NMC_PRINT_PRETTY) {
+			NMActiveConnection *active = nm_device_get_active_connection (device);
+
+			nmc_terminal_erase_line ();
+			printf (_("Connection with UUID '%s' created and activated on device '%s'\n"),
+			        nm_active_connection_get_uuid (active), nm_device_get_iface (device));
+		}
+		quit ();
+	} else if (state == NM_DEVICE_STATE_FAILED) {
+		g_string_printf (nmc->return_text, _("Error: Connection activation failed: (%d) %s."),
+		                 reason, nmc_device_reason_to_string (reason));
+		nmc->return_value = NMC_RESULT_ERROR_CON_ACTIVATION;
+		quit ();
+	}
+}
+
+typedef struct {
+	NmCli *nmc;
+	NMDevice *device;
+} AddAndActivateInfo;
+
+static void
+add_and_activate_cb (NMClient *client,
+                     NMActiveConnection *active,
+                     const char *connection_path,
+                     GError *error,
+                     gpointer user_data)
+{
+	AddAndActivateInfo *info = (AddAndActivateInfo *) user_data;
+	NmCli *nmc = info->nmc;
+	NMDevice *device = info->device;
+	NMActiveConnectionState state;
+
+        if (error) {
+		g_string_printf (nmc->return_text, _("Error: Failed to add/activate new connection: (%d) %s"),
+		                 error->code, error->message);
+		nmc->return_value = NMC_RESULT_ERROR_CON_ACTIVATION;
+		quit ();
+	} else {
+		state = nm_active_connection_get_state (active);
+
+		if (state == NM_ACTIVE_CONNECTION_STATE_UNKNOWN) {
+			g_string_printf (nmc->return_text, _("Error: Failed to add/activate new connection: Unknown error"));
+			nmc->return_value = NMC_RESULT_ERROR_CON_ACTIVATION;
+			quit ();
+		}
+
+		if (nmc->nowait_flag || state == NM_ACTIVE_CONNECTION_STATE_ACTIVATED) {
+			/* User doesn't want to wait or already activated */
+			if (state == NM_ACTIVE_CONNECTION_STATE_ACTIVATED && nmc->print_output == NMC_PRINT_PRETTY) {
+				printf (_("Connection with UUID '%s' created and activated on device '%s'\n"),
+				        nm_active_connection_get_uuid (active), nm_device_get_iface (device));
+			}
+			quit ();
+		} else {
+			g_signal_connect (device, "notify::state", G_CALLBACK (monitor_device_state_cb), nmc);
+			g_timeout_add_seconds (nmc->timeout, timeout_cb, nmc);  /* Exit if timeout expires */
+
+			if (nmc->print_output == NMC_PRINT_PRETTY)
+				progress_id = g_timeout_add (120, progress_cb, device);
+		}
+	}
+
+	g_free (info);
+}
+
+/*
+ * 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
+ * where the function finished so that the function can be called repeatedly
+ * to get next matching device.
+ * Returns: found device or NULL
+ */
+static NMDevice *
+find_wifi_device_by_iface (const GPtrArray *devices, const char *iface, int *idx)
+{
+	NMDevice *device = NULL;
+	int i;
+
+	for (i = *idx; devices && (i < devices->len); i++) {
+		NMDevice *candidate = g_ptr_array_index (devices, i);
+		const char *dev_iface = nm_device_get_iface (candidate);
+
+		if (!NM_IS_DEVICE_WIFI (candidate))
+			continue;
+
+		if (iface) {
+			/* If a iface was specified then use it. */
+			if (strcmp (dev_iface, iface) == 0) {
+				device = candidate;
+				break;
+			}
+		} else {
+			/* Else return the first Wi-Fi device. */
+			device = candidate;
+			break;
+		}
+	}
+
+	*idx = i + 1;
+	return device;
+}
+
+/*
+ * Find AP on 'device' according to 'bssid' or 'ssid' parameter.
+ * Returns: found AP or NULL
+ */
+static NMAccessPoint *
+find_ap_on_device (NMDevice *device, GByteArray *bssid, const char *ssid)
+{
+	const GPtrArray *aps;
+	NMAccessPoint *ap = NULL;
+	int i;
+
+	g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), NULL);
+	g_return_val_if_fail ((bssid && !ssid) || (!bssid && ssid), NULL);
+
+	aps = nm_device_wifi_get_access_points (NM_DEVICE_WIFI (device));
+	for (i = 0; aps && (i < aps->len); i++) {
+		NMAccessPoint *candidate_ap = g_ptr_array_index (aps, i);
+
+		if (ssid) {
+			/* Parameter is SSID */
+			const GByteArray *candidate_ssid = nm_access_point_get_ssid (candidate_ap);
+			char *ssid_tmp = nm_utils_ssid_to_utf8 (candidate_ssid);
+
+			/* Compare SSIDs */
+			if (strcmp (ssid, ssid_tmp) == 0) {
+				ap = candidate_ap;
+				g_free (ssid_tmp);
+				break;
+			}
+			g_free (ssid_tmp);
+		} else if (bssid) {
+			/* Parameter is BSSID */
+			const char *candidate_bssid = nm_access_point_get_bssid (candidate_ap);
+			char *bssid_up = nm_utils_hwaddr_ntoa (bssid->data, ARPHRD_ETHER);
+
+			/* Compare BSSIDs */
+			if (strcmp (bssid_up, candidate_bssid) == 0) {
+				ap = candidate_ap;
+				g_free (bssid_up);
+				break;
+			}
+			g_free (bssid_up);
+		}
+	}
+
+	return ap;
+}
+
+static NMCResultCode
+do_device_wifi_connect_network (NmCli *nmc, int argc, char **argv)
+{
+	NMDevice *device = NULL;
+	NMAccessPoint *ap = NULL;
+	NMConnection *connection = NULL;
+	NMSettingConnection *s_con;
+	NMSettingWireless *s_wifi;
+	NMSettingWirelessSecurity *s_wsec;
+	AddAndActivateInfo *info;
+	const char *param_user = NULL;
+	const char *iface = NULL;
+	const char *bssid = NULL;
+	const char *password = NULL;
+	const char *con_name = NULL;
+	gboolean private = FALSE;
+	gboolean wait = TRUE;
+	gboolean wep_passphrase = FALSE;
+	GByteArray *bssid1_arr = NULL;
+	GByteArray *bssid2_arr = NULL;
+	const GPtrArray *devices;
+	int devices_idx;
+	GError *error = NULL;
+
+	/* Default timeout for waiting for operation completion */
+	nmc->timeout = 90;
+
+	/* Get the first compulsory argument (SSID or BSSID) */
+	if (argc > 0) {
+		param_user = *argv;
+		bssid1_arr = nm_utils_hwaddr_atoba (param_user, ARPHRD_ETHER);
+
+		argc--;
+		argv++;
+	} else {
+		g_string_printf (nmc->return_text, _("Error: SSID or BSSID are missing."));
+		nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
+		goto error;
+	}
+
+	/* Get the rest of the parameters */
+	while (argc > 0) {
+		if (strcmp (*argv, "iface") == 0) {
+			if (next_arg (&argc, &argv) != 0) {
+				g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *argv);
+				nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
+				goto error;
+			}
+			iface = *argv;
+		} else if (strcmp (*argv, "bssid") == 0) {
+			if (next_arg (&argc, &argv) != 0) {
+				g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *argv);
+				nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
+				goto error;
+			}
+			bssid = *argv;
+			bssid2_arr = nm_utils_hwaddr_atoba (bssid, ARPHRD_ETHER);
+			if (!bssid2_arr) {
+				g_string_printf (nmc->return_text, _("Error: bssid argument value '%s' is not a valid BSSID."),
+				                 bssid);
+				nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
+				goto error;
+			}
+		} else if (strcmp (*argv, "password") == 0) {
+			if (next_arg (&argc, &argv) != 0) {
+				g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *argv);
+				nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
+				goto error;
+			}
+			password = *argv;
+		} else if (strcmp (*argv, "wep-key-type") == 0) {
+			if (next_arg (&argc, &argv) != 0) {
+				g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *argv);
+				nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
+				goto error;
+			}
+			if (strcmp (*argv, "key") == 0)
+				wep_passphrase = FALSE;
+			else if (strcmp (*argv, "phrase") == 0)
+				wep_passphrase = TRUE;
+			else {
+				g_string_printf (nmc->return_text,
+				                 _("Error: wep-key-type argument value '%s' is invalid, use 'key' or 'phrase'."),
+				                 *argv);
+				nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
+				goto error;
+			}
+		} else if (strcmp (*argv, "name") == 0) {
+			if (next_arg (&argc, &argv) != 0) {
+				g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *argv);
+				nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
+				goto error;
+			}
+			con_name = *argv;
+		} else if (strcmp (*argv, "--private") == 0) {
+			private = TRUE;
+		} else if (strcmp (*argv, "--nowait") == 0) {
+			wait = FALSE;
+		} else if (strcmp (*argv, "--timeout") == 0) {
+			if (next_arg (&argc, &argv) != 0) {
+				g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *argv);
+				nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
+				goto error;
+			}
+
+			errno = 0;
+			nmc->timeout = strtol (*argv, NULL, 10);
+			if (errno || nmc->timeout < 0) {
+				g_string_printf (nmc->return_text, _("Error: timeout value '%s' is not valid."), *argv);
+				nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
+				goto error;
+			}
+		} else {
+			fprintf (stderr, _("Unknown parameter: %s\n"), *argv);
+		}
+
+		argc--;
+		argv++;
+	}
+
+	/* Verify SSID/BSSID parameters */
+	if (bssid1_arr && bssid2_arr && memcmp (bssid1_arr->data, bssid2_arr->data, ETH_ALEN)) {
+		g_string_printf (nmc->return_text, _("Error: BSSID to connect to (%s) differs from bssid argument (%s)."),
+		                 param_user, bssid);
+		nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
+		goto error;
+	}
+	if (!bssid1_arr && strlen (param_user) > 32) {
+		g_string_printf (nmc->return_text, _("Error: Parameter '%s' is neither SSID nor BSSID."), param_user);
+		nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
+		goto error;
+	}
+
+	if (!nmc_is_nm_running (nmc, &error)) {
+		if (error) {
+			g_string_printf (nmc->return_text, _("Error: Can't find out if NetworkManager is running: %s."), error->message);
+			nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
+			g_error_free (error);
+		} else {
+			g_string_printf (nmc->return_text, _("Error: NetworkManager is not running."));
+			nmc->return_value = NMC_RESULT_ERROR_NM_NOT_RUNNING;
+		}
+		goto error;
+	}
+
+	if (!nmc_versions_match (nmc))
+		goto error;
+
+	nmc->get_client (nmc);
+	devices = nm_client_get_devices (nmc->client);
+
+	/* Find a device to activate the connection on */
+	devices_idx = 0;
+	device = find_wifi_device_by_iface (devices, iface, &devices_idx);
+
+	if (!device) {
+		if (iface)
+			g_string_printf (nmc->return_text, _("Error: Device '%s' is not a Wi-Fi device."), iface);
+		else
+			g_string_printf (nmc->return_text, _("Error: No Wi-Fi device found."));
+		nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
+		goto error;
+	}
+
+	/* Find an AP to connect to */
+	ap = find_ap_on_device (device, bssid1_arr, bssid1_arr ? NULL : param_user);
+	if (!ap && !iface) {
+		/* AP not found. iface was not specified, so try finding the AP on another device. */
+		while ((device = find_wifi_device_by_iface (devices, NULL, &devices_idx)) != NULL) {
+			ap = find_ap_on_device (device, bssid1_arr, bssid1_arr ? NULL : param_user);
+			if (ap)
+				break;
+		}
+	}
+
+	if (!ap) {
+		if (!bssid1_arr)
+			g_string_printf (nmc->return_text, _("Error: No network with SSID '%s' found."), param_user);
+		else
+			g_string_printf (nmc->return_text, _("Error: No access point with BSSID '%s' found."), param_user);
+		nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
+		goto error;
+	}
+
+	/* If there are some connection data from user, create a connection and
+	 * fill them into proper settings. */
+	if (con_name || private || bssid2_arr || password)
+		connection = nm_connection_new ();
+
+	if (con_name || private) {
+		s_con =  (NMSettingConnection *) nm_setting_connection_new ();
+		nm_connection_add_setting (connection, NM_SETTING (s_con));
+
+		/* Set user provided connection name */
+		if (con_name)
+			g_object_set (s_con, NM_SETTING_CONNECTION_ID, con_name, NULL);
+
+		/* Connection will only be visible to this user when '--private' is specified */
+		if (private)
+			nm_setting_connection_add_permission (s_con, "user", g_get_user_name (), NULL);
+	}
+	if (bssid2_arr) {
+		s_wifi = (NMSettingWireless *) nm_setting_wireless_new ();
+		nm_connection_add_setting (connection, NM_SETTING (s_wifi));
+
+		/* 'bssid' parameter is used to restrict the conenction only to the BSSID */
+		g_object_set (s_wifi, NM_SETTING_WIRELESS_BSSID, bssid2_arr, NULL);
+	}
+	if (password) {
+		NM80211ApFlags flags = nm_access_point_get_flags (ap);
+		NM80211ApSecurityFlags wpa_flags = nm_access_point_get_wpa_flags (ap);
+		NM80211ApSecurityFlags rsn_flags = nm_access_point_get_rsn_flags (ap);
+
+		s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new ();
+		nm_connection_add_setting (connection, NM_SETTING (s_wsec));
+
+		/* Set password for WEP or WPA-PSK. */
+		if (flags & NM_802_11_AP_FLAGS_PRIVACY) {
+			if (wpa_flags == NM_802_11_AP_SEC_NONE && rsn_flags == NM_802_11_AP_SEC_NONE) {
+				/* WEP */
+				nm_setting_wireless_security_set_wep_key (s_wsec, 0, password);
+				g_object_set (G_OBJECT (s_wsec),
+				              NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE,
+				              wep_passphrase ? NM_WEP_KEY_TYPE_PASSPHRASE: NM_WEP_KEY_TYPE_KEY,
+				              NULL);
+			} else if (   !(wpa_flags & NM_802_11_AP_SEC_KEY_MGMT_802_1X)
+				   && !(rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_802_1X)) {
+				/* WPA PSK */
+				g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_PSK, password, NULL);
+			}
+		}
+		// FIXME: WPA-Enterprise is not supported yet.
+		// We are not able to determine and fill all the parameters for
+		// 802.1X authentication automatically without user providing
+		// the data. Adding nmcli options for the 8021x setting would
+		// clutter the command. However, that could be solved later by
+		// implementing add/edit connections support for nmcli.
+	}
+
+	/* nowait_flag indicates user input. should_wait says whether quit in start().
+	 * We have to delay exit after add_and_activate_cb() is called, even if
+	 * the user doesn't want to wait, in order to give NM time to check our
+	 * permissions. */
+	nmc->nowait_flag = !wait;
+	nmc->should_wait = TRUE;
+
+	info = g_malloc0 (sizeof (AddAndActivateInfo));
+	info->nmc = nmc;
+	info->device = device;
+
+	nm_client_add_and_activate_connection (nmc->client,
+	                                       connection,
+	                                       device,
+	                                       nm_object_get_path (NM_OBJECT (ap)),
+	                                       add_and_activate_cb,
+	                                       info);
+
+error:
+	if (bssid1_arr)
+		g_byte_array_free (bssid1_arr, TRUE);
+	if (bssid2_arr)
+		g_byte_array_free (bssid2_arr, TRUE);
+
+	return nmc->return_value;
+}
+
 static NMCResultCode
 do_device_wifi (NmCli *nmc, int argc, char **argv)
 {
@@ -1498,8 +1768,9 @@ do_device_wifi (NmCli *nmc, int argc, char **argv)
 	else if (argc > 0) {
 		if (matches (*argv, "list") == 0) {
 			nmc->return_value = do_device_wifi_list (nmc, argc-1, argv+1);
-		}
-		else {
+		} else if (matches (*argv, "connect") == 0) {
+			nmc->return_value = do_device_wifi_connect_network (nmc, argc-1, argv+1);
+		} else {
 			g_string_printf (nmc->return_text, _("Error: 'dev wifi' command '%s' is not valid."), *argv);
 			nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
 		}
@@ -1618,7 +1889,7 @@ do_device_wimax_list (NmCli *nmc, int argc, char **argv)
 		}
 
 		if (!device) {
-		 	g_string_printf (nmc->return_text, _("Error: Device '%s' not found."), iface);
+			g_string_printf (nmc->return_text, _("Error: Device '%s' not found."), iface);
 			nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
 			goto error;
 		}
@@ -1638,7 +1909,7 @@ do_device_wimax_list (NmCli *nmc, int argc, char **argv)
 					g_free (nsp_up);
 				}
 				if (!nsp) {
-				 	g_string_printf (nmc->return_text, _("Error: NSP with name '%s' not found."), nsp_user);
+					g_string_printf (nmc->return_text, _("Error: NSP with name '%s' not found."), nsp_user);
 					nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
 					goto error;
 				}
@@ -1649,7 +1920,7 @@ do_device_wimax_list (NmCli *nmc, int argc, char **argv)
 				show_nsp_info (device, nmc);
 			}
 		} else {
-		 	g_string_printf (nmc->return_text, _("Error: Device '%s' is not a WiMAX device."), iface);
+			g_string_printf (nmc->return_text, _("Error: Device '%s' is not a WiMAX device."), iface);
 			nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
 			goto error;
 		}
@@ -1680,7 +1951,7 @@ do_device_wimax_list (NmCli *nmc, int argc, char **argv)
 				}
 			}
 			if (!nsp) {
-			 	g_string_printf (nmc->return_text, _("Error: Access point with nsp '%s' not found."), nsp_user);
+				g_string_printf (nmc->return_text, _("Error: Access point with nsp '%s' not found."), nsp_user);
 				nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
 				goto error;
 			}
diff --git a/cli/src/network-manager.c b/cli/src/network-manager.c
index c23c9fae..927eadd1 100644
--- a/cli/src/network-manager.c
+++ b/cli/src/network-manager.c
@@ -14,7 +14,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * (C) Copyright 2010 - 2011 Red Hat, Inc.
+ * (C) Copyright 2010 - 2012 Red Hat, Inc.
  */
 
 #include "config.h"
@@ -57,6 +57,16 @@ static NmcOutputField nmc_fields_nm_status[] = {
 #define NMC_FIELDS_NM_WWAN           "WWAN"
 #define NMC_FIELDS_NM_WIMAX          "WIMAX"
 
+/* Available fields for 'nm permissions' */
+static NmcOutputField nmc_fields_nm_permissions[] = {
+	{"PERMISSION",     N_("PERMISSION"),      57, NULL, 0},  /* 0 */
+	{"VALUE",          N_("VALUE"),           10, NULL, 0},  /* 1 */
+	{NULL,             NULL,                  0, NULL, 0}
+};
+#define NMC_FIELDS_NM_PERMISSIONS_ALL     "PERMISSION,VALUE"
+#define NMC_FIELDS_NM_PERMISSIONS_COMMON  "PERMISSION,VALUE"
+
+
 /* glib main loop variable - defined in nmcli.c */
 extern GMainLoop *loop;
 
@@ -66,18 +76,20 @@ usage (void)
 	fprintf (stderr,
 	         _("Usage: nmcli nm { COMMAND | help }\n\n"
 #if WITH_WIMAX
-	         "  COMMAND := { status | enable | sleep | wifi | wwan | wimax }\n\n"
+	         "  COMMAND := { status | permissions | enable | sleep | wifi | wwan | wimax }\n\n"
 #else
-	         "  COMMAND := { status | enable | sleep | wifi | wwan }\n\n"
+	         "  COMMAND := { status | permissions | enable | sleep | wifi | wwan }\n\n"
 #endif
 	         "  status\n"
+	         "  permissions\n"
 	         "  enable [true|false]\n"
 	         "  sleep [true|false]\n"
 	         "  wifi [on|off]\n"
 	         "  wwan [on|off]\n"
 #if WITH_WIMAX
-	         "  wimax [on|off]\n\n"
+	         "  wimax [on|off]\n"
 #endif
+	         "\n"
 	         ));
 }
 
@@ -135,7 +147,7 @@ show_nm_status (NmCli *nmc)
 		fields_str = fields_common;
 	else if (!nmc->required_fields || strcasecmp (nmc->required_fields, "all") == 0)
 		fields_str = fields_all;
-	else 
+	else
 		fields_str = nmc->required_fields;
 
 	nmc->allowed_fields = nmc_fields_nm_status;
@@ -203,6 +215,129 @@ error:
 	return nmc->return_value;
 }
 
+#define NM_AUTH_PERMISSION_ENABLE_DISABLE_NETWORK     "org.freedesktop.NetworkManager.enable-disable-network"
+#define NM_AUTH_PERMISSION_ENABLE_DISABLE_WIFI        "org.freedesktop.NetworkManager.enable-disable-wifi"
+#define NM_AUTH_PERMISSION_ENABLE_DISABLE_WWAN        "org.freedesktop.NetworkManager.enable-disable-wwan"
+#define NM_AUTH_PERMISSION_ENABLE_DISABLE_WIMAX       "org.freedesktop.NetworkManager.enable-disable-wimax"
+#define NM_AUTH_PERMISSION_SLEEP_WAKE                 "org.freedesktop.NetworkManager.sleep-wake"
+#define NM_AUTH_PERMISSION_NETWORK_CONTROL            "org.freedesktop.NetworkManager.network-control"
+#define NM_AUTH_PERMISSION_WIFI_SHARE_PROTECTED       "org.freedesktop.NetworkManager.wifi.share.protected"
+#define NM_AUTH_PERMISSION_WIFI_SHARE_OPEN            "org.freedesktop.NetworkManager.wifi.share.open"
+#define NM_AUTH_PERMISSION_SETTINGS_MODIFY_SYSTEM     "org.freedesktop.NetworkManager.settings.modify.system"
+#define NM_AUTH_PERMISSION_SETTINGS_MODIFY_OWN        "org.freedesktop.NetworkManager.settings.modify.own"
+#define NM_AUTH_PERMISSION_SETTINGS_MODIFY_HOSTNAME   "org.freedesktop.NetworkManager.settings.modify.hostname"
+
+static const char *
+permission_to_string (NMClientPermission perm)
+{
+	switch (perm) {
+	case NM_CLIENT_PERMISSION_ENABLE_DISABLE_NETWORK:
+		return NM_AUTH_PERMISSION_ENABLE_DISABLE_NETWORK;
+	case NM_CLIENT_PERMISSION_ENABLE_DISABLE_WIFI:
+		return NM_AUTH_PERMISSION_ENABLE_DISABLE_WIFI;
+	case NM_CLIENT_PERMISSION_ENABLE_DISABLE_WWAN:
+		return NM_AUTH_PERMISSION_ENABLE_DISABLE_WWAN;
+	case NM_CLIENT_PERMISSION_ENABLE_DISABLE_WIMAX:
+		return NM_AUTH_PERMISSION_ENABLE_DISABLE_WIMAX;
+	case NM_CLIENT_PERMISSION_SLEEP_WAKE:
+		return NM_AUTH_PERMISSION_SLEEP_WAKE;
+	case NM_CLIENT_PERMISSION_NETWORK_CONTROL:
+		return NM_AUTH_PERMISSION_NETWORK_CONTROL;
+	case NM_CLIENT_PERMISSION_WIFI_SHARE_PROTECTED:
+		return NM_AUTH_PERMISSION_WIFI_SHARE_PROTECTED;
+	case NM_CLIENT_PERMISSION_WIFI_SHARE_OPEN:
+		return NM_AUTH_PERMISSION_WIFI_SHARE_OPEN;
+	case NM_CLIENT_PERMISSION_SETTINGS_MODIFY_SYSTEM:
+		return NM_AUTH_PERMISSION_SETTINGS_MODIFY_SYSTEM;
+	case NM_CLIENT_PERMISSION_SETTINGS_MODIFY_OWN:
+		return NM_AUTH_PERMISSION_SETTINGS_MODIFY_OWN;
+	case NM_CLIENT_PERMISSION_SETTINGS_MODIFY_HOSTNAME:
+		return NM_AUTH_PERMISSION_SETTINGS_MODIFY_HOSTNAME;
+	default:
+		return _("unknown");
+	}
+}
+
+static const char *
+permission_result_to_string (NMClientPermissionResult perm_result)
+{
+	
+	switch (perm_result) {
+	case NM_CLIENT_PERMISSION_RESULT_YES:
+		return _("yes");
+	case NM_CLIENT_PERMISSION_RESULT_NO:
+		return _("no");
+	case NM_CLIENT_PERMISSION_RESULT_AUTH:
+		return _("auth");
+	default:
+		return _("unknown");
+	}
+}
+
+static NMCResultCode
+show_nm_permissions (NmCli *nmc)
+{
+	NMClientPermission perm;
+	GError *error = NULL;
+	const char *fields_str;
+	const char *fields_all =    NMC_FIELDS_NM_PERMISSIONS_ALL;
+	const char *fields_common = NMC_FIELDS_NM_PERMISSIONS_COMMON;
+	guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0;
+	guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0;
+	guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0;
+
+	if (!nmc->required_fields || strcasecmp (nmc->required_fields, "common") == 0)
+		fields_str = fields_common;
+	else if (!nmc->required_fields || strcasecmp (nmc->required_fields, "all") == 0)
+		fields_str = fields_all;
+	else
+		fields_str = nmc->required_fields;
+
+	nmc->allowed_fields = nmc_fields_nm_permissions;
+	nmc->print_fields.indices = parse_output_fields (fields_str, nmc->allowed_fields, &error);
+
+	if (error) {
+		if (error->code == 0)
+			g_string_printf (nmc->return_text, _("Error: 'nm permissions': %s"), error->message);
+		else
+			g_string_printf (nmc->return_text, _("Error: 'nm permissions': %s; allowed fields: %s"), error->message, NMC_FIELDS_NM_PERMISSIONS_ALL);
+		g_error_free (error);
+		nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
+		return nmc->return_value;
+	}
+
+	if (!nmc_is_nm_running (nmc, &error)) {
+		if (error) {
+			g_string_printf (nmc->return_text, _("Error: Can't find out if NetworkManager is running: %s."), error->message);
+			nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
+			g_error_free (error);
+		} else {
+			g_string_printf (nmc->return_text, _("Error: NetworkManager is not running."));
+			nmc->return_value = NMC_RESULT_ERROR_NM_NOT_RUNNING;
+		}
+		goto error;
+	}
+
+	nmc->get_client (nmc); /* create NMClient */
+
+	nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER_ADD | NMC_PF_FLAG_FIELD_NAMES;
+	nmc->print_fields.header_name = _("NetworkManager permissions");
+	print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */
+
+	for (perm = NM_CLIENT_PERMISSION_NONE + 1; perm <= NM_CLIENT_PERMISSION_LAST; perm++) {
+		NMClientPermissionResult perm_result = nm_client_get_permission_result (nmc->client, perm);
+
+		set_val_str (nmc->allowed_fields, 0, permission_to_string (perm));
+		set_val_str (nmc->allowed_fields, 1, permission_result_to_string (perm_result));
+		nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag;
+		print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */
+	}
+	return NMC_RESULT_SUCCESS;
+
+error:
+	return nmc->return_value;
+}
+
 /* libnm-glib doesn't provide API fro Sleep method - implement D-Bus call ourselves */
 static void networking_set_sleep (NmCli *nmc, gboolean in_sleep)
 {
@@ -214,8 +349,8 @@ static void networking_set_sleep (NmCli *nmc, gboolean in_sleep)
 	if (!connection) {
 		g_string_printf (nmc->return_text, _("Error: Couldn't connect to system bus: %s"), err->message);
 		nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
-        	g_error_free (err);
-	        goto gone;
+		g_error_free (err);
+		goto gone;
 	}
 
 	proxy = dbus_g_proxy_new_for_name (connection,
@@ -226,8 +361,8 @@ static void networking_set_sleep (NmCli *nmc, gboolean in_sleep)
 		g_string_printf (nmc->return_text, _("Error: Couldn't create D-Bus object proxy."));
 		nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
 		goto gone;
-        }
- 
+	}
+
 	if (!dbus_g_proxy_call (proxy, "Sleep", &err, G_TYPE_BOOLEAN, in_sleep, G_TYPE_INVALID, G_TYPE_INVALID)) {
 		g_string_printf (nmc->return_text, _("Error in sleep: %s"), err->message);
 		nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
@@ -267,6 +402,11 @@ do_network_manager (NmCli *nmc, int argc, char **argv)
 				goto opt_error;
 			nmc->return_value = show_nm_status (nmc);
 		}
+		else if (matches (*argv, "permissions") == 0) {
+			if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error))
+				goto opt_error;
+			nmc->return_value = show_nm_permissions (nmc);
+		}
 		else if (matches (*argv, "enable") == 0) {
 			if (next_arg (&argc, &argv) != 0) {
 				/* no argument, show current state of networking */
diff --git a/cli/src/settings.c b/cli/src/settings.c
index bf422920..e67bd8f0 100644
--- a/cli/src/settings.c
+++ b/cli/src/settings.c
@@ -348,6 +348,26 @@ static NmcOutputField nmc_fields_setting_pppoe[] = {
                                          NM_SETTING_PPPOE_PASSWORD
 #define NMC_FIELDS_SETTING_PPPOE_COMMON  NMC_FIELDS_SETTING_PPP_ALL
 
+/* Available fields for NM_SETTING_ADSL_SETTING_NAME */
+static NmcOutputField nmc_fields_setting_adsl[] = {
+	SETTING_FIELD ("name", 10),                                /* 0 */
+	SETTING_FIELD (NM_SETTING_ADSL_USERNAME, 15),              /* 1 */
+	SETTING_FIELD (NM_SETTING_ADSL_PASSWORD, 15),              /* 2 */
+	SETTING_FIELD (NM_SETTING_ADSL_VPI, 10),                   /* 3 */
+	SETTING_FIELD (NM_SETTING_ADSL_VCI, 10),                   /* 4 */
+	SETTING_FIELD (NM_SETTING_ADSL_ENCAPSULATION, 10),         /* 5 */
+	SETTING_FIELD (NM_SETTING_ADSL_PROTOCOL, 10),              /* 6 */
+	{NULL, NULL, 0, NULL, 0}
+};
+#define NMC_FIELDS_SETTING_ADSL_ALL     "name"","\
+                                        NM_SETTING_ADSL_USERNAME","\
+                                        NM_SETTING_ADSL_PASSWORD","\
+                                        NM_SETTING_ADSL_VPI","\
+                                        NM_SETTING_ADSL_VCI","\
+                                        NM_SETTING_ADSL_ENCAPSULATION","\
+                                        NM_SETTING_ADSL_PROTOCOL
+#define NMC_FIELDS_SETTING_ADSL_COMMON  NMC_FIELDS_SETTING_ADSL_ALL
+
 /* Available fields for NM_SETTING_GSM_SETTING_NAME */
 static NmcOutputField nmc_fields_setting_gsm[] = {
 	SETTING_FIELD ("name", 10),                                        /* 0 */
@@ -607,10 +627,11 @@ vlan_priorities_to_string (NMSettingVlan *s_vlan, NMVlanPriorityMap map)
 	for (i = 0; i < nm_setting_vlan_get_num_priorities (s_vlan, map); i++) {
 		guint32 from, to;
 
-		nm_setting_vlan_get_priority (s_vlan, map, i, &from, &to);
-		g_string_append_printf (priorities, "%d:%d,", from, to);
+		if (nm_setting_vlan_get_priority (s_vlan, map, i, &from, &to))
+			g_string_append_printf (priorities, "%d:%d,", from, to);
 	}
-	g_string_truncate (priorities, priorities->len-1);  /* chop off trailing ',' */
+	if (priorities->len)
+		g_string_truncate (priorities, priorities->len-1);  /* chop off trailing ',' */
 
 	return g_string_free (priorities, FALSE);
 }
@@ -917,11 +938,11 @@ setting_wireless_details (NMSettingWireless *s_wireless, NmCli *nmc)
 	nmc->allowed_fields[2].value = nm_setting_wireless_get_mode (s_wireless);
 	nmc->allowed_fields[3].value = nm_setting_wireless_get_band (s_wireless);
 	nmc->allowed_fields[4].value = channel_str;
-	nmc->allowed_fields[5].value = bssid_str ? bssid_str : _("not set");
+	nmc->allowed_fields[5].value = bssid_str;
 	nmc->allowed_fields[6].value = rate_str;
 	nmc->allowed_fields[7].value = tx_power_str;
-	nmc->allowed_fields[8].value = device_mac_str ? device_mac_str : _("not set");
-	nmc->allowed_fields[9].value = cloned_mac_str ? cloned_mac_str : _("not set");
+	nmc->allowed_fields[8].value = device_mac_str;
+	nmc->allowed_fields[9].value = cloned_mac_str;
 	nmc->allowed_fields[10].value = mac_blacklist->str;
 	nmc->allowed_fields[11].value = strcmp (mtu_str, "0") ?  mtu_str : _("auto");
 	nmc->allowed_fields[12].value = seen_bssids->str;
@@ -1715,3 +1736,34 @@ setting_vlan_details (NMSettingVlan *s_vlan, NmCli *nmc)
 	return TRUE;
 }
 
+gboolean
+setting_adsl_details (NMSettingAdsl *s_adsl, NmCli *nmc)
+{
+	guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0;
+	guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0;
+	guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0;
+
+	g_return_val_if_fail (NM_IS_SETTING_ADSL (s_adsl), FALSE);
+
+	nmc->allowed_fields = nmc_fields_setting_adsl;
+	nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_ADSL_ALL, nmc->allowed_fields, NULL);
+	nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES;
+	print_fields (nmc->print_fields, nmc->allowed_fields);  /* Print field names */
+
+	nmc->allowed_fields[0].value = NM_SETTING_ADSL_SETTING_NAME;
+	nmc->allowed_fields[1].value = nm_setting_adsl_get_username (s_adsl);
+	nmc->allowed_fields[2].value = nm_setting_adsl_get_password (s_adsl);
+	nmc->allowed_fields[3].value = g_strdup_printf ("%d", nm_setting_adsl_get_vpi (s_adsl));
+	nmc->allowed_fields[4].value = g_strdup_printf ("%d", nm_setting_adsl_get_vci (s_adsl));
+	nmc->allowed_fields[5].value = nm_setting_adsl_get_encapsulation (s_adsl);
+	nmc->allowed_fields[6].value = nm_setting_adsl_get_protocol (s_adsl);
+
+	nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX;
+	print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */
+
+	g_free ((char*) nmc->allowed_fields[3].value);
+	g_free ((char*) nmc->allowed_fields[4].value);
+
+	return TRUE;
+}
+
diff --git a/cli/src/settings.h b/cli/src/settings.h
index 964d6648..3309bd0a 100644
--- a/cli/src/settings.h
+++ b/cli/src/settings.h
@@ -22,6 +22,7 @@
 
 #include <nm-setting-connection.h>
 #include <nm-setting-wired.h>
+#include <nm-setting-adsl.h>
 #include <nm-setting-8021x.h>
 #include <nm-setting-wireless.h>
 #include <nm-setting-wireless-security.h>
@@ -63,5 +64,6 @@ gboolean setting_wimax_details (NMSettingWimax *s_wimax, NmCli *nmc);
 gboolean setting_infiniband_details (NMSettingInfiniband *s_infiniband, NmCli *nmc);
 gboolean setting_bond_details (NMSettingBond *s_bond, NmCli *nmc);
 gboolean setting_vlan_details (NMSettingVlan *s_vlan, NmCli *nmc);
+gboolean setting_adsl_details (NMSettingAdsl *s_adsl, NmCli *nmc);
 
 #endif /* NMC_SETTINGS_H */
diff --git a/cli/src/utils.c b/cli/src/utils.c
index 24bc998c..8030d5e1 100644
--- a/cli/src/utils.c
+++ b/cli/src/utils.c
@@ -69,7 +69,7 @@ ssid_to_printable (const char *str, gsize len)
 	int i;
 
 	if (str == NULL || len == 0)
-		 return NULL;
+		return NULL;
 
 	if (g_utf8_validate (str, len, NULL))
 		return g_strdup_printf ("'%.*s'", (int) len, str);
@@ -137,6 +137,38 @@ nmc_ip6_address_as_string (const struct in6_addr *ip, GError **error)
 }
 
 /*
+ * Erase terminal line using ANSI escape sequences.
+ * It prints <ESC>[2K sequence to erase the line and then \r to return back
+ * to the beginning of the line.
+ *
+ * http://www.termsys.demon.co.uk/vtansi.htm
+ */
+void
+nmc_terminal_erase_line (void)
+{
+	printf ("\33[2K\r");
+	fflush (stdout);
+}
+
+/*
+ * Print animated progress for an operation.
+ * Repeated calls of the function will show rotating slash in terminal followed
+ * by the string passed in 'str' argument.
+ */
+void
+nmc_terminal_show_progress (const char *str)
+{
+	static int idx = 0;
+	const char slashes[4] = {'|', '/', '-', '\\'};
+
+	nmc_terminal_erase_line ();
+	printf ("%c %s", slashes[idx++], str ? str : "");
+	fflush (stdout);
+	if (idx == 4)
+		idx = 0;
+}
+
+/*
  * Find out how many columns an UTF-8 string occupies on the screen
  */
 int
@@ -244,7 +276,7 @@ print_fields (const NmcPrintFields fields, const NmcOutputField field_values[])
 	int table_width = 0;
 	char *line = NULL;
 	char *indent_str;
-	const char *not_set_str = _("not set");
+	const char *not_set_str = "--";
 	int i;
 	gboolean multiline = fields.flags & NMC_PF_FLAG_MULTILINE;
 	gboolean terse = fields.flags & NMC_PF_FLAG_TERSE;
@@ -439,7 +471,7 @@ nmc_is_nm_running (NmCli *nmc, GError **error)
 			g_set_error (error, 0, 0, "%s", nmc->return_text->str);
 		goto done;
 	}
- 
+
 	if (!org_freedesktop_DBus_name_has_owner (proxy, NM_DBUS_SERVICE, &has_owner, &err)) {
 		g_string_printf (nmc->return_text, _("Error: NameHasOwner request failed: %s"),
 		                 (err && err->message) ? err->message : _("(unknown)"));
diff --git a/cli/src/utils.h b/cli/src/utils.h
index a22ae144..81ce1633 100644
--- a/cli/src/utils.h
+++ b/cli/src/utils.h
@@ -30,6 +30,8 @@ int next_arg (int *argc, char ***argv);
 char *ssid_to_printable (const char *str, gsize len);
 char *nmc_ip4_address_as_string (guint32 ip, GError **error);
 char *nmc_ip6_address_as_string (const struct in6_addr *ip, GError **error);
+void nmc_terminal_erase_line (void);
+void nmc_terminal_show_progress (const char *str);
 int nmc_string_screen_width (const char *start, const char *end);
 void set_val_str (NmcOutputField fields_array[], guint32 index, const char *value);
 void set_val_arr (NmcOutputField fields_array[], guint32 index, const char **value);
diff --git a/configure b/configure
index 3663c681..0dfc12ba 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.68 for NetworkManager 0.9.4.0.
+# Generated by GNU Autoconf 2.68 for NetworkManager 0.9.5.95.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager>.
 #
@@ -571,8 +571,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='NetworkManager'
 PACKAGE_TARNAME='NetworkManager'
-PACKAGE_VERSION='0.9.4.0'
-PACKAGE_STRING='NetworkManager 0.9.4.0'
+PACKAGE_VERSION='0.9.5.95'
+PACKAGE_STRING='NetworkManager 0.9.5.95'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager'
 PACKAGE_URL=''
 
@@ -618,6 +618,11 @@ am__EXEEXT_TRUE
 LTLIBOBJS
 WITH_TESTS_FALSE
 WITH_TESTS_TRUE
+ENABLE_VAPIGEN_FALSE
+ENABLE_VAPIGEN_TRUE
+VAPIGEN_MAKEFILE
+VAPIGEN_VAPIDIR
+VAPIGEN
 GTK_DOC_USE_REBASE_FALSE
 GTK_DOC_USE_REBASE_TRUE
 GTK_DOC_USE_LIBTOOL_FALSE
@@ -795,6 +800,12 @@ INTLTOOL_PROP_RULE
 INTLTOOL_KEYS_RULE
 INTLTOOL_DIRECTORY_RULE
 INTLTOOL_DESKTOP_RULE
+intltool__v_merge_options_0
+intltool__v_merge_options_
+INTLTOOL_V_MERGE_OPTIONS
+INTLTOOL__v_MERGE_0
+INTLTOOL__v_MERGE_
+INTLTOOL_V_MERGE
 INTLTOOL_EXTRACT
 INTLTOOL_MERGE
 INTLTOOL_UPDATE
@@ -969,6 +980,7 @@ with_html_dir
 enable_gtk_doc
 enable_gtk_doc_html
 enable_gtk_doc_pdf
+enable_vala
 with_tests
 '
       ac_precious_vars='build_alias
@@ -1567,7 +1579,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 0.9.4.0 to adapt to many kinds of systems.
+\`configure' configures NetworkManager 0.9.5.95 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1637,7 +1649,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of NetworkManager 0.9.4.0:";;
+     short | recursive ) echo "Configuration of NetworkManager 0.9.5.95:";;
    esac
   cat <<\_ACEOF
 
@@ -1670,6 +1682,8 @@ Optional Features:
   --enable-gtk-doc        use gtk-doc to build documentation [[default=no]]
   --enable-gtk-doc-html   build documentation in html format [[default=yes]]
   --enable-gtk-doc-pdf    build documentation in pdf format [[default=no]]
+  --enable-vala=[no/auto/yes]
+                          build Vala bindings [[default=auto]]
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -1861,7 +1875,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-NetworkManager configure 0.9.4.0
+NetworkManager configure 0.9.5.95
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2405,7 +2419,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 0.9.4.0, which was
+It was created by NetworkManager $as_me 0.9.5.95, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -3226,7 +3240,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='NetworkManager'
- VERSION='0.9.4.0'
+ VERSION='0.9.5.95'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -16353,8 +16367,8 @@ fi
 
 NM_MAJOR_VERSION=0
 NM_MINOR_VERSION=9
-NM_MICRO_VERSION=4
-NM_VERSION=0.9.4.0
+NM_MICRO_VERSION=5
+NM_VERSION=0.9.5.95
 
 
 
@@ -16685,14 +16699,12 @@ case "$am__api_version" in
     ;;
 esac
 
+INTLTOOL_REQUIRED_VERSION_AS_INT=`echo 0.40.0 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3`
+INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
 if test -n "0.40.0"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intltool >= 0.40.0" >&5
 $as_echo_n "checking for intltool >= 0.40.0... " >&6; }
-
-    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo 0.40.0 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
-    INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3`
-    INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
-
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_APPLIED_VERSION found" >&5
 $as_echo "$INTLTOOL_APPLIED_VERSION found" >&6; }
     test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
@@ -16823,25 +16835,48 @@ if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT";
     as_fn_error $? "The intltool scripts were not found. Please install intltool." "$LINENO" 5
 fi
 
-  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
-INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
-     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
-     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
-      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@'
-     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
-   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
-    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
-INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
-       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
-      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
-      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@'
-      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
-      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
-    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
-  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
-    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
-    INTLTOOL_SERVICE_RULE='%.service: %.service.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
-   INTLTOOL_POLICY_RULE='%.policy:    %.policy.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+if test -z "$AM_DEFAULT_VERBOSITY"; then
+  AM_DEFAULT_VERBOSITY=1
+fi
+
+
+INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))'
+INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))'
+INTLTOOL__v_MERGE_0='@echo "  ITMRG " $@;'
+
+
+
+
+INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))'
+intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))'
+intltool__v_merge_options_0='-q'
+
+
+
+
+  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -p $(top_srcdir)/po $< $@'
+     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge 5000; then
+      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u --no-translations $< $@'
+else
+      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)_it_tmp_dir=tmp.intltool.$$RANDOM && mkdir $$_it_tmp_dir && LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u $$_it_tmp_dir $< $@ && rmdir $$_it_tmp_dir'
+fi
+      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_SERVICE_RULE='%.service: %.service.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+   INTLTOOL_POLICY_RULE='%.policy:    %.policy.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
 
 
 
@@ -17160,7 +17195,7 @@ $INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1
 if test $? -ne 0; then
    as_fn_error $? "perl 5.8.1 is required for intltool" "$LINENO" 5
 else
-   IT_PERL_VERSION="`$INTLTOOL_PERL -e \"printf '%vd', $^V\"`"
+   IT_PERL_VERSION=`$INTLTOOL_PERL -e "printf '%vd', $^V"`
    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $IT_PERL_VERSION" >&5
 $as_echo "$IT_PERL_VERSION" >&6; }
 fi
@@ -20382,6 +20417,11 @@ fi
 
 
 
+# dbus-glib uses GValueArray, which is deprecated as of GLib 2.32.
+# Set GLIB_VERSION_MIN_REQUIRED to something less than that to avoid
+# getting warnings. (GLIB_VERSION_2_26 is the oldest defined version.)
+DBUS_CFLAGS="$DBUS_CFLAGS -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26"
+
 
 pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB" >&5
@@ -22669,7 +22709,7 @@ else
 fi
 
 if (test "${enable_concheck}" = "yes"); then
-	if test x"$have_concheck" = x"no"; then
+	if test x"$have_libsoup" = x"no"; then
 		as_fn_error $? "Connectivity checking requires libsoup development headers" "$LINENO" 5
 	fi
 
@@ -23072,6 +23112,247 @@ fi
 
 
 
+
+
+
+
+
+  # Check whether --enable-vala was given.
+if test "${enable_vala+set}" = set; then :
+  enableval=$enable_vala;
+else
+  enable_vala=auto
+fi
+
+
+  case $enable_vala in #(
+  no) :
+     ;; #(
+  yes) :
+
+        if test "x" != "xyes" -a "x$found_introspection" != "xyes"; then :
+
+            as_fn_error $? "Vala bindings require GObject Introspection" "$LINENO" 5
+
+fi
+       ;; #(
+  auto) :
+
+        if test "x" != "xyes" -a "x$found_introspection" != "xyes"; then :
+
+            enable_vala=no
+
+fi
+       ;; #(
+  *) :
+
+        as_fn_error $? "Invalid argument passed to --enable-vala, should be one of [no/auto/yes]" "$LINENO" 5
+       ;;
+esac
+
+  if test "x" = "x"; then :
+
+      vapigen_pkg_name=vapigen
+
+else
+
+      vapigen_pkg_name=vapigen-
+
+fi
+  if test "x0.17.1.24" = "x"; then :
+
+      vapigen_pkg="$vapigen_pkg_name"
+
+else
+
+      vapigen_pkg="$vapigen_pkg_name >= 0.17.1.24"
+
+fi
+
+
+
+
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=0.9.0
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+		PKG_CONFIG=""
+	fi
+fi
+
+  if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$vapigen_pkg\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$vapigen_pkg") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+
+      if test "$enable_vala" = "auto"; then :
+
+          enable_vala=yes
+
+fi
+
+else
+
+      case $enable_vala in #(
+  yes) :
+
+          as_fn_error $? "$vapigen_pkg not found" "$LINENO" 5
+         ;; #(
+  auto) :
+
+          enable_vala=no
+         ;; #(
+  *) :
+     ;;
+esac
+
+fi
+
+  case $enable_vala in #(
+  yes) :
+
+      VAPIGEN=`$PKG_CONFIG --variable=vapigen vapigen`
+      VAPIGEN_MAKEFILE=`$PKG_CONFIG --variable=datadir vapigen`/vala/Makefile.vapigen
+      if test "x" = "x"; then :
+
+          VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir vapigen`
+
+else
+
+          VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir_versioned vapigen`
+
+fi
+     ;; #(
+  *) :
+     ;;
+esac
+
+
+
+
+
+   if test "x$enable_vala" = "xyes"; then
+  ENABLE_VAPIGEN_TRUE=
+  ENABLE_VAPIGEN_FALSE='#'
+else
+  ENABLE_VAPIGEN_TRUE='#'
+  ENABLE_VAPIGEN_FALSE=
+fi
+
+
+
+
 # Check whether --with-tests was given.
 if test "${with_tests+set}" = set; then :
   withval=$with_tests;
@@ -23095,7 +23376,7 @@ case $with_tests in
 esac
 
 
-ac_config_files="$ac_config_files Makefile include/Makefile include/nm-version.h src/Makefile src/tests/Makefile src/generated/Makefile src/logging/Makefile src/dns-manager/Makefile src/vpn-manager/Makefile src/dhcp-manager/Makefile src/dhcp-manager/tests/Makefile src/ip6-manager/Makefile src/supplicant-manager/Makefile src/supplicant-manager/tests/Makefile src/ppp-manager/Makefile src/dnsmasq-manager/Makefile src/modem-manager/Makefile src/bluez-manager/Makefile src/wifi/Makefile src/firewall-manager/Makefile src/settings/Makefile src/settings/plugins/Makefile src/settings/plugins/ifupdown/Makefile src/settings/plugins/ifupdown/tests/Makefile src/settings/plugins/ifnet/Makefile src/settings/plugins/ifnet/tests/Makefile src/settings/plugins/ifcfg-rh/Makefile src/settings/plugins/ifcfg-rh/tests/Makefile src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile src/settings/plugins/ifcfg-suse/Makefile src/settings/plugins/keyfile/Makefile src/settings/plugins/keyfile/tests/Makefile src/settings/plugins/keyfile/tests/keyfiles/Makefile src/settings/tests/Makefile src/wimax/Makefile src/backends/Makefile libnm-util/libnm-util.pc libnm-util/Makefile libnm-util/tests/Makefile libnm-util/tests/certs/Makefile libnm-glib/libnm-glib.pc libnm-glib/libnm-glib-vpn.pc libnm-glib/Makefile libnm-glib/tests/Makefile callouts/Makefile callouts/tests/Makefile tools/Makefile cli/Makefile cli/src/Makefile test/Makefile initscript/Makefile initscript/RedHat/Makefile initscript/RedHat/NetworkManager initscript/Gentoo/Makefile initscript/Gentoo/NetworkManager initscript/Debian/Makefile initscript/Debian/NetworkManager initscript/Slackware/Makefile initscript/Slackware/rc.networkmanager initscript/SUSE/Makefile initscript/SUSE/networkmanager initscript/Arch/Makefile initscript/Arch/networkmanager initscript/paldo/Makefile initscript/paldo/NetworkManager initscript/Mandriva/Makefile initscript/Mandriva/networkmanager initscript/linexa/Makefile initscript/linexa/networkmanager introspection/Makefile introspection/all.xml man/Makefile man/NetworkManager.8 man/NetworkManager.conf.5 man/nm-system-settings.conf.5 man/nm-tool.1 man/nm-online.1 man/nmcli.1 po/Makefile.in policy/Makefile data/Makefile docs/Makefile docs/api/Makefile docs/api/version.xml docs/libnm-glib/Makefile docs/libnm-util/Makefile NetworkManager.pc examples/Makefile examples/shell/Makefile examples/python/Makefile examples/ruby/Makefile examples/C/Makefile examples/C/glib/Makefile examples/C/qt/Makefile"
+ac_config_files="$ac_config_files Makefile include/Makefile include/nm-version.h src/Makefile src/tests/Makefile src/generated/Makefile src/logging/Makefile src/posix-signals/Makefile src/dns-manager/Makefile src/vpn-manager/Makefile src/dhcp-manager/Makefile src/dhcp-manager/tests/Makefile src/ip6-manager/Makefile src/supplicant-manager/Makefile src/supplicant-manager/tests/Makefile src/ppp-manager/Makefile src/dnsmasq-manager/Makefile src/modem-manager/Makefile src/bluez-manager/Makefile src/wifi/Makefile src/firewall-manager/Makefile src/settings/Makefile src/settings/plugins/Makefile src/settings/plugins/ifupdown/Makefile src/settings/plugins/ifupdown/tests/Makefile src/settings/plugins/ifnet/Makefile src/settings/plugins/ifnet/tests/Makefile src/settings/plugins/ifcfg-rh/Makefile src/settings/plugins/ifcfg-rh/tests/Makefile src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile src/settings/plugins/ifcfg-suse/Makefile src/settings/plugins/keyfile/Makefile src/settings/plugins/keyfile/tests/Makefile src/settings/plugins/keyfile/tests/keyfiles/Makefile src/settings/plugins/example/Makefile src/settings/tests/Makefile src/wimax/Makefile src/backends/Makefile libnm-util/libnm-util.pc libnm-util/Makefile libnm-util/tests/Makefile libnm-util/tests/certs/Makefile libnm-glib/libnm-glib.pc libnm-glib/libnm-glib-vpn.pc libnm-glib/Makefile libnm-glib/tests/Makefile callouts/Makefile callouts/tests/Makefile tools/Makefile cli/Makefile cli/src/Makefile test/Makefile initscript/Makefile initscript/RedHat/Makefile initscript/RedHat/NetworkManager initscript/Gentoo/Makefile initscript/Gentoo/NetworkManager initscript/Debian/Makefile initscript/Debian/NetworkManager initscript/Slackware/Makefile initscript/Slackware/rc.networkmanager initscript/SUSE/Makefile initscript/SUSE/networkmanager initscript/Arch/Makefile initscript/Arch/networkmanager initscript/paldo/Makefile initscript/paldo/NetworkManager initscript/Mandriva/Makefile initscript/Mandriva/networkmanager initscript/linexa/Makefile initscript/linexa/networkmanager introspection/Makefile introspection/all.xml man/Makefile man/NetworkManager.8 man/NetworkManager.conf.5 man/nm-system-settings.conf.5 man/nm-tool.1 man/nm-online.1 man/nmcli.1 po/Makefile.in policy/Makefile data/Makefile docs/Makefile docs/api/Makefile docs/api/version.xml docs/libnm-glib/Makefile docs/libnm-util/Makefile NetworkManager.pc examples/Makefile examples/shell/Makefile examples/python/Makefile examples/ruby/Makefile examples/C/Makefile examples/C/glib/Makefile examples/C/qt/Makefile vapi/Makefile"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -23363,6 +23644,10 @@ if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"
   as_fn_error $? "conditional \"GTK_DOC_USE_REBASE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${ENABLE_VAPIGEN_TRUE}" && test -z "${ENABLE_VAPIGEN_FALSE}"; then
+  as_fn_error $? "conditional \"ENABLE_VAPIGEN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${WITH_TESTS_TRUE}" && test -z "${WITH_TESTS_FALSE}"; then
   as_fn_error $? "conditional \"WITH_TESTS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -23776,7 +24061,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 0.9.4.0, which was
+This file was extended by NetworkManager $as_me 0.9.5.95, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -23842,7 +24127,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 0.9.4.0
+NetworkManager config.status 0.9.5.95
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
@@ -24366,6 +24651,7 @@ do
     "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;;
     "src/generated/Makefile") CONFIG_FILES="$CONFIG_FILES src/generated/Makefile" ;;
     "src/logging/Makefile") CONFIG_FILES="$CONFIG_FILES src/logging/Makefile" ;;
+    "src/posix-signals/Makefile") CONFIG_FILES="$CONFIG_FILES src/posix-signals/Makefile" ;;
     "src/dns-manager/Makefile") CONFIG_FILES="$CONFIG_FILES src/dns-manager/Makefile" ;;
     "src/vpn-manager/Makefile") CONFIG_FILES="$CONFIG_FILES src/vpn-manager/Makefile" ;;
     "src/dhcp-manager/Makefile") CONFIG_FILES="$CONFIG_FILES src/dhcp-manager/Makefile" ;;
@@ -24392,6 +24678,7 @@ do
     "src/settings/plugins/keyfile/Makefile") CONFIG_FILES="$CONFIG_FILES src/settings/plugins/keyfile/Makefile" ;;
     "src/settings/plugins/keyfile/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/settings/plugins/keyfile/tests/Makefile" ;;
     "src/settings/plugins/keyfile/tests/keyfiles/Makefile") CONFIG_FILES="$CONFIG_FILES src/settings/plugins/keyfile/tests/keyfiles/Makefile" ;;
+    "src/settings/plugins/example/Makefile") CONFIG_FILES="$CONFIG_FILES src/settings/plugins/example/Makefile" ;;
     "src/settings/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/settings/tests/Makefile" ;;
     "src/wimax/Makefile") CONFIG_FILES="$CONFIG_FILES src/wimax/Makefile" ;;
     "src/backends/Makefile") CONFIG_FILES="$CONFIG_FILES src/backends/Makefile" ;;
@@ -24453,6 +24740,7 @@ do
     "examples/C/Makefile") CONFIG_FILES="$CONFIG_FILES examples/C/Makefile" ;;
     "examples/C/glib/Makefile") CONFIG_FILES="$CONFIG_FILES examples/C/glib/Makefile" ;;
     "examples/C/qt/Makefile") CONFIG_FILES="$CONFIG_FILES examples/C/qt/Makefile" ;;
+    "vapi/Makefile") CONFIG_FILES="$CONFIG_FILES vapi/Makefile" ;;
     "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
@@ -26171,6 +26459,12 @@ fi
 
 echo libnl version: ${libnl_version}
 
+if test "${ac_with_wext}" = "yes"; then
+	echo WEXT support: yes
+else
+	echo WEXT support: no
+fi
+
 echo
 echo Building documentation: ${with_docs}
 echo Building tests: ${with_tests}
diff --git a/configure.ac b/configure.ac
index ed66b3d8..ed491dea 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,8 +3,8 @@ AC_PREREQ([2.63])
 dnl The NM version number
 m4_define([nm_major_version], [0])
 m4_define([nm_minor_version], [9])
-m4_define([nm_micro_version], [4])
-m4_define([nm_nano_version],  [0])
+m4_define([nm_micro_version], [5])
+m4_define([nm_nano_version],  [95])
 m4_define([nm_version],
           [nm_major_version.nm_minor_version.nm_micro_version.nm_nano_version])
 
@@ -304,6 +304,11 @@ PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.1 dbus-glib-1 >= 0.75)
 AC_SUBST(DBUS_CFLAGS)
 AC_SUBST(DBUS_LIBS)
 
+# dbus-glib uses GValueArray, which is deprecated as of GLib 2.32.
+# Set GLIB_VERSION_MIN_REQUIRED to something less than that to avoid
+# getting warnings. (GLIB_VERSION_2_26 is the oldest defined version.)
+DBUS_CFLAGS="$DBUS_CFLAGS -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26"
+
 PKG_CHECK_MODULES(GLIB, gthread-2.0 glib-2.0 >= 2.22 gobject-2.0)
 AC_SUBST(GLIB_CFLAGS)
 AC_SUBST(GLIB_LIBS)
@@ -692,7 +697,7 @@ PKG_CHECK_MODULES(LIBSOUP, [libsoup-2.4 >= 2.26], [have_libsoup=yes],[have_libso
 AC_ARG_ENABLE(concheck, AS_HELP_STRING([--enable-concheck], [enable connectivity checking support]),
                      [enable_concheck=${enableval}], [enable_concheck=${have_libsoup}])
 if (test "${enable_concheck}" = "yes"); then
-	if test x"$have_concheck" = x"no"; then
+	if test x"$have_libsoup" = x"no"; then
 		AC_MSG_ERROR(Connectivity checking requires libsoup development headers)
 	fi
 	AC_SUBST(LIBSOUP_CFLAGS)
@@ -707,6 +712,13 @@ NM_COMPILER_WARNINGS
 
 GTK_DOC_CHECK(1.0)
 
+
+dnl -------------------------
+dnl Vala bindings
+dnl -------------------------
+
+VAPIGEN_CHECK(0.17.1.24)
+
 dnl
 dnl Tests
 dnl
@@ -730,6 +742,7 @@ src/Makefile
 src/tests/Makefile
 src/generated/Makefile
 src/logging/Makefile
+src/posix-signals/Makefile
 src/dns-manager/Makefile
 src/vpn-manager/Makefile
 src/dhcp-manager/Makefile
@@ -756,6 +769,7 @@ src/settings/plugins/ifcfg-suse/Makefile
 src/settings/plugins/keyfile/Makefile
 src/settings/plugins/keyfile/tests/Makefile
 src/settings/plugins/keyfile/tests/keyfiles/Makefile
+src/settings/plugins/example/Makefile
 src/settings/tests/Makefile
 src/wimax/Makefile
 src/backends/Makefile
@@ -817,6 +831,7 @@ examples/ruby/Makefile
 examples/C/Makefile
 examples/C/glib/Makefile
 examples/C/qt/Makefile
+vapi/Makefile
 ])
 AC_OUTPUT
 
@@ -873,6 +888,12 @@ fi
 
 echo libnl version: ${libnl_version}
 
+if test "${ac_with_wext}" = "yes"; then
+	echo WEXT support: yes
+else
+	echo WEXT support: no
+fi
+
 echo
 echo Building documentation: ${with_docs}
 echo Building tests: ${with_tests}
diff --git a/data/Makefile.in b/data/Makefile.in
index 44049fad..1ddfdcac 100644
--- a/data/Makefile.in
+++ b/data/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -159,6 +159,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -254,6 +258,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -292,6 +299,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/docs/Makefile.in b/docs/Makefile.in
index ab5c8c88..558a1a60 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -46,7 +46,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -174,6 +174,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -269,6 +273,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -307,6 +314,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/docs/api/Makefile.in b/docs/api/Makefile.in
index 40f1784f..31eeeb6e 100644
--- a/docs/api/Makefile.in
+++ b/docs/api/Makefile.in
@@ -55,7 +55,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -178,6 +178,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -273,6 +277,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -311,6 +318,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/docs/api/html/NetworkManager.devhelp2 b/docs/api/html/NetworkManager.devhelp2
index ba5d51b3..af8fdfaf 100644
--- a/docs/api/html/NetworkManager.devhelp2
+++ b/docs/api/html/NetworkManager.devhelp2
@@ -4,23 +4,23 @@
   <chapters>
     <sub name="D-Bus API Reference" link="ref-dbus.html"/>
     <sub name="Network Configuration Setting Specification" link="ref-settings.html">
-      <sub name="Configuration Settings" link="ref-settings.html#id561824"/>
+      <sub name="Configuration Settings" link="ref-settings.html#id372896"/>
       <sub name="Secret flag types" link="secrets-flags.html"/>
     </sub>
     <sub name="Migrating from NetworkManager 0.8 to NetworkManager 0.9" link="ref-migrating.html">
-      <sub name="Architecture and D-Bus API Changes in 0.9" link="ref-migrating.html#id489512">
-        <sub name="Elimination of the User Settings Service" link="ref-migrating.html#id564124"/>
-        <sub name="User Secret Agents" link="ref-migrating.html#id545754"/>
-        <sub name="Settings Service Interface Changes" link="ref-migrating.html#id541570"/>
-        <sub name="Connection Object Interface Changes" link="ref-migrating.html#id573230"/>
-        <sub name="Permissions Methods Consolidation" link="ref-migrating.html#id571106"/>
-        <sub name="AddConnection Returns Object Path of New Connection" link="ref-migrating.html#id562529"/>
-        <sub name="Support for WiMAX Devices" link="ref-migrating.html#id534191"/>
-        <sub name="New Device States" link="ref-migrating.html#id569872"/>
-        <sub name="New Active Connection State" link="ref-migrating.html#id529374"/>
-        <sub name="Consolidated Modem Devices" link="ref-migrating.html#id577250"/>
-        <sub name="Secret Property Flags" link="ref-migrating.html#id544444"/>
-        <sub name="Deprecated Methods Removed" link="ref-migrating.html#id540933"/>
+      <sub name="Architecture and D-Bus API Changes in 0.9" link="ref-migrating.html#id366491">
+        <sub name="Elimination of the User Settings Service" link="ref-migrating.html#id366497"/>
+        <sub name="User Secret Agents" link="ref-migrating.html#id356823"/>
+        <sub name="Settings Service Interface Changes" link="ref-migrating.html#id355349"/>
+        <sub name="Connection Object Interface Changes" link="ref-migrating.html#id364468"/>
+        <sub name="Permissions Methods Consolidation" link="ref-migrating.html#id382175"/>
+        <sub name="AddConnection Returns Object Path of New Connection" link="ref-migrating.html#id365236"/>
+        <sub name="Support for WiMAX Devices" link="ref-migrating.html#id373812"/>
+        <sub name="New Device States" link="ref-migrating.html#id347885"/>
+        <sub name="New Active Connection State" link="ref-migrating.html#id375497"/>
+        <sub name="Consolidated Modem Devices" link="ref-migrating.html#id383339"/>
+        <sub name="Secret Property Flags" link="ref-migrating.html#id355516"/>
+        <sub name="Deprecated Methods Removed" link="ref-migrating.html#id352005"/>
       </sub>
     </sub>
     <sub name="Index" link="ix01.html"/>
diff --git a/docs/api/html/index.html b/docs/api/html/index.html
index 2c9b8d1b..0fc54781 100644
--- a/docs/api/html/index.html
+++ b/docs/api/html/index.html
@@ -22,11 +22,11 @@
 	    <code class="email">&lt;<a class="email" href="mailto:dcbw@redhat.com">dcbw@redhat.com</a>&gt;</code><br>
 	  </p></div></div>
 </div></div></div>
-<div><p class="releaseinfo">Version 0.9.4.0
+<div><p class="releaseinfo">Version 0.9.5.95
 </p></div>
 <div><p class="copyright">Copyright © 2011 The NetworkManager Authors</p></div>
 <div><div class="legalnotice">
-<a name="id490970"></a><p>
+<a name="id302042"></a><p>
 	Permission is granted to copy, distribute and/or modify this
 	document under the terms of the <em class="citetitle">GNU Free
 	Documentation License</em>, Version 1.1 or any later
@@ -61,25 +61,25 @@
 <dt><span class="chapter"><a href="ref-dbus.html">D-Bus API Reference</a></span></dt>
 <dt><span class="chapter"><a href="ref-settings.html">Network Configuration Setting Specification</a></span></dt>
 <dd><dl>
-<dt><span class="section"><a href="ref-settings.html#id561824">Configuration Settings</a></span></dt>
+<dt><span class="section"><a href="ref-settings.html#id372896">Configuration Settings</a></span></dt>
 <dt><span class="section"><a href="secrets-flags.html">Secret flag types</a></span></dt>
 </dl></dd>
 <dt><span class="chapter"><a href="ref-migrating.html">Migrating from NetworkManager 0.8 to NetworkManager 0.9</a></span></dt>
 <dd><dl>
-<dt><span class="section"><a href="ref-migrating.html#id489512">Architecture and D-Bus API Changes in 0.9</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id366491">Architecture and D-Bus API Changes in 0.9</a></span></dt>
 <dd><dl>
-<dt><span class="section"><a href="ref-migrating.html#id564124">Elimination of the User Settings Service</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id545754">User Secret Agents</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id541570">Settings Service Interface Changes</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id573230">Connection Object Interface Changes</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id571106">Permissions Methods Consolidation</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id562529">AddConnection Returns Object Path of New Connection</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id534191">Support for WiMAX Devices</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id569872">New Device States</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id529374">New Active Connection State</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id577250">Consolidated Modem Devices</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id544444">Secret Property Flags</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id540933">Deprecated Methods Removed</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id366497">Elimination of the User Settings Service</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id356823">User Secret Agents</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id355349">Settings Service Interface Changes</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id364468">Connection Object Interface Changes</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id382175">Permissions Methods Consolidation</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id365236">AddConnection Returns Object Path of New Connection</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id373812">Support for WiMAX Devices</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id347885">New Device States</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id375497">New Active Connection State</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id383339">Consolidated Modem Devices</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id355516">Secret Property Flags</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id352005">Deprecated Methods Removed</a></span></dt>
 </dl></dd>
 </dl></dd>
 <dt><span class="index"><a href="ix01.html">Index</a></span></dt>
diff --git a/docs/api/html/ix01.html b/docs/api/html/ix01.html
index 5affd5c8..d2ae0ae2 100644
--- a/docs/api/html/ix01.html
+++ b/docs/api/html/ix01.html
@@ -21,7 +21,7 @@
 </tr></table>
 <div class="index">
 <div class="titlepage"><div><div><h2 class="title">
-<a name="id489941"></a>Index</h2></div></div></div>
+<a name="id301013"></a>Index</h2></div></div></div>
 <div class="index"></div>
 </div>
 <div class="footer">
diff --git a/docs/api/html/ref-migrating.html b/docs/api/html/ref-migrating.html
index 56c6f912..b18b7aa6 100644
--- a/docs/api/html/ref-migrating.html
+++ b/docs/api/html/ref-migrating.html
@@ -23,20 +23,20 @@
 <div class="titlepage"><div><div><h2 class="title">
 <a name="ref-migrating"></a>Migrating from NetworkManager 0.8 to NetworkManager 0.9</h2></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section"><a href="ref-migrating.html#id489512">Architecture and D-Bus API Changes in 0.9</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id366491">Architecture and D-Bus API Changes in 0.9</a></span></dt>
 <dd><dl>
-<dt><span class="section"><a href="ref-migrating.html#id564124">Elimination of the User Settings Service</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id545754">User Secret Agents</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id541570">Settings Service Interface Changes</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id573230">Connection Object Interface Changes</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id571106">Permissions Methods Consolidation</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id562529">AddConnection Returns Object Path of New Connection</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id534191">Support for WiMAX Devices</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id569872">New Device States</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id529374">New Active Connection State</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id577250">Consolidated Modem Devices</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id544444">Secret Property Flags</a></span></dt>
-<dt><span class="section"><a href="ref-migrating.html#id540933">Deprecated Methods Removed</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id366497">Elimination of the User Settings Service</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id356823">User Secret Agents</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id355349">Settings Service Interface Changes</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id364468">Connection Object Interface Changes</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id382175">Permissions Methods Consolidation</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id365236">AddConnection Returns Object Path of New Connection</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id373812">Support for WiMAX Devices</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id347885">New Device States</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id375497">New Active Connection State</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id383339">Consolidated Modem Devices</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id355516">Secret Property Flags</a></span></dt>
+<dt><span class="section"><a href="ref-migrating.html#id352005">Deprecated Methods Removed</a></span></dt>
 </dl></dd>
 </dl></div>
 <p>
@@ -50,14 +50,14 @@
   </p>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id489512"></a>Architecture and D-Bus API Changes in 0.9</h2></div></div></div>
+<a name="id366491"></a>Architecture and D-Bus API Changes in 0.9</h2></div></div></div>
 <p>
       This section details the architectural and D-Bus API changes in
       NetworkManager 0.9.
     </p>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id564124"></a>Elimination of the User Settings Service</h3></div></div></div>
+<a name="id366497"></a>Elimination of the User Settings Service</h3></div></div></div>
 <p>
       Previously there were two "settings services", or D-Bus services that
       provided and saved network configuration information.  NetworkManager
@@ -103,7 +103,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id545754"></a>User Secret Agents</h3></div></div></div>
+<a name="id356823"></a>User Secret Agents</h3></div></div></div>
 <p>
       Even with the elimination of the user settings service, in some cases it
       is still desirable to store secrets in the user's session and not in
@@ -152,7 +152,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id541570"></a>Settings Service Interface Changes</h3></div></div></div>
+<a name="id355349"></a>Settings Service Interface Changes</h3></div></div></div>
 <p>
       With the elimination of the user settings service, the old
       <code class="literal">org.freedesktop.NetworkManagerUserSettings</code> and
@@ -190,7 +190,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id573230"></a>Connection Object Interface Changes</h3></div></div></div>
+<a name="id364468"></a>Connection Object Interface Changes</h3></div></div></div>
 <p>
       Consistent with the interface changes to the Settings object, the
       Connection object's D-Bus interface has changed to
@@ -224,7 +224,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id571106"></a>Permissions Methods Consolidation</h3></div></div></div>
+<a name="id382175"></a>Permissions Methods Consolidation</h3></div></div></div>
 <p>
       Previously there were two D-Bus method calls to retrieve the list of
       operations that a user client could perform, and two signals notifying
@@ -256,7 +256,7 @@
       are now string-based permissions.  The mapping is as follows:
       </p>
 <div class="table">
-<a name="id559061"></a><p class="title"><b>Table 20. </b></p>
+<a name="id370129"></a><p class="title"><b>Table 20. </b></p>
 <div class="table-contents"><table border="1">
 <colgroup>
 <col>
@@ -307,7 +307,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id562529"></a>AddConnection Returns Object Path of New Connection</h3></div></div></div>
+<a name="id365236"></a>AddConnection Returns Object Path of New Connection</h3></div></div></div>
 <p>
       The <a class="ulink" href="spec.html#org.freedesktop.NetworkManager.Settings" target="_top">
       <code class="literal">org.freedesktop.NetworkManager.Settings.AddConnection</code>
@@ -325,7 +325,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id534191"></a>Support for WiMAX Devices</h3></div></div></div>
+<a name="id373812"></a>Support for WiMAX Devices</h3></div></div></div>
 <p>
       NetworkManager now supports Intel WiMAX mobile broadband devices.  A
       corresponding device type (<code class="literal">NM_DEVICE_TYPE_WIMAX</code>) and
@@ -348,7 +348,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id569872"></a>New Device States</h3></div></div></div>
+<a name="id347885"></a>New Device States</h3></div></div></div>
 <p>
       A few <a class="ulink" href="spec.html#type-NM_DEVICE_STATE" target="_top">new device states</a>
       have been added, and all device states have been renumbered for flexibility.
@@ -363,7 +363,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id529374"></a>New Active Connection State</h3></div></div></div>
+<a name="id375497"></a>New Active Connection State</h3></div></div></div>
 <p>
       Along with the new device states, an
       <a class="ulink" href="spec.html#type-NM_ACTIVE_CONNECTION_STATE" target="_top">additional
@@ -379,7 +379,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id577250"></a>Consolidated Modem Devices</h3></div></div></div>
+<a name="id383339"></a>Consolidated Modem Devices</h3></div></div></div>
 <p>
       Many new mobile broadband devices support multiple access families, like
       Qualcomm Gobi cards (CDMA/EVDO and GSM/UMTS), or multi-mode EVDO/LTE
@@ -415,7 +415,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id544444"></a>Secret Property Flags</h3></div></div></div>
+<a name="id355516"></a>Secret Property Flags</h3></div></div></div>
 <p>
       In the Connection object's configuration properties, each setting's secret
       properties (like WiFi passphrases, or public key passwords, etc) now has
@@ -424,7 +424,7 @@
       following values:
       </p>
 <div class="table">
-<a name="id544453"></a><p class="title"><b>Table 21. </b></p>
+<a name="id355525"></a><p class="title"><b>Table 21. </b></p>
 <div class="table-contents"><table border="1">
 <colgroup>
 <col>
@@ -486,7 +486,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id540933"></a>Deprecated Methods Removed</h3></div></div></div>
+<a name="id352005"></a>Deprecated Methods Removed</h3></div></div></div>
 <p>
       A few methods and signals of the <code class="literal">org.freedesktop.NetworkManager</code>
       interface deprecated in version 0.7 have been removed.  All the
@@ -496,7 +496,7 @@
       their replacements:
       </p>
 <div class="table">
-<a name="id540947"></a><p class="title"><b>Table 22. </b></p>
+<a name="id352019"></a><p class="title"><b>Table 22. </b></p>
 <div class="table-contents"><table border="1">
 <colgroup>
 <col>
diff --git a/docs/api/html/ref-settings.html b/docs/api/html/ref-settings.html
index 7278b958..faff8ce8 100644
--- a/docs/api/html/ref-settings.html
+++ b/docs/api/html/ref-settings.html
@@ -23,7 +23,7 @@
 <div class="titlepage"><div><div><h2 class="title">
 <a name="ref-settings"></a>Network Configuration Setting Specification</h2></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section"><a href="ref-settings.html#id561824">Configuration Settings</a></span></dt>
+<dt><span class="section"><a href="ref-settings.html#id372896">Configuration Settings</a></span></dt>
 <dt><span class="section"><a href="secrets-flags.html">Secret flag types</a></span></dt>
 </dl></div>
 <p>
@@ -35,11 +35,11 @@
     </p>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id561824"></a>Configuration Settings</h2></div></div></div>
+<a name="id372896"></a>Configuration Settings</h2></div></div></div>
 <p>
 </p>
 <div class="table">
-<a name="id543615"></a><p class="title"><b>Table 1. 802-1x setting</b></p>
+<a name="id354687"></a><p class="title"><b>Table 1. 802-1x setting</b></p>
 <div class="table-contents"><table summary="802-1x setting" border="1">
 <colgroup>
 <col>
@@ -246,7 +246,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id547978"></a><p class="title"><b>Table 2. bluetooth setting</b></p>
+<a name="id359051"></a><p class="title"><b>Table 2. bluetooth setting</b></p>
 <div class="table-contents"><table summary="bluetooth setting" border="1">
 <colgroup>
 <col>
@@ -285,7 +285,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id548111"></a><p class="title"><b>Table 3. bond setting</b></p>
+<a name="id359183"></a><p class="title"><b>Table 3. bond setting</b></p>
 <div class="table-contents"><table summary="bond setting" border="1">
 <colgroup>
 <col>
@@ -324,7 +324,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id548244"></a><p class="title"><b>Table 4. cdma setting</b></p>
+<a name="id359316"></a><p class="title"><b>Table 4. cdma setting</b></p>
 <div class="table-contents"><table summary="cdma setting" border="1">
 <colgroup>
 <col>
@@ -375,7 +375,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id548442"></a><p class="title"><b>Table 5. connection setting</b></p>
+<a name="id359514"></a><p class="title"><b>Table 5. connection setting</b></p>
 <div class="table-contents"><table summary="connection setting" border="1">
 <colgroup>
 <col>
@@ -462,7 +462,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id548833"></a><p class="title"><b>Table 6. gsm setting</b></p>
+<a name="id359906"></a><p class="title"><b>Table 6. gsm setting</b></p>
 <div class="table-contents"><table summary="gsm setting" border="1">
 <colgroup>
 <col>
@@ -555,7 +555,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id578510"></a><p class="title"><b>Table 7. infiniband setting</b></p>
+<a name="id389611"></a><p class="title"><b>Table 7. infiniband setting</b></p>
 <div class="table-contents"><table summary="infiniband setting" border="1">
 <colgroup>
 <col>
@@ -600,7 +600,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id578649"></a><p class="title"><b>Table 8. ipv4 setting</b></p>
+<a name="id389749"></a><p class="title"><b>Table 8. ipv4 setting</b></p>
 <div class="table-contents"><table summary="ipv4 setting" border="1">
 <colgroup>
 <col>
@@ -699,7 +699,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id579045"></a><p class="title"><b>Table 9. ipv6 setting</b></p>
+<a name="id390145"></a><p class="title"><b>Table 9. ipv6 setting</b></p>
 <div class="table-contents"><table summary="ipv6 setting" border="1">
 <colgroup>
 <col>
@@ -786,7 +786,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id579392"></a><p class="title"><b>Table 10. 802-11-olpc-mesh setting</b></p>
+<a name="id390492"></a><p class="title"><b>Table 10. 802-11-olpc-mesh setting</b></p>
 <div class="table-contents"><table summary="802-11-olpc-mesh setting" border="1">
 <colgroup>
 <col>
@@ -831,7 +831,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id579530"></a><p class="title"><b>Table 11. ppp setting</b></p>
+<a name="id390631"></a><p class="title"><b>Table 11. ppp setting</b></p>
 <div class="table-contents"><table summary="ppp setting" border="1">
 <colgroup>
 <col>
@@ -966,7 +966,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id580187"></a><p class="title"><b>Table 12. pppoe setting</b></p>
+<a name="id391292"></a><p class="title"><b>Table 12. pppoe setting</b></p>
 <div class="table-contents"><table summary="pppoe setting" border="1">
 <colgroup>
 <col>
@@ -1017,7 +1017,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id580393"></a><p class="title"><b>Table 13. serial setting</b></p>
+<a name="id391498"></a><p class="title"><b>Table 13. serial setting</b></p>
 <div class="table-contents"><table summary="serial setting" border="1">
 <colgroup>
 <col>
@@ -1074,7 +1074,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id580632"></a><p class="title"><b>Table 14. vlan setting</b></p>
+<a name="id391737"></a><p class="title"><b>Table 14. vlan setting</b></p>
 <div class="table-contents"><table summary="vlan setting" border="1">
 <colgroup>
 <col>
@@ -1137,7 +1137,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id580907"></a><p class="title"><b>Table 15. vpn setting</b></p>
+<a name="id392012"></a><p class="title"><b>Table 15. vpn setting</b></p>
 <div class="table-contents"><table summary="vpn setting" border="1">
 <colgroup>
 <col>
@@ -1188,7 +1188,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id581112"></a><p class="title"><b>Table 16. wimax setting</b></p>
+<a name="id392218"></a><p class="title"><b>Table 16. wimax setting</b></p>
 <div class="table-contents"><table summary="wimax setting" border="1">
 <colgroup>
 <col>
@@ -1227,7 +1227,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id581251"></a><p class="title"><b>Table 17. 802-3-ethernet setting</b></p>
+<a name="id392356"></a><p class="title"><b>Table 17. 802-3-ethernet setting</b></p>
 <div class="table-contents"><table summary="802-3-ethernet setting" border="1">
 <colgroup>
 <col>
@@ -1320,7 +1320,7 @@
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id581691"></a><p class="title"><b>Table 18. 802-11-wireless setting</b></p>
+<a name="id392797"></a><p class="title"><b>Table 18. 802-11-wireless setting</b></p>
 <div class="table-contents"><table summary="802-11-wireless setting" border="1">
 <colgroup>
 <col>
@@ -1419,13 +1419,19 @@
 <td><pre class="screen"></pre></td>
 <td>If the wireless connection has any security restrictions, like 802.1x, WEP, or WPA, set this property to '802-11-wireless-security' and ensure the connection contains a valid 802-11-wireless-security setting.</td>
 </tr>
+<tr>
+<td><pre class="screen">hidden</pre></td>
+<td><pre class="screen">boolean</pre></td>
+<td><pre class="screen">FALSE</pre></td>
+<td>If TRUE, indicates this network is a non-broadcasting network that hides its SSID.  In this case various workarounds may take place, such as probe-scanning the SSID for more reliable network discovery.  However, these workarounds expose inherent insecurities with hidden SSID networks, and thus hidden SSID networks should be used with caution.</td>
+</tr>
 </tbody>
 </table></div>
 </div>
 <p><br class="table-break">
 </p>
 <div class="table">
-<a name="id582200"></a><p class="title"><b>Table 19. 802-11-wireless-security setting</b></p>
+<a name="id393341"></a><p class="title"><b>Table 19. 802-11-wireless-security setting</b></p>
 <div class="table-contents"><table summary="802-11-wireless-security setting" border="1">
 <colgroup>
 <col>
diff --git a/docs/api/html/spec.html b/docs/api/html/spec.html
index a75799e7..80c10325 100644
--- a/docs/api/html/spec.html
+++ b/docs/api/html/spec.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ascii" /><title>NetworkManager D-Bus Interface Specification version 0.9.4.0</title><style type="text/css">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ascii" /><title>NetworkManager D-Bus Interface Specification version 0.9.5.95</title><style type="text/css">
 
           body {
             font-family: sans-serif;
@@ -98,7 +98,7 @@
             margin-right: 4em;
           }
 
-        </style></head><body><h1 class="topbox">NetworkManager D-Bus Interface Specification</h1><h2>Version 0.9.4.0</h2><div>Copyright (C) 2008 - 2011 Red Hat, Inc.</div><div>Copyright (C) 2008 - 2009 Novell, Inc.</div><div class="license">
+        </style></head><body><h1 class="topbox">NetworkManager D-Bus Interface Specification</h1><h2>Version 0.9.5.95</h2><div>Copyright (C) 2008 - 2011 Red Hat, Inc.</div><div>Copyright (C) 2008 - 2009 Novell, Inc.</div><div class="license">
 <p>This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
@@ -112,7 +112,7 @@ General Public License for more details.</p>
 <p>You should have received a copy of the GNU Lesser General Public
 License along with this library; if not, write to the Free Software
 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</p>
-</div><h2>Interfaces</h2><ul><li><code><a href="#org.freedesktop.NetworkManager">org.freedesktop.NetworkManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AccessPoint">org.freedesktop.NetworkManager.AccessPoint</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device">org.freedesktop.NetworkManager.Device</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wired">org.freedesktop.NetworkManager.Device.Wired</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wireless">org.freedesktop.NetworkManager.Device.Wireless</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Modem">org.freedesktop.NetworkManager.Device.Modem</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bluetooth">org.freedesktop.NetworkManager.Device.Bluetooth</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.OlpcMesh">org.freedesktop.NetworkManager.Device.OlpcMesh</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.WiMax">org.freedesktop.NetworkManager.Device.WiMax</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Infiniband">org.freedesktop.NetworkManager.Device.Infiniband</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bond">org.freedesktop.NetworkManager.Device.Bond</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Vlan">org.freedesktop.NetworkManager.Device.Vlan</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.WiMax.Nsp">org.freedesktop.NetworkManager.WiMax.Nsp</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP4Config">org.freedesktop.NetworkManager.IP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP6Config">org.freedesktop.NetworkManager.IP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP4Config">org.freedesktop.NetworkManager.DHCP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP6Config">org.freedesktop.NetworkManager.DHCP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings">org.freedesktop.NetworkManager.Settings</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings.Connection">org.freedesktop.NetworkManager.Settings.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Connection.Active">org.freedesktop.NetworkManager.Connection.Active</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AgentManager">org.freedesktop.NetworkManager.AgentManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.SecretAgent">org.freedesktop.NetworkManager.SecretAgent</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Connection">org.freedesktop.NetworkManager.VPN.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Plugin">org.freedesktop.NetworkManager.VPN.Plugin</a></code></li></ul>
+</div><h2>Interfaces</h2><ul><li><code><a href="#org.freedesktop.NetworkManager">org.freedesktop.NetworkManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AccessPoint">org.freedesktop.NetworkManager.AccessPoint</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device">org.freedesktop.NetworkManager.Device</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wired">org.freedesktop.NetworkManager.Device.Wired</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wireless">org.freedesktop.NetworkManager.Device.Wireless</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Modem">org.freedesktop.NetworkManager.Device.Modem</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bluetooth">org.freedesktop.NetworkManager.Device.Bluetooth</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.OlpcMesh">org.freedesktop.NetworkManager.Device.OlpcMesh</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.WiMax">org.freedesktop.NetworkManager.Device.WiMax</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Infiniband">org.freedesktop.NetworkManager.Device.Infiniband</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bond">org.freedesktop.NetworkManager.Device.Bond</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Vlan">org.freedesktop.NetworkManager.Device.Vlan</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Adsl">org.freedesktop.NetworkManager.Device.Adsl</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.WiMax.Nsp">org.freedesktop.NetworkManager.WiMax.Nsp</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP4Config">org.freedesktop.NetworkManager.IP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP6Config">org.freedesktop.NetworkManager.IP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP4Config">org.freedesktop.NetworkManager.DHCP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP6Config">org.freedesktop.NetworkManager.DHCP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings">org.freedesktop.NetworkManager.Settings</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings.Connection">org.freedesktop.NetworkManager.Settings.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Connection.Active">org.freedesktop.NetworkManager.Connection.Active</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AgentManager">org.freedesktop.NetworkManager.AgentManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.SecretAgent">org.freedesktop.NetworkManager.SecretAgent</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Connection">org.freedesktop.NetworkManager.VPN.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Plugin">org.freedesktop.NetworkManager.VPN.Plugin</a></code></li></ul>
   <h1><a name="org.freedesktop.NetworkManager" id="org.freedesktop.NetworkManager"></a>org.freedesktop.NetworkManager</h1><h2>Methods:</h2><div class="method"><h3><a name="org.freedesktop.NetworkManager.GetDevices" id="org.freedesktop.NetworkManager.GetDevices">GetDevices</a> (
         
         ) &#8594;
@@ -461,6 +461,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       <code>s</code> -
       <code>(read)</code></dt><dd>
         The driver handling the device.
+      </dd><dt><code>DriverVersion</code> -
+      <code>s</code> -
+      <code>(read)</code></dt><dd>
+        The version of the driver handling the device.
+      </dd><dt><code>FirmwareVersion</code> -
+      <code>s</code> -
+      <code>(read)</code></dt><dd>
+        The firmware version for the device.
       </dd><dt><code>Capabilities</code> -
       <code>u</code> -
       <code>(read)</code>
@@ -512,6 +520,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       <code>b</code> -
       <code>(read)</code></dt><dd>
         Whether or not this device is managed by NetworkManager.
+      </dd><dt><code>Autoconnect</code> -
+      <code>b</code> -
+      <code>(readwrite)</code></dt><dd>
+        If TRUE, indicates the device is allowed to autoconnect.  If FALSE,
+        manual intervention is required before the device will automatically
+        connect to a known network, such as activating a connection using the
+        device, or setting this property to TRUE.
       </dd><dt><code>FirmwareMissing</code> -
       <code>b</code> -
       <code>(read)</code></dt><dd>
@@ -673,6 +688,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
           InfiniBand device does not support connected mode.
         </dd><dt><code>NM_DEVICE_STATE_REASON_DEPENDENCY_FAILED = 50</code></dt><dd>
           A dependency of the connection failed.
+        </dd><dt><code>NM_DEVICE_STATE_REASON_BR2684_FAILED = 50</code></dt><dd>
+          Problem with the RFC 2684 Ethernet over ADSL bridge.
         </dd></dl><h2>Sets of flags:</h2><h3 xmlns=""><a name="type-NM_DEVICE_CAP" id="type-NM_DEVICE_CAP">NM_DEVICE_CAP</a></h3><dl><dt><code>NM_DEVICE_CAP_NONE = 0x0</code></dt><dd>Null capability.</dd><dt><code>NM_DEVICE_CAP_NM_SUPPORTED = 0x1</code></dt><dd>The device is supported by NetworkManager.</dd><dt><code>NM_DEVICE_CAP_CARRIER_DETECT = 0x2</code></dt><dd>The device supports carrier detection.</dd></dl><h2>Structure types:</h2><div class="struct"><h3><a name="type-NM_DEVICE_STATE_REASON_STRUCT" id="type-NM_DEVICE_STATE_REASON_STRUCT">NM_DEVICE_STATE_REASON_STRUCT</a> - (
         u: state, u: reason
         )
@@ -722,6 +739,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </div><div><h4>Returns</h4><dl><dt><code>access_points</code> -
       <code>ao</code></dt><dd>
           List of access point object paths
+        </dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.Device.Wireless.RequestScan" id="org.freedesktop.NetworkManager.Device.Wireless.RequestScan">RequestScan</a> (
+        a{sv}: options
+        ) &#8594;
+        nothing</h3><div class="docstring">
+        Request the device to scan
+      </div><div><h4>Parameters</h4><dl><dt><code>options</code> -
+      <code>a{sv}</code></dt><dd>
+          Options of scan
         </dd></dl></div></div><h2>Signals:</h2><div class="signal"><h3><a name="org.freedesktop.NetworkManager.Device.Wireless.PropertiesChanged" id="org.freedesktop.NetworkManager.Device.Wireless.PropertiesChanged">PropertiesChanged</a> (
         a{sv}: properties
         )</h3><div class="docstring">
@@ -990,6 +1015,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         The VLAN ID of this VLAN interface.
       </dd></dl>
 
+  <h1><a name="org.freedesktop.NetworkManager.Device.Adsl" id="org.freedesktop.NetworkManager.Device.Adsl"></a>org.freedesktop.NetworkManager.Device.Adsl</h1><p>Interface has no methods.</p><h2>Signals:</h2><div class="signal"><h3><a name="org.freedesktop.NetworkManager.Device.Adsl.PropertiesChanged" id="org.freedesktop.NetworkManager.Device.Adsl.PropertiesChanged">PropertiesChanged</a> (
+        a{sv}: properties
+        )</h3><div class="docstring"></div><div><h4>Parameters</h4><dl><dt><code>properties</code> -
+      <code>a{sv}</code>
+      (<a xmlns="" href="#type-String_Variant_Map">String_Variant_Map</a>)
+    </dt><dd>
+                A dictionary mapping property names to variant boxed values
+            </dd></dl></div></div><h2>Properties:</h2><dl><dt><code>Carrier</code> -
+      <code>b</code> -
+      <code>(read)</code></dt><dd>
+        Indicates whether the physical carrier is found.
+      </dd></dl>
+
   <h1><a name="org.freedesktop.NetworkManager.WiMax.Nsp" id="org.freedesktop.NetworkManager.WiMax.Nsp"></a>org.freedesktop.NetworkManager.WiMax.Nsp</h1><p>Interface has no methods.</p><h2>Signals:</h2><div class="signal"><h3><a name="org.freedesktop.NetworkManager.WiMax.Nsp.PropertiesChanged" id="org.freedesktop.NetworkManager.WiMax.Nsp.PropertiesChanged">PropertiesChanged</a> (
         a{sv}: properties
         )</h3><div class="docstring"></div><div><h4>Parameters</h4><dl><dt><code>properties</code> -
@@ -1384,6 +1422,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
               Explicitly prompt for new secrets from the user.  This flag
               signals that NetworkManager thinks any existing secrets are
               invalid or wrong.  This flag implies that interaction is allowed.
+            </dd><dt><code>NM_SECRET_AGENT_GET_SECRETS_FLAG_USER_REQUESTED = 0x4</code></dt><dd>
+              Set if the request was initiated by user-requested action via the
+              D-Bus interface, as opposed to automatically initiated by
+              NetworkManager in response to (for example) scan results or
+              carrier changes.
             </dd></dl>
 
 
@@ -1488,7 +1531,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         ) &#8594;
         nothing</h3><div class="docstring">
         Disconnect the plugin.
-      </div><div><h4>Possible errors</h4><dl><dt><code>org.freedesktop.NetworkManager.VPN.Error.StoppingInProgress</code></dt><dd>The request could not be processed because the VPN connection is already being stopped.<em>(generic description)</em></dd><dt><code>org.freedesktop.NetworkManager.VPN.Error.AlreadyStopped</code></dt><dd>The request could not be processed because the VPN connection was already stopped.<em>(generic description)</em></dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.SetIp4Config" id="org.freedesktop.NetworkManager.VPN.Plugin.SetIp4Config">SetIp4Config</a> (
+      </div><div><h4>Possible errors</h4><dl><dt><code>org.freedesktop.NetworkManager.VPN.Error.StoppingInProgress</code></dt><dd>The request could not be processed because the VPN connection is already being stopped.<em>(generic description)</em></dd><dt><code>org.freedesktop.NetworkManager.VPN.Error.AlreadyStopped</code></dt><dd>The request could not be processed because the VPN connection was already stopped.<em>(generic description)</em></dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.SetConfig" id="org.freedesktop.NetworkManager.VPN.Plugin.SetConfig">SetConfig</a> (
+        a{sv}: config
+        ) &#8594;
+        nothing</h3><div class="docstring">
+        Set generic connection details on the connection.
+      </div><div><h4>Parameters</h4><dl><dt><code>config</code> -
+      <code>a{sv}</code>
+      (<a xmlns="" href="#type-String_Variant_Map">String_Variant_Map</a>)
+    </dt><dd>
+          Generic configuration details for the connection.
+        </dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.SetIp4Config" id="org.freedesktop.NetworkManager.VPN.Plugin.SetIp4Config">SetIp4Config</a> (
         a{sv}: config
         ) &#8594;
         nothing</h3><div class="docstring">
@@ -1497,7 +1550,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       <code>a{sv}</code>
       (<a xmlns="" href="#type-String_Variant_Map">String_Variant_Map</a>)
     </dt><dd>
-          Ip4Config details for the conneciton.
+          Ip4Config details for the connection. You must call
+	  SetConfig() before calling this.
+        </dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.SetIp6Config" id="org.freedesktop.NetworkManager.VPN.Plugin.SetIp6Config">SetIp6Config</a> (
+        a{sv}: config
+        ) &#8594;
+        nothing</h3><div class="docstring">
+        Set IPv6 details on the connection.
+      </div><div><h4>Parameters</h4><dl><dt><code>config</code> -
+      <code>a{sv}</code>
+      (<a xmlns="" href="#type-String_Variant_Map">String_Variant_Map</a>)
+    </dt><dd>
+          Ip6Config details for the connection. You must call
+	  SetConfig() before calling this.
         </dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.SetFailure" id="org.freedesktop.NetworkManager.VPN.Plugin.SetFailure">SetFailure</a> (
         s: reason
         ) &#8594;
@@ -1515,6 +1580,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       (<a xmlns="" href="#type-NM_VPN_CONNECTION_STATE">NM_VPN_CONNECTION_STATE</a>)
     </dt><dd>
           The new state of the plugin.
+        </dd></dl></div></div><div class="signal"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.Config" id="org.freedesktop.NetworkManager.VPN.Plugin.Config">Config</a> (
+        a{sv}: config
+        )</h3><div class="docstring">
+        The plugin obtained generic configuration information.
+      </div><div><h4>Parameters</h4><dl><dt><code>config</code> -
+      <code>a{sv}</code>
+      (<a xmlns="" href="#type-String_Variant_Map">String_Variant_Map</a>)
+    </dt><dd>
+          The configuration information.
         </dd></dl></div></div><div class="signal"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.Ip4Config" id="org.freedesktop.NetworkManager.VPN.Plugin.Ip4Config">Ip4Config</a> (
         a{sv}: ip4config
         )</h3><div class="docstring">
@@ -1524,6 +1598,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       (<a xmlns="" href="#type-String_Variant_Map">String_Variant_Map</a>)
     </dt><dd>
           The IPv4 configuration.
+        </dd></dl></div></div><div class="signal"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.Ip6Config" id="org.freedesktop.NetworkManager.VPN.Plugin.Ip6Config">Ip6Config</a> (
+        a{sv}: ip6config
+        )</h3><div class="docstring">
+        The plugin obtained an IPv6 configuration.
+      </div><div><h4>Parameters</h4><dl><dt><code>ip6config</code> -
+      <code>a{sv}</code>
+      (<a xmlns="" href="#type-String_Variant_Map">String_Variant_Map</a>)
+    </dt><dd>
+          The IPv6 configuration.
         </dd></dl></div></div><div class="signal"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.LoginBanner" id="org.freedesktop.NetworkManager.VPN.Plugin.LoginBanner">LoginBanner</a> (
         s: banner
         )</h3><div class="docstring">
@@ -1597,7 +1680,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
   <h2><a name="org.freedesktop.NetworkManager.VPN.Error.BadArguments" id="org.freedesktop.NetworkManager.VPN.Error.BadArguments"></a>org.freedesktop.NetworkManager.VPN.Error.BadArguments</h2>Invalid arguments were passed with the request.  FIXME: too general.
   <h2><a name="org.freedesktop.NetworkManager.VPN.Error.LaunchFailed" id="org.freedesktop.NetworkManager.VPN.Error.LaunchFailed"></a>org.freedesktop.NetworkManager.VPN.Error.LaunchFailed</h2>A binary providing the service failed to launch.
   <h2><a name="org.freedesktop.NetworkManager.VPN.Error.ConnectionInvalid" id="org.freedesktop.NetworkManager.VPN.Error.ConnectionInvalid"></a>org.freedesktop.NetworkManager.VPN.Error.ConnectionInvalid</h2>The request could not be processed because the VPN connection settings were invalid.
-<h1>Index</h1><h2>Index of interfaces</h2><ul><li><code><a href="#org.freedesktop.NetworkManager">org.freedesktop.NetworkManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AccessPoint">org.freedesktop.NetworkManager.AccessPoint</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device">org.freedesktop.NetworkManager.Device</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wired">org.freedesktop.NetworkManager.Device.Wired</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wireless">org.freedesktop.NetworkManager.Device.Wireless</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Modem">org.freedesktop.NetworkManager.Device.Modem</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bluetooth">org.freedesktop.NetworkManager.Device.Bluetooth</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.OlpcMesh">org.freedesktop.NetworkManager.Device.OlpcMesh</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.WiMax">org.freedesktop.NetworkManager.Device.WiMax</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Infiniband">org.freedesktop.NetworkManager.Device.Infiniband</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bond">org.freedesktop.NetworkManager.Device.Bond</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Vlan">org.freedesktop.NetworkManager.Device.Vlan</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.WiMax.Nsp">org.freedesktop.NetworkManager.WiMax.Nsp</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP4Config">org.freedesktop.NetworkManager.IP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP6Config">org.freedesktop.NetworkManager.IP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP4Config">org.freedesktop.NetworkManager.DHCP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP6Config">org.freedesktop.NetworkManager.DHCP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings">org.freedesktop.NetworkManager.Settings</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings.Connection">org.freedesktop.NetworkManager.Settings.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Connection.Active">org.freedesktop.NetworkManager.Connection.Active</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AgentManager">org.freedesktop.NetworkManager.AgentManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.SecretAgent">org.freedesktop.NetworkManager.SecretAgent</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Connection">org.freedesktop.NetworkManager.VPN.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Plugin">org.freedesktop.NetworkManager.VPN.Plugin</a></code></li></ul><h2>Index of types</h2><ul><li><code><a href="#type-NM_802_11_AP_FLAGS">NM_802_11_AP_FLAGS</a></code>
+<h1>Index</h1><h2>Index of interfaces</h2><ul><li><code><a href="#org.freedesktop.NetworkManager">org.freedesktop.NetworkManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AccessPoint">org.freedesktop.NetworkManager.AccessPoint</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device">org.freedesktop.NetworkManager.Device</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wired">org.freedesktop.NetworkManager.Device.Wired</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wireless">org.freedesktop.NetworkManager.Device.Wireless</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Modem">org.freedesktop.NetworkManager.Device.Modem</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bluetooth">org.freedesktop.NetworkManager.Device.Bluetooth</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.OlpcMesh">org.freedesktop.NetworkManager.Device.OlpcMesh</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.WiMax">org.freedesktop.NetworkManager.Device.WiMax</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Infiniband">org.freedesktop.NetworkManager.Device.Infiniband</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bond">org.freedesktop.NetworkManager.Device.Bond</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Vlan">org.freedesktop.NetworkManager.Device.Vlan</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Adsl">org.freedesktop.NetworkManager.Device.Adsl</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.WiMax.Nsp">org.freedesktop.NetworkManager.WiMax.Nsp</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP4Config">org.freedesktop.NetworkManager.IP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP6Config">org.freedesktop.NetworkManager.IP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP4Config">org.freedesktop.NetworkManager.DHCP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP6Config">org.freedesktop.NetworkManager.DHCP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings">org.freedesktop.NetworkManager.Settings</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings.Connection">org.freedesktop.NetworkManager.Settings.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Connection.Active">org.freedesktop.NetworkManager.Connection.Active</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AgentManager">org.freedesktop.NetworkManager.AgentManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.SecretAgent">org.freedesktop.NetworkManager.SecretAgent</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Connection">org.freedesktop.NetworkManager.VPN.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Plugin">org.freedesktop.NetworkManager.VPN.Plugin</a></code></li></ul><h2>Index of types</h2><ul><li><code><a href="#type-NM_802_11_AP_FLAGS">NM_802_11_AP_FLAGS</a></code>
     - u</li><li><code><a href="#type-NM_802_11_AP_SEC">NM_802_11_AP_SEC</a></code>
     - u</li><li><code><a href="#type-NM_802_11_DEVICE_CAP">NM_802_11_DEVICE_CAP</a></code>
     - u</li><li><code><a href="#type-NM_802_11_MODE">NM_802_11_MODE</a></code>
diff --git a/docs/api/settings-spec.xml b/docs/api/settings-spec.xml
index 8d2757d9..d90814d7 100644
--- a/docs/api/settings-spec.xml
+++ b/docs/api/settings-spec.xml
@@ -1279,6 +1279,12 @@
         <entry><screen></screen></entry>
         <entry>If the wireless connection has any security restrictions, like 802.1x, WEP, or WPA, set this property to '802-11-wireless-security' and ensure the connection contains a valid 802-11-wireless-security setting.</entry>
       </row>
+      <row>
+        <entry><screen>hidden</screen></entry>
+        <entry><screen>boolean</screen></entry>
+        <entry><screen>FALSE</screen></entry>
+        <entry>If TRUE, indicates this network is a non-broadcasting network that hides its SSID.  In this case various workarounds may take place, such as probe-scanning the SSID for more reliable network discovery.  However, these workarounds expose inherent insecurities with hidden SSID networks, and thus hidden SSID networks should be used with caution.</entry>
+      </row>
     </tbody>
   </tgroup>
 </table>
diff --git a/docs/api/spec.html b/docs/api/spec.html
index a75799e7..80c10325 100644
--- a/docs/api/spec.html
+++ b/docs/api/spec.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ascii" /><title>NetworkManager D-Bus Interface Specification version 0.9.4.0</title><style type="text/css">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ascii" /><title>NetworkManager D-Bus Interface Specification version 0.9.5.95</title><style type="text/css">
 
           body {
             font-family: sans-serif;
@@ -98,7 +98,7 @@
             margin-right: 4em;
           }
 
-        </style></head><body><h1 class="topbox">NetworkManager D-Bus Interface Specification</h1><h2>Version 0.9.4.0</h2><div>Copyright (C) 2008 - 2011 Red Hat, Inc.</div><div>Copyright (C) 2008 - 2009 Novell, Inc.</div><div class="license">
+        </style></head><body><h1 class="topbox">NetworkManager D-Bus Interface Specification</h1><h2>Version 0.9.5.95</h2><div>Copyright (C) 2008 - 2011 Red Hat, Inc.</div><div>Copyright (C) 2008 - 2009 Novell, Inc.</div><div class="license">
 <p>This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
@@ -112,7 +112,7 @@ General Public License for more details.</p>
 <p>You should have received a copy of the GNU Lesser General Public
 License along with this library; if not, write to the Free Software
 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</p>
-</div><h2>Interfaces</h2><ul><li><code><a href="#org.freedesktop.NetworkManager">org.freedesktop.NetworkManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AccessPoint">org.freedesktop.NetworkManager.AccessPoint</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device">org.freedesktop.NetworkManager.Device</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wired">org.freedesktop.NetworkManager.Device.Wired</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wireless">org.freedesktop.NetworkManager.Device.Wireless</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Modem">org.freedesktop.NetworkManager.Device.Modem</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bluetooth">org.freedesktop.NetworkManager.Device.Bluetooth</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.OlpcMesh">org.freedesktop.NetworkManager.Device.OlpcMesh</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.WiMax">org.freedesktop.NetworkManager.Device.WiMax</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Infiniband">org.freedesktop.NetworkManager.Device.Infiniband</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bond">org.freedesktop.NetworkManager.Device.Bond</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Vlan">org.freedesktop.NetworkManager.Device.Vlan</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.WiMax.Nsp">org.freedesktop.NetworkManager.WiMax.Nsp</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP4Config">org.freedesktop.NetworkManager.IP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP6Config">org.freedesktop.NetworkManager.IP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP4Config">org.freedesktop.NetworkManager.DHCP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP6Config">org.freedesktop.NetworkManager.DHCP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings">org.freedesktop.NetworkManager.Settings</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings.Connection">org.freedesktop.NetworkManager.Settings.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Connection.Active">org.freedesktop.NetworkManager.Connection.Active</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AgentManager">org.freedesktop.NetworkManager.AgentManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.SecretAgent">org.freedesktop.NetworkManager.SecretAgent</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Connection">org.freedesktop.NetworkManager.VPN.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Plugin">org.freedesktop.NetworkManager.VPN.Plugin</a></code></li></ul>
+</div><h2>Interfaces</h2><ul><li><code><a href="#org.freedesktop.NetworkManager">org.freedesktop.NetworkManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AccessPoint">org.freedesktop.NetworkManager.AccessPoint</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device">org.freedesktop.NetworkManager.Device</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wired">org.freedesktop.NetworkManager.Device.Wired</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wireless">org.freedesktop.NetworkManager.Device.Wireless</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Modem">org.freedesktop.NetworkManager.Device.Modem</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bluetooth">org.freedesktop.NetworkManager.Device.Bluetooth</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.OlpcMesh">org.freedesktop.NetworkManager.Device.OlpcMesh</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.WiMax">org.freedesktop.NetworkManager.Device.WiMax</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Infiniband">org.freedesktop.NetworkManager.Device.Infiniband</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bond">org.freedesktop.NetworkManager.Device.Bond</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Vlan">org.freedesktop.NetworkManager.Device.Vlan</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Adsl">org.freedesktop.NetworkManager.Device.Adsl</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.WiMax.Nsp">org.freedesktop.NetworkManager.WiMax.Nsp</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP4Config">org.freedesktop.NetworkManager.IP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP6Config">org.freedesktop.NetworkManager.IP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP4Config">org.freedesktop.NetworkManager.DHCP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP6Config">org.freedesktop.NetworkManager.DHCP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings">org.freedesktop.NetworkManager.Settings</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings.Connection">org.freedesktop.NetworkManager.Settings.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Connection.Active">org.freedesktop.NetworkManager.Connection.Active</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AgentManager">org.freedesktop.NetworkManager.AgentManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.SecretAgent">org.freedesktop.NetworkManager.SecretAgent</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Connection">org.freedesktop.NetworkManager.VPN.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Plugin">org.freedesktop.NetworkManager.VPN.Plugin</a></code></li></ul>
   <h1><a name="org.freedesktop.NetworkManager" id="org.freedesktop.NetworkManager"></a>org.freedesktop.NetworkManager</h1><h2>Methods:</h2><div class="method"><h3><a name="org.freedesktop.NetworkManager.GetDevices" id="org.freedesktop.NetworkManager.GetDevices">GetDevices</a> (
         
         ) &#8594;
@@ -461,6 +461,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       <code>s</code> -
       <code>(read)</code></dt><dd>
         The driver handling the device.
+      </dd><dt><code>DriverVersion</code> -
+      <code>s</code> -
+      <code>(read)</code></dt><dd>
+        The version of the driver handling the device.
+      </dd><dt><code>FirmwareVersion</code> -
+      <code>s</code> -
+      <code>(read)</code></dt><dd>
+        The firmware version for the device.
       </dd><dt><code>Capabilities</code> -
       <code>u</code> -
       <code>(read)</code>
@@ -512,6 +520,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       <code>b</code> -
       <code>(read)</code></dt><dd>
         Whether or not this device is managed by NetworkManager.
+      </dd><dt><code>Autoconnect</code> -
+      <code>b</code> -
+      <code>(readwrite)</code></dt><dd>
+        If TRUE, indicates the device is allowed to autoconnect.  If FALSE,
+        manual intervention is required before the device will automatically
+        connect to a known network, such as activating a connection using the
+        device, or setting this property to TRUE.
       </dd><dt><code>FirmwareMissing</code> -
       <code>b</code> -
       <code>(read)</code></dt><dd>
@@ -673,6 +688,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
           InfiniBand device does not support connected mode.
         </dd><dt><code>NM_DEVICE_STATE_REASON_DEPENDENCY_FAILED = 50</code></dt><dd>
           A dependency of the connection failed.
+        </dd><dt><code>NM_DEVICE_STATE_REASON_BR2684_FAILED = 50</code></dt><dd>
+          Problem with the RFC 2684 Ethernet over ADSL bridge.
         </dd></dl><h2>Sets of flags:</h2><h3 xmlns=""><a name="type-NM_DEVICE_CAP" id="type-NM_DEVICE_CAP">NM_DEVICE_CAP</a></h3><dl><dt><code>NM_DEVICE_CAP_NONE = 0x0</code></dt><dd>Null capability.</dd><dt><code>NM_DEVICE_CAP_NM_SUPPORTED = 0x1</code></dt><dd>The device is supported by NetworkManager.</dd><dt><code>NM_DEVICE_CAP_CARRIER_DETECT = 0x2</code></dt><dd>The device supports carrier detection.</dd></dl><h2>Structure types:</h2><div class="struct"><h3><a name="type-NM_DEVICE_STATE_REASON_STRUCT" id="type-NM_DEVICE_STATE_REASON_STRUCT">NM_DEVICE_STATE_REASON_STRUCT</a> - (
         u: state, u: reason
         )
@@ -722,6 +739,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </div><div><h4>Returns</h4><dl><dt><code>access_points</code> -
       <code>ao</code></dt><dd>
           List of access point object paths
+        </dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.Device.Wireless.RequestScan" id="org.freedesktop.NetworkManager.Device.Wireless.RequestScan">RequestScan</a> (
+        a{sv}: options
+        ) &#8594;
+        nothing</h3><div class="docstring">
+        Request the device to scan
+      </div><div><h4>Parameters</h4><dl><dt><code>options</code> -
+      <code>a{sv}</code></dt><dd>
+          Options of scan
         </dd></dl></div></div><h2>Signals:</h2><div class="signal"><h3><a name="org.freedesktop.NetworkManager.Device.Wireless.PropertiesChanged" id="org.freedesktop.NetworkManager.Device.Wireless.PropertiesChanged">PropertiesChanged</a> (
         a{sv}: properties
         )</h3><div class="docstring">
@@ -990,6 +1015,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         The VLAN ID of this VLAN interface.
       </dd></dl>
 
+  <h1><a name="org.freedesktop.NetworkManager.Device.Adsl" id="org.freedesktop.NetworkManager.Device.Adsl"></a>org.freedesktop.NetworkManager.Device.Adsl</h1><p>Interface has no methods.</p><h2>Signals:</h2><div class="signal"><h3><a name="org.freedesktop.NetworkManager.Device.Adsl.PropertiesChanged" id="org.freedesktop.NetworkManager.Device.Adsl.PropertiesChanged">PropertiesChanged</a> (
+        a{sv}: properties
+        )</h3><div class="docstring"></div><div><h4>Parameters</h4><dl><dt><code>properties</code> -
+      <code>a{sv}</code>
+      (<a xmlns="" href="#type-String_Variant_Map">String_Variant_Map</a>)
+    </dt><dd>
+                A dictionary mapping property names to variant boxed values
+            </dd></dl></div></div><h2>Properties:</h2><dl><dt><code>Carrier</code> -
+      <code>b</code> -
+      <code>(read)</code></dt><dd>
+        Indicates whether the physical carrier is found.
+      </dd></dl>
+
   <h1><a name="org.freedesktop.NetworkManager.WiMax.Nsp" id="org.freedesktop.NetworkManager.WiMax.Nsp"></a>org.freedesktop.NetworkManager.WiMax.Nsp</h1><p>Interface has no methods.</p><h2>Signals:</h2><div class="signal"><h3><a name="org.freedesktop.NetworkManager.WiMax.Nsp.PropertiesChanged" id="org.freedesktop.NetworkManager.WiMax.Nsp.PropertiesChanged">PropertiesChanged</a> (
         a{sv}: properties
         )</h3><div class="docstring"></div><div><h4>Parameters</h4><dl><dt><code>properties</code> -
@@ -1384,6 +1422,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
               Explicitly prompt for new secrets from the user.  This flag
               signals that NetworkManager thinks any existing secrets are
               invalid or wrong.  This flag implies that interaction is allowed.
+            </dd><dt><code>NM_SECRET_AGENT_GET_SECRETS_FLAG_USER_REQUESTED = 0x4</code></dt><dd>
+              Set if the request was initiated by user-requested action via the
+              D-Bus interface, as opposed to automatically initiated by
+              NetworkManager in response to (for example) scan results or
+              carrier changes.
             </dd></dl>
 
 
@@ -1488,7 +1531,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         ) &#8594;
         nothing</h3><div class="docstring">
         Disconnect the plugin.
-      </div><div><h4>Possible errors</h4><dl><dt><code>org.freedesktop.NetworkManager.VPN.Error.StoppingInProgress</code></dt><dd>The request could not be processed because the VPN connection is already being stopped.<em>(generic description)</em></dd><dt><code>org.freedesktop.NetworkManager.VPN.Error.AlreadyStopped</code></dt><dd>The request could not be processed because the VPN connection was already stopped.<em>(generic description)</em></dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.SetIp4Config" id="org.freedesktop.NetworkManager.VPN.Plugin.SetIp4Config">SetIp4Config</a> (
+      </div><div><h4>Possible errors</h4><dl><dt><code>org.freedesktop.NetworkManager.VPN.Error.StoppingInProgress</code></dt><dd>The request could not be processed because the VPN connection is already being stopped.<em>(generic description)</em></dd><dt><code>org.freedesktop.NetworkManager.VPN.Error.AlreadyStopped</code></dt><dd>The request could not be processed because the VPN connection was already stopped.<em>(generic description)</em></dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.SetConfig" id="org.freedesktop.NetworkManager.VPN.Plugin.SetConfig">SetConfig</a> (
+        a{sv}: config
+        ) &#8594;
+        nothing</h3><div class="docstring">
+        Set generic connection details on the connection.
+      </div><div><h4>Parameters</h4><dl><dt><code>config</code> -
+      <code>a{sv}</code>
+      (<a xmlns="" href="#type-String_Variant_Map">String_Variant_Map</a>)
+    </dt><dd>
+          Generic configuration details for the connection.
+        </dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.SetIp4Config" id="org.freedesktop.NetworkManager.VPN.Plugin.SetIp4Config">SetIp4Config</a> (
         a{sv}: config
         ) &#8594;
         nothing</h3><div class="docstring">
@@ -1497,7 +1550,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       <code>a{sv}</code>
       (<a xmlns="" href="#type-String_Variant_Map">String_Variant_Map</a>)
     </dt><dd>
-          Ip4Config details for the conneciton.
+          Ip4Config details for the connection. You must call
+	  SetConfig() before calling this.
+        </dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.SetIp6Config" id="org.freedesktop.NetworkManager.VPN.Plugin.SetIp6Config">SetIp6Config</a> (
+        a{sv}: config
+        ) &#8594;
+        nothing</h3><div class="docstring">
+        Set IPv6 details on the connection.
+      </div><div><h4>Parameters</h4><dl><dt><code>config</code> -
+      <code>a{sv}</code>
+      (<a xmlns="" href="#type-String_Variant_Map">String_Variant_Map</a>)
+    </dt><dd>
+          Ip6Config details for the connection. You must call
+	  SetConfig() before calling this.
         </dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.SetFailure" id="org.freedesktop.NetworkManager.VPN.Plugin.SetFailure">SetFailure</a> (
         s: reason
         ) &#8594;
@@ -1515,6 +1580,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       (<a xmlns="" href="#type-NM_VPN_CONNECTION_STATE">NM_VPN_CONNECTION_STATE</a>)
     </dt><dd>
           The new state of the plugin.
+        </dd></dl></div></div><div class="signal"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.Config" id="org.freedesktop.NetworkManager.VPN.Plugin.Config">Config</a> (
+        a{sv}: config
+        )</h3><div class="docstring">
+        The plugin obtained generic configuration information.
+      </div><div><h4>Parameters</h4><dl><dt><code>config</code> -
+      <code>a{sv}</code>
+      (<a xmlns="" href="#type-String_Variant_Map">String_Variant_Map</a>)
+    </dt><dd>
+          The configuration information.
         </dd></dl></div></div><div class="signal"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.Ip4Config" id="org.freedesktop.NetworkManager.VPN.Plugin.Ip4Config">Ip4Config</a> (
         a{sv}: ip4config
         )</h3><div class="docstring">
@@ -1524,6 +1598,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       (<a xmlns="" href="#type-String_Variant_Map">String_Variant_Map</a>)
     </dt><dd>
           The IPv4 configuration.
+        </dd></dl></div></div><div class="signal"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.Ip6Config" id="org.freedesktop.NetworkManager.VPN.Plugin.Ip6Config">Ip6Config</a> (
+        a{sv}: ip6config
+        )</h3><div class="docstring">
+        The plugin obtained an IPv6 configuration.
+      </div><div><h4>Parameters</h4><dl><dt><code>ip6config</code> -
+      <code>a{sv}</code>
+      (<a xmlns="" href="#type-String_Variant_Map">String_Variant_Map</a>)
+    </dt><dd>
+          The IPv6 configuration.
         </dd></dl></div></div><div class="signal"><h3><a name="org.freedesktop.NetworkManager.VPN.Plugin.LoginBanner" id="org.freedesktop.NetworkManager.VPN.Plugin.LoginBanner">LoginBanner</a> (
         s: banner
         )</h3><div class="docstring">
@@ -1597,7 +1680,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
   <h2><a name="org.freedesktop.NetworkManager.VPN.Error.BadArguments" id="org.freedesktop.NetworkManager.VPN.Error.BadArguments"></a>org.freedesktop.NetworkManager.VPN.Error.BadArguments</h2>Invalid arguments were passed with the request.  FIXME: too general.
   <h2><a name="org.freedesktop.NetworkManager.VPN.Error.LaunchFailed" id="org.freedesktop.NetworkManager.VPN.Error.LaunchFailed"></a>org.freedesktop.NetworkManager.VPN.Error.LaunchFailed</h2>A binary providing the service failed to launch.
   <h2><a name="org.freedesktop.NetworkManager.VPN.Error.ConnectionInvalid" id="org.freedesktop.NetworkManager.VPN.Error.ConnectionInvalid"></a>org.freedesktop.NetworkManager.VPN.Error.ConnectionInvalid</h2>The request could not be processed because the VPN connection settings were invalid.
-<h1>Index</h1><h2>Index of interfaces</h2><ul><li><code><a href="#org.freedesktop.NetworkManager">org.freedesktop.NetworkManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AccessPoint">org.freedesktop.NetworkManager.AccessPoint</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device">org.freedesktop.NetworkManager.Device</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wired">org.freedesktop.NetworkManager.Device.Wired</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wireless">org.freedesktop.NetworkManager.Device.Wireless</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Modem">org.freedesktop.NetworkManager.Device.Modem</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bluetooth">org.freedesktop.NetworkManager.Device.Bluetooth</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.OlpcMesh">org.freedesktop.NetworkManager.Device.OlpcMesh</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.WiMax">org.freedesktop.NetworkManager.Device.WiMax</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Infiniband">org.freedesktop.NetworkManager.Device.Infiniband</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bond">org.freedesktop.NetworkManager.Device.Bond</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Vlan">org.freedesktop.NetworkManager.Device.Vlan</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.WiMax.Nsp">org.freedesktop.NetworkManager.WiMax.Nsp</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP4Config">org.freedesktop.NetworkManager.IP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP6Config">org.freedesktop.NetworkManager.IP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP4Config">org.freedesktop.NetworkManager.DHCP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP6Config">org.freedesktop.NetworkManager.DHCP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings">org.freedesktop.NetworkManager.Settings</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings.Connection">org.freedesktop.NetworkManager.Settings.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Connection.Active">org.freedesktop.NetworkManager.Connection.Active</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AgentManager">org.freedesktop.NetworkManager.AgentManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.SecretAgent">org.freedesktop.NetworkManager.SecretAgent</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Connection">org.freedesktop.NetworkManager.VPN.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Plugin">org.freedesktop.NetworkManager.VPN.Plugin</a></code></li></ul><h2>Index of types</h2><ul><li><code><a href="#type-NM_802_11_AP_FLAGS">NM_802_11_AP_FLAGS</a></code>
+<h1>Index</h1><h2>Index of interfaces</h2><ul><li><code><a href="#org.freedesktop.NetworkManager">org.freedesktop.NetworkManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AccessPoint">org.freedesktop.NetworkManager.AccessPoint</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device">org.freedesktop.NetworkManager.Device</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wired">org.freedesktop.NetworkManager.Device.Wired</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wireless">org.freedesktop.NetworkManager.Device.Wireless</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Modem">org.freedesktop.NetworkManager.Device.Modem</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bluetooth">org.freedesktop.NetworkManager.Device.Bluetooth</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.OlpcMesh">org.freedesktop.NetworkManager.Device.OlpcMesh</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.WiMax">org.freedesktop.NetworkManager.Device.WiMax</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Infiniband">org.freedesktop.NetworkManager.Device.Infiniband</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bond">org.freedesktop.NetworkManager.Device.Bond</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Vlan">org.freedesktop.NetworkManager.Device.Vlan</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Adsl">org.freedesktop.NetworkManager.Device.Adsl</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.WiMax.Nsp">org.freedesktop.NetworkManager.WiMax.Nsp</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP4Config">org.freedesktop.NetworkManager.IP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP6Config">org.freedesktop.NetworkManager.IP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP4Config">org.freedesktop.NetworkManager.DHCP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP6Config">org.freedesktop.NetworkManager.DHCP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings">org.freedesktop.NetworkManager.Settings</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings.Connection">org.freedesktop.NetworkManager.Settings.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Connection.Active">org.freedesktop.NetworkManager.Connection.Active</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AgentManager">org.freedesktop.NetworkManager.AgentManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.SecretAgent">org.freedesktop.NetworkManager.SecretAgent</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Connection">org.freedesktop.NetworkManager.VPN.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Plugin">org.freedesktop.NetworkManager.VPN.Plugin</a></code></li></ul><h2>Index of types</h2><ul><li><code><a href="#type-NM_802_11_AP_FLAGS">NM_802_11_AP_FLAGS</a></code>
     - u</li><li><code><a href="#type-NM_802_11_AP_SEC">NM_802_11_AP_SEC</a></code>
     - u</li><li><code><a href="#type-NM_802_11_DEVICE_CAP">NM_802_11_DEVICE_CAP</a></code>
     - u</li><li><code><a href="#type-NM_802_11_MODE">NM_802_11_MODE</a></code>
diff --git a/docs/api/version.xml b/docs/api/version.xml
index 3544d2f0..3bf70835 100644
--- a/docs/api/version.xml
+++ b/docs/api/version.xml
@@ -1 +1 @@
-0.9.4.0
+0.9.5.95
diff --git a/docs/libnm-glib/Makefile.am b/docs/libnm-glib/Makefile.am
index 2057e3e9..cd96c046 100644
--- a/docs/libnm-glib/Makefile.am
+++ b/docs/libnm-glib/Makefile.am
@@ -54,6 +54,7 @@ IGNORE_HFILES= \
 	nm-settings-connection-bindings.h \
 	nm-secret-agent-bindings.h \
 	nm-vpn-connection-bindings.h \
+	nm-secret-agent-glue.h \
 	nm-vpn-plugin-glue.h
 
 # Images to copy into HTML directory.
diff --git a/docs/libnm-glib/Makefile.in b/docs/libnm-glib/Makefile.in
index 828f7823..bd50f0ca 100644
--- a/docs/libnm-glib/Makefile.in
+++ b/docs/libnm-glib/Makefile.in
@@ -53,7 +53,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -141,6 +141,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -236,6 +240,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -274,6 +281,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -349,6 +358,7 @@ IGNORE_HFILES = \
 	nm-settings-connection-bindings.h \
 	nm-secret-agent-bindings.h \
 	nm-vpn-connection-bindings.h \
+	nm-secret-agent-glue.h \
 	nm-vpn-plugin-glue.h
 
 
diff --git a/docs/libnm-glib/html/NMDevice.html b/docs/libnm-glib/html/NMDevice.html
index e507f9e0..5c6e7152 100644
--- a/docs/libnm-glib/html/NMDevice.html
+++ b/docs/libnm-glib/html/NMDevice.html
@@ -51,12 +51,15 @@
                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error</code></em>,
                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
 #define             <a class="link" href="NMDevice.html#NM-DEVICE-ACTIVE-CONNECTION:CAPS" title="NM_DEVICE_ACTIVE_CONNECTION">NM_DEVICE_ACTIVE_CONNECTION</a>
+#define             <a class="link" href="NMDevice.html#NM-DEVICE-AUTOCONNECT:CAPS" title="NM_DEVICE_AUTOCONNECT">NM_DEVICE_AUTOCONNECT</a>
 #define             <a class="link" href="NMDevice.html#NM-DEVICE-CAPABILITIES:CAPS" title="NM_DEVICE_CAPABILITIES">NM_DEVICE_CAPABILITIES</a>
 #define             <a class="link" href="NMDevice.html#NM-DEVICE-DEVICE-TYPE:CAPS" title="NM_DEVICE_DEVICE_TYPE">NM_DEVICE_DEVICE_TYPE</a>
 #define             <a class="link" href="NMDevice.html#NM-DEVICE-DHCP4-CONFIG:CAPS" title="NM_DEVICE_DHCP4_CONFIG">NM_DEVICE_DHCP4_CONFIG</a>
 #define             <a class="link" href="NMDevice.html#NM-DEVICE-DHCP6-CONFIG:CAPS" title="NM_DEVICE_DHCP6_CONFIG">NM_DEVICE_DHCP6_CONFIG</a>
 #define             <a class="link" href="NMDevice.html#NM-DEVICE-DRIVER:CAPS" title="NM_DEVICE_DRIVER">NM_DEVICE_DRIVER</a>
+#define             <a class="link" href="NMDevice.html#NM-DEVICE-DRIVER-VERSION:CAPS" title="NM_DEVICE_DRIVER_VERSION">NM_DEVICE_DRIVER_VERSION</a>
 #define             <a class="link" href="NMDevice.html#NM-DEVICE-FIRMWARE-MISSING:CAPS" title="NM_DEVICE_FIRMWARE_MISSING">NM_DEVICE_FIRMWARE_MISSING</a>
+#define             <a class="link" href="NMDevice.html#NM-DEVICE-FIRMWARE-VERSION:CAPS" title="NM_DEVICE_FIRMWARE_VERSION">NM_DEVICE_FIRMWARE_VERSION</a>
 #define             <a class="link" href="NMDevice.html#NM-DEVICE-INTERFACE:CAPS" title="NM_DEVICE_INTERFACE">NM_DEVICE_INTERFACE</a>
 #define             <a class="link" href="NMDevice.html#NM-DEVICE-IP4-CONFIG:CAPS" title="NM_DEVICE_IP4_CONFIG">NM_DEVICE_IP4_CONFIG</a>
 #define             <a class="link" href="NMDevice.html#NM-DEVICE-IP6-CONFIG:CAPS" title="NM_DEVICE_IP6_CONFIG">NM_DEVICE_IP6_CONFIG</a>
@@ -67,6 +70,9 @@
 #define             <a class="link" href="NMDevice.html#NM-DEVICE-STATE-REASON:CAPS" title="NM_DEVICE_STATE_REASON">NM_DEVICE_STATE_REASON</a>
 #define             <a class="link" href="NMDevice.html#NM-DEVICE-UDI:CAPS" title="NM_DEVICE_UDI">NM_DEVICE_UDI</a>
 #define             <a class="link" href="NMDevice.html#NM-DEVICE-VENDOR:CAPS" title="NM_DEVICE_VENDOR">NM_DEVICE_VENDOR</a>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="NMDevice.html#nm-device-connection-compatible" title="nm_device_connection_compatible ()">nm_device_connection_compatible</a>     (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>,
+                                                         <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="NMDevice.html#nm-device-connection-valid" title="nm_device_connection_valid ()">nm_device_connection_valid</a>          (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>,
                                                          <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>);
 <span class="returnvalue">void</span>                <a class="link" href="NMDevice.html#nm-device-disconnect" title="nm_device_disconnect ()">nm_device_disconnect</a>                (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>,
@@ -75,12 +81,15 @@
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#GSList"><span class="returnvalue">GSList</span></a> *            <a class="link" href="NMDevice.html#nm-device-filter-connections" title="nm_device_filter_connections ()">nm_device_filter_connections</a>        (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>,
                                                          <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#GSList"><span class="type">GSList</span></a> *connections</code></em>);
 <a class="link" href="NMActiveConnection.html" title="NMActiveConnection"><span class="returnvalue">NMActiveConnection</span></a> * <a class="link" href="NMDevice.html#nm-device-get-active-connection" title="nm_device_get_active_connection ()">nm_device_get_active_connection</a>    (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="NMDevice.html#nm-device-get-autoconnect" title="nm_device_get_autoconnect ()">nm_device_get_autoconnect</a>           (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);
 <span class="returnvalue">NMDeviceCapabilities</span> <a class="link" href="NMDevice.html#nm-device-get-capabilities" title="nm_device_get_capabilities ()">nm_device_get_capabilities</a>         (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);
 <span class="returnvalue">NMDeviceType</span>        <a class="link" href="NMDevice.html#nm-device-get-device-type" title="nm_device_get_device_type ()">nm_device_get_device_type</a>           (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);
 <a class="link" href="NMDHCP4Config.html" title="NMDHCP4Config"><span class="returnvalue">NMDHCP4Config</span></a> *     <a class="link" href="NMDevice.html#nm-device-get-dhcp4-config" title="nm_device_get_dhcp4_config ()">nm_device_get_dhcp4_config</a>          (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);
 <a class="link" href="NMDHCP6Config.html" title="NMDHCP6Config"><span class="returnvalue">NMDHCP6Config</span></a> *     <a class="link" href="NMDevice.html#nm-device-get-dhcp6-config" title="nm_device_get_dhcp6_config ()">nm_device_get_dhcp6_config</a>          (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);
 const <span class="returnvalue">char</span> *        <a class="link" href="NMDevice.html#nm-device-get-driver" title="nm_device_get_driver ()">nm_device_get_driver</a>                (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);
+const <span class="returnvalue">char</span> *        <a class="link" href="NMDevice.html#nm-device-get-driver-version" title="nm_device_get_driver_version ()">nm_device_get_driver_version</a>        (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="NMDevice.html#nm-device-get-firmware-missing" title="nm_device_get_firmware_missing ()">nm_device_get_firmware_missing</a>      (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);
+const <span class="returnvalue">char</span> *        <a class="link" href="NMDevice.html#nm-device-get-firmware-version" title="nm_device_get_firmware_version ()">nm_device_get_firmware_version</a>      (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);
 const <span class="returnvalue">char</span> *        <a class="link" href="NMDevice.html#nm-device-get-iface" title="nm_device_get_iface ()">nm_device_get_iface</a>                 (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);
 <a class="link" href="NMIP4Config.html" title="NMIP4Config"><span class="returnvalue">NMIP4Config</span></a> *       <a class="link" href="NMDevice.html#nm-device-get-ip4-config" title="nm_device_get_ip4_config ()">nm_device_get_ip4_config</a>            (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);
 <a class="link" href="NMIP6Config.html" title="NMIP6Config"><span class="returnvalue">NMIP6Config</span></a> *       <a class="link" href="NMDevice.html#nm-device-get-ip6-config" title="nm_device_get_ip6_config ()">nm_device_get_ip6_config</a>            (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);
@@ -94,6 +103,8 @@ const <span class="returnvalue">char</span> *        <a class="link" href="NMDev
 const <span class="returnvalue">char</span> *        <a class="link" href="NMDevice.html#nm-device-get-vendor" title="nm_device_get_vendor ()">nm_device_get_vendor</a>                (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);
 <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> *           <a class="link" href="NMDevice.html#nm-device-new" title="nm_device_new ()">nm_device_new</a>                       (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGConnection.html#DBusGConnection"><span class="type">DBusGConnection</span></a> *connection</code></em>,
                                                          <em class="parameter"><code>const <span class="type">char</span> *path</code></em>);
+<span class="returnvalue">void</span>                <a class="link" href="NMDevice.html#nm-device-set-autoconnect" title="nm_device_set_autoconnect ()">nm_device_set_autoconnect</a>           (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> autoconnect</code></em>);
 </pre>
 </div>
 <div class="refsect1">
@@ -107,10 +118,10 @@ const <span class="returnvalue">char</span> *        <a class="link" href="NMDev
                +----<a class="link" href="NMDeviceModem.html" title="NMDeviceModem">NMDeviceModem</a>
                +----<a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a>
                +----<a class="link" href="NMDeviceWimax.html" title="NMDeviceWimax">NMDeviceWimax</a>
-               +----NMDeviceOlpcMesh
-               +----NMDeviceInfiniband
-               +----NMDeviceBond
-               +----NMDeviceVlan
+               +----<a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
+               +----<a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband">NMDeviceInfiniband</a>
+               +----<a class="link" href="NMDeviceBond.html" title="NMDeviceBond">NMDeviceBond</a>
+               +----<a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
 </pre>
 </div>
 <div class="refsect1">
@@ -123,12 +134,15 @@ NMDevice implements
 <a name="NMDevice.properties"></a><h2>Properties</h2>
 <pre class="synopsis">
   "<a class="link" href="NMDevice.html#NMDevice--active-connection" title='The "active-connection" property'>active-connection</a>"        <a class="link" href="NMActiveConnection.html" title="NMActiveConnection"><span class="type">NMActiveConnection</span></a>*   : Read
+  "<a class="link" href="NMDevice.html#NMDevice--autoconnect" title='The "autoconnect" property'>autoconnect</a>"              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
   "<a class="link" href="NMDevice.html#NMDevice--capabilities" title='The "capabilities" property'>capabilities</a>"             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read
   "<a class="link" href="NMDevice.html#NMDevice--device-type" title='The "device-type" property'>device-type</a>"              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read
   "<a class="link" href="NMDevice.html#NMDevice--dhcp4-config" title='The "dhcp4-config" property'>dhcp4-config</a>"             <a class="link" href="NMDHCP4Config.html" title="NMDHCP4Config"><span class="type">NMDHCP4Config</span></a>*        : Read
   "<a class="link" href="NMDevice.html#NMDevice--dhcp6-config" title='The "dhcp6-config" property'>dhcp6-config</a>"             <a class="link" href="NMDHCP6Config.html" title="NMDHCP6Config"><span class="type">NMDHCP6Config</span></a>*        : Read
   "<a class="link" href="NMDevice.html#NMDevice--driver" title='The "driver" property'>driver</a>"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read
+  "<a class="link" href="NMDevice.html#NMDevice--driver-version" title='The "driver-version" property'>driver-version</a>"           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read
   "<a class="link" href="NMDevice.html#NMDevice--firmware-missing" title='The "firmware-missing" property'>firmware-missing</a>"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read
+  "<a class="link" href="NMDevice.html#NMDevice--firmware-version" title='The "firmware-version" property'>firmware-version</a>"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read
   "<a class="link" href="NMDevice.html#NMDevice--interface" title='The "interface" property'>interface</a>"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read
   "<a class="link" href="NMDevice.html#NMDevice--ip-interface" title='The "ip-interface" property'>ip-interface</a>"             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read
   "<a class="link" href="NMDevice.html#NMDevice--ip4-config" title='The "ip4-config" property'>ip4-config</a>"               <a class="link" href="NMIP4Config.html" title="NMIP4Config"><span class="type">NMIP4Config</span></a>*          : Read
@@ -207,6 +221,14 @@ NMDevice implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="NM-DEVICE-AUTOCONNECT:CAPS"></a><h3>NM_DEVICE_AUTOCONNECT</h3>
+<pre class="programlisting">#define NM_DEVICE_AUTOCONNECT "autoconnect"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-DEVICE-CAPABILITIES:CAPS"></a><h3>NM_DEVICE_CAPABILITIES</h3>
 <pre class="programlisting">#define NM_DEVICE_CAPABILITIES "capabilities"
 </pre>
@@ -247,6 +269,14 @@ NMDevice implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="NM-DEVICE-DRIVER-VERSION:CAPS"></a><h3>NM_DEVICE_DRIVER_VERSION</h3>
+<pre class="programlisting">#define NM_DEVICE_DRIVER_VERSION "driver-version"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-DEVICE-FIRMWARE-MISSING:CAPS"></a><h3>NM_DEVICE_FIRMWARE_MISSING</h3>
 <pre class="programlisting">#define NM_DEVICE_FIRMWARE_MISSING "firmware-missing"
 </pre>
@@ -255,6 +285,14 @@ NMDevice implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="NM-DEVICE-FIRMWARE-VERSION:CAPS"></a><h3>NM_DEVICE_FIRMWARE_VERSION</h3>
+<pre class="programlisting">#define NM_DEVICE_FIRMWARE_VERSION "firmware-version"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-DEVICE-INTERFACE:CAPS"></a><h3>NM_DEVICE_INTERFACE</h3>
 <pre class="programlisting">#define NM_DEVICE_INTERFACE "interface"
 </pre>
@@ -335,6 +373,52 @@ NMDevice implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="nm-device-connection-compatible"></a><h3>nm_device_connection_compatible ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_device_connection_compatible     (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>,
+                                                         <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
+<p>
+Validates a given connection for a given <a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> object and returns
+whether the connection may be activated with the device. For example if
+<em class="parameter"><code>device</code></em> is a WiFi device that supports only WEP encryption, the connection
+will only be valid if it is a WiFi connection which describes a WEP or open
+network, and will not be valid if it describes a WPA network, or if it is
+an Ethernet, Bluetooth, WWAN, etc connection that is incompatible with the
+device.
+</p>
+<p>
+This function does the same as <a class="link" href="NMDevice.html#nm-device-connection-valid" title="nm_device_connection_valid ()"><code class="function">nm_device_connection_valid()</code></a>, i.e. checking
+compatibility of the given device and connection. But, in addition, it sets
+GError when FALSE is returned.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>device</code></em> :</span></p></td>
+<td>an <a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> to validate <em class="parameter"><code>connection</code></em> against</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
+<td>an <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> to validate against <em class="parameter"><code>device</code></em>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
+<td>return location for a <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>, or <a href="/usr/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL:CAPS"><code class="literal">NULL</code></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the connection may be activated with this device, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
+if is incompatible with the device's capabilities and characteristics.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-device-connection-valid"></a><h3>nm_device_connection_valid ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_device_connection_valid          (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>,
                                                          <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>);</pre>
@@ -466,6 +550,29 @@ not part of an active connection. <span class="annotation">[<acronym title="Don'
 </div>
 <hr>
 <div class="refsect2">
+<a name="nm-device-get-autoconnect"></a><h3>nm_device_get_autoconnect ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_device_get_autoconnect           (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);</pre>
+<p>
+Whether the <a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> can be autoconnected.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>device</code></em> :</span></p></td>
+<td>a <a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the device is allowed to be autoconnected</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-device-get-capabilities"></a><h3>nm_device_get_capabilities ()</h3>
 <pre class="programlisting"><span class="returnvalue">NMDeviceCapabilities</span> nm_device_get_capabilities         (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);</pre>
 <p>
@@ -581,6 +688,29 @@ device, and must not be modified.</td>
 </div>
 <hr>
 <div class="refsect2">
+<a name="nm-device-get-driver-version"></a><h3>nm_device_get_driver_version ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> *        nm_device_get_driver_version        (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);</pre>
+<p>
+Gets the driver version of the <a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>device</code></em> :</span></p></td>
+<td>a <a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the version of the device driver. This is the internal string used by the
+device, and must not be modified.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-device-get-firmware-missing"></a><h3>nm_device_get_firmware_missing ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_device_get_firmware_missing      (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);</pre>
 <p>
@@ -606,6 +736,29 @@ to be missing.</td>
 </div>
 <hr>
 <div class="refsect2">
+<a name="nm-device-get-firmware-version"></a><h3>nm_device_get_firmware_version ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> *        nm_device_get_firmware_version      (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);</pre>
+<p>
+Gets the firmware version of the <a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>device</code></em> :</span></p></td>
+<td>a <a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the firmware version of the device. This is the internal string used by the
+device, and must not be modified.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-device-get-iface"></a><h3>nm_device_get_iface ()</h3>
 <pre class="programlisting">const <span class="returnvalue">char</span> *        nm_device_get_iface                 (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);</pre>
 <p>
@@ -869,6 +1022,30 @@ Creates a new <a class="link" href="NMDevice.html" title="NMDevice"><span class=
 </tbody>
 </table></div>
 </div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-set-autoconnect"></a><h3>nm_device_set_autoconnect ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>                nm_device_set_autoconnect           (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> autoconnect</code></em>);</pre>
+<p>
+Enables or disables automatic activation of the <a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>device</code></em> :</span></p></td>
+<td>a <a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>autoconnect</code></em> :</span></p></td>
+<td>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> to enable autoconnecting</td>
+</tr>
+</tbody>
+</table></div>
+</div>
 </div>
 <div class="refsect1">
 <a name="NMDevice.property-details"></a><h2>Property Details</h2>
@@ -881,6 +1058,15 @@ The <a class="link" href="NMActiveConnection.html" title="NMActiveConnection"><s
 </div>
 <hr>
 <div class="refsect2">
+<a name="NMDevice--autoconnect"></a><h3>The <code class="literal">"autoconnect"</code> property</h3>
+<pre class="programlisting">  "autoconnect"              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>
+Whether the device can auto-activate a connection.
+</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NMDevice--capabilities"></a><h3>The <code class="literal">"capabilities"</code> property</h3>
 <pre class="programlisting">  "capabilities"             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read</pre>
 <p>
@@ -924,6 +1110,15 @@ The driver of the device.
 </div>
 <hr>
 <div class="refsect2">
+<a name="NMDevice--driver-version"></a><h3>The <code class="literal">"driver-version"</code> property</h3>
+<pre class="programlisting">  "driver-version"           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read</pre>
+<p>
+The version of the device driver.
+</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NMDevice--firmware-missing"></a><h3>The <code class="literal">"firmware-missing"</code> property</h3>
 <pre class="programlisting">  "firmware-missing"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read</pre>
 <p>
@@ -934,6 +1129,15 @@ for its operation.
 </div>
 <hr>
 <div class="refsect2">
+<a name="NMDevice--firmware-version"></a><h3>The <code class="literal">"firmware-version"</code> property</h3>
+<pre class="programlisting">  "firmware-version"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read</pre>
+<p>
+The firmware version of the device.
+</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NMDevice--interface"></a><h3>The <code class="literal">"interface"</code> property</h3>
 <pre class="programlisting">  "interface"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read</pre>
 <p>
diff --git a/docs/libnm-glib/html/NMDeviceBond.html b/docs/libnm-glib/html/NMDeviceBond.html
new file mode 100644
index 00000000..0fb8a415
--- /dev/null
+++ b/docs/libnm-glib/html/NMDeviceBond.html
@@ -0,0 +1,287 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>NMDeviceBond</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="libnm-glib Reference Manual">
+<link rel="up" href="ch02.html" title="libnm-glib API Reference">
+<link rel="prev" href="NMDeviceWimax.html" title="NMDeviceWimax">
+<link rel="next" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="NMDeviceWimax.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libnm-glib Reference Manual</th>
+<td><a accesskey="n" href="NMDeviceInfiniband.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#NMDeviceBond.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#NMDeviceBond.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#NMDeviceBond.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#NMDeviceBond.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
+                   | 
+                  <a href="#NMDeviceBond.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="NMDeviceBond"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="NMDeviceBond.top_of_page"></a>NMDeviceBond</span></h2>
+<p>NMDeviceBond</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="NMDeviceBond.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">                    <a class="link" href="NMDeviceBond.html#NMDeviceBond-struct" title="NMDeviceBond">NMDeviceBond</a>;
+                    <a class="link" href="NMDeviceBond.html#NMDeviceBondClass" title="NMDeviceBondClass">NMDeviceBondClass</a>;
+enum                <a class="link" href="NMDeviceBond.html#NMDeviceBondError" title="enum NMDeviceBondError">NMDeviceBondError</a>;
+#define             <a class="link" href="NMDeviceBond.html#NM-DEVICE-BOND-CARRIER:CAPS" title="NM_DEVICE_BOND_CARRIER">NM_DEVICE_BOND_CARRIER</a>
+#define             <a class="link" href="NMDeviceBond.html#NM-DEVICE-BOND-ERROR:CAPS" title="NM_DEVICE_BOND_ERROR">NM_DEVICE_BOND_ERROR</a>
+#define             <a class="link" href="NMDeviceBond.html#NM-DEVICE-BOND-HW-ADDRESS:CAPS" title="NM_DEVICE_BOND_HW_ADDRESS">NM_DEVICE_BOND_HW_ADDRESS</a>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              <a class="link" href="NMDeviceBond.html#nm-device-bond-error-quark" title="nm_device_bond_error_quark ()">nm_device_bond_error_quark</a>          (<em class="parameter"><code><span class="type">void</span></code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="NMDeviceBond.html#nm-device-bond-get-carrier" title="nm_device_bond_get_carrier ()">nm_device_bond_get_carrier</a>          (<em class="parameter"><code><a class="link" href="NMDeviceBond.html" title="NMDeviceBond"><span class="type">NMDeviceBond</span></a> *device</code></em>);
+const <span class="returnvalue">char</span> *        <a class="link" href="NMDeviceBond.html#nm-device-bond-get-hw-address" title="nm_device_bond_get_hw_address ()">nm_device_bond_get_hw_address</a>       (<em class="parameter"><code><a class="link" href="NMDeviceBond.html" title="NMDeviceBond"><span class="type">NMDeviceBond</span></a> *device</code></em>);
+<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> *           <a class="link" href="NMDeviceBond.html#nm-device-bond-new" title="nm_device_bond_new ()">nm_device_bond_new</a>                  (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGConnection.html#DBusGConnection"><span class="type">DBusGConnection</span></a> *connection</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *path</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMDeviceBond.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a class="link" href="NMObject.html" title="NMObject">NMObject</a>
+         +----<a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+               +----NMDeviceBond
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMDeviceBond.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+NMDeviceBond implements
+ <a href="http://library.gnome.org/devel/gio/unstable/GInitable.html">GInitable</a> and  <a href="http://library.gnome.org/devel/gio/unstable/GAsyncInitable.html">GAsyncInitable</a>.</p>
+</div>
+<div class="refsect1">
+<a name="NMDeviceBond.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="NMDeviceBond.html#NMDeviceBond--carrier" title='The "carrier" property'>carrier</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read
+  "<a class="link" href="NMDeviceBond.html#NMDeviceBond--hw-address" title='The "hw-address" property'>hw-address</a>"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMDeviceBond.description"></a><h2>Description</h2>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="NMDeviceBond.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="NMDeviceBond-struct"></a><h3>NMDeviceBond</h3>
+<pre class="programlisting">typedef struct _NMDeviceBond NMDeviceBond;</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMDeviceBondClass"></a><h3>NMDeviceBondClass</h3>
+<pre class="programlisting">typedef struct {
+	NMDeviceClass parent;
+
+	/* Padding for future expansion */
+	void (*_reserved1) (void);
+	void (*_reserved2) (void);
+	void (*_reserved3) (void);
+	void (*_reserved4) (void);
+	void (*_reserved5) (void);
+	void (*_reserved6) (void);
+} NMDeviceBondClass;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMDeviceBondError"></a><h3>enum NMDeviceBondError</h3>
+<pre class="programlisting">typedef enum {
+	NM_DEVICE_BOND_ERROR_UNKNOWN = 0,             /*&lt; nick=UnknownError &gt;*/
+	NM_DEVICE_BOND_ERROR_NOT_BOND_CONNECTION,     /*&lt; nick=NotBondConnection &gt;*/
+	NM_DEVICE_BOND_ERROR_INVALID_BOND_CONNECTION, /*&lt; nick=InvalidBondConnection &gt;*/
+	NM_DEVICE_BOND_ERROR_INTERFACE_MISMATCH,      /*&lt; nick=InterfaceMismatch &gt;*/
+} NMDeviceBondError;
+</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="NM-DEVICE-BOND-ERROR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_BOND_ERROR_UNKNOWN</code></span></p></td>
+<td>unknown or unclassified error
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-BOND-ERROR-NOT-BOND-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_BOND_ERROR_NOT_BOND_CONNECTION</code></span></p></td>
+<td>the connection was not of bond type
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-BOND-ERROR-INVALID-BOND-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_BOND_ERROR_INVALID_BOND_CONNECTION</code></span></p></td>
+<td>the bond connection was invalid
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-BOND-ERROR-INTERFACE-MISMATCH:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_BOND_ERROR_INTERFACE_MISMATCH</code></span></p></td>
+<td>the interfaces of the connection and the device mismatched
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-DEVICE-BOND-CARRIER:CAPS"></a><h3>NM_DEVICE_BOND_CARRIER</h3>
+<pre class="programlisting">#define NM_DEVICE_BOND_CARRIER     "carrier"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-DEVICE-BOND-ERROR:CAPS"></a><h3>NM_DEVICE_BOND_ERROR</h3>
+<pre class="programlisting">#define NM_DEVICE_BOND_ERROR nm_device_bond_error_quark ()
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-DEVICE-BOND-HW-ADDRESS:CAPS"></a><h3>NM_DEVICE_BOND_HW_ADDRESS</h3>
+<pre class="programlisting">#define NM_DEVICE_BOND_HW_ADDRESS  "hw-address"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-bond-error-quark"></a><h3>nm_device_bond_error_quark ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              nm_device_bond_error_quark          (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Registers an error quark for <a class="link" href="NMDeviceBond.html" title="NMDeviceBond"><span class="type">NMDeviceBond</span></a> if necessary.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the error quark used for <a class="link" href="NMDeviceBond.html" title="NMDeviceBond"><span class="type">NMDeviceBond</span></a> errors.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-bond-get-carrier"></a><h3>nm_device_bond_get_carrier ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_device_bond_get_carrier          (<em class="parameter"><code><a class="link" href="NMDeviceBond.html" title="NMDeviceBond"><span class="type">NMDeviceBond</span></a> *device</code></em>);</pre>
+<p>
+Whether the device has carrier.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>device</code></em> :</span></p></td>
+<td>a <a class="link" href="NMDeviceBond.html" title="NMDeviceBond"><span class="type">NMDeviceBond</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the device has carrier</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-bond-get-hw-address"></a><h3>nm_device_bond_get_hw_address ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> *        nm_device_bond_get_hw_address       (<em class="parameter"><code><a class="link" href="NMDeviceBond.html" title="NMDeviceBond"><span class="type">NMDeviceBond</span></a> *device</code></em>);</pre>
+<p>
+Gets the hardware (MAC) address of the <a class="link" href="NMDeviceBond.html" title="NMDeviceBond"><span class="type">NMDeviceBond</span></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>device</code></em> :</span></p></td>
+<td>a <a class="link" href="NMDeviceBond.html" title="NMDeviceBond"><span class="type">NMDeviceBond</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the hardware address. This is the internal string used by the
+device, and must not be modified.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-bond-new"></a><h3>nm_device_bond_new ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> *           nm_device_bond_new                  (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGConnection.html#DBusGConnection"><span class="type">DBusGConnection</span></a> *connection</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *path</code></em>);</pre>
+<p>
+Creates a new <a class="link" href="NMDeviceBond.html" title="NMDeviceBond"><span class="type">NMDeviceBond</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
+<td>the <a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGConnection.html#DBusGConnection"><span class="type">DBusGConnection</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>path</code></em> :</span></p></td>
+<td>the DBus object path of the device</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new device. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="refsect1">
+<a name="NMDeviceBond.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="NMDeviceBond--carrier"></a><h3>The <code class="literal">"carrier"</code> property</h3>
+<pre class="programlisting">  "carrier"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read</pre>
+<p>
+Whether the device has carrier.
+</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMDeviceBond--hw-address"></a><h3>The <code class="literal">"hw-address"</code> property</h3>
+<pre class="programlisting">  "hw-address"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read</pre>
+<p>
+The hardware (MAC) address of the device.
+</p>
+<p>Default value: NULL</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libnm-glib/html/NMDeviceBt.html b/docs/libnm-glib/html/NMDeviceBt.html
index b41291a5..bc766453 100644
--- a/docs/libnm-glib/html/NMDeviceBt.html
+++ b/docs/libnm-glib/html/NMDeviceBt.html
@@ -45,9 +45,12 @@
 <a name="NMDeviceBt.synopsis"></a><h2>Synopsis</h2>
 <pre class="synopsis">                    <a class="link" href="NMDeviceBt.html#NMDeviceBt-struct" title="NMDeviceBt">NMDeviceBt</a>;
                     <a class="link" href="NMDeviceBt.html#NMDeviceBtClass" title="NMDeviceBtClass">NMDeviceBtClass</a>;
+enum                <a class="link" href="NMDeviceBt.html#NMDeviceBtError" title="enum NMDeviceBtError">NMDeviceBtError</a>;
 #define             <a class="link" href="NMDeviceBt.html#NM-DEVICE-BT-CAPABILITIES:CAPS" title="NM_DEVICE_BT_CAPABILITIES">NM_DEVICE_BT_CAPABILITIES</a>
+#define             <a class="link" href="NMDeviceBt.html#NM-DEVICE-BT-ERROR:CAPS" title="NM_DEVICE_BT_ERROR">NM_DEVICE_BT_ERROR</a>
 #define             <a class="link" href="NMDeviceBt.html#NM-DEVICE-BT-HW-ADDRESS:CAPS" title="NM_DEVICE_BT_HW_ADDRESS">NM_DEVICE_BT_HW_ADDRESS</a>
 #define             <a class="link" href="NMDeviceBt.html#NM-DEVICE-BT-NAME:CAPS" title="NM_DEVICE_BT_NAME">NM_DEVICE_BT_NAME</a>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              <a class="link" href="NMDeviceBt.html#nm-device-bt-error-quark" title="nm_device_bt_error_quark ()">nm_device_bt_error_quark</a>            (<em class="parameter"><code><span class="type">void</span></code></em>);
 <span class="returnvalue">NMBluetoothCapabilities</span> <a class="link" href="NMDeviceBt.html#nm-device-bt-get-capabilities" title="nm_device_bt_get_capabilities ()">nm_device_bt_get_capabilities</a>   (<em class="parameter"><code><a class="link" href="NMDeviceBt.html" title="NMDeviceBt"><span class="type">NMDeviceBt</span></a> *device</code></em>);
 const <span class="returnvalue">char</span> *        <a class="link" href="NMDeviceBt.html#nm-device-bt-get-hw-address" title="nm_device_bt_get_hw_address ()">nm_device_bt_get_hw_address</a>         (<em class="parameter"><code><a class="link" href="NMDeviceBt.html" title="NMDeviceBt"><span class="type">NMDeviceBt</span></a> *device</code></em>);
 const <span class="returnvalue">char</span> *        <a class="link" href="NMDeviceBt.html#nm-device-bt-get-name" title="nm_device_bt_get_name ()">nm_device_bt_get_name</a>               (<em class="parameter"><code><a class="link" href="NMDeviceBt.html" title="NMDeviceBt"><span class="type">NMDeviceBt</span></a> *device</code></em>);
@@ -111,6 +114,54 @@ NMDeviceBt implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="NMDeviceBtError"></a><h3>enum NMDeviceBtError</h3>
+<pre class="programlisting">typedef enum {
+	NM_DEVICE_BT_ERROR_UNKNOWN = 0,           /*&lt; nick=UnknownError &gt;*/
+	NM_DEVICE_BT_ERROR_NOT_BT_CONNECTION,     /*&lt; nick=NotBtConnection &gt;*/
+	NM_DEVICE_BT_ERROR_INVALID_BT_CONNECTION, /*&lt; nick=InvalidBtConnection &gt;*/
+	NM_DEVICE_BT_ERROR_INVALID_DEVICE_MAC,    /*&lt; nick=InvalidDeviceMac &gt;*/
+	NM_DEVICE_BT_ERROR_MAC_MISMATCH,          /*&lt; nick=MacMismatch &gt;*/
+	NM_DEVICE_BT_ERROR_MISSING_DEVICE_CAPS,   /*&lt; nick=MissingDeviceCaps &gt;*/
+} NMDeviceBtError;
+</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="NM-DEVICE-BT-ERROR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_BT_ERROR_UNKNOWN</code></span></p></td>
+<td>unknown or unclassified error
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-BT-ERROR-NOT-BT-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_BT_ERROR_NOT_BT_CONNECTION</code></span></p></td>
+<td>the connection was not of bluetooth type
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-BT-ERROR-INVALID-BT-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_BT_ERROR_INVALID_BT_CONNECTION</code></span></p></td>
+<td>the bluetooth connection was invalid
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-BT-ERROR-INVALID-DEVICE-MAC:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_BT_ERROR_INVALID_DEVICE_MAC</code></span></p></td>
+<td>the device's MAC was invalid
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-BT-ERROR-MAC-MISMATCH:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_BT_ERROR_MAC_MISMATCH</code></span></p></td>
+<td>the MACs of the connection and the device mismatched
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-BT-ERROR-MISSING-DEVICE-CAPS"></a><span class="term"><code class="literal">NM_DEVICE_BT_ERROR_MISSING_DEVICE_CAPS</code></span></p></td>
+<td>the device missed required capabilities
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-DEVICE-BT-CAPABILITIES:CAPS"></a><h3>NM_DEVICE_BT_CAPABILITIES</h3>
 <pre class="programlisting">#define NM_DEVICE_BT_CAPABILITIES "bt-capabilities"
 </pre>
@@ -119,6 +170,14 @@ NMDeviceBt implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="NM-DEVICE-BT-ERROR:CAPS"></a><h3>NM_DEVICE_BT_ERROR</h3>
+<pre class="programlisting">#define NM_DEVICE_BT_ERROR nm_device_bt_error_quark ()
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-DEVICE-BT-HW-ADDRESS:CAPS"></a><h3>NM_DEVICE_BT_HW_ADDRESS</h3>
 <pre class="programlisting">#define NM_DEVICE_BT_HW_ADDRESS   "hw-address"
 </pre>
@@ -135,6 +194,21 @@ NMDeviceBt implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="nm-device-bt-error-quark"></a><h3>nm_device_bt_error_quark ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              nm_device_bt_error_quark            (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Registers an error quark for <a class="link" href="NMDeviceBt.html" title="NMDeviceBt"><span class="type">NMDeviceBt</span></a> if necessary.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the error quark used for <a class="link" href="NMDeviceBt.html" title="NMDeviceBt"><span class="type">NMDeviceBt</span></a> errors.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-device-bt-get-capabilities"></a><h3>nm_device_bt_get_capabilities ()</h3>
 <pre class="programlisting"><span class="returnvalue">NMBluetoothCapabilities</span> nm_device_bt_get_capabilities   (<em class="parameter"><code><a class="link" href="NMDeviceBt.html" title="NMDeviceBt"><span class="type">NMDeviceBt</span></a> *device</code></em>);</pre>
 <p>
diff --git a/docs/libnm-glib/html/NMDeviceEthernet.html b/docs/libnm-glib/html/NMDeviceEthernet.html
index 786a5842..94d959b6 100644
--- a/docs/libnm-glib/html/NMDeviceEthernet.html
+++ b/docs/libnm-glib/html/NMDeviceEthernet.html
@@ -45,10 +45,13 @@
 <a name="NMDeviceEthernet.synopsis"></a><h2>Synopsis</h2>
 <pre class="synopsis">                    <a class="link" href="NMDeviceEthernet.html#NMDeviceEthernet-struct" title="NMDeviceEthernet">NMDeviceEthernet</a>;
                     <a class="link" href="NMDeviceEthernet.html#NMDeviceEthernetClass" title="NMDeviceEthernetClass">NMDeviceEthernetClass</a>;
+enum                <a class="link" href="NMDeviceEthernet.html#NMDeviceEthernetError" title="enum NMDeviceEthernetError">NMDeviceEthernetError</a>;
 #define             <a class="link" href="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-CARRIER:CAPS" title="NM_DEVICE_ETHERNET_CARRIER">NM_DEVICE_ETHERNET_CARRIER</a>
+#define             <a class="link" href="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-ERROR:CAPS" title="NM_DEVICE_ETHERNET_ERROR">NM_DEVICE_ETHERNET_ERROR</a>
 #define             <a class="link" href="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-HW-ADDRESS:CAPS" title="NM_DEVICE_ETHERNET_HW_ADDRESS">NM_DEVICE_ETHERNET_HW_ADDRESS</a>
 #define             <a class="link" href="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-PERMANENT-HW-ADDRESS:CAPS" title="NM_DEVICE_ETHERNET_PERMANENT_HW_ADDRESS">NM_DEVICE_ETHERNET_PERMANENT_HW_ADDRESS</a>
 #define             <a class="link" href="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-SPEED:CAPS" title="NM_DEVICE_ETHERNET_SPEED">NM_DEVICE_ETHERNET_SPEED</a>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              <a class="link" href="NMDeviceEthernet.html#nm-device-ethernet-error-quark" title="nm_device_ethernet_error_quark ()">nm_device_ethernet_error_quark</a>      (<em class="parameter"><code><span class="type">void</span></code></em>);
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="NMDeviceEthernet.html#nm-device-ethernet-get-carrier" title="nm_device_ethernet_get_carrier ()">nm_device_ethernet_get_carrier</a>      (<em class="parameter"><code><a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet"><span class="type">NMDeviceEthernet</span></a> *device</code></em>);
 const <span class="returnvalue">char</span> *        <a class="link" href="NMDeviceEthernet.html#nm-device-ethernet-get-hw-address" title="nm_device_ethernet_get_hw_address ()">nm_device_ethernet_get_hw_address</a>   (<em class="parameter"><code><a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet"><span class="type">NMDeviceEthernet</span></a> *device</code></em>);
 const <span class="returnvalue">char</span> *        <a class="link" href="NMDeviceEthernet.html#nm-device-ethernet-get-permanent-hw-address" title="nm_device_ethernet_get_permanent_hw_address ()">nm_device_ethernet_get_permanent_hw_address</a>
@@ -115,6 +118,48 @@ NMDeviceEthernet implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="NMDeviceEthernetError"></a><h3>enum NMDeviceEthernetError</h3>
+<pre class="programlisting">typedef enum {
+	NM_DEVICE_ETHERNET_ERROR_UNKNOWN = 0,                 /*&lt; nick=UnknownError &gt;*/
+	NM_DEVICE_ETHERNET_ERROR_NOT_ETHERNET_CONNECTION,     /*&lt; nick=NotEthernetConnection &gt;*/
+	NM_DEVICE_ETHERNET_ERROR_INVALID_ETHERNET_CONNECTION, /*&lt; nick=InvalidEthernetConnection &gt;*/
+	NM_DEVICE_ETHERNET_ERROR_INVALID_DEVICE_MAC,          /*&lt; nick=InvalidDeviceMac &gt;*/
+	NM_DEVICE_ETHERNET_ERROR_MAC_MISMATCH,                /*&lt; nick=MacMismatch &gt;*/
+} NMDeviceEthernetError;
+</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="NM-DEVICE-ETHERNET-ERROR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_ETHERNET_ERROR_UNKNOWN</code></span></p></td>
+<td>unknown or unclassified error
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-ETHERNET-ERROR-NOT-ETHERNET-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_ETHERNET_ERROR_NOT_ETHERNET_CONNECTION</code></span></p></td>
+<td>the connection was not of ethernet or PPPoE type
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-ETHERNET-ERROR-INVALID-ETHERNET-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_ETHERNET_ERROR_INVALID_ETHERNET_CONNECTION</code></span></p></td>
+<td>the ethernet connection was invalid
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-ETHERNET-ERROR-INVALID-DEVICE-MAC:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_ETHERNET_ERROR_INVALID_DEVICE_MAC</code></span></p></td>
+<td>the device's MAC was invalid
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-ETHERNET-ERROR-MAC-MISMATCH:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_ETHERNET_ERROR_MAC_MISMATCH</code></span></p></td>
+<td>the MACs of the connection and the device mismatched
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-DEVICE-ETHERNET-CARRIER:CAPS"></a><h3>NM_DEVICE_ETHERNET_CARRIER</h3>
 <pre class="programlisting">#define NM_DEVICE_ETHERNET_CARRIER     "carrier"
 </pre>
@@ -123,6 +168,14 @@ NMDeviceEthernet implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="NM-DEVICE-ETHERNET-ERROR:CAPS"></a><h3>NM_DEVICE_ETHERNET_ERROR</h3>
+<pre class="programlisting">#define NM_DEVICE_ETHERNET_ERROR nm_device_ethernet_error_quark ()
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-DEVICE-ETHERNET-HW-ADDRESS:CAPS"></a><h3>NM_DEVICE_ETHERNET_HW_ADDRESS</h3>
 <pre class="programlisting">#define NM_DEVICE_ETHERNET_HW_ADDRESS  "hw-address"
 </pre>
@@ -147,6 +200,21 @@ NMDeviceEthernet implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="nm-device-ethernet-error-quark"></a><h3>nm_device_ethernet_error_quark ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              nm_device_ethernet_error_quark      (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Registers an error quark for <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet"><span class="type">NMDeviceEthernet</span></a> if necessary.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the error quark used for <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet"><span class="type">NMDeviceEthernet</span></a> errors.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-device-ethernet-get-carrier"></a><h3>nm_device_ethernet_get_carrier ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_device_ethernet_get_carrier      (<em class="parameter"><code><a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet"><span class="type">NMDeviceEthernet</span></a> *device</code></em>);</pre>
 <p>
diff --git a/docs/libnm-glib/html/NMDeviceInfiniband.html b/docs/libnm-glib/html/NMDeviceInfiniband.html
new file mode 100644
index 00000000..c4253e5d
--- /dev/null
+++ b/docs/libnm-glib/html/NMDeviceInfiniband.html
@@ -0,0 +1,293 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>NMDeviceInfiniband</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="libnm-glib Reference Manual">
+<link rel="up" href="ch02.html" title="libnm-glib API Reference">
+<link rel="prev" href="NMDeviceBond.html" title="NMDeviceBond">
+<link rel="next" href="NMDeviceVlan.html" title="NMDeviceVlan">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="NMDeviceBond.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libnm-glib Reference Manual</th>
+<td><a accesskey="n" href="NMDeviceVlan.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#NMDeviceInfiniband.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#NMDeviceInfiniband.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#NMDeviceInfiniband.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#NMDeviceInfiniband.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
+                   | 
+                  <a href="#NMDeviceInfiniband.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="NMDeviceInfiniband"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="NMDeviceInfiniband.top_of_page"></a>NMDeviceInfiniband</span></h2>
+<p>NMDeviceInfiniband</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="NMDeviceInfiniband.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">                    <a class="link" href="NMDeviceInfiniband.html#NMDeviceInfiniband-struct" title="NMDeviceInfiniband">NMDeviceInfiniband</a>;
+                    <a class="link" href="NMDeviceInfiniband.html#NMDeviceInfinibandClass" title="NMDeviceInfinibandClass">NMDeviceInfinibandClass</a>;
+enum                <a class="link" href="NMDeviceInfiniband.html#NMDeviceInfinibandError" title="enum NMDeviceInfinibandError">NMDeviceInfinibandError</a>;
+#define             <a class="link" href="NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-CARRIER:CAPS" title="NM_DEVICE_INFINIBAND_CARRIER">NM_DEVICE_INFINIBAND_CARRIER</a>
+#define             <a class="link" href="NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-ERROR:CAPS" title="NM_DEVICE_INFINIBAND_ERROR">NM_DEVICE_INFINIBAND_ERROR</a>
+#define             <a class="link" href="NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-HW-ADDRESS:CAPS" title="NM_DEVICE_INFINIBAND_HW_ADDRESS">NM_DEVICE_INFINIBAND_HW_ADDRESS</a>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              <a class="link" href="NMDeviceInfiniband.html#nm-device-infiniband-error-quark" title="nm_device_infiniband_error_quark ()">nm_device_infiniband_error_quark</a>    (<em class="parameter"><code><span class="type">void</span></code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="NMDeviceInfiniband.html#nm-device-infiniband-get-carrier" title="nm_device_infiniband_get_carrier ()">nm_device_infiniband_get_carrier</a>    (<em class="parameter"><code><a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband"><span class="type">NMDeviceInfiniband</span></a> *device</code></em>);
+const <span class="returnvalue">char</span> *        <a class="link" href="NMDeviceInfiniband.html#nm-device-infiniband-get-hw-address" title="nm_device_infiniband_get_hw_address ()">nm_device_infiniband_get_hw_address</a> (<em class="parameter"><code><a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband"><span class="type">NMDeviceInfiniband</span></a> *device</code></em>);
+<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> *           <a class="link" href="NMDeviceInfiniband.html#nm-device-infiniband-new" title="nm_device_infiniband_new ()">nm_device_infiniband_new</a>            (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGConnection.html#DBusGConnection"><span class="type">DBusGConnection</span></a> *connection</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *path</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMDeviceInfiniband.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a class="link" href="NMObject.html" title="NMObject">NMObject</a>
+         +----<a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+               +----NMDeviceInfiniband
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMDeviceInfiniband.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+NMDeviceInfiniband implements
+ <a href="http://library.gnome.org/devel/gio/unstable/GInitable.html">GInitable</a> and  <a href="http://library.gnome.org/devel/gio/unstable/GAsyncInitable.html">GAsyncInitable</a>.</p>
+</div>
+<div class="refsect1">
+<a name="NMDeviceInfiniband.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="NMDeviceInfiniband.html#NMDeviceInfiniband--carrier" title='The "carrier" property'>carrier</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read
+  "<a class="link" href="NMDeviceInfiniband.html#NMDeviceInfiniband--hw-address" title='The "hw-address" property'>hw-address</a>"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMDeviceInfiniband.description"></a><h2>Description</h2>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="NMDeviceInfiniband.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="NMDeviceInfiniband-struct"></a><h3>NMDeviceInfiniband</h3>
+<pre class="programlisting">typedef struct _NMDeviceInfiniband NMDeviceInfiniband;</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMDeviceInfinibandClass"></a><h3>NMDeviceInfinibandClass</h3>
+<pre class="programlisting">typedef struct {
+	NMDeviceClass parent;
+
+	/* Padding for future expansion */
+	void (*_reserved1) (void);
+	void (*_reserved2) (void);
+	void (*_reserved3) (void);
+	void (*_reserved4) (void);
+	void (*_reserved5) (void);
+	void (*_reserved6) (void);
+} NMDeviceInfinibandClass;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMDeviceInfinibandError"></a><h3>enum NMDeviceInfinibandError</h3>
+<pre class="programlisting">typedef enum {
+	NM_DEVICE_INFINIBAND_ERROR_UNKNOWN = 0,                   /*&lt; nick=UnknownError &gt;*/
+	NM_DEVICE_INFINIBAND_ERROR_NOT_INFINIBAND_CONNECTION,     /*&lt; nick=NotInfinibandConnection &gt;*/
+	NM_DEVICE_INFINIBAND_ERROR_INVALID_INFINIBAND_CONNECTION, /*&lt; nick=InvalidInfinibandConnection &gt;*/
+	NM_DEVICE_INFINIBAND_ERROR_INVALID_DEVICE_MAC,            /*&lt; nick=InvalidDeviceMac &gt;*/
+	NM_DEVICE_INFINIBAND_ERROR_MAC_MISMATCH,                  /*&lt; nick=MacMismatch &gt;*/
+} NMDeviceInfinibandError;
+</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="NM-DEVICE-INFINIBAND-ERROR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_INFINIBAND_ERROR_UNKNOWN</code></span></p></td>
+<td>unknown or unclassified error
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-INFINIBAND-ERROR-NOT-INFINIBAND-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_INFINIBAND_ERROR_NOT_INFINIBAND_CONNECTION</code></span></p></td>
+<td>the connection was not of InfiniBand type
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-INFINIBAND-ERROR-INVALID-INFINIBAND-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_INFINIBAND_ERROR_INVALID_INFINIBAND_CONNECTION</code></span></p></td>
+<td>the InfiniBand connection was invalid
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-INFINIBAND-ERROR-INVALID-DEVICE-MAC:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_INFINIBAND_ERROR_INVALID_DEVICE_MAC</code></span></p></td>
+<td>the device's MAC was invalid
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-INFINIBAND-ERROR-MAC-MISMATCH:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_INFINIBAND_ERROR_MAC_MISMATCH</code></span></p></td>
+<td>the MACs of the connection and the device mismatched
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-DEVICE-INFINIBAND-CARRIER:CAPS"></a><h3>NM_DEVICE_INFINIBAND_CARRIER</h3>
+<pre class="programlisting">#define NM_DEVICE_INFINIBAND_CARRIER     "carrier"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-DEVICE-INFINIBAND-ERROR:CAPS"></a><h3>NM_DEVICE_INFINIBAND_ERROR</h3>
+<pre class="programlisting">#define NM_DEVICE_INFINIBAND_ERROR nm_device_infiniband_error_quark ()
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-DEVICE-INFINIBAND-HW-ADDRESS:CAPS"></a><h3>NM_DEVICE_INFINIBAND_HW_ADDRESS</h3>
+<pre class="programlisting">#define NM_DEVICE_INFINIBAND_HW_ADDRESS  "hw-address"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-infiniband-error-quark"></a><h3>nm_device_infiniband_error_quark ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              nm_device_infiniband_error_quark    (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Registers an error quark for <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband"><span class="type">NMDeviceInfiniband</span></a> if necessary.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the error quark used for <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband"><span class="type">NMDeviceInfiniband</span></a> errors.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-infiniband-get-carrier"></a><h3>nm_device_infiniband_get_carrier ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_device_infiniband_get_carrier    (<em class="parameter"><code><a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband"><span class="type">NMDeviceInfiniband</span></a> *device</code></em>);</pre>
+<p>
+Whether the device has carrier.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>device</code></em> :</span></p></td>
+<td>a <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband"><span class="type">NMDeviceInfiniband</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the device has carrier</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-infiniband-get-hw-address"></a><h3>nm_device_infiniband_get_hw_address ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> *        nm_device_infiniband_get_hw_address (<em class="parameter"><code><a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband"><span class="type">NMDeviceInfiniband</span></a> *device</code></em>);</pre>
+<p>
+Gets the hardware (MAC) address of the <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband"><span class="type">NMDeviceInfiniband</span></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>device</code></em> :</span></p></td>
+<td>a <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband"><span class="type">NMDeviceInfiniband</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the hardware address. This is the internal string used by the
+device, and must not be modified.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-infiniband-new"></a><h3>nm_device_infiniband_new ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> *           nm_device_infiniband_new            (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGConnection.html#DBusGConnection"><span class="type">DBusGConnection</span></a> *connection</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *path</code></em>);</pre>
+<p>
+Creates a new <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband"><span class="type">NMDeviceInfiniband</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
+<td>the <a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGConnection.html#DBusGConnection"><span class="type">DBusGConnection</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>path</code></em> :</span></p></td>
+<td>the DBus object path of the device</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new device. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="refsect1">
+<a name="NMDeviceInfiniband.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="NMDeviceInfiniband--carrier"></a><h3>The <code class="literal">"carrier"</code> property</h3>
+<pre class="programlisting">  "carrier"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read</pre>
+<p>
+Whether the device has carrier.
+</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMDeviceInfiniband--hw-address"></a><h3>The <code class="literal">"hw-address"</code> property</h3>
+<pre class="programlisting">  "hw-address"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read</pre>
+<p>
+The hardware (MAC) address of the device.
+</p>
+<p>Default value: NULL</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libnm-glib/html/NMDeviceModem.html b/docs/libnm-glib/html/NMDeviceModem.html
index 751da6e3..6dec6b03 100644
--- a/docs/libnm-glib/html/NMDeviceModem.html
+++ b/docs/libnm-glib/html/NMDeviceModem.html
@@ -45,8 +45,11 @@
 <a name="NMDeviceModem.synopsis"></a><h2>Synopsis</h2>
 <pre class="synopsis">                    <a class="link" href="NMDeviceModem.html#NMDeviceModem-struct" title="NMDeviceModem">NMDeviceModem</a>;
                     <a class="link" href="NMDeviceModem.html#NMDeviceModemClass" title="NMDeviceModemClass">NMDeviceModemClass</a>;
+enum                <a class="link" href="NMDeviceModem.html#NMDeviceModemError" title="enum NMDeviceModemError">NMDeviceModemError</a>;
 #define             <a class="link" href="NMDeviceModem.html#NM-DEVICE-MODEM-CURRENT-CAPABILITIES:CAPS" title="NM_DEVICE_MODEM_CURRENT_CAPABILITIES">NM_DEVICE_MODEM_CURRENT_CAPABILITIES</a>
+#define             <a class="link" href="NMDeviceModem.html#NM-DEVICE-MODEM-ERROR:CAPS" title="NM_DEVICE_MODEM_ERROR">NM_DEVICE_MODEM_ERROR</a>
 #define             <a class="link" href="NMDeviceModem.html#NM-DEVICE-MODEM-MODEM-CAPABILITIES:CAPS" title="NM_DEVICE_MODEM_MODEM_CAPABILITIES">NM_DEVICE_MODEM_MODEM_CAPABILITIES</a>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              <a class="link" href="NMDeviceModem.html#nm-device-modem-error-quark" title="nm_device_modem_error_quark ()">nm_device_modem_error_quark</a>         (<em class="parameter"><code><span class="type">void</span></code></em>);
 <span class="returnvalue">NMDeviceModemCapabilities</span> <a class="link" href="NMDeviceModem.html#nm-device-modem-get-current-capabilities" title="nm_device_modem_get_current_capabilities ()">nm_device_modem_get_current_capabilities</a>
                                                         (<em class="parameter"><code><a class="link" href="NMDeviceModem.html" title="NMDeviceModem"><span class="type">NMDeviceModem</span></a> *self</code></em>);
 <span class="returnvalue">NMDeviceModemCapabilities</span> <a class="link" href="NMDeviceModem.html#nm-device-modem-get-modem-capabilities" title="nm_device_modem_get_modem_capabilities ()">nm_device_modem_get_modem_capabilities</a>
@@ -108,6 +111,42 @@ NMDeviceModem implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="NMDeviceModemError"></a><h3>enum NMDeviceModemError</h3>
+<pre class="programlisting">typedef enum {
+	NM_DEVICE_MODEM_ERROR_UNKNOWN = 0,              /*&lt; nick=UnknownError &gt;*/
+	NM_DEVICE_MODEM_ERROR_NOT_MODEM_CONNECTION,     /*&lt; nick=NotModemConnection &gt;*/
+	NM_DEVICE_MODEM_ERROR_INVALID_MODEM_CONNECTION, /*&lt; nick=InvalidModemConnection &gt;*/
+	NM_DEVICE_MODEM_ERROR_MISSING_DEVICE_CAPS,      /*&lt; nick=MissingDeviceCaps &gt;*/
+} NMDeviceModemError;
+</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="NM-DEVICE-MODEM-ERROR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_MODEM_ERROR_UNKNOWN</code></span></p></td>
+<td>unknown or unclassified error
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-MODEM-ERROR-NOT-MODEM-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_MODEM_ERROR_NOT_MODEM_CONNECTION</code></span></p></td>
+<td>the connection was not of modem type
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-MODEM-ERROR-INVALID-MODEM-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_MODEM_ERROR_INVALID_MODEM_CONNECTION</code></span></p></td>
+<td>the modem connection was invalid
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-MODEM-ERROR-MISSING-DEVICE-CAPS"></a><span class="term"><code class="literal">NM_DEVICE_MODEM_ERROR_MISSING_DEVICE_CAPS</code></span></p></td>
+<td>the device missed required capabilities
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-DEVICE-MODEM-CURRENT-CAPABILITIES:CAPS"></a><h3>NM_DEVICE_MODEM_CURRENT_CAPABILITIES</h3>
 <pre class="programlisting">#define NM_DEVICE_MODEM_CURRENT_CAPABILITIES "current-capabilities"
 </pre>
@@ -116,6 +155,14 @@ NMDeviceModem implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="NM-DEVICE-MODEM-ERROR:CAPS"></a><h3>NM_DEVICE_MODEM_ERROR</h3>
+<pre class="programlisting">#define NM_DEVICE_MODEM_ERROR nm_device_modem_error_quark ()
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-DEVICE-MODEM-MODEM-CAPABILITIES:CAPS"></a><h3>NM_DEVICE_MODEM_MODEM_CAPABILITIES</h3>
 <pre class="programlisting">#define NM_DEVICE_MODEM_MODEM_CAPABILITIES   "modem-capabilities"
 </pre>
@@ -124,6 +171,21 @@ NMDeviceModem implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="nm-device-modem-error-quark"></a><h3>nm_device_modem_error_quark ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              nm_device_modem_error_quark         (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Registers an error quark for <a class="link" href="NMDeviceModem.html" title="NMDeviceModem"><span class="type">NMDeviceModem</span></a> if necessary.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the error quark used for <a class="link" href="NMDeviceModem.html" title="NMDeviceModem"><span class="type">NMDeviceModem</span></a> errors.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-device-modem-get-current-capabilities"></a><h3>nm_device_modem_get_current_capabilities ()</h3>
 <pre class="programlisting"><span class="returnvalue">NMDeviceModemCapabilities</span> nm_device_modem_get_current_capabilities
                                                         (<em class="parameter"><code><a class="link" href="NMDeviceModem.html" title="NMDeviceModem"><span class="type">NMDeviceModem</span></a> *self</code></em>);</pre>
diff --git a/docs/libnm-glib/html/NMDeviceOlpcMesh.html b/docs/libnm-glib/html/NMDeviceOlpcMesh.html
new file mode 100644
index 00000000..2af9c04b
--- /dev/null
+++ b/docs/libnm-glib/html/NMDeviceOlpcMesh.html
@@ -0,0 +1,324 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>NMDeviceOlpcMesh</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="libnm-glib Reference Manual">
+<link rel="up" href="ch02.html" title="libnm-glib API Reference">
+<link rel="prev" href="NMDeviceVlan.html" title="NMDeviceVlan">
+<link rel="next" href="NMWimaxNsp.html" title="NMWimaxNsp">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="NMDeviceVlan.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libnm-glib Reference Manual</th>
+<td><a accesskey="n" href="NMWimaxNsp.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#NMDeviceOlpcMesh.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#NMDeviceOlpcMesh.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#NMDeviceOlpcMesh.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#NMDeviceOlpcMesh.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
+                   | 
+                  <a href="#NMDeviceOlpcMesh.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="NMDeviceOlpcMesh"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="NMDeviceOlpcMesh.top_of_page"></a>NMDeviceOlpcMesh</span></h2>
+<p>NMDeviceOlpcMesh</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="NMDeviceOlpcMesh.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">                    <a class="link" href="NMDeviceOlpcMesh.html#NMDeviceOlpcMesh-struct" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>;
+                    <a class="link" href="NMDeviceOlpcMesh.html#NMDeviceOlpcMeshClass" title="NMDeviceOlpcMeshClass">NMDeviceOlpcMeshClass</a>;
+enum                <a class="link" href="NMDeviceOlpcMesh.html#NMDeviceOlpcMeshError" title="enum NMDeviceOlpcMeshError">NMDeviceOlpcMeshError</a>;
+#define             <a class="link" href="NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-ACTIVE-CHANNEL:CAPS" title="NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL">NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL</a>
+#define             <a class="link" href="NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-COMPANION:CAPS" title="NM_DEVICE_OLPC_MESH_COMPANION">NM_DEVICE_OLPC_MESH_COMPANION</a>
+#define             <a class="link" href="NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-ERROR:CAPS" title="NM_DEVICE_OLPC_MESH_ERROR">NM_DEVICE_OLPC_MESH_ERROR</a>
+#define             <a class="link" href="NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-HW-ADDRESS:CAPS" title="NM_DEVICE_OLPC_MESH_HW_ADDRESS">NM_DEVICE_OLPC_MESH_HW_ADDRESS</a>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              <a class="link" href="NMDeviceOlpcMesh.html#nm-device-olpc-mesh-error-quark" title="nm_device_olpc_mesh_error_quark ()">nm_device_olpc_mesh_error_quark</a>     (<em class="parameter"><code><span class="type">void</span></code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a>             <a class="link" href="NMDeviceOlpcMesh.html#nm-device-olpc-mesh-get-active-channel" title="nm_device_olpc_mesh_get_active_channel ()">nm_device_olpc_mesh_get_active_channel</a>
+                                                        (<em class="parameter"><code><a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh"><span class="type">NMDeviceOlpcMesh</span></a> *device</code></em>);
+<a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi"><span class="returnvalue">NMDeviceWifi</span></a> *      <a class="link" href="NMDeviceOlpcMesh.html#nm-device-olpc-mesh-get-companion" title="nm_device_olpc_mesh_get_companion ()">nm_device_olpc_mesh_get_companion</a>   (<em class="parameter"><code><a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh"><span class="type">NMDeviceOlpcMesh</span></a> *device</code></em>);
+const <span class="returnvalue">char</span> *        <a class="link" href="NMDeviceOlpcMesh.html#nm-device-olpc-mesh-get-hw-address" title="nm_device_olpc_mesh_get_hw_address ()">nm_device_olpc_mesh_get_hw_address</a>  (<em class="parameter"><code><a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh"><span class="type">NMDeviceOlpcMesh</span></a> *device</code></em>);
+<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> *           <a class="link" href="NMDeviceOlpcMesh.html#nm-device-olpc-mesh-new" title="nm_device_olpc_mesh_new ()">nm_device_olpc_mesh_new</a>             (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGConnection.html#DBusGConnection"><span class="type">DBusGConnection</span></a> *connection</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *path</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMDeviceOlpcMesh.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a class="link" href="NMObject.html" title="NMObject">NMObject</a>
+         +----<a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+               +----NMDeviceOlpcMesh
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMDeviceOlpcMesh.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+NMDeviceOlpcMesh implements
+ <a href="http://library.gnome.org/devel/gio/unstable/GInitable.html">GInitable</a> and  <a href="http://library.gnome.org/devel/gio/unstable/GAsyncInitable.html">GAsyncInitable</a>.</p>
+</div>
+<div class="refsect1">
+<a name="NMDeviceOlpcMesh.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="NMDeviceOlpcMesh.html#NMDeviceOlpcMesh--active-channel" title='The "active-channel" property'>active-channel</a>"           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read
+  "<a class="link" href="NMDeviceOlpcMesh.html#NMDeviceOlpcMesh--companion" title='The "companion" property'>companion</a>"                <a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi"><span class="type">NMDeviceWifi</span></a>*         : Read
+  "<a class="link" href="NMDeviceOlpcMesh.html#NMDeviceOlpcMesh--hw-address" title='The "hw-address" property'>hw-address</a>"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMDeviceOlpcMesh.description"></a><h2>Description</h2>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="NMDeviceOlpcMesh.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="NMDeviceOlpcMesh-struct"></a><h3>NMDeviceOlpcMesh</h3>
+<pre class="programlisting">typedef struct _NMDeviceOlpcMesh NMDeviceOlpcMesh;</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMDeviceOlpcMeshClass"></a><h3>NMDeviceOlpcMeshClass</h3>
+<pre class="programlisting">typedef struct {
+	NMDeviceClass parent;
+
+	/* Padding for future expansion */
+	void (*_reserved1) (void);
+	void (*_reserved2) (void);
+	void (*_reserved3) (void);
+	void (*_reserved4) (void);
+	void (*_reserved5) (void);
+	void (*_reserved6) (void);
+} NMDeviceOlpcMeshClass;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMDeviceOlpcMeshError"></a><h3>enum NMDeviceOlpcMeshError</h3>
+<pre class="programlisting">typedef enum {
+	NM_DEVICE_OLPC_MESH_ERROR_UNKNOWN = 0,                  /*&lt; nick=UnknownError &gt;*/
+	NM_DEVICE_OLPC_MESH_ERROR_NOT_OLPC_MESH_CONNECTION,     /*&lt; nick=NotOlpcMeshConnection &gt;*/
+	NM_DEVICE_OLPC_MESH_ERROR_INVALID_OLPC_MESH_CONNECTION, /*&lt; nick=InvalidOlpcMeshConnection &gt;*/
+} NMDeviceOlpcMeshError;
+</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="NM-DEVICE-OLPC-MESH-ERROR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_OLPC_MESH_ERROR_UNKNOWN</code></span></p></td>
+<td>unknown or unclassified error
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-OLPC-MESH-ERROR-NOT-OLPC-MESH-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_OLPC_MESH_ERROR_NOT_OLPC_MESH_CONNECTION</code></span></p></td>
+<td>the connection was not of Olpc Mesh type
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-OLPC-MESH-ERROR-INVALID-OLPC-MESH-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_OLPC_MESH_ERROR_INVALID_OLPC_MESH_CONNECTION</code></span></p></td>
+<td>the Olpc Mesh connection was invalid
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-DEVICE-OLPC-MESH-ACTIVE-CHANNEL:CAPS"></a><h3>NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL</h3>
+<pre class="programlisting">#define NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL "active-channel"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-DEVICE-OLPC-MESH-COMPANION:CAPS"></a><h3>NM_DEVICE_OLPC_MESH_COMPANION</h3>
+<pre class="programlisting">#define NM_DEVICE_OLPC_MESH_COMPANION      "companion"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-DEVICE-OLPC-MESH-ERROR:CAPS"></a><h3>NM_DEVICE_OLPC_MESH_ERROR</h3>
+<pre class="programlisting">#define NM_DEVICE_OLPC_MESH_ERROR nm_device_olpc_mesh_error_quark ()
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-DEVICE-OLPC-MESH-HW-ADDRESS:CAPS"></a><h3>NM_DEVICE_OLPC_MESH_HW_ADDRESS</h3>
+<pre class="programlisting">#define NM_DEVICE_OLPC_MESH_HW_ADDRESS     "hw-address"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-olpc-mesh-error-quark"></a><h3>nm_device_olpc_mesh_error_quark ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              nm_device_olpc_mesh_error_quark     (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Registers an error quark for <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh"><span class="type">NMDeviceOlpcMesh</span></a> if necessary.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the error quark used for <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh"><span class="type">NMDeviceOlpcMesh</span></a> errors.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-olpc-mesh-get-active-channel"></a><h3>nm_device_olpc_mesh_get_active_channel ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a>             nm_device_olpc_mesh_get_active_channel
+                                                        (<em class="parameter"><code><a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh"><span class="type">NMDeviceOlpcMesh</span></a> *device</code></em>);</pre>
+<p>
+Returns the active channel of the <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh"><span class="type">NMDeviceOlpcMesh</span></a> device.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>device</code></em> :</span></p></td>
+<td>a <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh"><span class="type">NMDeviceOlpcMesh</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>active channel of the device</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-olpc-mesh-get-companion"></a><h3>nm_device_olpc_mesh_get_companion ()</h3>
+<pre class="programlisting"><a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi"><span class="returnvalue">NMDeviceWifi</span></a> *      nm_device_olpc_mesh_get_companion   (<em class="parameter"><code><a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh"><span class="type">NMDeviceOlpcMesh</span></a> *device</code></em>);</pre>
+<p>
+Gets the companion device of the <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh"><span class="type">NMDeviceOlpcMesh</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>device</code></em> :</span></p></td>
+<td>a <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh"><span class="type">NMDeviceOlpcMesh</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the companion of the device of <a href="/usr/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-olpc-mesh-get-hw-address"></a><h3>nm_device_olpc_mesh_get_hw_address ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> *        nm_device_olpc_mesh_get_hw_address  (<em class="parameter"><code><a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh"><span class="type">NMDeviceOlpcMesh</span></a> *device</code></em>);</pre>
+<p>
+Gets the hardware (MAC) address of the <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh"><span class="type">NMDeviceOlpcMesh</span></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>device</code></em> :</span></p></td>
+<td>a <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh"><span class="type">NMDeviceOlpcMesh</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the hardware address. This is the internal string used by the
+device, and must not be modified.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-olpc-mesh-new"></a><h3>nm_device_olpc_mesh_new ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> *           nm_device_olpc_mesh_new             (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGConnection.html#DBusGConnection"><span class="type">DBusGConnection</span></a> *connection</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *path</code></em>);</pre>
+<p>
+Creates a new <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh"><span class="type">NMDeviceOlpcMesh</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
+<td>the <a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGConnection.html#DBusGConnection"><span class="type">DBusGConnection</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>path</code></em> :</span></p></td>
+<td>the DBus object path of the device</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new OlpcMesh device. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="refsect1">
+<a name="NMDeviceOlpcMesh.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="NMDeviceOlpcMesh--active-channel"></a><h3>The <code class="literal">"active-channel"</code> property</h3>
+<pre class="programlisting">  "active-channel"           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read</pre>
+<p>
+The device's active channel.
+</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMDeviceOlpcMesh--companion"></a><h3>The <code class="literal">"companion"</code> property</h3>
+<pre class="programlisting">  "companion"                <a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi"><span class="type">NMDeviceWifi</span></a>*         : Read</pre>
+<p>
+The companion device.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMDeviceOlpcMesh--hw-address"></a><h3>The <code class="literal">"hw-address"</code> property</h3>
+<pre class="programlisting">  "hw-address"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read</pre>
+<p>
+The hardware (MAC) address of the device.
+</p>
+<p>Default value: NULL</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libnm-glib/html/NMDeviceVlan.html b/docs/libnm-glib/html/NMDeviceVlan.html
new file mode 100644
index 00000000..4e7f1a70
--- /dev/null
+++ b/docs/libnm-glib/html/NMDeviceVlan.html
@@ -0,0 +1,333 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>NMDeviceVlan</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="libnm-glib Reference Manual">
+<link rel="up" href="ch02.html" title="libnm-glib API Reference">
+<link rel="prev" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband">
+<link rel="next" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="NMDeviceInfiniband.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libnm-glib Reference Manual</th>
+<td><a accesskey="n" href="NMDeviceOlpcMesh.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#NMDeviceVlan.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#NMDeviceVlan.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#NMDeviceVlan.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#NMDeviceVlan.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
+                   | 
+                  <a href="#NMDeviceVlan.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="NMDeviceVlan"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="NMDeviceVlan.top_of_page"></a>NMDeviceVlan</span></h2>
+<p>NMDeviceVlan</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="NMDeviceVlan.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">                    <a class="link" href="NMDeviceVlan.html#NMDeviceVlan-struct" title="NMDeviceVlan">NMDeviceVlan</a>;
+                    <a class="link" href="NMDeviceVlan.html#NMDeviceVlanClass" title="NMDeviceVlanClass">NMDeviceVlanClass</a>;
+enum                <a class="link" href="NMDeviceVlan.html#NMDeviceVlanError" title="enum NMDeviceVlanError">NMDeviceVlanError</a>;
+#define             <a class="link" href="NMDeviceVlan.html#NM-DEVICE-VLAN-CARRIER:CAPS" title="NM_DEVICE_VLAN_CARRIER">NM_DEVICE_VLAN_CARRIER</a>
+#define             <a class="link" href="NMDeviceVlan.html#NM-DEVICE-VLAN-ERROR:CAPS" title="NM_DEVICE_VLAN_ERROR">NM_DEVICE_VLAN_ERROR</a>
+#define             <a class="link" href="NMDeviceVlan.html#NM-DEVICE-VLAN-HW-ADDRESS:CAPS" title="NM_DEVICE_VLAN_HW_ADDRESS">NM_DEVICE_VLAN_HW_ADDRESS</a>
+#define             <a class="link" href="NMDeviceVlan.html#NM-DEVICE-VLAN-VLAN-ID:CAPS" title="NM_DEVICE_VLAN_VLAN_ID">NM_DEVICE_VLAN_VLAN_ID</a>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              <a class="link" href="NMDeviceVlan.html#nm-device-vlan-error-quark" title="nm_device_vlan_error_quark ()">nm_device_vlan_error_quark</a>          (<em class="parameter"><code><span class="type">void</span></code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="NMDeviceVlan.html#nm-device-vlan-get-carrier" title="nm_device_vlan_get_carrier ()">nm_device_vlan_get_carrier</a>          (<em class="parameter"><code><a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan"><span class="type">NMDeviceVlan</span></a> *device</code></em>);
+const <span class="returnvalue">char</span> *        <a class="link" href="NMDeviceVlan.html#nm-device-vlan-get-hw-address" title="nm_device_vlan_get_hw_address ()">nm_device_vlan_get_hw_address</a>       (<em class="parameter"><code><a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan"><span class="type">NMDeviceVlan</span></a> *device</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>               <a class="link" href="NMDeviceVlan.html#nm-device-vlan-get-vlan-id" title="nm_device_vlan_get_vlan_id ()">nm_device_vlan_get_vlan_id</a>          (<em class="parameter"><code><a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan"><span class="type">NMDeviceVlan</span></a> *device</code></em>);
+<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> *           <a class="link" href="NMDeviceVlan.html#nm-device-vlan-new" title="nm_device_vlan_new ()">nm_device_vlan_new</a>                  (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGConnection.html#DBusGConnection"><span class="type">DBusGConnection</span></a> *connection</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *path</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMDeviceVlan.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a class="link" href="NMObject.html" title="NMObject">NMObject</a>
+         +----<a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+               +----NMDeviceVlan
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMDeviceVlan.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+NMDeviceVlan implements
+ <a href="http://library.gnome.org/devel/gio/unstable/GInitable.html">GInitable</a> and  <a href="http://library.gnome.org/devel/gio/unstable/GAsyncInitable.html">GAsyncInitable</a>.</p>
+</div>
+<div class="refsect1">
+<a name="NMDeviceVlan.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="NMDeviceVlan.html#NMDeviceVlan--carrier" title='The "carrier" property'>carrier</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read
+  "<a class="link" href="NMDeviceVlan.html#NMDeviceVlan--hw-address" title='The "hw-address" property'>hw-address</a>"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read
+  "<a class="link" href="NMDeviceVlan.html#NMDeviceVlan--vlan-id" title='The "vlan-id" property'>vlan-id</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMDeviceVlan.description"></a><h2>Description</h2>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="NMDeviceVlan.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="NMDeviceVlan-struct"></a><h3>NMDeviceVlan</h3>
+<pre class="programlisting">typedef struct _NMDeviceVlan NMDeviceVlan;</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMDeviceVlanClass"></a><h3>NMDeviceVlanClass</h3>
+<pre class="programlisting">typedef struct {
+	NMDeviceClass parent;
+
+	/* Padding for future expansion */
+	void (*_reserved1) (void);
+	void (*_reserved2) (void);
+	void (*_reserved3) (void);
+	void (*_reserved4) (void);
+	void (*_reserved5) (void);
+	void (*_reserved6) (void);
+} NMDeviceVlanClass;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMDeviceVlanError"></a><h3>enum NMDeviceVlanError</h3>
+<pre class="programlisting">typedef enum {
+	NM_DEVICE_VLAN_ERROR_UNKNOWN = 0,             /*&lt; nick=UnknownError &gt;*/
+	NM_DEVICE_VLAN_ERROR_NOT_VLAN_CONNECTION,     /*&lt; nick=NotVlanConnection &gt;*/
+	NM_DEVICE_VLAN_ERROR_INVALID_VLAN_CONNECTION, /*&lt; nick=InvalidVlanConnection &gt;*/
+	NM_DEVICE_VLAN_ERROR_ID_MISMATCH,             /*&lt; nick=IdMismatch &gt;*/
+	NM_DEVICE_VLAN_ERROR_INTERFACE_MISMATCH,      /*&lt; nick=InterfaceMismatch &gt;*/
+} NMDeviceVlanError;
+</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="NM-DEVICE-VLAN-ERROR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_VLAN_ERROR_UNKNOWN</code></span></p></td>
+<td>unknown or unclassified error
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-VLAN-ERROR-NOT-VLAN-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_VLAN_ERROR_NOT_VLAN_CONNECTION</code></span></p></td>
+<td>the connection was not of VLAN type
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-VLAN-ERROR-INVALID-VLAN-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_VLAN_ERROR_INVALID_VLAN_CONNECTION</code></span></p></td>
+<td>the VLAN connection was invalid
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-VLAN-ERROR-ID-MISMATCH:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_VLAN_ERROR_ID_MISMATCH</code></span></p></td>
+<td>the VLAN identifiers of the connection and the device mismatched
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-VLAN-ERROR-INTERFACE-MISMATCH:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_VLAN_ERROR_INTERFACE_MISMATCH</code></span></p></td>
+<td>the interfaces of the connection and the device mismatched
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-DEVICE-VLAN-CARRIER:CAPS"></a><h3>NM_DEVICE_VLAN_CARRIER</h3>
+<pre class="programlisting">#define NM_DEVICE_VLAN_CARRIER     "carrier"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-DEVICE-VLAN-ERROR:CAPS"></a><h3>NM_DEVICE_VLAN_ERROR</h3>
+<pre class="programlisting">#define NM_DEVICE_VLAN_ERROR nm_device_vlan_error_quark ()
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-DEVICE-VLAN-HW-ADDRESS:CAPS"></a><h3>NM_DEVICE_VLAN_HW_ADDRESS</h3>
+<pre class="programlisting">#define NM_DEVICE_VLAN_HW_ADDRESS  "hw-address"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-DEVICE-VLAN-VLAN-ID:CAPS"></a><h3>NM_DEVICE_VLAN_VLAN_ID</h3>
+<pre class="programlisting">#define NM_DEVICE_VLAN_VLAN_ID     "vlan-id"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-vlan-error-quark"></a><h3>nm_device_vlan_error_quark ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              nm_device_vlan_error_quark          (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Registers an error quark for <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan"><span class="type">NMDeviceVlan</span></a> if necessary.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the error quark used for <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan"><span class="type">NMDeviceVlan</span></a> errors.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-vlan-get-carrier"></a><h3>nm_device_vlan_get_carrier ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_device_vlan_get_carrier          (<em class="parameter"><code><a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan"><span class="type">NMDeviceVlan</span></a> *device</code></em>);</pre>
+<p>
+Whether the device has carrier.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>device</code></em> :</span></p></td>
+<td>a <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan"><span class="type">NMDeviceVlan</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the device has carrier</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-vlan-get-hw-address"></a><h3>nm_device_vlan_get_hw_address ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> *        nm_device_vlan_get_hw_address       (<em class="parameter"><code><a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan"><span class="type">NMDeviceVlan</span></a> *device</code></em>);</pre>
+<p>
+Gets the hardware (MAC) address of the <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan"><span class="type">NMDeviceVlan</span></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>device</code></em> :</span></p></td>
+<td>a <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan"><span class="type">NMDeviceVlan</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the hardware address. This is the internal string used by the
+device, and must not be modified.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-vlan-get-vlan-id"></a><h3>nm_device_vlan_get_vlan_id ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>               nm_device_vlan_get_vlan_id          (<em class="parameter"><code><a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan"><span class="type">NMDeviceVlan</span></a> *device</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>device</code></em> :</span></p></td>
+<td>a <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan"><span class="type">NMDeviceVlan</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the device's VLAN ID</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-device-vlan-new"></a><h3>nm_device_vlan_new ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="returnvalue">GObject</span></a> *           nm_device_vlan_new                  (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGConnection.html#DBusGConnection"><span class="type">DBusGConnection</span></a> *connection</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *path</code></em>);</pre>
+<p>
+Creates a new <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan"><span class="type">NMDeviceVlan</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
+<td>the <a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGConnection.html#DBusGConnection"><span class="type">DBusGConnection</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>path</code></em> :</span></p></td>
+<td>the DBus object path of the device</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new device. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="refsect1">
+<a name="NMDeviceVlan.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="NMDeviceVlan--carrier"></a><h3>The <code class="literal">"carrier"</code> property</h3>
+<pre class="programlisting">  "carrier"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read</pre>
+<p>
+Whether the device has carrier.
+</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMDeviceVlan--hw-address"></a><h3>The <code class="literal">"hw-address"</code> property</h3>
+<pre class="programlisting">  "hw-address"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read</pre>
+<p>
+The hardware (MAC) address of the device.
+</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMDeviceVlan--vlan-id"></a><h3>The <code class="literal">"vlan-id"</code> property</h3>
+<pre class="programlisting">  "vlan-id"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read</pre>
+<p>
+The device's VLAN ID.
+</p>
+<p>Allowed values: &lt;= 4095</p>
+<p>Default value: 0</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libnm-glib/html/NMDeviceWifi.html b/docs/libnm-glib/html/NMDeviceWifi.html
index f08d0b79..e41712f3 100644
--- a/docs/libnm-glib/html/NMDeviceWifi.html
+++ b/docs/libnm-glib/html/NMDeviceWifi.html
@@ -47,12 +47,15 @@
 <a name="NMDeviceWifi.synopsis"></a><h2>Synopsis</h2>
 <pre class="synopsis">                    <a class="link" href="NMDeviceWifi.html#NMDeviceWifi-struct" title="NMDeviceWifi">NMDeviceWifi</a>;
                     <a class="link" href="NMDeviceWifi.html#NMDeviceWifiClass" title="NMDeviceWifiClass">NMDeviceWifiClass</a>;
+enum                <a class="link" href="NMDeviceWifi.html#NMDeviceWifiError" title="enum NMDeviceWifiError">NMDeviceWifiError</a>;
 #define             <a class="link" href="NMDeviceWifi.html#NM-DEVICE-WIFI-ACTIVE-ACCESS-POINT:CAPS" title="NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT">NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT</a>
 #define             <a class="link" href="NMDeviceWifi.html#NM-DEVICE-WIFI-BITRATE:CAPS" title="NM_DEVICE_WIFI_BITRATE">NM_DEVICE_WIFI_BITRATE</a>
 #define             <a class="link" href="NMDeviceWifi.html#NM-DEVICE-WIFI-CAPABILITIES:CAPS" title="NM_DEVICE_WIFI_CAPABILITIES">NM_DEVICE_WIFI_CAPABILITIES</a>
+#define             <a class="link" href="NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR:CAPS" title="NM_DEVICE_WIFI_ERROR">NM_DEVICE_WIFI_ERROR</a>
 #define             <a class="link" href="NMDeviceWifi.html#NM-DEVICE-WIFI-HW-ADDRESS:CAPS" title="NM_DEVICE_WIFI_HW_ADDRESS">NM_DEVICE_WIFI_HW_ADDRESS</a>
 #define             <a class="link" href="NMDeviceWifi.html#NM-DEVICE-WIFI-MODE:CAPS" title="NM_DEVICE_WIFI_MODE">NM_DEVICE_WIFI_MODE</a>
 #define             <a class="link" href="NMDeviceWifi.html#NM-DEVICE-WIFI-PERMANENT-HW-ADDRESS:CAPS" title="NM_DEVICE_WIFI_PERMANENT_HW_ADDRESS">NM_DEVICE_WIFI_PERMANENT_HW_ADDRESS</a>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              <a class="link" href="NMDeviceWifi.html#nm-device-wifi-error-quark" title="nm_device_wifi_error_quark ()">nm_device_wifi_error_quark</a>          (<em class="parameter"><code><span class="type">void</span></code></em>);
 <a class="link" href="NMAccessPoint.html" title="NMAccessPoint"><span class="returnvalue">NMAccessPoint</span></a> *     <a class="link" href="NMDeviceWifi.html#nm-device-wifi-get-access-point-by-path" title="nm_device_wifi_get_access_point_by_path ()">nm_device_wifi_get_access_point_by_path</a>
                                                         (<em class="parameter"><code><a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi"><span class="type">NMDeviceWifi</span></a> *device</code></em>,
                                                          <em class="parameter"><code>const <span class="type">char</span> *path</code></em>);
@@ -140,6 +143,62 @@ NMDeviceWifi implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="NMDeviceWifiError"></a><h3>enum NMDeviceWifiError</h3>
+<pre class="programlisting">typedef enum {
+	NM_DEVICE_WIFI_ERROR_UNKNOWN = 0,             /*&lt; nick=UnknownError &gt;*/
+	NM_DEVICE_WIFI_ERROR_NOT_WIFI_CONNECTION,     /*&lt; nick=NotWifiConnection &gt;*/
+	NM_DEVICE_WIFI_ERROR_INVALID_WIFI_CONNECTION, /*&lt; nick=InvalidWifiConnection &gt;*/
+	NM_DEVICE_WIFI_ERROR_INVALID_DEVICE_MAC,      /*&lt; nick=InvalidDeviceMac &gt;*/
+	NM_DEVICE_WIFI_ERROR_MAC_MISMATCH,            /*&lt; nick=MacMismatch &gt;*/
+	NM_DEVICE_WIFI_ERROR_MISSING_DEVICE_WPA_CAPS, /*&lt; nick=MissingDeviceWpaCaps &gt;*/
+	NM_DEVICE_WIFI_ERROR_MISSING_DEVICE_RSN_CAPS, /*&lt; nick=MissingDeviceRsnCaps &gt;*/
+} NMDeviceWifiError;
+</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="NM-DEVICE-WIFI-ERROR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_WIFI_ERROR_UNKNOWN</code></span></p></td>
+<td>unknown or unclassified error
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-WIFI-ERROR-NOT-WIFI-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_WIFI_ERROR_NOT_WIFI_CONNECTION</code></span></p></td>
+<td>the connection was not of Wi-Fi type
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-WIFI-ERROR-INVALID-WIFI-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_WIFI_ERROR_INVALID_WIFI_CONNECTION</code></span></p></td>
+<td>the Wi-Fi connection was invalid
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-WIFI-ERROR-INVALID-DEVICE-MAC:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_WIFI_ERROR_INVALID_DEVICE_MAC</code></span></p></td>
+<td>the device's MAC was invalid
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-WIFI-ERROR-MAC-MISMATCH:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_WIFI_ERROR_MAC_MISMATCH</code></span></p></td>
+<td>the MACs of the connection and the device mismatched
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-WIFI-ERROR-MISSING-DEVICE-WPA-CAPS"></a><span class="term"><code class="literal">NM_DEVICE_WIFI_ERROR_MISSING_DEVICE_WPA_CAPS</code></span></p></td>
+<td>the device missed WPA capabilities
+required by the connection
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-WIFI-ERROR-MISSING-DEVICE-RSN-CAPS"></a><span class="term"><code class="literal">NM_DEVICE_WIFI_ERROR_MISSING_DEVICE_RSN_CAPS</code></span></p></td>
+<td>the device missed RSN capabilities
+required by the connection
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-DEVICE-WIFI-ACTIVE-ACCESS-POINT:CAPS"></a><h3>NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT</h3>
 <pre class="programlisting">#define NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT "active-access-point"
 </pre>
@@ -164,6 +223,14 @@ NMDeviceWifi implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="NM-DEVICE-WIFI-ERROR:CAPS"></a><h3>NM_DEVICE_WIFI_ERROR</h3>
+<pre class="programlisting">#define NM_DEVICE_WIFI_ERROR nm_device_wifi_error_quark ()
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-DEVICE-WIFI-HW-ADDRESS:CAPS"></a><h3>NM_DEVICE_WIFI_HW_ADDRESS</h3>
 <pre class="programlisting">#define NM_DEVICE_WIFI_HW_ADDRESS          "hw-address"
 </pre>
@@ -188,6 +255,21 @@ NMDeviceWifi implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="nm-device-wifi-error-quark"></a><h3>nm_device_wifi_error_quark ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              nm_device_wifi_error_quark          (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Registers an error quark for <a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi"><span class="type">NMDeviceWifi</span></a> if necessary.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the error quark used for <a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi"><span class="type">NMDeviceWifi</span></a> errors.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-device-wifi-get-access-point-by-path"></a><h3>nm_device_wifi_get_access_point_by_path ()</h3>
 <pre class="programlisting"><a class="link" href="NMAccessPoint.html" title="NMAccessPoint"><span class="returnvalue">NMAccessPoint</span></a> *     nm_device_wifi_get_access_point_by_path
                                                         (<em class="parameter"><code><a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi"><span class="type">NMDeviceWifi</span></a> *device</code></em>,
diff --git a/docs/libnm-glib/html/NMDeviceWimax.html b/docs/libnm-glib/html/NMDeviceWimax.html
index 6daa921a..598f77b5 100644
--- a/docs/libnm-glib/html/NMDeviceWimax.html
+++ b/docs/libnm-glib/html/NMDeviceWimax.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="libnm-glib Reference Manual">
 <link rel="up" href="ch02.html" title="libnm-glib API Reference">
 <link rel="prev" href="NMDeviceBt.html" title="NMDeviceBt">
-<link rel="next" href="NMWimaxNsp.html" title="NMWimaxNsp">
+<link rel="next" href="NMDeviceBond.html" title="NMDeviceBond">
 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -18,7 +18,7 @@
 <td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
 <th width="100%" align="center">libnm-glib Reference Manual</th>
-<td><a accesskey="n" href="NMWimaxNsp.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="NMDeviceBond.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
 </tr>
 <tr><td colspan="5" class="shortcuts">
 <a href="#NMDeviceWimax.synopsis" class="shortcut">Top</a>
@@ -47,13 +47,16 @@
 <a name="NMDeviceWimax.synopsis"></a><h2>Synopsis</h2>
 <pre class="synopsis">                    <a class="link" href="NMDeviceWimax.html#NMDeviceWimax-struct" title="NMDeviceWimax">NMDeviceWimax</a>;
                     <a class="link" href="NMDeviceWimax.html#NMDeviceWimaxClass" title="NMDeviceWimaxClass">NMDeviceWimaxClass</a>;
+enum                <a class="link" href="NMDeviceWimax.html#NMDeviceWimaxError" title="enum NMDeviceWimaxError">NMDeviceWimaxError</a>;
 #define             <a class="link" href="NMDeviceWimax.html#NM-DEVICE-WIMAX-ACTIVE-NSP:CAPS" title="NM_DEVICE_WIMAX_ACTIVE_NSP">NM_DEVICE_WIMAX_ACTIVE_NSP</a>
 #define             <a class="link" href="NMDeviceWimax.html#NM-DEVICE-WIMAX-BSID:CAPS" title="NM_DEVICE_WIMAX_BSID">NM_DEVICE_WIMAX_BSID</a>
 #define             <a class="link" href="NMDeviceWimax.html#NM-DEVICE-WIMAX-CENTER-FREQUENCY:CAPS" title="NM_DEVICE_WIMAX_CENTER_FREQUENCY">NM_DEVICE_WIMAX_CENTER_FREQUENCY</a>
 #define             <a class="link" href="NMDeviceWimax.html#NM-DEVICE-WIMAX-CINR:CAPS" title="NM_DEVICE_WIMAX_CINR">NM_DEVICE_WIMAX_CINR</a>
+#define             <a class="link" href="NMDeviceWimax.html#NM-DEVICE-WIMAX-ERROR:CAPS" title="NM_DEVICE_WIMAX_ERROR">NM_DEVICE_WIMAX_ERROR</a>
 #define             <a class="link" href="NMDeviceWimax.html#NM-DEVICE-WIMAX-HW-ADDRESS:CAPS" title="NM_DEVICE_WIMAX_HW_ADDRESS">NM_DEVICE_WIMAX_HW_ADDRESS</a>
 #define             <a class="link" href="NMDeviceWimax.html#NM-DEVICE-WIMAX-RSSI:CAPS" title="NM_DEVICE_WIMAX_RSSI">NM_DEVICE_WIMAX_RSSI</a>
 #define             <a class="link" href="NMDeviceWimax.html#NM-DEVICE-WIMAX-TX-POWER:CAPS" title="NM_DEVICE_WIMAX_TX_POWER">NM_DEVICE_WIMAX_TX_POWER</a>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              <a class="link" href="NMDeviceWimax.html#nm-device-wimax-error-quark" title="nm_device_wimax_error_quark ()">nm_device_wimax_error_quark</a>         (<em class="parameter"><code><span class="type">void</span></code></em>);
 <a class="link" href="NMWimaxNsp.html" title="NMWimaxNsp"><span class="returnvalue">NMWimaxNsp</span></a> *        <a class="link" href="NMDeviceWimax.html#nm-device-wimax-get-active-nsp" title="nm_device_wimax_get_active_nsp ()">nm_device_wimax_get_active_nsp</a>      (<em class="parameter"><code><a class="link" href="NMDeviceWimax.html" title="NMDeviceWimax"><span class="type">NMDeviceWimax</span></a> *wimax</code></em>);
 const <span class="returnvalue">char</span> *        <a class="link" href="NMDeviceWimax.html#nm-device-wimax-get-bsid" title="nm_device_wimax_get_bsid ()">nm_device_wimax_get_bsid</a>            (<em class="parameter"><code><a class="link" href="NMDeviceWimax.html" title="NMDeviceWimax"><span class="type">NMDeviceWimax</span></a> *self</code></em>);
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>               <a class="link" href="NMDeviceWimax.html#nm-device-wimax-get-center-frequency" title="nm_device_wimax_get_center_frequency ()">nm_device_wimax_get_center_frequency</a>
@@ -132,6 +135,48 @@ NMDeviceWimax implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="NMDeviceWimaxError"></a><h3>enum NMDeviceWimaxError</h3>
+<pre class="programlisting">typedef enum {
+	NM_DEVICE_WIMAX_ERROR_UNKNOWN = 0,              /*&lt; nick=UnknownError &gt;*/
+	NM_DEVICE_WIMAX_ERROR_NOT_WIMAX_CONNECTION,     /*&lt; nick=NotWimaxConnection &gt;*/
+	NM_DEVICE_WIMAX_ERROR_INVALID_WIMAX_CONNECTION, /*&lt; nick=InvalidWimaxConnection &gt;*/
+	NM_DEVICE_WIMAX_ERROR_INVALID_DEVICE_MAC,       /*&lt; nick=InvalidDeviceMac &gt;*/
+	NM_DEVICE_WIMAX_ERROR_MAC_MISMATCH,             /*&lt; nick=MacMismatch &gt;*/
+} NMDeviceWimaxError;
+</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="NM-DEVICE-WIMAX-ERROR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_WIMAX_ERROR_UNKNOWN</code></span></p></td>
+<td>unknown or unclassified error
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-WIMAX-ERROR-NOT-WIMAX-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_WIMAX_ERROR_NOT_WIMAX_CONNECTION</code></span></p></td>
+<td>the connection was not of WiMax type
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-WIMAX-ERROR-INVALID-WIMAX-CONNECTION:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_WIMAX_ERROR_INVALID_WIMAX_CONNECTION</code></span></p></td>
+<td>the WiMax connection was invalid
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-WIMAX-ERROR-INVALID-DEVICE-MAC:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_WIMAX_ERROR_INVALID_DEVICE_MAC</code></span></p></td>
+<td>the device's MAC was invalid
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-DEVICE-WIMAX-ERROR-MAC-MISMATCH:CAPS"></a><span class="term"><code class="literal">NM_DEVICE_WIMAX_ERROR_MAC_MISMATCH</code></span></p></td>
+<td>the MACs of the connection and the device mismatched
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-DEVICE-WIMAX-ACTIVE-NSP:CAPS"></a><h3>NM_DEVICE_WIMAX_ACTIVE_NSP</h3>
 <pre class="programlisting">#define NM_DEVICE_WIMAX_ACTIVE_NSP       "active-nsp"
 </pre>
@@ -164,6 +209,14 @@ NMDeviceWimax implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="NM-DEVICE-WIMAX-ERROR:CAPS"></a><h3>NM_DEVICE_WIMAX_ERROR</h3>
+<pre class="programlisting">#define NM_DEVICE_WIMAX_ERROR nm_device_wimax_error_quark ()
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-DEVICE-WIMAX-HW-ADDRESS:CAPS"></a><h3>NM_DEVICE_WIMAX_HW_ADDRESS</h3>
 <pre class="programlisting">#define NM_DEVICE_WIMAX_HW_ADDRESS       "hw-address"
 </pre>
@@ -188,6 +241,21 @@ NMDeviceWimax implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="nm-device-wimax-error-quark"></a><h3>nm_device_wimax_error_quark ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              nm_device_wimax_error_quark         (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Registers an error quark for <a class="link" href="NMDeviceWimax.html" title="NMDeviceWimax"><span class="type">NMDeviceWimax</span></a> if necessary.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the error quark used for <a class="link" href="NMDeviceWimax.html" title="NMDeviceWimax"><span class="type">NMDeviceWimax</span></a> errors.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-device-wimax-get-active-nsp"></a><h3>nm_device_wimax_get_active_nsp ()</h3>
 <pre class="programlisting"><a class="link" href="NMWimaxNsp.html" title="NMWimaxNsp"><span class="returnvalue">NMWimaxNsp</span></a> *        nm_device_wimax_get_active_nsp      (<em class="parameter"><code><a class="link" href="NMDeviceWimax.html" title="NMDeviceWimax"><span class="type">NMDeviceWimax</span></a> *wimax</code></em>);</pre>
 <p>
diff --git a/docs/libnm-glib/html/NMObject.html b/docs/libnm-glib/html/NMObject.html
index 24bb4276..ea763de7 100644
--- a/docs/libnm-glib/html/NMObject.html
+++ b/docs/libnm-glib/html/NMObject.html
@@ -30,6 +30,8 @@
                   <a href="#NMObject.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
                    | 
                   <a href="#NMObject.properties" class="shortcut">Properties</a>
+                   | 
+                  <a href="#NMObject.signals" class="shortcut">Signals</a>
 </td></tr>
 </table>
 <div class="refentry">
@@ -45,8 +47,11 @@
 <a name="NMObject.synopsis"></a><h2>Synopsis</h2>
 <pre class="synopsis">                    <a class="link" href="NMObject.html#NMObject-struct" title="NMObject">NMObject</a>;
                     <a class="link" href="NMObject.html#NMObjectClass" title="NMObjectClass">NMObjectClass</a>;
+enum                <a class="link" href="NMObject.html#NMObjectError" title="enum NMObjectError">NMObjectError</a>;
 #define             <a class="link" href="NMObject.html#NM-OBJECT-DBUS-CONNECTION:CAPS" title="NM_OBJECT_DBUS_CONNECTION">NM_OBJECT_DBUS_CONNECTION</a>
 #define             <a class="link" href="NMObject.html#NM-OBJECT-DBUS-PATH:CAPS" title="NM_OBJECT_DBUS_PATH">NM_OBJECT_DBUS_PATH</a>
+#define             <a class="link" href="NMObject.html#NM-OBJECT-ERROR:CAPS" title="NM_OBJECT_ERROR">NM_OBJECT_ERROR</a>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              <a class="link" href="NMObject.html#nm-object-error-quark" title="nm_object_error_quark ()">nm_object_error_quark</a>               (<em class="parameter"><code><span class="type">void</span></code></em>);
 <a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGConnection.html#DBusGConnection"><span class="returnvalue">DBusGConnection</span></a> *   <a class="link" href="NMObject.html#nm-object-get-connection" title="nm_object_get_connection ()">nm_object_get_connection</a>            (<em class="parameter"><code><a class="link" href="NMObject.html" title="NMObject"><span class="type">NMObject</span></a> *object</code></em>);
 const <span class="returnvalue">char</span> *        <a class="link" href="NMObject.html#nm-object-get-path" title="nm_object_get_path ()">nm_object_get_path</a>                  (<em class="parameter"><code><a class="link" href="NMObject.html" title="NMObject"><span class="type">NMObject</span></a> *object</code></em>);
 </pre>
@@ -81,6 +86,12 @@ NMObject implements
 </pre>
 </div>
 <div class="refsect1">
+<a name="NMObject.signals"></a><h2>Signals</h2>
+<pre class="synopsis">
+  "<a class="link" href="NMObject.html#NMObject-object-creation-failed" title='The "object-creation-failed" signal'>object-creation-failed</a>"                         : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS"><code class="literal">Run First</code></a>
+</pre>
+</div>
+<div class="refsect1">
 <a name="NMObject.description"></a><h2>Description</h2>
 <p>
 </p>
@@ -99,6 +110,15 @@ NMObject implements
 <pre class="programlisting">typedef struct {
 	GObjectClass parent;
 
+	/* Signals */
+	/* The "object-creation-failed" signal is PRIVATE for libnm-glib and
+	 * is not meant for any external usage.  It indicates that an error
+	 * occured during creation of an object.
+	 */
+	void (*object_creation_failed) (NMObject *master_object,
+	                                GError *error,
+	                                char *failed_path);
+
 	/* Padding for future expansion */
 	void (*_reserved1) (void);
 	void (*_reserved2) (void);
@@ -113,6 +133,33 @@ NMObject implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="NMObjectError"></a><h3>enum NMObjectError</h3>
+<pre class="programlisting">typedef enum {
+	NM_OBJECT_ERROR_UNKNOWN = 0,
+	NM_OBJECT_ERROR_OBJECT_CREATION_FAILURE,
+} NMObjectError;
+</pre>
+<p>
+Describes errors that may result from operations involving a <a class="link" href="NMObject.html" title="NMObject"><span class="type">NMObject</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="NM-OBJECT-ERROR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">NM_OBJECT_ERROR_UNKNOWN</code></span></p></td>
+<td>unknown or unclassified error
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-OBJECT-ERROR-OBJECT-CREATION-FAILURE:CAPS"></a><span class="term"><code class="literal">NM_OBJECT_ERROR_OBJECT_CREATION_FAILURE</code></span></p></td>
+<td>an error ocured while creating an <a class="link" href="NMObject.html" title="NMObject"><span class="type">NMObject</span></a>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-OBJECT-DBUS-CONNECTION:CAPS"></a><h3>NM_OBJECT_DBUS_CONNECTION</h3>
 <pre class="programlisting">#define NM_OBJECT_DBUS_CONNECTION "dbus-connection"
 </pre>
@@ -129,6 +176,29 @@ NMObject implements
 </div>
 <hr>
 <div class="refsect2">
+<a name="NM-OBJECT-ERROR:CAPS"></a><h3>NM_OBJECT_ERROR</h3>
+<pre class="programlisting">#define NM_OBJECT_ERROR nm_object_error_quark ()
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-object-error-quark"></a><h3>nm_object_error_quark ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              nm_object_error_quark               (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Registers an error quark for <a class="link" href="NMObject.html" title="NMObject"><span class="type">NMObject</span></a> if necessary.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the error quark used for <a class="link" href="NMObject.html" title="NMObject"><span class="type">NMObject</span></a> errors.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-object-get-connection"></a><h3>nm_object_get_connection ()</h3>
 <pre class="programlisting"><a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGConnection.html#DBusGConnection"><span class="returnvalue">DBusGConnection</span></a> *   nm_object_get_connection            (<em class="parameter"><code><a class="link" href="NMObject.html" title="NMObject"><span class="type">NMObject</span></a> *object</code></em>);</pre>
 <p>
@@ -189,6 +259,45 @@ device, and must not be modified.</td>
 <p>Default value: NULL</p>
 </div>
 </div>
+<div class="refsect1">
+<a name="NMObject.signal-details"></a><h2>Signal Details</h2>
+<div class="refsect2">
+<a name="NMObject-object-creation-failed"></a><h3>The <code class="literal">"object-creation-failed"</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>                user_function                      (<a class="link" href="NMObject.html" title="NMObject"><span class="type">NMObject</span></a> *master_object,
+                                                        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>  error,
+                                                        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>  failed_path,
+                                                        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>  user_data)          : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS"><code class="literal">Run First</code></a></pre>
+<p>
+Indicates that an error occured while creating an <a class="link" href="NMObject.html" title="NMObject"><span class="type">NMObject</span></a> object
+during property handling of <em class="parameter"><code>master_object</code></em>.
+</p>
+<p>
+Note: Be aware that the signal is private for libnm-glib's internal
+      use.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>master_object</code></em> :</span></p></td>
+<td>the object that received the signal</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
+<td>the error that occured while creating object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>failed_path</code></em> :</span></p></td>
+<td>object path of the failed object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data set when the signal handler was connected.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
 </div>
 <div class="footer">
 <hr>
diff --git a/docs/libnm-glib/html/NMRemoteConnection.html b/docs/libnm-glib/html/NMRemoteConnection.html
index 531ab09d..eefc87b4 100644
--- a/docs/libnm-glib/html/NMRemoteConnection.html
+++ b/docs/libnm-glib/html/NMRemoteConnection.html
@@ -145,7 +145,27 @@ NMRemoteConnection implements
                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error</code></em>,
                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
 <p>
+Called when NetworkManager has committed outstanding changes to a connection
+to backing storage as a result of <a class="link" href="NMRemoteConnection.html#nm-remote-connection-commit-changes" title="nm_remote_connection_commit_changes ()"><code class="function">nm_remote_connection_commit_changes()</code></a>.
 </p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
+<td>the connection for which updates are to be committed</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
+<td>on failure, a descriptive error</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data passed to <a class="link" href="NMRemoteConnection.html#nm-remote-connection-commit-changes" title="nm_remote_connection_commit_changes ()"><code class="function">nm_remote_connection_commit_changes()</code></a>
+</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
@@ -154,7 +174,27 @@ NMRemoteConnection implements
                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error</code></em>,
                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
 <p>
+Called when NetworkManager has deleted a connection as a result of
+<a class="link" href="NMRemoteConnection.html#nm-remote-connection-delete" title="nm_remote_connection_delete ()"><code class="function">nm_remote_connection_delete()</code></a>.
 </p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
+<td>the connection to be deleted</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
+<td>on failure, a descriptive error</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data passed to <a class="link" href="NMRemoteConnection.html#nm-remote-connection-delete" title="nm_remote_connection_delete ()"><code class="function">nm_remote_connection_delete()</code></a>
+</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
@@ -164,7 +204,34 @@ NMRemoteConnection implements
                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error</code></em>,
                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
 <p>
+Called when NetworkManager returns secrets in response to a request for
+secrets via <a class="link" href="NMRemoteConnection.html#nm-remote-connection-get-secrets" title="nm_remote_connection_get_secrets ()"><code class="function">nm_remote_connection_get_secrets()</code></a>.
 </p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
+<td>the connection for which secrets were requested</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>secrets</code></em> :</span></p></td>
+<td>on success, a hash table of
+hash tables, with each inner hash mapping a setting property to a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a>
+containing that property's value. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8 GLib.HashTable]</span>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
+<td>on failure, a descriptive error</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data passed to <a class="link" href="NMRemoteConnection.html#nm-remote-connection-get-secrets" title="nm_remote_connection_get_secrets ()"><code class="function">nm_remote_connection_get_secrets()</code></a>
+</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
diff --git a/docs/libnm-glib/html/NMSecretAgent.html b/docs/libnm-glib/html/NMSecretAgent.html
index f7254c2a..1ad2b84b 100644
--- a/docs/libnm-glib/html/NMSecretAgent.html
+++ b/docs/libnm-glib/html/NMSecretAgent.html
@@ -63,12 +63,14 @@ enum                <a class="link" href="NMSecretAgent.html#NMSecretAgentGetSec
 #define             <a class="link" href="NMSecretAgent.html#NM-SECRET-AGENT-AUTO-REGISTER:CAPS" title="NM_SECRET_AGENT_AUTO_REGISTER">NM_SECRET_AGENT_AUTO_REGISTER</a>
 #define             <a class="link" href="NMSecretAgent.html#NM-SECRET-AGENT-ERROR:CAPS" title="NM_SECRET_AGENT_ERROR">NM_SECRET_AGENT_ERROR</a>
 #define             <a class="link" href="NMSecretAgent.html#NM-SECRET-AGENT-IDENTIFIER:CAPS" title="NM_SECRET_AGENT_IDENTIFIER">NM_SECRET_AGENT_IDENTIFIER</a>
+#define             <a class="link" href="NMSecretAgent.html#NM-SECRET-AGENT-REGISTERED:CAPS" title="NM_SECRET_AGENT_REGISTERED">NM_SECRET_AGENT_REGISTERED</a>
 #define             <a class="link" href="NMSecretAgent.html#NM-SECRET-AGENT-REGISTRATION-RESULT:CAPS" title="NM_SECRET_AGENT_REGISTRATION_RESULT">NM_SECRET_AGENT_REGISTRATION_RESULT</a>
 <span class="returnvalue">void</span>                <a class="link" href="NMSecretAgent.html#nm-secret-agent-delete-secrets" title="nm_secret_agent_delete_secrets ()">nm_secret_agent_delete_secrets</a>      (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *self</code></em>,
                                                          <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>,
                                                          <em class="parameter"><code><a class="link" href="NMSecretAgent.html#NMSecretAgentDeleteSecretsFunc" title="NMSecretAgentDeleteSecretsFunc ()"><span class="type">NMSecretAgentDeleteSecretsFunc</span></a> callback</code></em>,
                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              <a class="link" href="NMSecretAgent.html#nm-secret-agent-error-quark" title="nm_secret_agent_error_quark ()">nm_secret_agent_error_quark</a>         (<em class="parameter"><code><span class="type">void</span></code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="NMSecretAgent.html#nm-secret-agent-get-registered" title="nm_secret_agent_get_registered ()">nm_secret_agent_get_registered</a>      (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *self</code></em>);
 <span class="returnvalue">void</span>                <a class="link" href="NMSecretAgent.html#nm-secret-agent-get-secrets" title="nm_secret_agent_get_secrets ()">nm_secret_agent_get_secrets</a>         (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *self</code></em>,
                                                          <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>,
                                                          <em class="parameter"><code>const <span class="type">char</span> *setting_name</code></em>,
@@ -246,7 +248,8 @@ should be called.
 <pre class="programlisting">typedef enum {
 	NM_SECRET_AGENT_GET_SECRETS_FLAG_NONE = 0x0,
 	NM_SECRET_AGENT_GET_SECRETS_FLAG_ALLOW_INTERACTION = 0x1,
-	NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW = 0x2
+	NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW = 0x2,
+	NM_SECRET_AGENT_GET_SECRETS_FLAG_USER_REQUESTED = 0x4
 } NMSecretAgentGetSecretsFlags;
 </pre>
 <p>
@@ -277,6 +280,14 @@ existing secrets are invalid or wrong.  This flag implies that interaction
 is allowed.
 </td>
 </tr>
+<tr>
+<td><p><a name="NM-SECRET-AGENT-GET-SECRETS-FLAG-USER-REQUESTED:CAPS"></a><span class="term"><code class="literal">NM_SECRET_AGENT_GET_SECRETS_FLAG_USER_REQUESTED</code></span></p></td>
+<td>set if the request was
+initiated by user-requested action via the D-Bus interface, as opposed to
+automatically initiated by NetworkManager in response to (for example) scan
+results or carrier changes.
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -299,7 +310,7 @@ To easily create the hash table to return the WiFi PSK, you could do
 something like this:
 </p>
 <div class="example">
-<a name="id667964"></a><p class="title"><b>Example 1. Creating a secrets hash</b></p>
+<a name="id525573"></a><p class="title"><b>Example 1. Creating a secrets hash</b></p>
 <div class="example-contents">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -437,6 +448,14 @@ should be called.
 </div>
 <hr>
 <div class="refsect2">
+<a name="NM-SECRET-AGENT-REGISTERED:CAPS"></a><h3>NM_SECRET_AGENT_REGISTERED</h3>
+<pre class="programlisting">#define NM_SECRET_AGENT_REGISTERED          "registered"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-SECRET-AGENT-REGISTRATION-RESULT:CAPS"></a><h3>NM_SECRET_AGENT_REGISTRATION_RESULT</h3>
 <pre class="programlisting">#define NM_SECRET_AGENT_REGISTRATION_RESULT "registration-result"
 </pre>
@@ -492,6 +511,25 @@ VFunc: delete_secrets
 </div>
 <hr>
 <div class="refsect2">
+<a name="nm-secret-agent-get-registered"></a><h3>nm_secret_agent_get_registered ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_secret_agent_get_registered      (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *self</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
+<td>a <a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the agent is registered, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if it is not.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-secret-agent-get-secrets"></a><h3>nm_secret_agent_get_secrets ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>                nm_secret_agent_get_secrets         (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *self</code></em>,
                                                          <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>,
diff --git a/docs/libnm-glib/html/NMWimaxNsp.html b/docs/libnm-glib/html/NMWimaxNsp.html
index 68a80693..d6782d7f 100644
--- a/docs/libnm-glib/html/NMWimaxNsp.html
+++ b/docs/libnm-glib/html/NMWimaxNsp.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
 <link rel="home" href="index.html" title="libnm-glib Reference Manual">
 <link rel="up" href="ch02.html" title="libnm-glib API Reference">
-<link rel="prev" href="NMDeviceWimax.html" title="NMDeviceWimax">
+<link rel="prev" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">
 <link rel="next" href="NMAccessPoint.html" title="NMAccessPoint">
 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -14,7 +14,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
 <tr valign="middle">
-<td><a accesskey="p" href="NMDeviceWimax.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="NMDeviceOlpcMesh.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
 <th width="100%" align="center">libnm-glib Reference Manual</th>
diff --git a/docs/libnm-glib/html/api-index-full.html b/docs/libnm-glib/html/api-index-full.html
index e07f804b..13330c48 100644
--- a/docs/libnm-glib/html/api-index-full.html
+++ b/docs/libnm-glib/html/api-index-full.html
@@ -27,8 +27,6 @@
                       | 
                    <a class="shortcut" href="#idxD">D</a>
                       | 
-                   <a class="shortcut" href="#idxG">G</a>
-                      | 
                    <a class="shortcut" href="#idxI">I</a>
                       | 
                    <a class="shortcut" href="#idxO">O</a>
@@ -525,299 +523,271 @@
 <dd></dd>
 <a name="idxD"></a><h3 class="title">D</h3>
 <dt>
-DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManagerSettings_Connection, macro in nm-exported-connection-bindings
-</dt>
-<dd></dd>
-<dt>
-DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManagerSettings_Connection_Secrets, macro in nm-exported-connection-bindings
-</dt>
-<dd></dd>
-<dt>
-DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManagerSettings_System, macro in nm-settings-system-bindings
-</dt>
-<dd></dd>
-<dt>
-DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManager_Device_Infiniband, macro in nm-device-infiniband-bindings
-</dt>
-<dd></dd>
-<dt>
-dbus_glib_marshal_nm_exported_connection_BOOLEAN__POINTER_POINTER, function in nm-exported-connection-glue
-</dt>
-<dd></dd>
-<dt>
-dbus_glib_marshal_nm_exported_connection_NONE__BOXED_POINTER, macro in nm-exported-connection-glue
-</dt>
-<dd></dd>
-<dt>
-dbus_glib_marshal_nm_exported_connection_NONE__POINTER, macro in nm-exported-connection-glue
-</dt>
-<dd></dd>
-<dt>
-dbus_glib_marshal_nm_exported_connection_NONE__STRING_BOXED_BOOLEAN_POINTER, macro in nm-exported-connection-glue
+<a class="link" href="NMDevice.html#NMDevice-struct" title="NMDevice">NMDevice</a>, struct in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-dbus_glib_marshal_nm_exported_connection_VOID__BOXED_POINTER, function in nm-exported-connection-glue
+<a class="link" href="NMDevice.html#NMDevice-state-changed" title='The "state-changed" signal'>NMDevice::state-changed</a>, object signal in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-dbus_glib_marshal_nm_exported_connection_VOID__POINTER, macro in nm-exported-connection-glue
+<a class="link" href="NMDevice.html#NMDevice--active-connection" title='The "active-connection" property'>NMDevice:active-connection</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-dbus_glib_marshal_nm_exported_connection_VOID__STRING_BOXED_BOOLEAN_POINTER, function in nm-exported-connection-glue
+<a class="link" href="NMDevice.html#NMDevice--autoconnect" title='The "autoconnect" property'>NMDevice:autoconnect</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-dbus_glib_marshal_nm_secret_agent_NONE__BOXED_BOXED_POINTER, macro in nm-secret-agent-glue
+<a class="link" href="NMDevice.html#NMDevice--capabilities" title='The "capabilities" property'>NMDevice:capabilities</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-dbus_glib_marshal_nm_secret_agent_NONE__BOXED_BOXED_STRING_BOXED_UINT_POINTER, macro in nm-secret-agent-glue
+<a class="link" href="NMDevice.html#NMDevice--device-type" title='The "device-type" property'>NMDevice:device-type</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-dbus_glib_marshal_nm_secret_agent_NONE__BOXED_STRING_POINTER, macro in nm-secret-agent-glue
+<a class="link" href="NMDevice.html#NMDevice--dhcp4-config" title='The "dhcp4-config" property'>NMDevice:dhcp4-config</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-dbus_glib_marshal_nm_secret_agent_VOID__BOXED_BOXED_POINTER, function in nm-secret-agent-glue
+<a class="link" href="NMDevice.html#NMDevice--dhcp6-config" title='The "dhcp6-config" property'>NMDevice:dhcp6-config</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-dbus_glib_marshal_nm_secret_agent_VOID__BOXED_BOXED_STRING_BOXED_UINT_POINTER, function in nm-secret-agent-glue
+<a class="link" href="NMDevice.html#NMDevice--driver" title='The "driver" property'>NMDevice:driver</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-dbus_glib_marshal_nm_secret_agent_VOID__BOXED_STRING_POINTER, function in nm-secret-agent-glue
+<a class="link" href="NMDevice.html#NMDevice--driver-version" title='The "driver-version" property'>NMDevice:driver-version</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-dbus_glib_nm_exported_connection_object_info, variable in nm-exported-connection-glue
+<a class="link" href="NMDevice.html#NMDevice--firmware-missing" title='The "firmware-missing" property'>NMDevice:firmware-missing</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-dbus_glib_nm_secret_agent_object_info, variable in nm-secret-agent-glue
+<a class="link" href="NMDevice.html#NMDevice--firmware-version" title='The "firmware-version" property'>NMDevice:firmware-version</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGProxy.html#dbus-g-proxy-begin-call">dbus_g_proxy_begin_call</a>, function in nm-settings-system-bindings
+<a class="link" href="NMDevice.html#NMDevice--interface" title='The "interface" property'>NMDevice:interface</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice-struct" title="NMDevice">NMDevice</a>, struct in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDevice.html#NMDevice--ip-interface" title='The "ip-interface" property'>NMDevice:ip-interface</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice-state-changed" title='The "state-changed" signal'>NMDevice::state-changed</a>, object signal in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDevice.html#NMDevice--ip4-config" title='The "ip4-config" property'>NMDevice:ip4-config</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--active-connection" title='The "active-connection" property'>NMDevice:active-connection</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDevice.html#NMDevice--ip6-config" title='The "ip6-config" property'>NMDevice:ip6-config</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--capabilities" title='The "capabilities" property'>NMDevice:capabilities</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDevice.html#NMDevice--managed" title='The "managed" property'>NMDevice:managed</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--device-type" title='The "device-type" property'>NMDevice:device-type</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDevice.html#NMDevice--product" title='The "product" property'>NMDevice:product</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--dhcp4-config" title='The "dhcp4-config" property'>NMDevice:dhcp4-config</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDevice.html#NMDevice--state" title='The "state" property'>NMDevice:state</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--dhcp6-config" title='The "dhcp6-config" property'>NMDevice:dhcp6-config</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDevice.html#NMDevice--state-reason" title='The "state-reason" property'>NMDevice:state-reason</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--driver" title='The "driver" property'>NMDevice:driver</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDevice.html#NMDevice--udi" title='The "udi" property'>NMDevice:udi</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--firmware-missing" title='The "firmware-missing" property'>NMDevice:firmware-missing</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDevice.html#NMDevice--vendor" title='The "vendor" property'>NMDevice:vendor</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--interface" title='The "interface" property'>NMDevice:interface</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+NMDeviceAdsl, struct in NMDeviceAdsl
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--ip-interface" title='The "ip-interface" property'>NMDevice:ip-interface</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+NMDeviceAdslClass, struct in NMDeviceAdsl
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--ip4-config" title='The "ip4-config" property'>NMDevice:ip4-config</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+NMDeviceAdslError, enum in NMDeviceAdsl
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--ip6-config" title='The "ip6-config" property'>NMDevice:ip6-config</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDeviceBond.html#NMDeviceBond-struct" title="NMDeviceBond">NMDeviceBond</a>, struct in <a class="link" href="NMDeviceBond.html" title="NMDeviceBond">NMDeviceBond</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--managed" title='The "managed" property'>NMDevice:managed</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDeviceBond.html#NMDeviceBond--carrier" title='The "carrier" property'>NMDeviceBond:carrier</a>, object property in <a class="link" href="NMDeviceBond.html" title="NMDeviceBond">NMDeviceBond</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--product" title='The "product" property'>NMDevice:product</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDeviceBond.html#NMDeviceBond--hw-address" title='The "hw-address" property'>NMDeviceBond:hw-address</a>, object property in <a class="link" href="NMDeviceBond.html" title="NMDeviceBond">NMDeviceBond</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--state" title='The "state" property'>NMDevice:state</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDeviceBond.html#NMDeviceBondClass" title="NMDeviceBondClass">NMDeviceBondClass</a>, struct in <a class="link" href="NMDeviceBond.html" title="NMDeviceBond">NMDeviceBond</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--state-reason" title='The "state-reason" property'>NMDevice:state-reason</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDeviceBond.html#NMDeviceBondError" title="enum NMDeviceBondError">NMDeviceBondError</a>, enum in <a class="link" href="NMDeviceBond.html" title="NMDeviceBond">NMDeviceBond</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--udi" title='The "udi" property'>NMDevice:udi</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDeviceBt.html#NMDeviceBt-struct" title="NMDeviceBt">NMDeviceBt</a>, struct in <a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDevice--vendor" title='The "vendor" property'>NMDevice:vendor</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDeviceBt.html#NMDeviceBt--bt-capabilities" title='The "bt-capabilities" property'>NMDeviceBt:bt-capabilities</a>, object property in <a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceBond, struct in NMDeviceBond
+<a class="link" href="NMDeviceBt.html#NMDeviceBt--hw-address" title='The "hw-address" property'>NMDeviceBt:hw-address</a>, object property in <a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceBond:carrier, object property in NMDeviceBond
+<a class="link" href="NMDeviceBt.html#NMDeviceBt--name" title='The "name" property'>NMDeviceBt:name</a>, object property in <a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceBond:hw-address, object property in NMDeviceBond
+<a class="link" href="NMDeviceBt.html#NMDeviceBtClass" title="NMDeviceBtClass">NMDeviceBtClass</a>, struct in <a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceBondClass, struct in NMDeviceBond
+<a class="link" href="NMDeviceBt.html#NMDeviceBtError" title="enum NMDeviceBtError">NMDeviceBtError</a>, enum in <a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDeviceBt.html#NMDeviceBt-struct" title="NMDeviceBt">NMDeviceBt</a>, struct in <a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a>
+<a class="link" href="NMDevice.html#NMDeviceClass" title="NMDeviceClass">NMDeviceClass</a>, struct in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDeviceBt.html#NMDeviceBt--bt-capabilities" title='The "bt-capabilities" property'>NMDeviceBt:bt-capabilities</a>, object property in <a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a>
+<a class="link" href="NMDevice.html#NMDeviceDeactivateFn" title="NMDeviceDeactivateFn ()">NMDeviceDeactivateFn</a>, user_function in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDeviceBt.html#NMDeviceBt--hw-address" title='The "hw-address" property'>NMDeviceBt:hw-address</a>, object property in <a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a>
+<a class="link" href="NMDeviceEthernet.html#NMDeviceEthernet-struct" title="NMDeviceEthernet">NMDeviceEthernet</a>, struct in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDeviceBt.html#NMDeviceBt--name" title='The "name" property'>NMDeviceBt:name</a>, object property in <a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a>
+<a class="link" href="NMDeviceEthernet.html#NMDeviceEthernet--carrier" title='The "carrier" property'>NMDeviceEthernet:carrier</a>, object property in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDeviceBt.html#NMDeviceBtClass" title="NMDeviceBtClass">NMDeviceBtClass</a>, struct in <a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a>
+<a class="link" href="NMDeviceEthernet.html#NMDeviceEthernet--hw-address" title='The "hw-address" property'>NMDeviceEthernet:hw-address</a>, object property in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDeviceClass" title="NMDeviceClass">NMDeviceClass</a>, struct in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDeviceEthernet.html#NMDeviceEthernet--perm-hw-address" title='The "perm-hw-address" property'>NMDeviceEthernet:perm-hw-address</a>, object property in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDevice.html#NMDeviceDeactivateFn" title="NMDeviceDeactivateFn ()">NMDeviceDeactivateFn</a>, user_function in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+<a class="link" href="NMDeviceEthernet.html#NMDeviceEthernet--speed" title='The "speed" property'>NMDeviceEthernet:speed</a>, object property in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDeviceEthernet.html#NMDeviceEthernet-struct" title="NMDeviceEthernet">NMDeviceEthernet</a>, struct in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
+<a class="link" href="NMDeviceEthernet.html#NMDeviceEthernetClass" title="NMDeviceEthernetClass">NMDeviceEthernetClass</a>, struct in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDeviceEthernet.html#NMDeviceEthernet--carrier" title='The "carrier" property'>NMDeviceEthernet:carrier</a>, object property in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
+<a class="link" href="NMDeviceEthernet.html#NMDeviceEthernetError" title="enum NMDeviceEthernetError">NMDeviceEthernetError</a>, enum in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDeviceEthernet.html#NMDeviceEthernet--hw-address" title='The "hw-address" property'>NMDeviceEthernet:hw-address</a>, object property in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
+<a class="link" href="NMDeviceInfiniband.html#NMDeviceInfiniband-struct" title="NMDeviceInfiniband">NMDeviceInfiniband</a>, struct in <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband">NMDeviceInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDeviceEthernet.html#NMDeviceEthernet--perm-hw-address" title='The "perm-hw-address" property'>NMDeviceEthernet:perm-hw-address</a>, object property in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
+<a class="link" href="NMDeviceInfiniband.html#NMDeviceInfiniband--carrier" title='The "carrier" property'>NMDeviceInfiniband:carrier</a>, object property in <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband">NMDeviceInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDeviceEthernet.html#NMDeviceEthernet--speed" title='The "speed" property'>NMDeviceEthernet:speed</a>, object property in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
+<a class="link" href="NMDeviceInfiniband.html#NMDeviceInfiniband--hw-address" title='The "hw-address" property'>NMDeviceInfiniband:hw-address</a>, object property in <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband">NMDeviceInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDeviceEthernet.html#NMDeviceEthernetClass" title="NMDeviceEthernetClass">NMDeviceEthernetClass</a>, struct in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
+<a class="link" href="NMDeviceInfiniband.html#NMDeviceInfinibandClass" title="NMDeviceInfinibandClass">NMDeviceInfinibandClass</a>, struct in <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband">NMDeviceInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceInfiniband, struct in NMDeviceInfiniband
+<a class="link" href="NMDeviceInfiniband.html#NMDeviceInfinibandError" title="enum NMDeviceInfinibandError">NMDeviceInfinibandError</a>, enum in <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband">NMDeviceInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceInfiniband:carrier, object property in NMDeviceInfiniband
+<a class="link" href="NMDeviceModem.html#NMDeviceModem-struct" title="NMDeviceModem">NMDeviceModem</a>, struct in <a class="link" href="NMDeviceModem.html" title="NMDeviceModem">NMDeviceModem</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceInfiniband:hw-address, object property in NMDeviceInfiniband
+<a class="link" href="NMDeviceModem.html#NMDeviceModem--current-capabilities" title='The "current-capabilities" property'>NMDeviceModem:current-capabilities</a>, object property in <a class="link" href="NMDeviceModem.html" title="NMDeviceModem">NMDeviceModem</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceInfinibandClass, struct in NMDeviceInfiniband
+<a class="link" href="NMDeviceModem.html#NMDeviceModem--modem-capabilities" title='The "modem-capabilities" property'>NMDeviceModem:modem-capabilities</a>, object property in <a class="link" href="NMDeviceModem.html" title="NMDeviceModem">NMDeviceModem</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDeviceModem.html#NMDeviceModem-struct" title="NMDeviceModem">NMDeviceModem</a>, struct in <a class="link" href="NMDeviceModem.html" title="NMDeviceModem">NMDeviceModem</a>
+<a class="link" href="NMDeviceModem.html#NMDeviceModemClass" title="NMDeviceModemClass">NMDeviceModemClass</a>, struct in <a class="link" href="NMDeviceModem.html" title="NMDeviceModem">NMDeviceModem</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDeviceModem.html#NMDeviceModem--current-capabilities" title='The "current-capabilities" property'>NMDeviceModem:current-capabilities</a>, object property in <a class="link" href="NMDeviceModem.html" title="NMDeviceModem">NMDeviceModem</a>
+<a class="link" href="NMDeviceModem.html#NMDeviceModemError" title="enum NMDeviceModemError">NMDeviceModemError</a>, enum in <a class="link" href="NMDeviceModem.html" title="NMDeviceModem">NMDeviceModem</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDeviceModem.html#NMDeviceModem--modem-capabilities" title='The "modem-capabilities" property'>NMDeviceModem:modem-capabilities</a>, object property in <a class="link" href="NMDeviceModem.html" title="NMDeviceModem">NMDeviceModem</a>
+<a class="link" href="NMDeviceOlpcMesh.html#NMDeviceOlpcMesh-struct" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>, struct in <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMDeviceModem.html#NMDeviceModemClass" title="NMDeviceModemClass">NMDeviceModemClass</a>, struct in <a class="link" href="NMDeviceModem.html" title="NMDeviceModem">NMDeviceModem</a>
+<a class="link" href="NMDeviceOlpcMesh.html#NMDeviceOlpcMesh--active-channel" title='The "active-channel" property'>NMDeviceOlpcMesh:active-channel</a>, object property in <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceOlpcMesh, struct in NMDeviceOlpcMesh
+<a class="link" href="NMDeviceOlpcMesh.html#NMDeviceOlpcMesh--companion" title='The "companion" property'>NMDeviceOlpcMesh:companion</a>, object property in <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceOlpcMesh:active-channel, object property in NMDeviceOlpcMesh
+<a class="link" href="NMDeviceOlpcMesh.html#NMDeviceOlpcMesh--hw-address" title='The "hw-address" property'>NMDeviceOlpcMesh:hw-address</a>, object property in <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceOlpcMesh:companion, object property in NMDeviceOlpcMesh
+<a class="link" href="NMDeviceOlpcMesh.html#NMDeviceOlpcMeshClass" title="NMDeviceOlpcMeshClass">NMDeviceOlpcMeshClass</a>, struct in <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceOlpcMesh:hw-address, object property in NMDeviceOlpcMesh
+<a class="link" href="NMDeviceOlpcMesh.html#NMDeviceOlpcMeshError" title="enum NMDeviceOlpcMeshError">NMDeviceOlpcMeshError</a>, enum in <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceOlpcMeshClass, struct in NMDeviceOlpcMesh
+<a class="link" href="NMDeviceVlan.html#NMDeviceVlan-struct" title="NMDeviceVlan">NMDeviceVlan</a>, struct in <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceVlan, struct in NMDeviceVlan
+<a class="link" href="NMDeviceVlan.html#NMDeviceVlan--carrier" title='The "carrier" property'>NMDeviceVlan:carrier</a>, object property in <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceVlan:carrier, object property in NMDeviceVlan
+<a class="link" href="NMDeviceVlan.html#NMDeviceVlan--hw-address" title='The "hw-address" property'>NMDeviceVlan:hw-address</a>, object property in <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceVlan:hw-address, object property in NMDeviceVlan
+<a class="link" href="NMDeviceVlan.html#NMDeviceVlan--vlan-id" title='The "vlan-id" property'>NMDeviceVlan:vlan-id</a>, object property in <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceVlan:vlan-id, object property in NMDeviceVlan
+<a class="link" href="NMDeviceVlan.html#NMDeviceVlanClass" title="NMDeviceVlanClass">NMDeviceVlanClass</a>, struct in <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NMDeviceVlanClass, struct in NMDeviceVlan
+<a class="link" href="NMDeviceVlan.html#NMDeviceVlanError" title="enum NMDeviceVlanError">NMDeviceVlanError</a>, enum in <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
 </dt>
 <dd></dd>
 <dt>
@@ -861,6 +831,10 @@ NMDeviceVlanClass, struct in NMDeviceVlan
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDeviceWifi.html#NMDeviceWifiError" title="enum NMDeviceWifiError">NMDeviceWifiError</a>, enum in <a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi">NMDeviceWifi</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMDeviceWimax.html#NMDeviceWimax-struct" title="NMDeviceWimax">NMDeviceWimax</a>, struct in <a class="link" href="NMDeviceWimax.html" title="NMDeviceWimax">NMDeviceWimax</a>
 </dt>
 <dd></dd>
@@ -905,27 +879,63 @@ NMDeviceVlanClass, struct in NMDeviceVlan
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDeviceWimax.html#NMDeviceWimaxError" title="enum NMDeviceWimaxError">NMDeviceWimaxError</a>, enum in <a class="link" href="NMDeviceWimax.html" title="NMDeviceWimax">NMDeviceWimax</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMDevice.html#NM-DEVICE-ACTIVE-CONNECTION:CAPS" title="NM_DEVICE_ACTIVE_CONNECTION">NM_DEVICE_ACTIVE_CONNECTION</a>, macro in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-NM_DEVICE_BOND_CARRIER, macro in NMDeviceBond
+NM_DEVICE_ADSL_CARRIER, macro in NMDeviceAdsl
+</dt>
+<dd></dd>
+<dt>
+NM_DEVICE_ADSL_ERROR, macro in NMDeviceAdsl
+</dt>
+<dd></dd>
+<dt>
+nm_device_adsl_error_quark, function in NMDeviceAdsl
+</dt>
+<dd></dd>
+<dt>
+nm_device_adsl_get_carrier, function in NMDeviceAdsl
 </dt>
 <dd></dd>
 <dt>
-nm_device_bond_get_carrier, function in NMDeviceBond
+nm_device_adsl_new, function in NMDeviceAdsl
 </dt>
 <dd></dd>
 <dt>
-nm_device_bond_get_hw_address, function in NMDeviceBond
+<a class="link" href="NMDevice.html#NM-DEVICE-AUTOCONNECT:CAPS" title="NM_DEVICE_AUTOCONNECT">NM_DEVICE_AUTOCONNECT</a>, macro in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
-NM_DEVICE_BOND_HW_ADDRESS, macro in NMDeviceBond
+<a class="link" href="NMDeviceBond.html#NM-DEVICE-BOND-CARRIER:CAPS" title="NM_DEVICE_BOND_CARRIER">NM_DEVICE_BOND_CARRIER</a>, macro in <a class="link" href="NMDeviceBond.html" title="NMDeviceBond">NMDeviceBond</a>
 </dt>
 <dd></dd>
 <dt>
-nm_device_bond_new, function in NMDeviceBond
+<a class="link" href="NMDeviceBond.html#NM-DEVICE-BOND-ERROR:CAPS" title="NM_DEVICE_BOND_ERROR">NM_DEVICE_BOND_ERROR</a>, macro in <a class="link" href="NMDeviceBond.html" title="NMDeviceBond">NMDeviceBond</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="NMDeviceBond.html#nm-device-bond-error-quark" title="nm_device_bond_error_quark ()">nm_device_bond_error_quark</a>, function in <a class="link" href="NMDeviceBond.html" title="NMDeviceBond">NMDeviceBond</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="NMDeviceBond.html#nm-device-bond-get-carrier" title="nm_device_bond_get_carrier ()">nm_device_bond_get_carrier</a>, function in <a class="link" href="NMDeviceBond.html" title="NMDeviceBond">NMDeviceBond</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="NMDeviceBond.html#nm-device-bond-get-hw-address" title="nm_device_bond_get_hw_address ()">nm_device_bond_get_hw_address</a>, function in <a class="link" href="NMDeviceBond.html" title="NMDeviceBond">NMDeviceBond</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="NMDeviceBond.html#NM-DEVICE-BOND-HW-ADDRESS:CAPS" title="NM_DEVICE_BOND_HW_ADDRESS">NM_DEVICE_BOND_HW_ADDRESS</a>, macro in <a class="link" href="NMDeviceBond.html" title="NMDeviceBond">NMDeviceBond</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="NMDeviceBond.html#nm-device-bond-new" title="nm_device_bond_new ()">nm_device_bond_new</a>, function in <a class="link" href="NMDeviceBond.html" title="NMDeviceBond">NMDeviceBond</a>
 </dt>
 <dd></dd>
 <dt>
@@ -933,6 +943,14 @@ nm_device_bond_new, function in NMDeviceBond
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDeviceBt.html#NM-DEVICE-BT-ERROR:CAPS" title="NM_DEVICE_BT_ERROR">NM_DEVICE_BT_ERROR</a>, macro in <a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="NMDeviceBt.html#nm-device-bt-error-quark" title="nm_device_bt_error_quark ()">nm_device_bt_error_quark</a>, function in <a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMDeviceBt.html#nm-device-bt-get-capabilities" title="nm_device_bt_get_capabilities ()">nm_device_bt_get_capabilities</a>, function in <a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a>
 </dt>
 <dd></dd>
@@ -961,6 +979,10 @@ nm_device_bond_new, function in NMDeviceBond
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDevice.html#nm-device-connection-compatible" title="nm_device_connection_compatible ()">nm_device_connection_compatible</a>, function in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMDevice.html#nm-device-connection-valid" title="nm_device_connection_valid ()">nm_device_connection_valid</a>, function in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
@@ -985,10 +1007,22 @@ nm_device_bond_new, function in NMDeviceBond
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDevice.html#NM-DEVICE-DRIVER-VERSION:CAPS" title="NM_DEVICE_DRIVER_VERSION">NM_DEVICE_DRIVER_VERSION</a>, macro in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-CARRIER:CAPS" title="NM_DEVICE_ETHERNET_CARRIER">NM_DEVICE_ETHERNET_CARRIER</a>, macro in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-ERROR:CAPS" title="NM_DEVICE_ETHERNET_ERROR">NM_DEVICE_ETHERNET_ERROR</a>, macro in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="NMDeviceEthernet.html#nm-device-ethernet-error-quark" title="nm_device_ethernet_error_quark ()">nm_device_ethernet_error_quark</a>, function in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMDeviceEthernet.html#nm-device-ethernet-get-carrier" title="nm_device_ethernet_get_carrier ()">nm_device_ethernet_get_carrier</a>, function in <a class="link" href="NMDeviceEthernet.html" title="NMDeviceEthernet">NMDeviceEthernet</a>
 </dt>
 <dd></dd>
@@ -1029,10 +1063,18 @@ nm_device_bond_new, function in NMDeviceBond
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDevice.html#NM-DEVICE-FIRMWARE-VERSION:CAPS" title="NM_DEVICE_FIRMWARE_VERSION">NM_DEVICE_FIRMWARE_VERSION</a>, macro in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMDevice.html#nm-device-get-active-connection" title="nm_device_get_active_connection ()">nm_device_get_active_connection</a>, function in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDevice.html#nm-device-get-autoconnect" title="nm_device_get_autoconnect ()">nm_device_get_autoconnect</a>, function in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMDevice.html#nm-device-get-capabilities" title="nm_device_get_capabilities ()">nm_device_get_capabilities</a>, function in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
@@ -1053,10 +1095,18 @@ nm_device_bond_new, function in NMDeviceBond
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDevice.html#nm-device-get-driver-version" title="nm_device_get_driver_version ()">nm_device_get_driver_version</a>, function in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMDevice.html#nm-device-get-firmware-missing" title="nm_device_get_firmware_missing ()">nm_device_get_firmware_missing</a>, function in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDevice.html#nm-device-get-firmware-version" title="nm_device_get_firmware_version ()">nm_device_get_firmware_version</a>, function in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMDevice.html#nm-device-get-iface" title="nm_device_get_iface ()">nm_device_get_iface</a>, function in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
@@ -1097,23 +1147,31 @@ nm_device_bond_new, function in NMDeviceBond
 </dt>
 <dd></dd>
 <dt>
-NM_DEVICE_INFINIBAND_CARRIER, macro in NMDeviceInfiniband
+<a class="link" href="NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-CARRIER:CAPS" title="NM_DEVICE_INFINIBAND_CARRIER">NM_DEVICE_INFINIBAND_CARRIER</a>, macro in <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband">NMDeviceInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-nm_device_infiniband_get_carrier, function in NMDeviceInfiniband
+<a class="link" href="NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-ERROR:CAPS" title="NM_DEVICE_INFINIBAND_ERROR">NM_DEVICE_INFINIBAND_ERROR</a>, macro in <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband">NMDeviceInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-nm_device_infiniband_get_hw_address, function in NMDeviceInfiniband
+<a class="link" href="NMDeviceInfiniband.html#nm-device-infiniband-error-quark" title="nm_device_infiniband_error_quark ()">nm_device_infiniband_error_quark</a>, function in <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband">NMDeviceInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-NM_DEVICE_INFINIBAND_HW_ADDRESS, macro in NMDeviceInfiniband
+<a class="link" href="NMDeviceInfiniband.html#nm-device-infiniband-get-carrier" title="nm_device_infiniband_get_carrier ()">nm_device_infiniband_get_carrier</a>, function in <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband">NMDeviceInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-nm_device_infiniband_new, function in NMDeviceInfiniband
+<a class="link" href="NMDeviceInfiniband.html#nm-device-infiniband-get-hw-address" title="nm_device_infiniband_get_hw_address ()">nm_device_infiniband_get_hw_address</a>, function in <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband">NMDeviceInfiniband</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-HW-ADDRESS:CAPS" title="NM_DEVICE_INFINIBAND_HW_ADDRESS">NM_DEVICE_INFINIBAND_HW_ADDRESS</a>, macro in <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband">NMDeviceInfiniband</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="NMDeviceInfiniband.html#nm-device-infiniband-new" title="nm_device_infiniband_new ()">nm_device_infiniband_new</a>, function in <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband">NMDeviceInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
@@ -1141,6 +1199,14 @@ nm_device_infiniband_new, function in NMDeviceInfiniband
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDeviceModem.html#NM-DEVICE-MODEM-ERROR:CAPS" title="NM_DEVICE_MODEM_ERROR">NM_DEVICE_MODEM_ERROR</a>, macro in <a class="link" href="NMDeviceModem.html" title="NMDeviceModem">NMDeviceModem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="NMDeviceModem.html#nm-device-modem-error-quark" title="nm_device_modem_error_quark ()">nm_device_modem_error_quark</a>, function in <a class="link" href="NMDeviceModem.html" title="NMDeviceModem">NMDeviceModem</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMDeviceModem.html#nm-device-modem-get-current-capabilities" title="nm_device_modem_get_current_capabilities ()">nm_device_modem_get_current_capabilities</a>, function in <a class="link" href="NMDeviceModem.html" title="NMDeviceModem">NMDeviceModem</a>
 </dt>
 <dd></dd>
@@ -1157,31 +1223,39 @@ nm_device_infiniband_new, function in NMDeviceInfiniband
 </dt>
 <dd></dd>
 <dt>
-NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL, macro in NMDeviceOlpcMesh
+<a class="link" href="NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-ACTIVE-CHANNEL:CAPS" title="NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL">NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL</a>, macro in <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-COMPANION:CAPS" title="NM_DEVICE_OLPC_MESH_COMPANION">NM_DEVICE_OLPC_MESH_COMPANION</a>, macro in <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-ERROR:CAPS" title="NM_DEVICE_OLPC_MESH_ERROR">NM_DEVICE_OLPC_MESH_ERROR</a>, macro in <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
 </dt>
 <dd></dd>
 <dt>
-NM_DEVICE_OLPC_MESH_COMPANION, macro in NMDeviceOlpcMesh
+<a class="link" href="NMDeviceOlpcMesh.html#nm-device-olpc-mesh-error-quark" title="nm_device_olpc_mesh_error_quark ()">nm_device_olpc_mesh_error_quark</a>, function in <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
 </dt>
 <dd></dd>
 <dt>
-nm_device_olpc_mesh_get_active_channel, function in NMDeviceOlpcMesh
+<a class="link" href="NMDeviceOlpcMesh.html#nm-device-olpc-mesh-get-active-channel" title="nm_device_olpc_mesh_get_active_channel ()">nm_device_olpc_mesh_get_active_channel</a>, function in <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
 </dt>
 <dd></dd>
 <dt>
-nm_device_olpc_mesh_get_companion, function in NMDeviceOlpcMesh
+<a class="link" href="NMDeviceOlpcMesh.html#nm-device-olpc-mesh-get-companion" title="nm_device_olpc_mesh_get_companion ()">nm_device_olpc_mesh_get_companion</a>, function in <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
 </dt>
 <dd></dd>
 <dt>
-nm_device_olpc_mesh_get_hw_address, function in NMDeviceOlpcMesh
+<a class="link" href="NMDeviceOlpcMesh.html#nm-device-olpc-mesh-get-hw-address" title="nm_device_olpc_mesh_get_hw_address ()">nm_device_olpc_mesh_get_hw_address</a>, function in <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
 </dt>
 <dd></dd>
 <dt>
-NM_DEVICE_OLPC_MESH_HW_ADDRESS, macro in NMDeviceOlpcMesh
+<a class="link" href="NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-HW-ADDRESS:CAPS" title="NM_DEVICE_OLPC_MESH_HW_ADDRESS">NM_DEVICE_OLPC_MESH_HW_ADDRESS</a>, macro in <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
 </dt>
 <dd></dd>
 <dt>
-nm_device_olpc_mesh_new, function in NMDeviceOlpcMesh
+<a class="link" href="NMDeviceOlpcMesh.html#nm-device-olpc-mesh-new" title="nm_device_olpc_mesh_new ()">nm_device_olpc_mesh_new</a>, function in <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
 </dt>
 <dd></dd>
 <dt>
@@ -1189,6 +1263,10 @@ nm_device_olpc_mesh_new, function in NMDeviceOlpcMesh
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDevice.html#nm-device-set-autoconnect" title="nm_device_set_autoconnect ()">nm_device_set_autoconnect</a>, function in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMDevice.html#NM-DEVICE-STATE:CAPS" title="NM_DEVICE_STATE">NM_DEVICE_STATE</a>, macro in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a>
 </dt>
 <dd></dd>
@@ -1205,31 +1283,39 @@ nm_device_olpc_mesh_new, function in NMDeviceOlpcMesh
 </dt>
 <dd></dd>
 <dt>
-NM_DEVICE_VLAN_CARRIER, macro in NMDeviceVlan
+<a class="link" href="NMDeviceVlan.html#NM-DEVICE-VLAN-CARRIER:CAPS" title="NM_DEVICE_VLAN_CARRIER">NM_DEVICE_VLAN_CARRIER</a>, macro in <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
 </dt>
 <dd></dd>
 <dt>
-nm_device_vlan_get_carrier, function in NMDeviceVlan
+<a class="link" href="NMDeviceVlan.html#NM-DEVICE-VLAN-ERROR:CAPS" title="NM_DEVICE_VLAN_ERROR">NM_DEVICE_VLAN_ERROR</a>, macro in <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
 </dt>
 <dd></dd>
 <dt>
-nm_device_vlan_get_hw_address, function in NMDeviceVlan
+<a class="link" href="NMDeviceVlan.html#nm-device-vlan-error-quark" title="nm_device_vlan_error_quark ()">nm_device_vlan_error_quark</a>, function in <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
 </dt>
 <dd></dd>
 <dt>
-nm_device_vlan_get_vlan_id, function in NMDeviceVlan
+<a class="link" href="NMDeviceVlan.html#nm-device-vlan-get-carrier" title="nm_device_vlan_get_carrier ()">nm_device_vlan_get_carrier</a>, function in <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NM_DEVICE_VLAN_HW_ADDRESS, macro in NMDeviceVlan
+<a class="link" href="NMDeviceVlan.html#nm-device-vlan-get-hw-address" title="nm_device_vlan_get_hw_address ()">nm_device_vlan_get_hw_address</a>, function in <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
 </dt>
 <dd></dd>
 <dt>
-nm_device_vlan_new, function in NMDeviceVlan
+<a class="link" href="NMDeviceVlan.html#nm-device-vlan-get-vlan-id" title="nm_device_vlan_get_vlan_id ()">nm_device_vlan_get_vlan_id</a>, function in <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NM_DEVICE_VLAN_VLAN_ID, macro in NMDeviceVlan
+<a class="link" href="NMDeviceVlan.html#NM-DEVICE-VLAN-HW-ADDRESS:CAPS" title="NM_DEVICE_VLAN_HW_ADDRESS">NM_DEVICE_VLAN_HW_ADDRESS</a>, macro in <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="NMDeviceVlan.html#nm-device-vlan-new" title="nm_device_vlan_new ()">nm_device_vlan_new</a>, function in <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="NMDeviceVlan.html#NM-DEVICE-VLAN-VLAN-ID:CAPS" title="NM_DEVICE_VLAN_VLAN_ID">NM_DEVICE_VLAN_VLAN_ID</a>, macro in <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
 </dt>
 <dd></dd>
 <dt>
@@ -1245,6 +1331,14 @@ NM_DEVICE_VLAN_VLAN_ID, macro in NMDeviceVlan
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR:CAPS" title="NM_DEVICE_WIFI_ERROR">NM_DEVICE_WIFI_ERROR</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-error-quark" title="nm_device_wifi_error_quark ()">nm_device_wifi_error_quark</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-access-points" title="nm_device_wifi_get_access_points ()">nm_device_wifi_get_access_points</a>, function in <a class="link" href="NMDeviceWifi.html" title="NMDeviceWifi">NMDeviceWifi</a>
 </dt>
 <dd></dd>
@@ -1309,6 +1403,14 @@ NM_DEVICE_VLAN_VLAN_ID, macro in NMDeviceVlan
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMDeviceWimax.html#NM-DEVICE-WIMAX-ERROR:CAPS" title="NM_DEVICE_WIMAX_ERROR">NM_DEVICE_WIMAX_ERROR</a>, macro in <a class="link" href="NMDeviceWimax.html" title="NMDeviceWimax">NMDeviceWimax</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="NMDeviceWimax.html#nm-device-wimax-error-quark" title="nm_device_wimax_error_quark ()">nm_device_wimax_error_quark</a>, function in <a class="link" href="NMDeviceWimax.html" title="NMDeviceWimax">NMDeviceWimax</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMDeviceWimax.html#nm-device-wimax-get-active-nsp" title="nm_device_wimax_get_active_nsp ()">nm_device_wimax_get_active_nsp</a>, function in <a class="link" href="NMDeviceWimax.html" title="NMDeviceWimax">NMDeviceWimax</a>
 </dt>
 <dd></dd>
@@ -1416,83 +1518,6 @@ NM_DEVICE_VLAN_VLAN_ID, macro in NMDeviceVlan
 <a class="link" href="NMDHCP6Config.html#NM-DHCP6-CONFIG-OPTIONS:CAPS" title="NM_DHCP6_CONFIG_OPTIONS">NM_DHCP6_CONFIG_OPTIONS</a>, macro in <a class="link" href="NMDHCP6Config.html" title="NMDHCP6Config">NMDHCP6Config</a>
 </dt>
 <dd></dd>
-<a name="idxG"></a><h3 class="title">G</h3>
-<dt>
-g_marshal_value_peek_boolean, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_boxed, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_char, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_double, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_enum, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_flags, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_float, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_int, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_int64, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_long, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_object, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_param, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_pointer, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_string, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_uchar, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_uint, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_uint64, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_ulong, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
-<dt>
-g_marshal_value_peek_variant, macro in nm-secret-agent-glue
-</dt>
-<dd></dd>
 <a name="idxI"></a><h3 class="title">I</h3>
 <dt>
 <a class="link" href="NMIP4Config.html#NMIP4Config-struct" title="NMIP4Config">NMIP4Config</a>, struct in <a class="link" href="NMIP4Config.html" title="NMIP4Config">NMIP4Config</a>
@@ -1632,127 +1657,47 @@ g_marshal_value_peek_variant, macro in nm-secret-agent-glue
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="NMObject.html#NMObject--dbus-connection" title='The "dbus-connection" property'>NMObject:dbus-connection</a>, object property in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="NMObject.html#NMObject--dbus-path" title='The "dbus-path" property'>NMObject:dbus-path</a>, object property in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="NMObject.html#NMObjectClass" title="NMObjectClass">NMObjectClass</a>, struct in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="NMObject.html#NM-OBJECT-DBUS-CONNECTION:CAPS" title="NM_OBJECT_DBUS_CONNECTION">NM_OBJECT_DBUS_CONNECTION</a>, macro in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="NMObject.html#NM-OBJECT-DBUS-PATH:CAPS" title="NM_OBJECT_DBUS_PATH">NM_OBJECT_DBUS_PATH</a>, macro in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="NMObject.html#nm-object-get-connection" title="nm_object_get_connection ()">nm_object_get_connection</a>, function in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="NMObject.html#nm-object-get-path" title="nm_object_get_path ()">nm_object_get_path</a>, function in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
-</dt>
-<dd></dd>
-<dt>
-org_freedesktop_NetworkManagerSettings_Connection_delete, function in nm-exported-connection-bindings
-</dt>
-<dd></dd>
-<dt>
-org_freedesktop_NetworkManagerSettings_Connection_delete_async, function in nm-exported-connection-bindings
-</dt>
-<dd></dd>
-<dt>
-org_freedesktop_NetworkManagerSettings_Connection_delete_async_callback, function in nm-exported-connection-bindings
-</dt>
-<dd></dd>
-<dt>
-org_freedesktop_NetworkManagerSettings_Connection_delete_reply, user_function in nm-exported-connection-bindings
-</dt>
-<dd></dd>
-<dt>
-org_freedesktop_NetworkManagerSettings_Connection_get_settings, function in nm-exported-connection-bindings
-</dt>
-<dd></dd>
-<dt>
-org_freedesktop_NetworkManagerSettings_Connection_get_settings_async, function in nm-exported-connection-bindings
-</dt>
-<dd></dd>
-<dt>
-org_freedesktop_NetworkManagerSettings_Connection_get_settings_async_callback, function in nm-exported-connection-bindings
-</dt>
-<dd></dd>
-<dt>
-org_freedesktop_NetworkManagerSettings_Connection_get_settings_reply, user_function in nm-exported-connection-bindings
-</dt>
-<dd></dd>
-<dt>
-org_freedesktop_NetworkManagerSettings_Connection_Secrets_get_secrets, function in nm-exported-connection-bindings
-</dt>
-<dd></dd>
-<dt>
-org_freedesktop_NetworkManagerSettings_Connection_Secrets_get_secrets_async, function in nm-exported-connection-bindings
-</dt>
-<dd></dd>
-<dt>
-org_freedesktop_NetworkManagerSettings_Connection_Secrets_get_secrets_async_callback, function in nm-exported-connection-bindings
-</dt>
-<dd></dd>
-<dt>
-org_freedesktop_NetworkManagerSettings_Connection_Secrets_get_secrets_reply, user_function in nm-exported-connection-bindings
-</dt>
-<dd></dd>
-<dt>
-org_freedesktop_NetworkManagerSettings_Connection_update, function in nm-exported-connection-bindings
-</dt>
-<dd></dd>
-<dt>
-org_freedesktop_NetworkManagerSettings_Connection_update_async, function in nm-exported-connection-bindings
+<a class="link" href="NMObject.html#NMObject-object-creation-failed" title='The "object-creation-failed" signal'>NMObject::object-creation-failed</a>, object signal in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
 </dt>
 <dd></dd>
 <dt>
-org_freedesktop_NetworkManagerSettings_Connection_update_async_callback, function in nm-exported-connection-bindings
+<a class="link" href="NMObject.html#NMObject--dbus-connection" title='The "dbus-connection" property'>NMObject:dbus-connection</a>, object property in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
 </dt>
 <dd></dd>
 <dt>
-org_freedesktop_NetworkManagerSettings_Connection_update_reply, user_function in nm-exported-connection-bindings
+<a class="link" href="NMObject.html#NMObject--dbus-path" title='The "dbus-path" property'>NMObject:dbus-path</a>, object property in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
 </dt>
 <dd></dd>
 <dt>
-org_freedesktop_NetworkManagerSettings_System_get_permissions, function in nm-settings-system-bindings
+<a class="link" href="NMObject.html#NMObjectClass" title="NMObjectClass">NMObjectClass</a>, struct in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
 </dt>
 <dd></dd>
 <dt>
-org_freedesktop_NetworkManagerSettings_System_get_permissions_async, function in nm-settings-system-bindings
+<a class="link" href="NMObject.html#NMObjectError" title="enum NMObjectError">NMObjectError</a>, enum in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
 </dt>
 <dd></dd>
 <dt>
-org_freedesktop_NetworkManagerSettings_System_get_permissions_async_callback, function in nm-settings-system-bindings
+<a class="link" href="NMObject.html#NM-OBJECT-DBUS-CONNECTION:CAPS" title="NM_OBJECT_DBUS_CONNECTION">NM_OBJECT_DBUS_CONNECTION</a>, macro in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
 </dt>
 <dd></dd>
 <dt>
-org_freedesktop_NetworkManagerSettings_System_get_permissions_reply, user_function in nm-settings-system-bindings
+<a class="link" href="NMObject.html#NM-OBJECT-DBUS-PATH:CAPS" title="NM_OBJECT_DBUS_PATH">NM_OBJECT_DBUS_PATH</a>, macro in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
 </dt>
 <dd></dd>
 <dt>
-org_freedesktop_NetworkManagerSettings_System_save_hostname, function in nm-settings-system-bindings
+<a class="link" href="NMObject.html#NM-OBJECT-ERROR:CAPS" title="NM_OBJECT_ERROR">NM_OBJECT_ERROR</a>, macro in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
 </dt>
 <dd></dd>
 <dt>
-org_freedesktop_NetworkManagerSettings_System_save_hostname_async, function in nm-settings-system-bindings
+<a class="link" href="NMObject.html#nm-object-error-quark" title="nm_object_error_quark ()">nm_object_error_quark</a>, function in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
 </dt>
 <dd></dd>
 <dt>
-org_freedesktop_NetworkManagerSettings_System_save_hostname_async_callback, function in nm-settings-system-bindings
+<a class="link" href="NMObject.html#nm-object-get-connection" title="nm_object_get_connection ()">nm_object_get_connection</a>, function in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
 </dt>
 <dd></dd>
 <dt>
-org_freedesktop_NetworkManagerSettings_System_save_hostname_reply, user_function in nm-settings-system-bindings
+<a class="link" href="NMObject.html#nm-object-get-path" title="nm_object_get_path ()">nm_object_get_path</a>, function in <a class="link" href="NMObject.html" title="NMObject">NMObject</a>
 </dt>
 <dd></dd>
 <a name="idxR"></a><h3 class="title">R</h3>
@@ -1986,6 +1931,10 @@ org_freedesktop_NetworkManagerSettings_System_save_hostname_reply, user_function
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMSecretAgent.html#nm-secret-agent-get-registered" title="nm_secret_agent_get_registered ()">nm_secret_agent_get_registered</a>, function in <a class="link" href="NMSecretAgent.html" title="NMSecretAgent">NMSecretAgent</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMSecretAgent.html#nm-secret-agent-get-secrets" title="nm_secret_agent_get_secrets ()">nm_secret_agent_get_secrets</a>, function in <a class="link" href="NMSecretAgent.html" title="NMSecretAgent">NMSecretAgent</a>
 </dt>
 <dd></dd>
@@ -1998,6 +1947,10 @@ org_freedesktop_NetworkManagerSettings_System_save_hostname_reply, user_function
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMSecretAgent.html#NM-SECRET-AGENT-REGISTERED:CAPS" title="NM_SECRET_AGENT_REGISTERED">NM_SECRET_AGENT_REGISTERED</a>, macro in <a class="link" href="NMSecretAgent.html" title="NMSecretAgent">NMSecretAgent</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMSecretAgent.html#NM-SECRET-AGENT-REGISTRATION-RESULT:CAPS" title="NM_SECRET_AGENT_REGISTRATION_RESULT">NM_SECRET_AGENT_REGISTRATION_RESULT</a>, macro in <a class="link" href="NMSecretAgent.html" title="NMSecretAgent">NMSecretAgent</a>
 </dt>
 <dd></dd>
@@ -2103,10 +2056,18 @@ org_freedesktop_NetworkManagerSettings_System_save_hostname_reply, user_function
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-config" title="nm_vpn_plugin_set_config ()">nm_vpn_plugin_set_config</a>, function in <a class="link" href="libnm-glib-NMVPNPlugin.html" title="NMVPNPlugin">NMVPNPlugin</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-ip4-config" title="nm_vpn_plugin_set_ip4_config ()">nm_vpn_plugin_set_ip4_config</a>, function in <a class="link" href="libnm-glib-NMVPNPlugin.html" title="NMVPNPlugin">NMVPNPlugin</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-ip6-config" title="nm_vpn_plugin_set_ip6_config ()">nm_vpn_plugin_set_ip6_config</a>, function in <a class="link" href="libnm-glib-NMVPNPlugin.html" title="NMVPNPlugin">NMVPNPlugin</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-login-banner" title="nm_vpn_plugin_set_login_banner ()">nm_vpn_plugin_set_login_banner</a>, function in <a class="link" href="libnm-glib-NMVPNPlugin.html" title="NMVPNPlugin">NMVPNPlugin</a>
 </dt>
 <dd></dd>
diff --git a/docs/libnm-glib/html/ch02.html b/docs/libnm-glib/html/ch02.html
index 72bb7148..4ae3cc09 100644
--- a/docs/libnm-glib/html/ch02.html
+++ b/docs/libnm-glib/html/ch02.html
@@ -21,7 +21,7 @@
 </tr></table>
 <div class="chapter">
 <div class="titlepage"><div><div><h2 class="title">
-<a name="id582896"></a>libnm-glib API Reference</h2></div></div></div>
+<a name="id431992"></a>libnm-glib API Reference</h2></div></div></div>
 <div class="toc"><dl>
 <dt>
 <span class="refentrytitle"><a href="NMClient.html">NMClient</a></span><span class="refpurpose"></span>
@@ -48,6 +48,18 @@
 <span class="refentrytitle"><a href="NMDeviceWimax.html">NMDeviceWimax</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="NMDeviceBond.html">NMDeviceBond</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="NMDeviceInfiniband.html">NMDeviceInfiniband</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="NMDeviceVlan.html">NMDeviceVlan</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="NMDeviceOlpcMesh.html">NMDeviceOlpcMesh</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="NMWimaxNsp.html">NMWimaxNsp</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
diff --git a/docs/libnm-glib/html/index.html b/docs/libnm-glib/html/index.html
index e81d55c8..86ef3641 100644
--- a/docs/libnm-glib/html/index.html
+++ b/docs/libnm-glib/html/index.html
@@ -29,7 +29,7 @@
     </p></div>
 <div><p class="copyright">Copyright © 2011 The NetworkManager Authors</p></div>
 <div><div class="legalnotice">
-<a name="id553298"></a><p>
+<a name="id402394"></a><p>
 	Permission is granted to copy, distribute and/or modify this
 	document under the terms of the <em class="citetitle">GNU Free
 	Documentation License</em>, Version 1.1 or any later
@@ -89,6 +89,18 @@
 <span class="refentrytitle"><a href="NMDeviceWimax.html">NMDeviceWimax</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="NMDeviceBond.html">NMDeviceBond</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="NMDeviceInfiniband.html">NMDeviceInfiniband</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="NMDeviceVlan.html">NMDeviceVlan</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="NMDeviceOlpcMesh.html">NMDeviceOlpcMesh</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="NMWimaxNsp.html">NMWimaxNsp</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
diff --git a/docs/libnm-glib/html/index.sgml b/docs/libnm-glib/html/index.sgml
index 5f5404f7..2251b67f 100644
--- a/docs/libnm-glib/html/index.sgml
+++ b/docs/libnm-glib/html/index.sgml
@@ -113,12 +113,15 @@
 <ANCHOR id="NMDeviceClass" href="libnm-glib/NMDevice.html#NMDeviceClass">
 <ANCHOR id="NMDeviceDeactivateFn" href="libnm-glib/NMDevice.html#NMDeviceDeactivateFn">
 <ANCHOR id="NM-DEVICE-ACTIVE-CONNECTION:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-ACTIVE-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-AUTOCONNECT:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-AUTOCONNECT:CAPS">
 <ANCHOR id="NM-DEVICE-CAPABILITIES:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-CAPABILITIES:CAPS">
 <ANCHOR id="NM-DEVICE-DEVICE-TYPE:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-DEVICE-TYPE:CAPS">
 <ANCHOR id="NM-DEVICE-DHCP4-CONFIG:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-DHCP4-CONFIG:CAPS">
 <ANCHOR id="NM-DEVICE-DHCP6-CONFIG:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-DHCP6-CONFIG:CAPS">
 <ANCHOR id="NM-DEVICE-DRIVER:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-DRIVER:CAPS">
+<ANCHOR id="NM-DEVICE-DRIVER-VERSION:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-DRIVER-VERSION:CAPS">
 <ANCHOR id="NM-DEVICE-FIRMWARE-MISSING:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-FIRMWARE-MISSING:CAPS">
+<ANCHOR id="NM-DEVICE-FIRMWARE-VERSION:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-FIRMWARE-VERSION:CAPS">
 <ANCHOR id="NM-DEVICE-INTERFACE:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-INTERFACE:CAPS">
 <ANCHOR id="NM-DEVICE-IP4-CONFIG:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-IP4-CONFIG:CAPS">
 <ANCHOR id="NM-DEVICE-IP6-CONFIG:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-IP6-CONFIG:CAPS">
@@ -129,16 +132,20 @@
 <ANCHOR id="NM-DEVICE-STATE-REASON:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-STATE-REASON:CAPS">
 <ANCHOR id="NM-DEVICE-UDI:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-UDI:CAPS">
 <ANCHOR id="NM-DEVICE-VENDOR:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-VENDOR:CAPS">
+<ANCHOR id="nm-device-connection-compatible" href="libnm-glib/NMDevice.html#nm-device-connection-compatible">
 <ANCHOR id="nm-device-connection-valid" href="libnm-glib/NMDevice.html#nm-device-connection-valid">
 <ANCHOR id="nm-device-disconnect" href="libnm-glib/NMDevice.html#nm-device-disconnect">
 <ANCHOR id="nm-device-filter-connections" href="libnm-glib/NMDevice.html#nm-device-filter-connections">
 <ANCHOR id="nm-device-get-active-connection" href="libnm-glib/NMDevice.html#nm-device-get-active-connection">
+<ANCHOR id="nm-device-get-autoconnect" href="libnm-glib/NMDevice.html#nm-device-get-autoconnect">
 <ANCHOR id="nm-device-get-capabilities" href="libnm-glib/NMDevice.html#nm-device-get-capabilities">
 <ANCHOR id="nm-device-get-device-type" href="libnm-glib/NMDevice.html#nm-device-get-device-type">
 <ANCHOR id="nm-device-get-dhcp4-config" href="libnm-glib/NMDevice.html#nm-device-get-dhcp4-config">
 <ANCHOR id="nm-device-get-dhcp6-config" href="libnm-glib/NMDevice.html#nm-device-get-dhcp6-config">
 <ANCHOR id="nm-device-get-driver" href="libnm-glib/NMDevice.html#nm-device-get-driver">
+<ANCHOR id="nm-device-get-driver-version" href="libnm-glib/NMDevice.html#nm-device-get-driver-version">
 <ANCHOR id="nm-device-get-firmware-missing" href="libnm-glib/NMDevice.html#nm-device-get-firmware-missing">
+<ANCHOR id="nm-device-get-firmware-version" href="libnm-glib/NMDevice.html#nm-device-get-firmware-version">
 <ANCHOR id="nm-device-get-iface" href="libnm-glib/NMDevice.html#nm-device-get-iface">
 <ANCHOR id="nm-device-get-ip4-config" href="libnm-glib/NMDevice.html#nm-device-get-ip4-config">
 <ANCHOR id="nm-device-get-ip6-config" href="libnm-glib/NMDevice.html#nm-device-get-ip6-config">
@@ -150,14 +157,18 @@
 <ANCHOR id="nm-device-get-udi" href="libnm-glib/NMDevice.html#nm-device-get-udi">
 <ANCHOR id="nm-device-get-vendor" href="libnm-glib/NMDevice.html#nm-device-get-vendor">
 <ANCHOR id="nm-device-new" href="libnm-glib/NMDevice.html#nm-device-new">
+<ANCHOR id="nm-device-set-autoconnect" href="libnm-glib/NMDevice.html#nm-device-set-autoconnect">
 <ANCHOR id="NMDevice.property-details" href="libnm-glib/NMDevice.html#NMDevice.property-details">
 <ANCHOR id="NMDevice--active-connection" href="libnm-glib/NMDevice.html#NMDevice--active-connection">
+<ANCHOR id="NMDevice--autoconnect" href="libnm-glib/NMDevice.html#NMDevice--autoconnect">
 <ANCHOR id="NMDevice--capabilities" href="libnm-glib/NMDevice.html#NMDevice--capabilities">
 <ANCHOR id="NMDevice--device-type" href="libnm-glib/NMDevice.html#NMDevice--device-type">
 <ANCHOR id="NMDevice--dhcp4-config" href="libnm-glib/NMDevice.html#NMDevice--dhcp4-config">
 <ANCHOR id="NMDevice--dhcp6-config" href="libnm-glib/NMDevice.html#NMDevice--dhcp6-config">
 <ANCHOR id="NMDevice--driver" href="libnm-glib/NMDevice.html#NMDevice--driver">
+<ANCHOR id="NMDevice--driver-version" href="libnm-glib/NMDevice.html#NMDevice--driver-version">
 <ANCHOR id="NMDevice--firmware-missing" href="libnm-glib/NMDevice.html#NMDevice--firmware-missing">
+<ANCHOR id="NMDevice--firmware-version" href="libnm-glib/NMDevice.html#NMDevice--firmware-version">
 <ANCHOR id="NMDevice--interface" href="libnm-glib/NMDevice.html#NMDevice--interface">
 <ANCHOR id="NMDevice--ip-interface" href="libnm-glib/NMDevice.html#NMDevice--ip-interface">
 <ANCHOR id="NMDevice--ip4-config" href="libnm-glib/NMDevice.html#NMDevice--ip4-config">
@@ -179,10 +190,18 @@
 <ANCHOR id="NMDeviceEthernet.details" href="libnm-glib/NMDeviceEthernet.html#NMDeviceEthernet.details">
 <ANCHOR id="NMDeviceEthernet-struct" href="libnm-glib/NMDeviceEthernet.html#NMDeviceEthernet-struct">
 <ANCHOR id="NMDeviceEthernetClass" href="libnm-glib/NMDeviceEthernet.html#NMDeviceEthernetClass">
+<ANCHOR id="NMDeviceEthernetError" href="libnm-glib/NMDeviceEthernet.html#NMDeviceEthernetError">
+<ANCHOR id="NM-DEVICE-ETHERNET-ERROR-UNKNOWN:CAPS" href="libnm-glib/NMDeviceEthernet.html#NM-DEVICE-ETHERNET-ERROR-UNKNOWN:CAPS">
+<ANCHOR id="NM-DEVICE-ETHERNET-ERROR-NOT-ETHERNET-CONNECTION:CAPS" href="libnm-glib/NMDeviceEthernet.html#NM-DEVICE-ETHERNET-ERROR-NOT-ETHERNET-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-ETHERNET-ERROR-INVALID-ETHERNET-CONNECTION:CAPS" href="libnm-glib/NMDeviceEthernet.html#NM-DEVICE-ETHERNET-ERROR-INVALID-ETHERNET-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-ETHERNET-ERROR-INVALID-DEVICE-MAC:CAPS" href="libnm-glib/NMDeviceEthernet.html#NM-DEVICE-ETHERNET-ERROR-INVALID-DEVICE-MAC:CAPS">
+<ANCHOR id="NM-DEVICE-ETHERNET-ERROR-MAC-MISMATCH:CAPS" href="libnm-glib/NMDeviceEthernet.html#NM-DEVICE-ETHERNET-ERROR-MAC-MISMATCH:CAPS">
 <ANCHOR id="NM-DEVICE-ETHERNET-CARRIER:CAPS" href="libnm-glib/NMDeviceEthernet.html#NM-DEVICE-ETHERNET-CARRIER:CAPS">
+<ANCHOR id="NM-DEVICE-ETHERNET-ERROR:CAPS" href="libnm-glib/NMDeviceEthernet.html#NM-DEVICE-ETHERNET-ERROR:CAPS">
 <ANCHOR id="NM-DEVICE-ETHERNET-HW-ADDRESS:CAPS" href="libnm-glib/NMDeviceEthernet.html#NM-DEVICE-ETHERNET-HW-ADDRESS:CAPS">
 <ANCHOR id="NM-DEVICE-ETHERNET-PERMANENT-HW-ADDRESS:CAPS" href="libnm-glib/NMDeviceEthernet.html#NM-DEVICE-ETHERNET-PERMANENT-HW-ADDRESS:CAPS">
 <ANCHOR id="NM-DEVICE-ETHERNET-SPEED:CAPS" href="libnm-glib/NMDeviceEthernet.html#NM-DEVICE-ETHERNET-SPEED:CAPS">
+<ANCHOR id="nm-device-ethernet-error-quark" href="libnm-glib/NMDeviceEthernet.html#nm-device-ethernet-error-quark">
 <ANCHOR id="nm-device-ethernet-get-carrier" href="libnm-glib/NMDeviceEthernet.html#nm-device-ethernet-get-carrier">
 <ANCHOR id="nm-device-ethernet-get-hw-address" href="libnm-glib/NMDeviceEthernet.html#nm-device-ethernet-get-hw-address">
 <ANCHOR id="nm-device-ethernet-get-permanent-hw-address" href="libnm-glib/NMDeviceEthernet.html#nm-device-ethernet-get-permanent-hw-address">
@@ -203,12 +222,22 @@
 <ANCHOR id="NMDeviceWifi.details" href="libnm-glib/NMDeviceWifi.html#NMDeviceWifi.details">
 <ANCHOR id="NMDeviceWifi-struct" href="libnm-glib/NMDeviceWifi.html#NMDeviceWifi-struct">
 <ANCHOR id="NMDeviceWifiClass" href="libnm-glib/NMDeviceWifi.html#NMDeviceWifiClass">
+<ANCHOR id="NMDeviceWifiError" href="libnm-glib/NMDeviceWifi.html#NMDeviceWifiError">
+<ANCHOR id="NM-DEVICE-WIFI-ERROR-UNKNOWN:CAPS" href="libnm-glib/NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR-UNKNOWN:CAPS">
+<ANCHOR id="NM-DEVICE-WIFI-ERROR-NOT-WIFI-CONNECTION:CAPS" href="libnm-glib/NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR-NOT-WIFI-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-WIFI-ERROR-INVALID-WIFI-CONNECTION:CAPS" href="libnm-glib/NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR-INVALID-WIFI-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-WIFI-ERROR-INVALID-DEVICE-MAC:CAPS" href="libnm-glib/NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR-INVALID-DEVICE-MAC:CAPS">
+<ANCHOR id="NM-DEVICE-WIFI-ERROR-MAC-MISMATCH:CAPS" href="libnm-glib/NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR-MAC-MISMATCH:CAPS">
+<ANCHOR id="NM-DEVICE-WIFI-ERROR-MISSING-DEVICE-WPA-CAPS" href="libnm-glib/NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR-MISSING-DEVICE-WPA-CAPS">
+<ANCHOR id="NM-DEVICE-WIFI-ERROR-MISSING-DEVICE-RSN-CAPS" href="libnm-glib/NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR-MISSING-DEVICE-RSN-CAPS">
 <ANCHOR id="NM-DEVICE-WIFI-ACTIVE-ACCESS-POINT:CAPS" href="libnm-glib/NMDeviceWifi.html#NM-DEVICE-WIFI-ACTIVE-ACCESS-POINT:CAPS">
 <ANCHOR id="NM-DEVICE-WIFI-BITRATE:CAPS" href="libnm-glib/NMDeviceWifi.html#NM-DEVICE-WIFI-BITRATE:CAPS">
 <ANCHOR id="NM-DEVICE-WIFI-CAPABILITIES:CAPS" href="libnm-glib/NMDeviceWifi.html#NM-DEVICE-WIFI-CAPABILITIES:CAPS">
+<ANCHOR id="NM-DEVICE-WIFI-ERROR:CAPS" href="libnm-glib/NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR:CAPS">
 <ANCHOR id="NM-DEVICE-WIFI-HW-ADDRESS:CAPS" href="libnm-glib/NMDeviceWifi.html#NM-DEVICE-WIFI-HW-ADDRESS:CAPS">
 <ANCHOR id="NM-DEVICE-WIFI-MODE:CAPS" href="libnm-glib/NMDeviceWifi.html#NM-DEVICE-WIFI-MODE:CAPS">
 <ANCHOR id="NM-DEVICE-WIFI-PERMANENT-HW-ADDRESS:CAPS" href="libnm-glib/NMDeviceWifi.html#NM-DEVICE-WIFI-PERMANENT-HW-ADDRESS:CAPS">
+<ANCHOR id="nm-device-wifi-error-quark" href="libnm-glib/NMDeviceWifi.html#nm-device-wifi-error-quark">
 <ANCHOR id="nm-device-wifi-get-access-point-by-path" href="libnm-glib/NMDeviceWifi.html#nm-device-wifi-get-access-point-by-path">
 <ANCHOR id="nm-device-wifi-get-access-points" href="libnm-glib/NMDeviceWifi.html#nm-device-wifi-get-access-points">
 <ANCHOR id="nm-device-wifi-get-active-access-point" href="libnm-glib/NMDeviceWifi.html#nm-device-wifi-get-active-access-point">
@@ -237,8 +266,15 @@
 <ANCHOR id="NMDeviceModem.details" href="libnm-glib/NMDeviceModem.html#NMDeviceModem.details">
 <ANCHOR id="NMDeviceModem-struct" href="libnm-glib/NMDeviceModem.html#NMDeviceModem-struct">
 <ANCHOR id="NMDeviceModemClass" href="libnm-glib/NMDeviceModem.html#NMDeviceModemClass">
+<ANCHOR id="NMDeviceModemError" href="libnm-glib/NMDeviceModem.html#NMDeviceModemError">
+<ANCHOR id="NM-DEVICE-MODEM-ERROR-UNKNOWN:CAPS" href="libnm-glib/NMDeviceModem.html#NM-DEVICE-MODEM-ERROR-UNKNOWN:CAPS">
+<ANCHOR id="NM-DEVICE-MODEM-ERROR-NOT-MODEM-CONNECTION:CAPS" href="libnm-glib/NMDeviceModem.html#NM-DEVICE-MODEM-ERROR-NOT-MODEM-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-MODEM-ERROR-INVALID-MODEM-CONNECTION:CAPS" href="libnm-glib/NMDeviceModem.html#NM-DEVICE-MODEM-ERROR-INVALID-MODEM-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-MODEM-ERROR-MISSING-DEVICE-CAPS" href="libnm-glib/NMDeviceModem.html#NM-DEVICE-MODEM-ERROR-MISSING-DEVICE-CAPS">
 <ANCHOR id="NM-DEVICE-MODEM-CURRENT-CAPABILITIES:CAPS" href="libnm-glib/NMDeviceModem.html#NM-DEVICE-MODEM-CURRENT-CAPABILITIES:CAPS">
+<ANCHOR id="NM-DEVICE-MODEM-ERROR:CAPS" href="libnm-glib/NMDeviceModem.html#NM-DEVICE-MODEM-ERROR:CAPS">
 <ANCHOR id="NM-DEVICE-MODEM-MODEM-CAPABILITIES:CAPS" href="libnm-glib/NMDeviceModem.html#NM-DEVICE-MODEM-MODEM-CAPABILITIES:CAPS">
+<ANCHOR id="nm-device-modem-error-quark" href="libnm-glib/NMDeviceModem.html#nm-device-modem-error-quark">
 <ANCHOR id="nm-device-modem-get-current-capabilities" href="libnm-glib/NMDeviceModem.html#nm-device-modem-get-current-capabilities">
 <ANCHOR id="nm-device-modem-get-modem-capabilities" href="libnm-glib/NMDeviceModem.html#nm-device-modem-get-modem-capabilities">
 <ANCHOR id="NMDeviceModem.property-details" href="libnm-glib/NMDeviceModem.html#NMDeviceModem.property-details">
@@ -253,9 +289,18 @@
 <ANCHOR id="NMDeviceBt.details" href="libnm-glib/NMDeviceBt.html#NMDeviceBt.details">
 <ANCHOR id="NMDeviceBt-struct" href="libnm-glib/NMDeviceBt.html#NMDeviceBt-struct">
 <ANCHOR id="NMDeviceBtClass" href="libnm-glib/NMDeviceBt.html#NMDeviceBtClass">
+<ANCHOR id="NMDeviceBtError" href="libnm-glib/NMDeviceBt.html#NMDeviceBtError">
+<ANCHOR id="NM-DEVICE-BT-ERROR-UNKNOWN:CAPS" href="libnm-glib/NMDeviceBt.html#NM-DEVICE-BT-ERROR-UNKNOWN:CAPS">
+<ANCHOR id="NM-DEVICE-BT-ERROR-NOT-BT-CONNECTION:CAPS" href="libnm-glib/NMDeviceBt.html#NM-DEVICE-BT-ERROR-NOT-BT-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-BT-ERROR-INVALID-BT-CONNECTION:CAPS" href="libnm-glib/NMDeviceBt.html#NM-DEVICE-BT-ERROR-INVALID-BT-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-BT-ERROR-INVALID-DEVICE-MAC:CAPS" href="libnm-glib/NMDeviceBt.html#NM-DEVICE-BT-ERROR-INVALID-DEVICE-MAC:CAPS">
+<ANCHOR id="NM-DEVICE-BT-ERROR-MAC-MISMATCH:CAPS" href="libnm-glib/NMDeviceBt.html#NM-DEVICE-BT-ERROR-MAC-MISMATCH:CAPS">
+<ANCHOR id="NM-DEVICE-BT-ERROR-MISSING-DEVICE-CAPS" href="libnm-glib/NMDeviceBt.html#NM-DEVICE-BT-ERROR-MISSING-DEVICE-CAPS">
 <ANCHOR id="NM-DEVICE-BT-CAPABILITIES:CAPS" href="libnm-glib/NMDeviceBt.html#NM-DEVICE-BT-CAPABILITIES:CAPS">
+<ANCHOR id="NM-DEVICE-BT-ERROR:CAPS" href="libnm-glib/NMDeviceBt.html#NM-DEVICE-BT-ERROR:CAPS">
 <ANCHOR id="NM-DEVICE-BT-HW-ADDRESS:CAPS" href="libnm-glib/NMDeviceBt.html#NM-DEVICE-BT-HW-ADDRESS:CAPS">
 <ANCHOR id="NM-DEVICE-BT-NAME:CAPS" href="libnm-glib/NMDeviceBt.html#NM-DEVICE-BT-NAME:CAPS">
+<ANCHOR id="nm-device-bt-error-quark" href="libnm-glib/NMDeviceBt.html#nm-device-bt-error-quark">
 <ANCHOR id="nm-device-bt-get-capabilities" href="libnm-glib/NMDeviceBt.html#nm-device-bt-get-capabilities">
 <ANCHOR id="nm-device-bt-get-hw-address" href="libnm-glib/NMDeviceBt.html#nm-device-bt-get-hw-address">
 <ANCHOR id="nm-device-bt-get-name" href="libnm-glib/NMDeviceBt.html#nm-device-bt-get-name">
@@ -274,13 +319,21 @@
 <ANCHOR id="NMDeviceWimax.details" href="libnm-glib/NMDeviceWimax.html#NMDeviceWimax.details">
 <ANCHOR id="NMDeviceWimax-struct" href="libnm-glib/NMDeviceWimax.html#NMDeviceWimax-struct">
 <ANCHOR id="NMDeviceWimaxClass" href="libnm-glib/NMDeviceWimax.html#NMDeviceWimaxClass">
+<ANCHOR id="NMDeviceWimaxError" href="libnm-glib/NMDeviceWimax.html#NMDeviceWimaxError">
+<ANCHOR id="NM-DEVICE-WIMAX-ERROR-UNKNOWN:CAPS" href="libnm-glib/NMDeviceWimax.html#NM-DEVICE-WIMAX-ERROR-UNKNOWN:CAPS">
+<ANCHOR id="NM-DEVICE-WIMAX-ERROR-NOT-WIMAX-CONNECTION:CAPS" href="libnm-glib/NMDeviceWimax.html#NM-DEVICE-WIMAX-ERROR-NOT-WIMAX-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-WIMAX-ERROR-INVALID-WIMAX-CONNECTION:CAPS" href="libnm-glib/NMDeviceWimax.html#NM-DEVICE-WIMAX-ERROR-INVALID-WIMAX-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-WIMAX-ERROR-INVALID-DEVICE-MAC:CAPS" href="libnm-glib/NMDeviceWimax.html#NM-DEVICE-WIMAX-ERROR-INVALID-DEVICE-MAC:CAPS">
+<ANCHOR id="NM-DEVICE-WIMAX-ERROR-MAC-MISMATCH:CAPS" href="libnm-glib/NMDeviceWimax.html#NM-DEVICE-WIMAX-ERROR-MAC-MISMATCH:CAPS">
 <ANCHOR id="NM-DEVICE-WIMAX-ACTIVE-NSP:CAPS" href="libnm-glib/NMDeviceWimax.html#NM-DEVICE-WIMAX-ACTIVE-NSP:CAPS">
 <ANCHOR id="NM-DEVICE-WIMAX-BSID:CAPS" href="libnm-glib/NMDeviceWimax.html#NM-DEVICE-WIMAX-BSID:CAPS">
 <ANCHOR id="NM-DEVICE-WIMAX-CENTER-FREQUENCY:CAPS" href="libnm-glib/NMDeviceWimax.html#NM-DEVICE-WIMAX-CENTER-FREQUENCY:CAPS">
 <ANCHOR id="NM-DEVICE-WIMAX-CINR:CAPS" href="libnm-glib/NMDeviceWimax.html#NM-DEVICE-WIMAX-CINR:CAPS">
+<ANCHOR id="NM-DEVICE-WIMAX-ERROR:CAPS" href="libnm-glib/NMDeviceWimax.html#NM-DEVICE-WIMAX-ERROR:CAPS">
 <ANCHOR id="NM-DEVICE-WIMAX-HW-ADDRESS:CAPS" href="libnm-glib/NMDeviceWimax.html#NM-DEVICE-WIMAX-HW-ADDRESS:CAPS">
 <ANCHOR id="NM-DEVICE-WIMAX-RSSI:CAPS" href="libnm-glib/NMDeviceWimax.html#NM-DEVICE-WIMAX-RSSI:CAPS">
 <ANCHOR id="NM-DEVICE-WIMAX-TX-POWER:CAPS" href="libnm-glib/NMDeviceWimax.html#NM-DEVICE-WIMAX-TX-POWER:CAPS">
+<ANCHOR id="nm-device-wimax-error-quark" href="libnm-glib/NMDeviceWimax.html#nm-device-wimax-error-quark">
 <ANCHOR id="nm-device-wimax-get-active-nsp" href="libnm-glib/NMDeviceWimax.html#nm-device-wimax-get-active-nsp">
 <ANCHOR id="nm-device-wimax-get-bsid" href="libnm-glib/NMDeviceWimax.html#nm-device-wimax-get-bsid">
 <ANCHOR id="nm-device-wimax-get-center-frequency" href="libnm-glib/NMDeviceWimax.html#nm-device-wimax-get-center-frequency">
@@ -302,6 +355,109 @@
 <ANCHOR id="NMDeviceWimax.signal-details" href="libnm-glib/NMDeviceWimax.html#NMDeviceWimax.signal-details">
 <ANCHOR id="NMDeviceWimax-nsp-added" href="libnm-glib/NMDeviceWimax.html#NMDeviceWimax-nsp-added">
 <ANCHOR id="NMDeviceWimax-nsp-removed" href="libnm-glib/NMDeviceWimax.html#NMDeviceWimax-nsp-removed">
+<ANCHOR id="NMDeviceBond" href="libnm-glib/NMDeviceBond.html">
+<ANCHOR id="NMDeviceBond.synopsis" href="libnm-glib/NMDeviceBond.html#NMDeviceBond.synopsis">
+<ANCHOR id="NMDeviceBond.object-hierarchy" href="libnm-glib/NMDeviceBond.html#NMDeviceBond.object-hierarchy">
+<ANCHOR id="NMDeviceBond.implemented-interfaces" href="libnm-glib/NMDeviceBond.html#NMDeviceBond.implemented-interfaces">
+<ANCHOR id="NMDeviceBond.properties" href="libnm-glib/NMDeviceBond.html#NMDeviceBond.properties">
+<ANCHOR id="NMDeviceBond.description" href="libnm-glib/NMDeviceBond.html#NMDeviceBond.description">
+<ANCHOR id="NMDeviceBond.details" href="libnm-glib/NMDeviceBond.html#NMDeviceBond.details">
+<ANCHOR id="NMDeviceBond-struct" href="libnm-glib/NMDeviceBond.html#NMDeviceBond-struct">
+<ANCHOR id="NMDeviceBondClass" href="libnm-glib/NMDeviceBond.html#NMDeviceBondClass">
+<ANCHOR id="NMDeviceBondError" href="libnm-glib/NMDeviceBond.html#NMDeviceBondError">
+<ANCHOR id="NM-DEVICE-BOND-ERROR-UNKNOWN:CAPS" href="libnm-glib/NMDeviceBond.html#NM-DEVICE-BOND-ERROR-UNKNOWN:CAPS">
+<ANCHOR id="NM-DEVICE-BOND-ERROR-NOT-BOND-CONNECTION:CAPS" href="libnm-glib/NMDeviceBond.html#NM-DEVICE-BOND-ERROR-NOT-BOND-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-BOND-ERROR-INVALID-BOND-CONNECTION:CAPS" href="libnm-glib/NMDeviceBond.html#NM-DEVICE-BOND-ERROR-INVALID-BOND-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-BOND-ERROR-INTERFACE-MISMATCH:CAPS" href="libnm-glib/NMDeviceBond.html#NM-DEVICE-BOND-ERROR-INTERFACE-MISMATCH:CAPS">
+<ANCHOR id="NM-DEVICE-BOND-CARRIER:CAPS" href="libnm-glib/NMDeviceBond.html#NM-DEVICE-BOND-CARRIER:CAPS">
+<ANCHOR id="NM-DEVICE-BOND-ERROR:CAPS" href="libnm-glib/NMDeviceBond.html#NM-DEVICE-BOND-ERROR:CAPS">
+<ANCHOR id="NM-DEVICE-BOND-HW-ADDRESS:CAPS" href="libnm-glib/NMDeviceBond.html#NM-DEVICE-BOND-HW-ADDRESS:CAPS">
+<ANCHOR id="nm-device-bond-error-quark" href="libnm-glib/NMDeviceBond.html#nm-device-bond-error-quark">
+<ANCHOR id="nm-device-bond-get-carrier" href="libnm-glib/NMDeviceBond.html#nm-device-bond-get-carrier">
+<ANCHOR id="nm-device-bond-get-hw-address" href="libnm-glib/NMDeviceBond.html#nm-device-bond-get-hw-address">
+<ANCHOR id="nm-device-bond-new" href="libnm-glib/NMDeviceBond.html#nm-device-bond-new">
+<ANCHOR id="NMDeviceBond.property-details" href="libnm-glib/NMDeviceBond.html#NMDeviceBond.property-details">
+<ANCHOR id="NMDeviceBond--carrier" href="libnm-glib/NMDeviceBond.html#NMDeviceBond--carrier">
+<ANCHOR id="NMDeviceBond--hw-address" href="libnm-glib/NMDeviceBond.html#NMDeviceBond--hw-address">
+<ANCHOR id="NMDeviceInfiniband" href="libnm-glib/NMDeviceInfiniband.html">
+<ANCHOR id="NMDeviceInfiniband.synopsis" href="libnm-glib/NMDeviceInfiniband.html#NMDeviceInfiniband.synopsis">
+<ANCHOR id="NMDeviceInfiniband.object-hierarchy" href="libnm-glib/NMDeviceInfiniband.html#NMDeviceInfiniband.object-hierarchy">
+<ANCHOR id="NMDeviceInfiniband.implemented-interfaces" href="libnm-glib/NMDeviceInfiniband.html#NMDeviceInfiniband.implemented-interfaces">
+<ANCHOR id="NMDeviceInfiniband.properties" href="libnm-glib/NMDeviceInfiniband.html#NMDeviceInfiniband.properties">
+<ANCHOR id="NMDeviceInfiniband.description" href="libnm-glib/NMDeviceInfiniband.html#NMDeviceInfiniband.description">
+<ANCHOR id="NMDeviceInfiniband.details" href="libnm-glib/NMDeviceInfiniband.html#NMDeviceInfiniband.details">
+<ANCHOR id="NMDeviceInfiniband-struct" href="libnm-glib/NMDeviceInfiniband.html#NMDeviceInfiniband-struct">
+<ANCHOR id="NMDeviceInfinibandClass" href="libnm-glib/NMDeviceInfiniband.html#NMDeviceInfinibandClass">
+<ANCHOR id="NMDeviceInfinibandError" href="libnm-glib/NMDeviceInfiniband.html#NMDeviceInfinibandError">
+<ANCHOR id="NM-DEVICE-INFINIBAND-ERROR-UNKNOWN:CAPS" href="libnm-glib/NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-ERROR-UNKNOWN:CAPS">
+<ANCHOR id="NM-DEVICE-INFINIBAND-ERROR-NOT-INFINIBAND-CONNECTION:CAPS" href="libnm-glib/NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-ERROR-NOT-INFINIBAND-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-INFINIBAND-ERROR-INVALID-INFINIBAND-CONNECTION:CAPS" href="libnm-glib/NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-ERROR-INVALID-INFINIBAND-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-INFINIBAND-ERROR-INVALID-DEVICE-MAC:CAPS" href="libnm-glib/NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-ERROR-INVALID-DEVICE-MAC:CAPS">
+<ANCHOR id="NM-DEVICE-INFINIBAND-ERROR-MAC-MISMATCH:CAPS" href="libnm-glib/NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-ERROR-MAC-MISMATCH:CAPS">
+<ANCHOR id="NM-DEVICE-INFINIBAND-CARRIER:CAPS" href="libnm-glib/NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-CARRIER:CAPS">
+<ANCHOR id="NM-DEVICE-INFINIBAND-ERROR:CAPS" href="libnm-glib/NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-ERROR:CAPS">
+<ANCHOR id="NM-DEVICE-INFINIBAND-HW-ADDRESS:CAPS" href="libnm-glib/NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-HW-ADDRESS:CAPS">
+<ANCHOR id="nm-device-infiniband-error-quark" href="libnm-glib/NMDeviceInfiniband.html#nm-device-infiniband-error-quark">
+<ANCHOR id="nm-device-infiniband-get-carrier" href="libnm-glib/NMDeviceInfiniband.html#nm-device-infiniband-get-carrier">
+<ANCHOR id="nm-device-infiniband-get-hw-address" href="libnm-glib/NMDeviceInfiniband.html#nm-device-infiniband-get-hw-address">
+<ANCHOR id="nm-device-infiniband-new" href="libnm-glib/NMDeviceInfiniband.html#nm-device-infiniband-new">
+<ANCHOR id="NMDeviceInfiniband.property-details" href="libnm-glib/NMDeviceInfiniband.html#NMDeviceInfiniband.property-details">
+<ANCHOR id="NMDeviceInfiniband--carrier" href="libnm-glib/NMDeviceInfiniband.html#NMDeviceInfiniband--carrier">
+<ANCHOR id="NMDeviceInfiniband--hw-address" href="libnm-glib/NMDeviceInfiniband.html#NMDeviceInfiniband--hw-address">
+<ANCHOR id="NMDeviceVlan" href="libnm-glib/NMDeviceVlan.html">
+<ANCHOR id="NMDeviceVlan.synopsis" href="libnm-glib/NMDeviceVlan.html#NMDeviceVlan.synopsis">
+<ANCHOR id="NMDeviceVlan.object-hierarchy" href="libnm-glib/NMDeviceVlan.html#NMDeviceVlan.object-hierarchy">
+<ANCHOR id="NMDeviceVlan.implemented-interfaces" href="libnm-glib/NMDeviceVlan.html#NMDeviceVlan.implemented-interfaces">
+<ANCHOR id="NMDeviceVlan.properties" href="libnm-glib/NMDeviceVlan.html#NMDeviceVlan.properties">
+<ANCHOR id="NMDeviceVlan.description" href="libnm-glib/NMDeviceVlan.html#NMDeviceVlan.description">
+<ANCHOR id="NMDeviceVlan.details" href="libnm-glib/NMDeviceVlan.html#NMDeviceVlan.details">
+<ANCHOR id="NMDeviceVlan-struct" href="libnm-glib/NMDeviceVlan.html#NMDeviceVlan-struct">
+<ANCHOR id="NMDeviceVlanClass" href="libnm-glib/NMDeviceVlan.html#NMDeviceVlanClass">
+<ANCHOR id="NMDeviceVlanError" href="libnm-glib/NMDeviceVlan.html#NMDeviceVlanError">
+<ANCHOR id="NM-DEVICE-VLAN-ERROR-UNKNOWN:CAPS" href="libnm-glib/NMDeviceVlan.html#NM-DEVICE-VLAN-ERROR-UNKNOWN:CAPS">
+<ANCHOR id="NM-DEVICE-VLAN-ERROR-NOT-VLAN-CONNECTION:CAPS" href="libnm-glib/NMDeviceVlan.html#NM-DEVICE-VLAN-ERROR-NOT-VLAN-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-VLAN-ERROR-INVALID-VLAN-CONNECTION:CAPS" href="libnm-glib/NMDeviceVlan.html#NM-DEVICE-VLAN-ERROR-INVALID-VLAN-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-VLAN-ERROR-ID-MISMATCH:CAPS" href="libnm-glib/NMDeviceVlan.html#NM-DEVICE-VLAN-ERROR-ID-MISMATCH:CAPS">
+<ANCHOR id="NM-DEVICE-VLAN-ERROR-INTERFACE-MISMATCH:CAPS" href="libnm-glib/NMDeviceVlan.html#NM-DEVICE-VLAN-ERROR-INTERFACE-MISMATCH:CAPS">
+<ANCHOR id="NM-DEVICE-VLAN-CARRIER:CAPS" href="libnm-glib/NMDeviceVlan.html#NM-DEVICE-VLAN-CARRIER:CAPS">
+<ANCHOR id="NM-DEVICE-VLAN-ERROR:CAPS" href="libnm-glib/NMDeviceVlan.html#NM-DEVICE-VLAN-ERROR:CAPS">
+<ANCHOR id="NM-DEVICE-VLAN-HW-ADDRESS:CAPS" href="libnm-glib/NMDeviceVlan.html#NM-DEVICE-VLAN-HW-ADDRESS:CAPS">
+<ANCHOR id="NM-DEVICE-VLAN-VLAN-ID:CAPS" href="libnm-glib/NMDeviceVlan.html#NM-DEVICE-VLAN-VLAN-ID:CAPS">
+<ANCHOR id="nm-device-vlan-error-quark" href="libnm-glib/NMDeviceVlan.html#nm-device-vlan-error-quark">
+<ANCHOR id="nm-device-vlan-get-carrier" href="libnm-glib/NMDeviceVlan.html#nm-device-vlan-get-carrier">
+<ANCHOR id="nm-device-vlan-get-hw-address" href="libnm-glib/NMDeviceVlan.html#nm-device-vlan-get-hw-address">
+<ANCHOR id="nm-device-vlan-get-vlan-id" href="libnm-glib/NMDeviceVlan.html#nm-device-vlan-get-vlan-id">
+<ANCHOR id="nm-device-vlan-new" href="libnm-glib/NMDeviceVlan.html#nm-device-vlan-new">
+<ANCHOR id="NMDeviceVlan.property-details" href="libnm-glib/NMDeviceVlan.html#NMDeviceVlan.property-details">
+<ANCHOR id="NMDeviceVlan--carrier" href="libnm-glib/NMDeviceVlan.html#NMDeviceVlan--carrier">
+<ANCHOR id="NMDeviceVlan--hw-address" href="libnm-glib/NMDeviceVlan.html#NMDeviceVlan--hw-address">
+<ANCHOR id="NMDeviceVlan--vlan-id" href="libnm-glib/NMDeviceVlan.html#NMDeviceVlan--vlan-id">
+<ANCHOR id="NMDeviceOlpcMesh" href="libnm-glib/NMDeviceOlpcMesh.html">
+<ANCHOR id="NMDeviceOlpcMesh.synopsis" href="libnm-glib/NMDeviceOlpcMesh.html#NMDeviceOlpcMesh.synopsis">
+<ANCHOR id="NMDeviceOlpcMesh.object-hierarchy" href="libnm-glib/NMDeviceOlpcMesh.html#NMDeviceOlpcMesh.object-hierarchy">
+<ANCHOR id="NMDeviceOlpcMesh.implemented-interfaces" href="libnm-glib/NMDeviceOlpcMesh.html#NMDeviceOlpcMesh.implemented-interfaces">
+<ANCHOR id="NMDeviceOlpcMesh.properties" href="libnm-glib/NMDeviceOlpcMesh.html#NMDeviceOlpcMesh.properties">
+<ANCHOR id="NMDeviceOlpcMesh.description" href="libnm-glib/NMDeviceOlpcMesh.html#NMDeviceOlpcMesh.description">
+<ANCHOR id="NMDeviceOlpcMesh.details" href="libnm-glib/NMDeviceOlpcMesh.html#NMDeviceOlpcMesh.details">
+<ANCHOR id="NMDeviceOlpcMesh-struct" href="libnm-glib/NMDeviceOlpcMesh.html#NMDeviceOlpcMesh-struct">
+<ANCHOR id="NMDeviceOlpcMeshClass" href="libnm-glib/NMDeviceOlpcMesh.html#NMDeviceOlpcMeshClass">
+<ANCHOR id="NMDeviceOlpcMeshError" href="libnm-glib/NMDeviceOlpcMesh.html#NMDeviceOlpcMeshError">
+<ANCHOR id="NM-DEVICE-OLPC-MESH-ERROR-UNKNOWN:CAPS" href="libnm-glib/NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-ERROR-UNKNOWN:CAPS">
+<ANCHOR id="NM-DEVICE-OLPC-MESH-ERROR-NOT-OLPC-MESH-CONNECTION:CAPS" href="libnm-glib/NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-ERROR-NOT-OLPC-MESH-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-OLPC-MESH-ERROR-INVALID-OLPC-MESH-CONNECTION:CAPS" href="libnm-glib/NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-ERROR-INVALID-OLPC-MESH-CONNECTION:CAPS">
+<ANCHOR id="NM-DEVICE-OLPC-MESH-ACTIVE-CHANNEL:CAPS" href="libnm-glib/NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-ACTIVE-CHANNEL:CAPS">
+<ANCHOR id="NM-DEVICE-OLPC-MESH-COMPANION:CAPS" href="libnm-glib/NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-COMPANION:CAPS">
+<ANCHOR id="NM-DEVICE-OLPC-MESH-ERROR:CAPS" href="libnm-glib/NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-ERROR:CAPS">
+<ANCHOR id="NM-DEVICE-OLPC-MESH-HW-ADDRESS:CAPS" href="libnm-glib/NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-HW-ADDRESS:CAPS">
+<ANCHOR id="nm-device-olpc-mesh-error-quark" href="libnm-glib/NMDeviceOlpcMesh.html#nm-device-olpc-mesh-error-quark">
+<ANCHOR id="nm-device-olpc-mesh-get-active-channel" href="libnm-glib/NMDeviceOlpcMesh.html#nm-device-olpc-mesh-get-active-channel">
+<ANCHOR id="nm-device-olpc-mesh-get-companion" href="libnm-glib/NMDeviceOlpcMesh.html#nm-device-olpc-mesh-get-companion">
+<ANCHOR id="nm-device-olpc-mesh-get-hw-address" href="libnm-glib/NMDeviceOlpcMesh.html#nm-device-olpc-mesh-get-hw-address">
+<ANCHOR id="nm-device-olpc-mesh-new" href="libnm-glib/NMDeviceOlpcMesh.html#nm-device-olpc-mesh-new">
+<ANCHOR id="NMDeviceOlpcMesh.property-details" href="libnm-glib/NMDeviceOlpcMesh.html#NMDeviceOlpcMesh.property-details">
+<ANCHOR id="NMDeviceOlpcMesh--active-channel" href="libnm-glib/NMDeviceOlpcMesh.html#NMDeviceOlpcMesh--active-channel">
+<ANCHOR id="NMDeviceOlpcMesh--companion" href="libnm-glib/NMDeviceOlpcMesh.html#NMDeviceOlpcMesh--companion">
+<ANCHOR id="NMDeviceOlpcMesh--hw-address" href="libnm-glib/NMDeviceOlpcMesh.html#NMDeviceOlpcMesh--hw-address">
 <ANCHOR id="NMWimaxNsp" href="libnm-glib/NMWimaxNsp.html">
 <ANCHOR id="NMWimaxNsp.synopsis" href="libnm-glib/NMWimaxNsp.html#NMWimaxNsp.synopsis">
 <ANCHOR id="NMWimaxNsp.object-hierarchy" href="libnm-glib/NMWimaxNsp.html#NMWimaxNsp.object-hierarchy">
@@ -452,17 +608,25 @@
 <ANCHOR id="NMObject.object-hierarchy" href="libnm-glib/NMObject.html#NMObject.object-hierarchy">
 <ANCHOR id="NMObject.implemented-interfaces" href="libnm-glib/NMObject.html#NMObject.implemented-interfaces">
 <ANCHOR id="NMObject.properties" href="libnm-glib/NMObject.html#NMObject.properties">
+<ANCHOR id="NMObject.signals" href="libnm-glib/NMObject.html#NMObject.signals">
 <ANCHOR id="NMObject.description" href="libnm-glib/NMObject.html#NMObject.description">
 <ANCHOR id="NMObject.details" href="libnm-glib/NMObject.html#NMObject.details">
 <ANCHOR id="NMObject-struct" href="libnm-glib/NMObject.html#NMObject-struct">
 <ANCHOR id="NMObjectClass" href="libnm-glib/NMObject.html#NMObjectClass">
+<ANCHOR id="NMObjectError" href="libnm-glib/NMObject.html#NMObjectError">
+<ANCHOR id="NM-OBJECT-ERROR-UNKNOWN:CAPS" href="libnm-glib/NMObject.html#NM-OBJECT-ERROR-UNKNOWN:CAPS">
+<ANCHOR id="NM-OBJECT-ERROR-OBJECT-CREATION-FAILURE:CAPS" href="libnm-glib/NMObject.html#NM-OBJECT-ERROR-OBJECT-CREATION-FAILURE:CAPS">
 <ANCHOR id="NM-OBJECT-DBUS-CONNECTION:CAPS" href="libnm-glib/NMObject.html#NM-OBJECT-DBUS-CONNECTION:CAPS">
 <ANCHOR id="NM-OBJECT-DBUS-PATH:CAPS" href="libnm-glib/NMObject.html#NM-OBJECT-DBUS-PATH:CAPS">
+<ANCHOR id="NM-OBJECT-ERROR:CAPS" href="libnm-glib/NMObject.html#NM-OBJECT-ERROR:CAPS">
+<ANCHOR id="nm-object-error-quark" href="libnm-glib/NMObject.html#nm-object-error-quark">
 <ANCHOR id="nm-object-get-connection" href="libnm-glib/NMObject.html#nm-object-get-connection">
 <ANCHOR id="nm-object-get-path" href="libnm-glib/NMObject.html#nm-object-get-path">
 <ANCHOR id="NMObject.property-details" href="libnm-glib/NMObject.html#NMObject.property-details">
 <ANCHOR id="NMObject--dbus-connection" href="libnm-glib/NMObject.html#NMObject--dbus-connection">
 <ANCHOR id="NMObject--dbus-path" href="libnm-glib/NMObject.html#NMObject--dbus-path">
+<ANCHOR id="NMObject.signal-details" href="libnm-glib/NMObject.html#NMObject.signal-details">
+<ANCHOR id="NMObject-object-creation-failed" href="libnm-glib/NMObject.html#NMObject-object-creation-failed">
 <ANCHOR id="NMRemoteConnection" href="libnm-glib/NMRemoteConnection.html">
 <ANCHOR id="NMRemoteConnection.synopsis" href="libnm-glib/NMRemoteConnection.html#NMRemoteConnection.synopsis">
 <ANCHOR id="NMRemoteConnection.object-hierarchy" href="libnm-glib/NMRemoteConnection.html#NMRemoteConnection.object-hierarchy">
@@ -547,14 +711,17 @@
 <ANCHOR id="NM-SECRET-AGENT-GET-SECRETS-FLAG-NONE:CAPS" href="libnm-glib/NMSecretAgent.html#NM-SECRET-AGENT-GET-SECRETS-FLAG-NONE:CAPS">
 <ANCHOR id="NM-SECRET-AGENT-GET-SECRETS-FLAG-ALLOW-INTERACTION:CAPS" href="libnm-glib/NMSecretAgent.html#NM-SECRET-AGENT-GET-SECRETS-FLAG-ALLOW-INTERACTION:CAPS">
 <ANCHOR id="NM-SECRET-AGENT-GET-SECRETS-FLAG-REQUEST-NEW:CAPS" href="libnm-glib/NMSecretAgent.html#NM-SECRET-AGENT-GET-SECRETS-FLAG-REQUEST-NEW:CAPS">
+<ANCHOR id="NM-SECRET-AGENT-GET-SECRETS-FLAG-USER-REQUESTED:CAPS" href="libnm-glib/NMSecretAgent.html#NM-SECRET-AGENT-GET-SECRETS-FLAG-USER-REQUESTED:CAPS">
 <ANCHOR id="NMSecretAgentGetSecretsFunc" href="libnm-glib/NMSecretAgent.html#NMSecretAgentGetSecretsFunc">
 <ANCHOR id="NMSecretAgentSaveSecretsFunc" href="libnm-glib/NMSecretAgent.html#NMSecretAgentSaveSecretsFunc">
 <ANCHOR id="NM-SECRET-AGENT-AUTO-REGISTER:CAPS" href="libnm-glib/NMSecretAgent.html#NM-SECRET-AGENT-AUTO-REGISTER:CAPS">
 <ANCHOR id="NM-SECRET-AGENT-ERROR:CAPS" href="libnm-glib/NMSecretAgent.html#NM-SECRET-AGENT-ERROR:CAPS">
 <ANCHOR id="NM-SECRET-AGENT-IDENTIFIER:CAPS" href="libnm-glib/NMSecretAgent.html#NM-SECRET-AGENT-IDENTIFIER:CAPS">
+<ANCHOR id="NM-SECRET-AGENT-REGISTERED:CAPS" href="libnm-glib/NMSecretAgent.html#NM-SECRET-AGENT-REGISTERED:CAPS">
 <ANCHOR id="NM-SECRET-AGENT-REGISTRATION-RESULT:CAPS" href="libnm-glib/NMSecretAgent.html#NM-SECRET-AGENT-REGISTRATION-RESULT:CAPS">
 <ANCHOR id="nm-secret-agent-delete-secrets" href="libnm-glib/NMSecretAgent.html#nm-secret-agent-delete-secrets">
 <ANCHOR id="nm-secret-agent-error-quark" href="libnm-glib/NMSecretAgent.html#nm-secret-agent-error-quark">
+<ANCHOR id="nm-secret-agent-get-registered" href="libnm-glib/NMSecretAgent.html#nm-secret-agent-get-registered">
 <ANCHOR id="nm-secret-agent-get-secrets" href="libnm-glib/NMSecretAgent.html#nm-secret-agent-get-secrets">
 <ANCHOR id="nm-secret-agent-register" href="libnm-glib/NMSecretAgent.html#nm-secret-agent-register">
 <ANCHOR id="nm-secret-agent-save-secrets" href="libnm-glib/NMSecretAgent.html#nm-secret-agent-save-secrets">
@@ -599,7 +766,9 @@
 <ANCHOR id="nm-vpn-plugin-failure" href="libnm-glib/libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-failure">
 <ANCHOR id="nm-vpn-plugin-get-connection" href="libnm-glib/libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-get-connection">
 <ANCHOR id="nm-vpn-plugin-get-state" href="libnm-glib/libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-get-state">
+<ANCHOR id="nm-vpn-plugin-set-config" href="libnm-glib/libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-config">
 <ANCHOR id="nm-vpn-plugin-set-ip4-config" href="libnm-glib/libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-ip4-config">
+<ANCHOR id="nm-vpn-plugin-set-ip6-config" href="libnm-glib/libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-ip6-config">
 <ANCHOR id="nm-vpn-plugin-set-login-banner" href="libnm-glib/libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-login-banner">
 <ANCHOR id="nm-vpn-plugin-set-state" href="libnm-glib/libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-state">
 <ANCHOR id="libnm-glib-NMVpnPluginUiWidget" href="libnm-glib/libnm-glib-NMVpnPluginUiWidget.html">
diff --git a/docs/libnm-glib/html/libnm-glib-NMVPNPlugin.html b/docs/libnm-glib/html/libnm-glib-NMVPNPlugin.html
index a8f13163..a05a01a4 100644
--- a/docs/libnm-glib/html/libnm-glib-NMVPNPlugin.html
+++ b/docs/libnm-glib/html/libnm-glib-NMVPNPlugin.html
@@ -49,8 +49,12 @@ enum                <a class="link" href="libnm-glib-NMVPNPlugin.html#NMVPNPlugi
                                                          <em class="parameter"><code><span class="type">NMVPNPluginFailure</span> reason</code></em>);
 <a href="/usr/share/gtk-doc/html/dbus-glib/dbus-glib-DBusGConnection.html#DBusGConnection"><span class="returnvalue">DBusGConnection</span></a> *   <a class="link" href="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-get-connection" title="nm_vpn_plugin_get_connection ()">nm_vpn_plugin_get_connection</a>        (<em class="parameter"><code><a class="link" href="libnm-glib-NMVPNPlugin.html#NMVPNPlugin" title="NMVPNPlugin"><span class="type">NMVPNPlugin</span></a> *plugin</code></em>);
 <span class="returnvalue">NMVPNServiceState</span>   <a class="link" href="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-get-state" title="nm_vpn_plugin_get_state ()">nm_vpn_plugin_get_state</a>             (<em class="parameter"><code><a class="link" href="libnm-glib-NMVPNPlugin.html#NMVPNPlugin" title="NMVPNPlugin"><span class="type">NMVPNPlugin</span></a> *plugin</code></em>);
+<span class="returnvalue">void</span>                <a class="link" href="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-config" title="nm_vpn_plugin_set_config ()">nm_vpn_plugin_set_config</a>            (<em class="parameter"><code><a class="link" href="libnm-glib-NMVPNPlugin.html#NMVPNPlugin" title="NMVPNPlugin"><span class="type">NMVPNPlugin</span></a> *plugin</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> *config</code></em>);
 <span class="returnvalue">void</span>                <a class="link" href="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-ip4-config" title="nm_vpn_plugin_set_ip4_config ()">nm_vpn_plugin_set_ip4_config</a>        (<em class="parameter"><code><a class="link" href="libnm-glib-NMVPNPlugin.html#NMVPNPlugin" title="NMVPNPlugin"><span class="type">NMVPNPlugin</span></a> *plugin</code></em>,
                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> *ip4_config</code></em>);
+<span class="returnvalue">void</span>                <a class="link" href="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-ip6-config" title="nm_vpn_plugin_set_ip6_config ()">nm_vpn_plugin_set_ip6_config</a>        (<em class="parameter"><code><a class="link" href="libnm-glib-NMVPNPlugin.html#NMVPNPlugin" title="NMVPNPlugin"><span class="type">NMVPNPlugin</span></a> *plugin</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> *ip6_config</code></em>);
 <span class="returnvalue">void</span>                <a class="link" href="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-login-banner" title="nm_vpn_plugin_set_login_banner ()">nm_vpn_plugin_set_login_banner</a>      (<em class="parameter"><code><a class="link" href="libnm-glib-NMVPNPlugin.html#NMVPNPlugin" title="NMVPNPlugin"><span class="type">NMVPNPlugin</span></a> *plugin</code></em>,
                                                          <em class="parameter"><code>const <span class="type">char</span> *banner</code></em>);
 <span class="returnvalue">void</span>                <a class="link" href="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-state" title="nm_vpn_plugin_set_state ()">nm_vpn_plugin_set_state</a>             (<em class="parameter"><code><a class="link" href="libnm-glib-NMVPNPlugin.html#NMVPNPlugin" title="NMVPNPlugin"><span class="type">NMVPNPlugin</span></a> *plugin</code></em>,
@@ -80,40 +84,44 @@ enum                <a class="link" href="libnm-glib-NMVPNPlugin.html#NMVPNPlugi
 	GObjectClass parent;
 
 	/* virtual methods */
-	gboolean (*connect)    (NMVPNPlugin   *plugin,
-					    NMConnection  *connection,
-					    GError       **err);
+	gboolean (*connect)      (NMVPNPlugin   *plugin,
+	                          NMConnection  *connection,
+	                          GError       **err);
 
 	gboolean (*need_secrets) (NMVPNPlugin *plugin,
-	                              NMConnection *connection,
-	                              char **setting_name,
-	                              GError **error);
+	                          NMConnection *connection,
+	                          char **setting_name,
+	                          GError **error);
 
-	gboolean (*disconnect) (NMVPNPlugin   *plugin,
-					    GError       **err);
+	gboolean (*disconnect)   (NMVPNPlugin   *plugin,
+	                          GError       **err);
 
 	/* Signals */
 	void (*state_changed)  (NMVPNPlugin *plugin,
-					    NMVPNServiceState state);
+	                        NMVPNServiceState state);
 
 	void (*ip4_config)     (NMVPNPlugin *plugin,
-					    GHashTable  *ip4_config);
+	                        GHashTable  *ip4_config);
 
 	void (*login_banner)   (NMVPNPlugin *plugin,
-					    const char *banner);
+	                        const char *banner);
 
 	void (*failure)        (NMVPNPlugin *plugin,
-					    NMVPNPluginFailure reason);
+	                        NMVPNPluginFailure reason);
 
 	void (*quit)           (NMVPNPlugin *plugin);
 
+	void (*config)         (NMVPNPlugin *plugin,
+	                        GHashTable  *config);
+
+	void (*ip6_config)     (NMVPNPlugin *plugin,
+	                        GHashTable  *config);
+
 	/* Padding for future expansion */
 	void (*_reserved1) (void);
 	void (*_reserved2) (void);
 	void (*_reserved3) (void);
 	void (*_reserved4) (void);
-	void (*_reserved5) (void);
-	void (*_reserved6) (void);
 } NMVPNPluginClass;
 </pre>
 <p>
@@ -192,6 +200,14 @@ enum                <a class="link" href="libnm-glib-NMVPNPlugin.html#NMVPNPlugi
 </div>
 <hr>
 <div class="refsect2">
+<a name="nm-vpn-plugin-set-config"></a><h3>nm_vpn_plugin_set_config ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>                nm_vpn_plugin_set_config            (<em class="parameter"><code><a class="link" href="libnm-glib-NMVPNPlugin.html#NMVPNPlugin" title="NMVPNPlugin"><span class="type">NMVPNPlugin</span></a> *plugin</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> *config</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-vpn-plugin-set-ip4-config"></a><h3>nm_vpn_plugin_set_ip4_config ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>                nm_vpn_plugin_set_ip4_config        (<em class="parameter"><code><a class="link" href="libnm-glib-NMVPNPlugin.html#NMVPNPlugin" title="NMVPNPlugin"><span class="type">NMVPNPlugin</span></a> *plugin</code></em>,
                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> *ip4_config</code></em>);</pre>
@@ -200,6 +216,14 @@ enum                <a class="link" href="libnm-glib-NMVPNPlugin.html#NMVPNPlugi
 </div>
 <hr>
 <div class="refsect2">
+<a name="nm-vpn-plugin-set-ip6-config"></a><h3>nm_vpn_plugin_set_ip6_config ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>                nm_vpn_plugin_set_ip6_config        (<em class="parameter"><code><a class="link" href="libnm-glib-NMVPNPlugin.html#NMVPNPlugin" title="NMVPNPlugin"><span class="type">NMVPNPlugin</span></a> *plugin</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> *ip6_config</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-vpn-plugin-set-login-banner"></a><h3>nm_vpn_plugin_set_login_banner ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>                nm_vpn_plugin_set_login_banner      (<em class="parameter"><code><a class="link" href="libnm-glib-NMVPNPlugin.html#NMVPNPlugin" title="NMVPNPlugin"><span class="type">NMVPNPlugin</span></a> *plugin</code></em>,
                                                          <em class="parameter"><code>const <span class="type">char</span> *banner</code></em>);</pre>
diff --git a/docs/libnm-glib/html/libnm-glib.devhelp2 b/docs/libnm-glib/html/libnm-glib.devhelp2
index edbb4a26..08ca3a93 100644
--- a/docs/libnm-glib/html/libnm-glib.devhelp2
+++ b/docs/libnm-glib/html/libnm-glib.devhelp2
@@ -12,6 +12,10 @@
       <sub name="NMDeviceModem" link="NMDeviceModem.html"/>
       <sub name="NMDeviceBt" link="NMDeviceBt.html"/>
       <sub name="NMDeviceWimax" link="NMDeviceWimax.html"/>
+      <sub name="NMDeviceBond" link="NMDeviceBond.html"/>
+      <sub name="NMDeviceInfiniband" link="NMDeviceInfiniband.html"/>
+      <sub name="NMDeviceVlan" link="NMDeviceVlan.html"/>
+      <sub name="NMDeviceOlpcMesh" link="NMDeviceOlpcMesh.html"/>
       <sub name="NMWimaxNsp" link="NMWimaxNsp.html"/>
       <sub name="NMAccessPoint" link="NMAccessPoint.html"/>
       <sub name="NMIP4Config" link="NMIP4Config.html"/>
@@ -121,12 +125,15 @@
     <keyword type="struct" name="NMDeviceClass" link="NMDevice.html#NMDeviceClass"/>
     <keyword type="function" name="NMDeviceDeactivateFn ()" link="NMDevice.html#NMDeviceDeactivateFn"/>
     <keyword type="macro" name="NM_DEVICE_ACTIVE_CONNECTION" link="NMDevice.html#NM-DEVICE-ACTIVE-CONNECTION:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_AUTOCONNECT" link="NMDevice.html#NM-DEVICE-AUTOCONNECT:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_CAPABILITIES" link="NMDevice.html#NM-DEVICE-CAPABILITIES:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_DEVICE_TYPE" link="NMDevice.html#NM-DEVICE-DEVICE-TYPE:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_DHCP4_CONFIG" link="NMDevice.html#NM-DEVICE-DHCP4-CONFIG:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_DHCP6_CONFIG" link="NMDevice.html#NM-DEVICE-DHCP6-CONFIG:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_DRIVER" link="NMDevice.html#NM-DEVICE-DRIVER:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_DRIVER_VERSION" link="NMDevice.html#NM-DEVICE-DRIVER-VERSION:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_FIRMWARE_MISSING" link="NMDevice.html#NM-DEVICE-FIRMWARE-MISSING:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_FIRMWARE_VERSION" link="NMDevice.html#NM-DEVICE-FIRMWARE-VERSION:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_INTERFACE" link="NMDevice.html#NM-DEVICE-INTERFACE:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_IP4_CONFIG" link="NMDevice.html#NM-DEVICE-IP4-CONFIG:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_IP6_CONFIG" link="NMDevice.html#NM-DEVICE-IP6-CONFIG:CAPS"/>
@@ -137,16 +144,20 @@
     <keyword type="macro" name="NM_DEVICE_STATE_REASON" link="NMDevice.html#NM-DEVICE-STATE-REASON:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_UDI" link="NMDevice.html#NM-DEVICE-UDI:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_VENDOR" link="NMDevice.html#NM-DEVICE-VENDOR:CAPS"/>
+    <keyword type="function" name="nm_device_connection_compatible ()" link="NMDevice.html#nm-device-connection-compatible"/>
     <keyword type="function" name="nm_device_connection_valid ()" link="NMDevice.html#nm-device-connection-valid"/>
     <keyword type="function" name="nm_device_disconnect ()" link="NMDevice.html#nm-device-disconnect"/>
     <keyword type="function" name="nm_device_filter_connections ()" link="NMDevice.html#nm-device-filter-connections"/>
     <keyword type="function" name="nm_device_get_active_connection ()" link="NMDevice.html#nm-device-get-active-connection"/>
+    <keyword type="function" name="nm_device_get_autoconnect ()" link="NMDevice.html#nm-device-get-autoconnect"/>
     <keyword type="function" name="nm_device_get_capabilities ()" link="NMDevice.html#nm-device-get-capabilities"/>
     <keyword type="function" name="nm_device_get_device_type ()" link="NMDevice.html#nm-device-get-device-type"/>
     <keyword type="function" name="nm_device_get_dhcp4_config ()" link="NMDevice.html#nm-device-get-dhcp4-config"/>
     <keyword type="function" name="nm_device_get_dhcp6_config ()" link="NMDevice.html#nm-device-get-dhcp6-config"/>
     <keyword type="function" name="nm_device_get_driver ()" link="NMDevice.html#nm-device-get-driver"/>
+    <keyword type="function" name="nm_device_get_driver_version ()" link="NMDevice.html#nm-device-get-driver-version"/>
     <keyword type="function" name="nm_device_get_firmware_missing ()" link="NMDevice.html#nm-device-get-firmware-missing"/>
+    <keyword type="function" name="nm_device_get_firmware_version ()" link="NMDevice.html#nm-device-get-firmware-version"/>
     <keyword type="function" name="nm_device_get_iface ()" link="NMDevice.html#nm-device-get-iface"/>
     <keyword type="function" name="nm_device_get_ip4_config ()" link="NMDevice.html#nm-device-get-ip4-config"/>
     <keyword type="function" name="nm_device_get_ip6_config ()" link="NMDevice.html#nm-device-get-ip6-config"/>
@@ -158,13 +169,17 @@
     <keyword type="function" name="nm_device_get_udi ()" link="NMDevice.html#nm-device-get-udi"/>
     <keyword type="function" name="nm_device_get_vendor ()" link="NMDevice.html#nm-device-get-vendor"/>
     <keyword type="function" name="nm_device_new ()" link="NMDevice.html#nm-device-new"/>
+    <keyword type="function" name="nm_device_set_autoconnect ()" link="NMDevice.html#nm-device-set-autoconnect"/>
     <keyword type="property" name="The &quot;active-connection&quot; property" link="NMDevice.html#NMDevice--active-connection"/>
+    <keyword type="property" name="The &quot;autoconnect&quot; property" link="NMDevice.html#NMDevice--autoconnect"/>
     <keyword type="property" name="The &quot;capabilities&quot; property" link="NMDevice.html#NMDevice--capabilities"/>
     <keyword type="property" name="The &quot;device-type&quot; property" link="NMDevice.html#NMDevice--device-type"/>
     <keyword type="property" name="The &quot;dhcp4-config&quot; property" link="NMDevice.html#NMDevice--dhcp4-config"/>
     <keyword type="property" name="The &quot;dhcp6-config&quot; property" link="NMDevice.html#NMDevice--dhcp6-config"/>
     <keyword type="property" name="The &quot;driver&quot; property" link="NMDevice.html#NMDevice--driver"/>
+    <keyword type="property" name="The &quot;driver-version&quot; property" link="NMDevice.html#NMDevice--driver-version"/>
     <keyword type="property" name="The &quot;firmware-missing&quot; property" link="NMDevice.html#NMDevice--firmware-missing"/>
+    <keyword type="property" name="The &quot;firmware-version&quot; property" link="NMDevice.html#NMDevice--firmware-version"/>
     <keyword type="property" name="The &quot;interface&quot; property" link="NMDevice.html#NMDevice--interface"/>
     <keyword type="property" name="The &quot;ip-interface&quot; property" link="NMDevice.html#NMDevice--ip-interface"/>
     <keyword type="property" name="The &quot;ip4-config&quot; property" link="NMDevice.html#NMDevice--ip4-config"/>
@@ -178,10 +193,13 @@
     <keyword type="signal" name="The &quot;state-changed&quot; signal" link="NMDevice.html#NMDevice-state-changed"/>
     <keyword type="struct" name="NMDeviceEthernet" link="NMDeviceEthernet.html#NMDeviceEthernet-struct"/>
     <keyword type="struct" name="NMDeviceEthernetClass" link="NMDeviceEthernet.html#NMDeviceEthernetClass"/>
+    <keyword type="enum" name="enum NMDeviceEthernetError" link="NMDeviceEthernet.html#NMDeviceEthernetError"/>
     <keyword type="macro" name="NM_DEVICE_ETHERNET_CARRIER" link="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-CARRIER:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_ETHERNET_ERROR" link="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-ERROR:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_ETHERNET_HW_ADDRESS" link="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-HW-ADDRESS:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_ETHERNET_PERMANENT_HW_ADDRESS" link="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-PERMANENT-HW-ADDRESS:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_ETHERNET_SPEED" link="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-SPEED:CAPS"/>
+    <keyword type="function" name="nm_device_ethernet_error_quark ()" link="NMDeviceEthernet.html#nm-device-ethernet-error-quark"/>
     <keyword type="function" name="nm_device_ethernet_get_carrier ()" link="NMDeviceEthernet.html#nm-device-ethernet-get-carrier"/>
     <keyword type="function" name="nm_device_ethernet_get_hw_address ()" link="NMDeviceEthernet.html#nm-device-ethernet-get-hw-address"/>
     <keyword type="function" name="nm_device_ethernet_get_permanent_hw_address ()" link="NMDeviceEthernet.html#nm-device-ethernet-get-permanent-hw-address"/>
@@ -193,12 +211,15 @@
     <keyword type="property" name="The &quot;speed&quot; property" link="NMDeviceEthernet.html#NMDeviceEthernet--speed"/>
     <keyword type="struct" name="NMDeviceWifi" link="NMDeviceWifi.html#NMDeviceWifi-struct"/>
     <keyword type="struct" name="NMDeviceWifiClass" link="NMDeviceWifi.html#NMDeviceWifiClass"/>
+    <keyword type="enum" name="enum NMDeviceWifiError" link="NMDeviceWifi.html#NMDeviceWifiError"/>
     <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_BITRATE" link="NMDeviceWifi.html#NM-DEVICE-WIFI-BITRATE:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_WIFI_CAPABILITIES" link="NMDeviceWifi.html#NM-DEVICE-WIFI-CAPABILITIES:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_WIFI_ERROR" link="NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_WIFI_HW_ADDRESS" link="NMDeviceWifi.html#NM-DEVICE-WIFI-HW-ADDRESS:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_WIFI_MODE" link="NMDeviceWifi.html#NM-DEVICE-WIFI-MODE:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_WIFI_PERMANENT_HW_ADDRESS" link="NMDeviceWifi.html#NM-DEVICE-WIFI-PERMANENT-HW-ADDRESS:CAPS"/>
+    <keyword type="function" name="nm_device_wifi_error_quark ()" link="NMDeviceWifi.html#nm-device-wifi-error-quark"/>
     <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_active_access_point ()" link="NMDeviceWifi.html#nm-device-wifi-get-active-access-point"/>
@@ -218,17 +239,23 @@
     <keyword type="signal" name="The &quot;access-point-removed&quot; signal" link="NMDeviceWifi.html#NMDeviceWifi-access-point-removed"/>
     <keyword type="struct" name="NMDeviceModem" link="NMDeviceModem.html#NMDeviceModem-struct"/>
     <keyword type="struct" name="NMDeviceModemClass" link="NMDeviceModem.html#NMDeviceModemClass"/>
+    <keyword type="enum" name="enum NMDeviceModemError" link="NMDeviceModem.html#NMDeviceModemError"/>
     <keyword type="macro" name="NM_DEVICE_MODEM_CURRENT_CAPABILITIES" link="NMDeviceModem.html#NM-DEVICE-MODEM-CURRENT-CAPABILITIES:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_MODEM_ERROR" link="NMDeviceModem.html#NM-DEVICE-MODEM-ERROR:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_MODEM_MODEM_CAPABILITIES" link="NMDeviceModem.html#NM-DEVICE-MODEM-MODEM-CAPABILITIES:CAPS"/>
+    <keyword type="function" name="nm_device_modem_error_quark ()" link="NMDeviceModem.html#nm-device-modem-error-quark"/>
     <keyword type="function" name="nm_device_modem_get_current_capabilities ()" link="NMDeviceModem.html#nm-device-modem-get-current-capabilities"/>
     <keyword type="function" name="nm_device_modem_get_modem_capabilities ()" link="NMDeviceModem.html#nm-device-modem-get-modem-capabilities"/>
     <keyword type="property" name="The &quot;current-capabilities&quot; property" link="NMDeviceModem.html#NMDeviceModem--current-capabilities"/>
     <keyword type="property" name="The &quot;modem-capabilities&quot; property" link="NMDeviceModem.html#NMDeviceModem--modem-capabilities"/>
     <keyword type="struct" name="NMDeviceBt" link="NMDeviceBt.html#NMDeviceBt-struct"/>
     <keyword type="struct" name="NMDeviceBtClass" link="NMDeviceBt.html#NMDeviceBtClass"/>
+    <keyword type="enum" name="enum NMDeviceBtError" link="NMDeviceBt.html#NMDeviceBtError"/>
     <keyword type="macro" name="NM_DEVICE_BT_CAPABILITIES" link="NMDeviceBt.html#NM-DEVICE-BT-CAPABILITIES:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_BT_ERROR" link="NMDeviceBt.html#NM-DEVICE-BT-ERROR:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_BT_HW_ADDRESS" link="NMDeviceBt.html#NM-DEVICE-BT-HW-ADDRESS:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_BT_NAME" link="NMDeviceBt.html#NM-DEVICE-BT-NAME:CAPS"/>
+    <keyword type="function" name="nm_device_bt_error_quark ()" link="NMDeviceBt.html#nm-device-bt-error-quark"/>
     <keyword type="function" name="nm_device_bt_get_capabilities ()" link="NMDeviceBt.html#nm-device-bt-get-capabilities"/>
     <keyword type="function" name="nm_device_bt_get_hw_address ()" link="NMDeviceBt.html#nm-device-bt-get-hw-address"/>
     <keyword type="function" name="nm_device_bt_get_name ()" link="NMDeviceBt.html#nm-device-bt-get-name"/>
@@ -238,13 +265,16 @@
     <keyword type="property" name="The &quot;name&quot; property" link="NMDeviceBt.html#NMDeviceBt--name"/>
     <keyword type="struct" name="NMDeviceWimax" link="NMDeviceWimax.html#NMDeviceWimax-struct"/>
     <keyword type="struct" name="NMDeviceWimaxClass" link="NMDeviceWimax.html#NMDeviceWimaxClass"/>
+    <keyword type="enum" name="enum NMDeviceWimaxError" link="NMDeviceWimax.html#NMDeviceWimaxError"/>
     <keyword type="macro" name="NM_DEVICE_WIMAX_ACTIVE_NSP" link="NMDeviceWimax.html#NM-DEVICE-WIMAX-ACTIVE-NSP:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_WIMAX_BSID" link="NMDeviceWimax.html#NM-DEVICE-WIMAX-BSID:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_WIMAX_CENTER_FREQUENCY" link="NMDeviceWimax.html#NM-DEVICE-WIMAX-CENTER-FREQUENCY:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_WIMAX_CINR" link="NMDeviceWimax.html#NM-DEVICE-WIMAX-CINR:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_WIMAX_ERROR" link="NMDeviceWimax.html#NM-DEVICE-WIMAX-ERROR:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_WIMAX_HW_ADDRESS" link="NMDeviceWimax.html#NM-DEVICE-WIMAX-HW-ADDRESS:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_WIMAX_RSSI" link="NMDeviceWimax.html#NM-DEVICE-WIMAX-RSSI:CAPS"/>
     <keyword type="macro" name="NM_DEVICE_WIMAX_TX_POWER" link="NMDeviceWimax.html#NM-DEVICE-WIMAX-TX-POWER:CAPS"/>
+    <keyword type="function" name="nm_device_wimax_error_quark ()" link="NMDeviceWimax.html#nm-device-wimax-error-quark"/>
     <keyword type="function" name="nm_device_wimax_get_active_nsp ()" link="NMDeviceWimax.html#nm-device-wimax-get-active-nsp"/>
     <keyword type="function" name="nm_device_wimax_get_bsid ()" link="NMDeviceWimax.html#nm-device-wimax-get-bsid"/>
     <keyword type="function" name="nm_device_wimax_get_center_frequency ()" link="NMDeviceWimax.html#nm-device-wimax-get-center-frequency"/>
@@ -264,6 +294,60 @@
     <keyword type="property" name="The &quot;tx-power&quot; property" link="NMDeviceWimax.html#NMDeviceWimax--tx-power"/>
     <keyword type="signal" name="The &quot;nsp-added&quot; signal" link="NMDeviceWimax.html#NMDeviceWimax-nsp-added"/>
     <keyword type="signal" name="The &quot;nsp-removed&quot; signal" link="NMDeviceWimax.html#NMDeviceWimax-nsp-removed"/>
+    <keyword type="struct" name="NMDeviceBond" link="NMDeviceBond.html#NMDeviceBond-struct"/>
+    <keyword type="struct" name="NMDeviceBondClass" link="NMDeviceBond.html#NMDeviceBondClass"/>
+    <keyword type="enum" name="enum NMDeviceBondError" link="NMDeviceBond.html#NMDeviceBondError"/>
+    <keyword type="macro" name="NM_DEVICE_BOND_CARRIER" link="NMDeviceBond.html#NM-DEVICE-BOND-CARRIER:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_BOND_ERROR" link="NMDeviceBond.html#NM-DEVICE-BOND-ERROR:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_BOND_HW_ADDRESS" link="NMDeviceBond.html#NM-DEVICE-BOND-HW-ADDRESS:CAPS"/>
+    <keyword type="function" name="nm_device_bond_error_quark ()" link="NMDeviceBond.html#nm-device-bond-error-quark"/>
+    <keyword type="function" name="nm_device_bond_get_carrier ()" link="NMDeviceBond.html#nm-device-bond-get-carrier"/>
+    <keyword type="function" name="nm_device_bond_get_hw_address ()" link="NMDeviceBond.html#nm-device-bond-get-hw-address"/>
+    <keyword type="function" name="nm_device_bond_new ()" link="NMDeviceBond.html#nm-device-bond-new"/>
+    <keyword type="property" name="The &quot;carrier&quot; property" link="NMDeviceBond.html#NMDeviceBond--carrier"/>
+    <keyword type="property" name="The &quot;hw-address&quot; property" link="NMDeviceBond.html#NMDeviceBond--hw-address"/>
+    <keyword type="struct" name="NMDeviceInfiniband" link="NMDeviceInfiniband.html#NMDeviceInfiniband-struct"/>
+    <keyword type="struct" name="NMDeviceInfinibandClass" link="NMDeviceInfiniband.html#NMDeviceInfinibandClass"/>
+    <keyword type="enum" name="enum NMDeviceInfinibandError" link="NMDeviceInfiniband.html#NMDeviceInfinibandError"/>
+    <keyword type="macro" name="NM_DEVICE_INFINIBAND_CARRIER" link="NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-CARRIER:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_INFINIBAND_ERROR" link="NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-ERROR:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_INFINIBAND_HW_ADDRESS" link="NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-HW-ADDRESS:CAPS"/>
+    <keyword type="function" name="nm_device_infiniband_error_quark ()" link="NMDeviceInfiniband.html#nm-device-infiniband-error-quark"/>
+    <keyword type="function" name="nm_device_infiniband_get_carrier ()" link="NMDeviceInfiniband.html#nm-device-infiniband-get-carrier"/>
+    <keyword type="function" name="nm_device_infiniband_get_hw_address ()" link="NMDeviceInfiniband.html#nm-device-infiniband-get-hw-address"/>
+    <keyword type="function" name="nm_device_infiniband_new ()" link="NMDeviceInfiniband.html#nm-device-infiniband-new"/>
+    <keyword type="property" name="The &quot;carrier&quot; property" link="NMDeviceInfiniband.html#NMDeviceInfiniband--carrier"/>
+    <keyword type="property" name="The &quot;hw-address&quot; property" link="NMDeviceInfiniband.html#NMDeviceInfiniband--hw-address"/>
+    <keyword type="struct" name="NMDeviceVlan" link="NMDeviceVlan.html#NMDeviceVlan-struct"/>
+    <keyword type="struct" name="NMDeviceVlanClass" link="NMDeviceVlan.html#NMDeviceVlanClass"/>
+    <keyword type="enum" name="enum NMDeviceVlanError" link="NMDeviceVlan.html#NMDeviceVlanError"/>
+    <keyword type="macro" name="NM_DEVICE_VLAN_CARRIER" link="NMDeviceVlan.html#NM-DEVICE-VLAN-CARRIER:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_VLAN_ERROR" link="NMDeviceVlan.html#NM-DEVICE-VLAN-ERROR:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_VLAN_HW_ADDRESS" link="NMDeviceVlan.html#NM-DEVICE-VLAN-HW-ADDRESS:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_VLAN_VLAN_ID" link="NMDeviceVlan.html#NM-DEVICE-VLAN-VLAN-ID:CAPS"/>
+    <keyword type="function" name="nm_device_vlan_error_quark ()" link="NMDeviceVlan.html#nm-device-vlan-error-quark"/>
+    <keyword type="function" name="nm_device_vlan_get_carrier ()" link="NMDeviceVlan.html#nm-device-vlan-get-carrier"/>
+    <keyword type="function" name="nm_device_vlan_get_hw_address ()" link="NMDeviceVlan.html#nm-device-vlan-get-hw-address"/>
+    <keyword type="function" name="nm_device_vlan_get_vlan_id ()" link="NMDeviceVlan.html#nm-device-vlan-get-vlan-id"/>
+    <keyword type="function" name="nm_device_vlan_new ()" link="NMDeviceVlan.html#nm-device-vlan-new"/>
+    <keyword type="property" name="The &quot;carrier&quot; property" link="NMDeviceVlan.html#NMDeviceVlan--carrier"/>
+    <keyword type="property" name="The &quot;hw-address&quot; property" link="NMDeviceVlan.html#NMDeviceVlan--hw-address"/>
+    <keyword type="property" name="The &quot;vlan-id&quot; property" link="NMDeviceVlan.html#NMDeviceVlan--vlan-id"/>
+    <keyword type="struct" name="NMDeviceOlpcMesh" link="NMDeviceOlpcMesh.html#NMDeviceOlpcMesh-struct"/>
+    <keyword type="struct" name="NMDeviceOlpcMeshClass" link="NMDeviceOlpcMesh.html#NMDeviceOlpcMeshClass"/>
+    <keyword type="enum" name="enum NMDeviceOlpcMeshError" link="NMDeviceOlpcMesh.html#NMDeviceOlpcMeshError"/>
+    <keyword type="macro" name="NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL" link="NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-ACTIVE-CHANNEL:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_OLPC_MESH_COMPANION" link="NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-COMPANION:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_OLPC_MESH_ERROR" link="NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-ERROR:CAPS"/>
+    <keyword type="macro" name="NM_DEVICE_OLPC_MESH_HW_ADDRESS" link="NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-HW-ADDRESS:CAPS"/>
+    <keyword type="function" name="nm_device_olpc_mesh_error_quark ()" link="NMDeviceOlpcMesh.html#nm-device-olpc-mesh-error-quark"/>
+    <keyword type="function" name="nm_device_olpc_mesh_get_active_channel ()" link="NMDeviceOlpcMesh.html#nm-device-olpc-mesh-get-active-channel"/>
+    <keyword type="function" name="nm_device_olpc_mesh_get_companion ()" link="NMDeviceOlpcMesh.html#nm-device-olpc-mesh-get-companion"/>
+    <keyword type="function" name="nm_device_olpc_mesh_get_hw_address ()" link="NMDeviceOlpcMesh.html#nm-device-olpc-mesh-get-hw-address"/>
+    <keyword type="function" name="nm_device_olpc_mesh_new ()" link="NMDeviceOlpcMesh.html#nm-device-olpc-mesh-new"/>
+    <keyword type="property" name="The &quot;active-channel&quot; property" link="NMDeviceOlpcMesh.html#NMDeviceOlpcMesh--active-channel"/>
+    <keyword type="property" name="The &quot;companion&quot; property" link="NMDeviceOlpcMesh.html#NMDeviceOlpcMesh--companion"/>
+    <keyword type="property" name="The &quot;hw-address&quot; property" link="NMDeviceOlpcMesh.html#NMDeviceOlpcMesh--hw-address"/>
     <keyword type="struct" name="NMWimaxNsp" link="NMWimaxNsp.html#NMWimaxNsp-struct"/>
     <keyword type="struct" name="NMWimaxNspClass" link="NMWimaxNsp.html#NMWimaxNspClass"/>
     <keyword type="enum" name="enum NMWimaxNspNetworkType" link="NMWimaxNsp.html#NMWimaxNspNetworkType"/>
@@ -363,12 +447,16 @@
     <keyword type="property" name="The &quot;options&quot; property" link="NMDHCP6Config.html#NMDHCP6Config--options"/>
     <keyword type="struct" name="NMObject" link="NMObject.html#NMObject-struct"/>
     <keyword type="struct" name="NMObjectClass" link="NMObject.html#NMObjectClass"/>
+    <keyword type="enum" name="enum NMObjectError" link="NMObject.html#NMObjectError"/>
     <keyword type="macro" name="NM_OBJECT_DBUS_CONNECTION" link="NMObject.html#NM-OBJECT-DBUS-CONNECTION:CAPS"/>
     <keyword type="macro" name="NM_OBJECT_DBUS_PATH" link="NMObject.html#NM-OBJECT-DBUS-PATH:CAPS"/>
+    <keyword type="macro" name="NM_OBJECT_ERROR" link="NMObject.html#NM-OBJECT-ERROR:CAPS"/>
+    <keyword type="function" name="nm_object_error_quark ()" link="NMObject.html#nm-object-error-quark"/>
     <keyword type="function" name="nm_object_get_connection ()" link="NMObject.html#nm-object-get-connection"/>
     <keyword type="function" name="nm_object_get_path ()" link="NMObject.html#nm-object-get-path"/>
     <keyword type="property" name="The &quot;dbus-connection&quot; property" link="NMObject.html#NMObject--dbus-connection"/>
     <keyword type="property" name="The &quot;dbus-path&quot; property" link="NMObject.html#NMObject--dbus-path"/>
+    <keyword type="signal" name="The &quot;object-creation-failed&quot; signal" link="NMObject.html#NMObject-object-creation-failed"/>
     <keyword type="struct" name="NMRemoteConnection" link="NMRemoteConnection.html#NMRemoteConnection-struct"/>
     <keyword type="struct" name="NMRemoteConnectionClass" link="NMRemoteConnection.html#NMRemoteConnectionClass"/>
     <keyword type="function" name="NMRemoteConnectionCommitFunc ()" link="NMRemoteConnection.html#NMRemoteConnectionCommitFunc"/>
@@ -421,9 +509,11 @@
     <keyword type="macro" name="NM_SECRET_AGENT_AUTO_REGISTER" link="NMSecretAgent.html#NM-SECRET-AGENT-AUTO-REGISTER:CAPS"/>
     <keyword type="macro" name="NM_SECRET_AGENT_ERROR" link="NMSecretAgent.html#NM-SECRET-AGENT-ERROR:CAPS"/>
     <keyword type="macro" name="NM_SECRET_AGENT_IDENTIFIER" link="NMSecretAgent.html#NM-SECRET-AGENT-IDENTIFIER:CAPS"/>
+    <keyword type="macro" name="NM_SECRET_AGENT_REGISTERED" link="NMSecretAgent.html#NM-SECRET-AGENT-REGISTERED:CAPS"/>
     <keyword type="macro" name="NM_SECRET_AGENT_REGISTRATION_RESULT" link="NMSecretAgent.html#NM-SECRET-AGENT-REGISTRATION-RESULT:CAPS"/>
     <keyword type="function" name="nm_secret_agent_delete_secrets ()" link="NMSecretAgent.html#nm-secret-agent-delete-secrets"/>
     <keyword type="function" name="nm_secret_agent_error_quark ()" link="NMSecretAgent.html#nm-secret-agent-error-quark"/>
+    <keyword type="function" name="nm_secret_agent_get_registered ()" link="NMSecretAgent.html#nm-secret-agent-get-registered"/>
     <keyword type="function" name="nm_secret_agent_get_secrets ()" link="NMSecretAgent.html#nm-secret-agent-get-secrets"/>
     <keyword type="function" name="nm_secret_agent_register ()" link="NMSecretAgent.html#nm-secret-agent-register"/>
     <keyword type="function" name="nm_secret_agent_save_secrets ()" link="NMSecretAgent.html#nm-secret-agent-save-secrets"/>
@@ -452,7 +542,9 @@
     <keyword type="function" name="nm_vpn_plugin_failure ()" link="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-failure"/>
     <keyword type="function" name="nm_vpn_plugin_get_connection ()" link="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-get-connection"/>
     <keyword type="function" name="nm_vpn_plugin_get_state ()" link="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-get-state"/>
+    <keyword type="function" name="nm_vpn_plugin_set_config ()" link="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-config"/>
     <keyword type="function" name="nm_vpn_plugin_set_ip4_config ()" link="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-ip4-config"/>
+    <keyword type="function" name="nm_vpn_plugin_set_ip6_config ()" link="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-ip6-config"/>
     <keyword type="function" name="nm_vpn_plugin_set_login_banner ()" link="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-login-banner"/>
     <keyword type="function" name="nm_vpn_plugin_set_state ()" link="libnm-glib-NMVPNPlugin.html#nm-vpn-plugin-set-state"/>
     <keyword type="function" name="NMVpnPluginUiFactory ()" link="libnm-glib-NMVpnPluginUiWidget.html#NMVpnPluginUiFactory"/>
@@ -477,11 +569,58 @@
     <keyword type="function" name="nm_vpn_plugin_ui_widget_interface_update_connection ()" link="libnm-glib-NMVpnPluginUiWidget.html#nm-vpn-plugin-ui-widget-interface-update-connection"/>
     <keyword type="function" name="nm_vpn_plugin_utils_get_secret_flags ()" link="libnm-glib-nm-vpn-plugin-utils.html#nm-vpn-plugin-utils-get-secret-flags"/>
     <keyword type="function" name="nm_vpn_plugin_utils_read_vpn_details ()" link="libnm-glib-nm-vpn-plugin-utils.html#nm-vpn-plugin-utils-read-vpn-details"/>
+    <keyword type="constant" name="NM_DEVICE_ETHERNET_ERROR_UNKNOWN" link="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-ERROR-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_ETHERNET_ERROR_NOT_ETHERNET_CONNECTION" link="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-ERROR-NOT-ETHERNET-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_ETHERNET_ERROR_INVALID_ETHERNET_CONNECTION" link="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-ERROR-INVALID-ETHERNET-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_ETHERNET_ERROR_INVALID_DEVICE_MAC" link="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-ERROR-INVALID-DEVICE-MAC:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_ETHERNET_ERROR_MAC_MISMATCH" link="NMDeviceEthernet.html#NM-DEVICE-ETHERNET-ERROR-MAC-MISMATCH:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_WIFI_ERROR_UNKNOWN" link="NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_WIFI_ERROR_NOT_WIFI_CONNECTION" link="NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR-NOT-WIFI-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_WIFI_ERROR_INVALID_WIFI_CONNECTION" link="NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR-INVALID-WIFI-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_WIFI_ERROR_INVALID_DEVICE_MAC" link="NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR-INVALID-DEVICE-MAC:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_WIFI_ERROR_MAC_MISMATCH" link="NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR-MAC-MISMATCH:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_WIFI_ERROR_MISSING_DEVICE_WPA_CAPS" link="NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR-MISSING-DEVICE-WPA-CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_WIFI_ERROR_MISSING_DEVICE_RSN_CAPS" link="NMDeviceWifi.html#NM-DEVICE-WIFI-ERROR-MISSING-DEVICE-RSN-CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_MODEM_ERROR_UNKNOWN" link="NMDeviceModem.html#NM-DEVICE-MODEM-ERROR-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_MODEM_ERROR_NOT_MODEM_CONNECTION" link="NMDeviceModem.html#NM-DEVICE-MODEM-ERROR-NOT-MODEM-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_MODEM_ERROR_INVALID_MODEM_CONNECTION" link="NMDeviceModem.html#NM-DEVICE-MODEM-ERROR-INVALID-MODEM-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_MODEM_ERROR_MISSING_DEVICE_CAPS" link="NMDeviceModem.html#NM-DEVICE-MODEM-ERROR-MISSING-DEVICE-CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_BT_ERROR_UNKNOWN" link="NMDeviceBt.html#NM-DEVICE-BT-ERROR-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_BT_ERROR_NOT_BT_CONNECTION" link="NMDeviceBt.html#NM-DEVICE-BT-ERROR-NOT-BT-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_BT_ERROR_INVALID_BT_CONNECTION" link="NMDeviceBt.html#NM-DEVICE-BT-ERROR-INVALID-BT-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_BT_ERROR_INVALID_DEVICE_MAC" link="NMDeviceBt.html#NM-DEVICE-BT-ERROR-INVALID-DEVICE-MAC:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_BT_ERROR_MAC_MISMATCH" link="NMDeviceBt.html#NM-DEVICE-BT-ERROR-MAC-MISMATCH:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_BT_ERROR_MISSING_DEVICE_CAPS" link="NMDeviceBt.html#NM-DEVICE-BT-ERROR-MISSING-DEVICE-CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_WIMAX_ERROR_UNKNOWN" link="NMDeviceWimax.html#NM-DEVICE-WIMAX-ERROR-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_WIMAX_ERROR_NOT_WIMAX_CONNECTION" link="NMDeviceWimax.html#NM-DEVICE-WIMAX-ERROR-NOT-WIMAX-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_WIMAX_ERROR_INVALID_WIMAX_CONNECTION" link="NMDeviceWimax.html#NM-DEVICE-WIMAX-ERROR-INVALID-WIMAX-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_WIMAX_ERROR_INVALID_DEVICE_MAC" link="NMDeviceWimax.html#NM-DEVICE-WIMAX-ERROR-INVALID-DEVICE-MAC:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_WIMAX_ERROR_MAC_MISMATCH" link="NMDeviceWimax.html#NM-DEVICE-WIMAX-ERROR-MAC-MISMATCH:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_BOND_ERROR_UNKNOWN" link="NMDeviceBond.html#NM-DEVICE-BOND-ERROR-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_BOND_ERROR_NOT_BOND_CONNECTION" link="NMDeviceBond.html#NM-DEVICE-BOND-ERROR-NOT-BOND-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_BOND_ERROR_INVALID_BOND_CONNECTION" link="NMDeviceBond.html#NM-DEVICE-BOND-ERROR-INVALID-BOND-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_BOND_ERROR_INTERFACE_MISMATCH" link="NMDeviceBond.html#NM-DEVICE-BOND-ERROR-INTERFACE-MISMATCH:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_INFINIBAND_ERROR_UNKNOWN" link="NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-ERROR-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_INFINIBAND_ERROR_NOT_INFINIBAND_CONNECTION" link="NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-ERROR-NOT-INFINIBAND-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_INFINIBAND_ERROR_INVALID_INFINIBAND_CONNECTION" link="NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-ERROR-INVALID-INFINIBAND-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_INFINIBAND_ERROR_INVALID_DEVICE_MAC" link="NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-ERROR-INVALID-DEVICE-MAC:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_INFINIBAND_ERROR_MAC_MISMATCH" link="NMDeviceInfiniband.html#NM-DEVICE-INFINIBAND-ERROR-MAC-MISMATCH:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_VLAN_ERROR_UNKNOWN" link="NMDeviceVlan.html#NM-DEVICE-VLAN-ERROR-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_VLAN_ERROR_NOT_VLAN_CONNECTION" link="NMDeviceVlan.html#NM-DEVICE-VLAN-ERROR-NOT-VLAN-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_VLAN_ERROR_INVALID_VLAN_CONNECTION" link="NMDeviceVlan.html#NM-DEVICE-VLAN-ERROR-INVALID-VLAN-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_VLAN_ERROR_ID_MISMATCH" link="NMDeviceVlan.html#NM-DEVICE-VLAN-ERROR-ID-MISMATCH:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_VLAN_ERROR_INTERFACE_MISMATCH" link="NMDeviceVlan.html#NM-DEVICE-VLAN-ERROR-INTERFACE-MISMATCH:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_OLPC_MESH_ERROR_UNKNOWN" link="NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-ERROR-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_OLPC_MESH_ERROR_NOT_OLPC_MESH_CONNECTION" link="NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-ERROR-NOT-OLPC-MESH-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_DEVICE_OLPC_MESH_ERROR_INVALID_OLPC_MESH_CONNECTION" link="NMDeviceOlpcMesh.html#NM-DEVICE-OLPC-MESH-ERROR-INVALID-OLPC-MESH-CONNECTION:CAPS"/>
+    <keyword type="constant" name="NM_OBJECT_ERROR_UNKNOWN" link="NMObject.html#NM-OBJECT-ERROR-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="NM_OBJECT_ERROR_OBJECT_CREATION_FAILURE" link="NMObject.html#NM-OBJECT-ERROR-OBJECT-CREATION-FAILURE:CAPS"/>
     <keyword type="constant" name="NM_REMOTE_SETTINGS_ERROR_UNKNOWN" link="NMRemoteSettings.html#NM-REMOTE-SETTINGS-ERROR-UNKNOWN:CAPS"/>
     <keyword type="constant" name="NM_REMOTE_SETTINGS_ERROR_CONNECTION_REMOVED" link="NMRemoteSettings.html#NM-REMOTE-SETTINGS-ERROR-CONNECTION-REMOVED:CAPS"/>
     <keyword type="constant" name="NM_REMOTE_SETTINGS_ERROR_CONNECTION_UNAVAILABLE" link="NMRemoteSettings.html#NM-REMOTE-SETTINGS-ERROR-CONNECTION-UNAVAILABLE:CAPS"/>
     <keyword type="constant" name="NM_SECRET_AGENT_GET_SECRETS_FLAG_NONE" link="NMSecretAgent.html#NM-SECRET-AGENT-GET-SECRETS-FLAG-NONE:CAPS"/>
     <keyword type="constant" name="NM_SECRET_AGENT_GET_SECRETS_FLAG_ALLOW_INTERACTION" link="NMSecretAgent.html#NM-SECRET-AGENT-GET-SECRETS-FLAG-ALLOW-INTERACTION:CAPS"/>
     <keyword type="constant" name="NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW" link="NMSecretAgent.html#NM-SECRET-AGENT-GET-SECRETS-FLAG-REQUEST-NEW:CAPS"/>
+    <keyword type="constant" name="NM_SECRET_AGENT_GET_SECRETS_FLAG_USER_REQUESTED" link="NMSecretAgent.html#NM-SECRET-AGENT-GET-SECRETS-FLAG-USER-REQUESTED:CAPS"/>
   </functions>
 </book>
diff --git a/docs/libnm-glib/html/object-tree.html b/docs/libnm-glib/html/object-tree.html
index bbc78129..40bce23a 100644
--- a/docs/libnm-glib/html/object-tree.html
+++ b/docs/libnm-glib/html/object-tree.html
@@ -32,10 +32,10 @@
                 <a class="link" href="NMDeviceModem.html" title="NMDeviceModem">NMDeviceModem</a>
                 <a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a>
                 <a class="link" href="NMDeviceWimax.html" title="NMDeviceWimax">NMDeviceWimax</a>
-                NMDeviceOlpcMesh
-                NMDeviceInfiniband
-                NMDeviceBond
-                NMDeviceVlan
+                <a class="link" href="NMDeviceOlpcMesh.html" title="NMDeviceOlpcMesh">NMDeviceOlpcMesh</a>
+                <a class="link" href="NMDeviceInfiniband.html" title="NMDeviceInfiniband">NMDeviceInfiniband</a>
+                <a class="link" href="NMDeviceBond.html" title="NMDeviceBond">NMDeviceBond</a>
+                <a class="link" href="NMDeviceVlan.html" title="NMDeviceVlan">NMDeviceVlan</a>
             <a class="link" href="NMWimaxNsp.html" title="NMWimaxNsp">NMWimaxNsp</a>
             <a class="link" href="NMAccessPoint.html" title="NMAccessPoint">NMAccessPoint</a>
             <a class="link" href="NMIP4Config.html" title="NMIP4Config">NMIP4Config</a>
diff --git a/docs/libnm-glib/libnm-glib-docs.xml b/docs/libnm-glib/libnm-glib-docs.xml
index 92dad87c..7f855aa0 100644
--- a/docs/libnm-glib/libnm-glib-docs.xml
+++ b/docs/libnm-glib/libnm-glib-docs.xml
@@ -88,6 +88,10 @@
     <xi:include href="xml/nm-device-modem.xml"/>
     <xi:include href="xml/nm-device-bt.xml"/>
     <xi:include href="xml/nm-device-wimax.xml"/>
+    <xi:include href="xml/nm-device-bond.xml"/>
+    <xi:include href="xml/nm-device-infiniband.xml"/>
+    <xi:include href="xml/nm-device-vlan.xml"/>
+    <xi:include href="xml/nm-device-olpc-mesh.xml"/>
     <xi:include href="xml/nm-wimax-nsp.xml"/>
     <xi:include href="xml/nm-access-point.xml"/>
     <xi:include href="xml/nm-ip4-config.xml"/>
diff --git a/docs/libnm-glib/libnm-glib-sections.txt b/docs/libnm-glib/libnm-glib-sections.txt
index 25ba7b85..1ba78796 100644
--- a/docs/libnm-glib/libnm-glib-sections.txt
+++ b/docs/libnm-glib/libnm-glib-sections.txt
@@ -136,12 +136,15 @@ NMDevice
 NMDeviceClass
 NMDeviceDeactivateFn
 NM_DEVICE_ACTIVE_CONNECTION
+NM_DEVICE_AUTOCONNECT
 NM_DEVICE_CAPABILITIES
 NM_DEVICE_DEVICE_TYPE
 NM_DEVICE_DHCP4_CONFIG
 NM_DEVICE_DHCP6_CONFIG
 NM_DEVICE_DRIVER
+NM_DEVICE_DRIVER_VERSION
 NM_DEVICE_FIRMWARE_MISSING
+NM_DEVICE_FIRMWARE_VERSION
 NM_DEVICE_INTERFACE
 NM_DEVICE_IP4_CONFIG
 NM_DEVICE_IP6_CONFIG
@@ -152,16 +155,20 @@ NM_DEVICE_STATE
 NM_DEVICE_STATE_REASON
 NM_DEVICE_UDI
 NM_DEVICE_VENDOR
+nm_device_connection_compatible
 nm_device_connection_valid
 nm_device_disconnect
 nm_device_filter_connections
 nm_device_get_active_connection
+nm_device_get_autoconnect
 nm_device_get_capabilities
 nm_device_get_device_type
 nm_device_get_dhcp4_config
 nm_device_get_dhcp6_config
 nm_device_get_driver
+nm_device_get_driver_version
 nm_device_get_firmware_missing
+nm_device_get_firmware_version
 nm_device_get_iface
 nm_device_get_ip4_config
 nm_device_get_ip6_config
@@ -173,6 +180,7 @@ nm_device_get_state_reason
 nm_device_get_udi
 nm_device_get_vendor
 nm_device_new
+nm_device_set_autoconnect
 <SUBSECTION Standard>
 NM_DEVICE
 NM_DEVICE_CLASS
@@ -184,12 +192,36 @@ nm_device_get_type
 </SECTION>
 
 <SECTION>
+<FILE>nm-device-adsl</FILE>
+<TITLE>NMDeviceAdsl</TITLE>
+NMDeviceAdsl
+NMDeviceAdslClass
+NMDeviceAdslError
+NM_DEVICE_ADSL_CARRIER
+NM_DEVICE_ADSL_ERROR
+nm_device_adsl_error_quark
+nm_device_adsl_get_carrier
+nm_device_adsl_new
+<SUBSECTION Standard>
+NM_DEVICE_ADSL
+NM_DEVICE_ADSL_CLASS
+NM_DEVICE_ADSL_GET_CLASS
+NM_IS_DEVICE_ADSL
+NM_IS_DEVICE_ADSL_CLASS
+NM_TYPE_DEVICE_ADSL
+nm_device_adsl_get_type
+</SECTION>
+
+<SECTION>
 <FILE>nm-device-bond</FILE>
 <TITLE>NMDeviceBond</TITLE>
 NMDeviceBond
 NMDeviceBondClass
+NMDeviceBondError
 NM_DEVICE_BOND_CARRIER
+NM_DEVICE_BOND_ERROR
 NM_DEVICE_BOND_HW_ADDRESS
+nm_device_bond_error_quark
 nm_device_bond_get_carrier
 nm_device_bond_get_hw_address
 nm_device_bond_new
@@ -208,9 +240,12 @@ nm_device_bond_get_type
 <TITLE>NMDeviceBt</TITLE>
 NMDeviceBt
 NMDeviceBtClass
+NMDeviceBtError
 NM_DEVICE_BT_CAPABILITIES
+NM_DEVICE_BT_ERROR
 NM_DEVICE_BT_HW_ADDRESS
 NM_DEVICE_BT_NAME
+nm_device_bt_error_quark
 nm_device_bt_get_capabilities
 nm_device_bt_get_hw_address
 nm_device_bt_get_name
@@ -230,10 +265,13 @@ nm_device_bt_get_type
 <TITLE>NMDeviceEthernet</TITLE>
 NMDeviceEthernet
 NMDeviceEthernetClass
+NMDeviceEthernetError
 NM_DEVICE_ETHERNET_CARRIER
+NM_DEVICE_ETHERNET_ERROR
 NM_DEVICE_ETHERNET_HW_ADDRESS
 NM_DEVICE_ETHERNET_PERMANENT_HW_ADDRESS
 NM_DEVICE_ETHERNET_SPEED
+nm_device_ethernet_error_quark
 nm_device_ethernet_get_carrier
 nm_device_ethernet_get_hw_address
 nm_device_ethernet_get_permanent_hw_address
@@ -254,8 +292,11 @@ nm_device_ethernet_get_type
 <TITLE>NMDeviceInfiniband</TITLE>
 NMDeviceInfiniband
 NMDeviceInfinibandClass
+NMDeviceInfinibandError
 NM_DEVICE_INFINIBAND_CARRIER
+NM_DEVICE_INFINIBAND_ERROR
 NM_DEVICE_INFINIBAND_HW_ADDRESS
+nm_device_infiniband_error_quark
 nm_device_infiniband_get_carrier
 nm_device_infiniband_get_hw_address
 nm_device_infiniband_new
@@ -270,17 +311,15 @@ nm_device_infiniband_get_type
 </SECTION>
 
 <SECTION>
-<FILE>nm-device-infiniband-bindings</FILE>
-DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManager_Device_Infiniband
-</SECTION>
-
-<SECTION>
 <FILE>nm-device-modem</FILE>
 <TITLE>NMDeviceModem</TITLE>
 NMDeviceModem
 NMDeviceModemClass
+NMDeviceModemError
 NM_DEVICE_MODEM_CURRENT_CAPABILITIES
+NM_DEVICE_MODEM_ERROR
 NM_DEVICE_MODEM_MODEM_CAPABILITIES
+nm_device_modem_error_quark
 nm_device_modem_get_current_capabilities
 nm_device_modem_get_modem_capabilities
 <SUBSECTION Standard>
@@ -298,9 +337,12 @@ nm_device_modem_get_type
 <TITLE>NMDeviceOlpcMesh</TITLE>
 NMDeviceOlpcMesh
 NMDeviceOlpcMeshClass
+NMDeviceOlpcMeshError
 NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL
 NM_DEVICE_OLPC_MESH_COMPANION
+NM_DEVICE_OLPC_MESH_ERROR
 NM_DEVICE_OLPC_MESH_HW_ADDRESS
+nm_device_olpc_mesh_error_quark
 nm_device_olpc_mesh_get_active_channel
 nm_device_olpc_mesh_get_companion
 nm_device_olpc_mesh_get_hw_address
@@ -320,9 +362,12 @@ nm_device_olpc_mesh_get_type
 <TITLE>NMDeviceVlan</TITLE>
 NMDeviceVlan
 NMDeviceVlanClass
+NMDeviceVlanError
 NM_DEVICE_VLAN_CARRIER
+NM_DEVICE_VLAN_ERROR
 NM_DEVICE_VLAN_HW_ADDRESS
 NM_DEVICE_VLAN_VLAN_ID
+nm_device_vlan_error_quark
 nm_device_vlan_get_carrier
 nm_device_vlan_get_hw_address
 nm_device_vlan_get_vlan_id
@@ -342,12 +387,15 @@ nm_device_vlan_get_type
 <TITLE>NMDeviceWifi</TITLE>
 NMDeviceWifi
 NMDeviceWifiClass
+NMDeviceWifiError
 NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT
 NM_DEVICE_WIFI_BITRATE
 NM_DEVICE_WIFI_CAPABILITIES
+NM_DEVICE_WIFI_ERROR
 NM_DEVICE_WIFI_HW_ADDRESS
 NM_DEVICE_WIFI_MODE
 NM_DEVICE_WIFI_PERMANENT_HW_ADDRESS
+nm_device_wifi_error_quark
 nm_device_wifi_get_access_point_by_path
 nm_device_wifi_get_access_points
 nm_device_wifi_get_active_access_point
@@ -372,13 +420,16 @@ nm_device_wifi_get_type
 <TITLE>NMDeviceWimax</TITLE>
 NMDeviceWimax
 NMDeviceWimaxClass
+NMDeviceWimaxError
 NM_DEVICE_WIMAX_ACTIVE_NSP
 NM_DEVICE_WIMAX_BSID
 NM_DEVICE_WIMAX_CENTER_FREQUENCY
 NM_DEVICE_WIMAX_CINR
+NM_DEVICE_WIMAX_ERROR
 NM_DEVICE_WIMAX_HW_ADDRESS
 NM_DEVICE_WIMAX_RSSI
 NM_DEVICE_WIMAX_TX_POWER
+nm_device_wimax_error_quark
 nm_device_wimax_get_active_nsp
 nm_device_wimax_get_bsid
 nm_device_wimax_get_center_frequency
@@ -436,70 +487,38 @@ nm_dhcp6_config_get_type
 </SECTION>
 
 <SECTION>
-<FILE>nm-exported-connection-bindings</FILE>
-DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManagerSettings_Connection
-DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManagerSettings_Connection_Secrets
-dbus_g_proxy_begin_call
-org_freedesktop_NetworkManagerSettings_Connection_Secrets_get_secrets
-org_freedesktop_NetworkManagerSettings_Connection_Secrets_get_secrets_async
-org_freedesktop_NetworkManagerSettings_Connection_Secrets_get_secrets_async_callback
-org_freedesktop_NetworkManagerSettings_Connection_Secrets_get_secrets_reply
-org_freedesktop_NetworkManagerSettings_Connection_delete
-org_freedesktop_NetworkManagerSettings_Connection_delete_async
-org_freedesktop_NetworkManagerSettings_Connection_delete_async_callback
-org_freedesktop_NetworkManagerSettings_Connection_delete_reply
-org_freedesktop_NetworkManagerSettings_Connection_get_settings
-org_freedesktop_NetworkManagerSettings_Connection_get_settings_async
-org_freedesktop_NetworkManagerSettings_Connection_get_settings_async_callback
-org_freedesktop_NetworkManagerSettings_Connection_get_settings_reply
-org_freedesktop_NetworkManagerSettings_Connection_update
-org_freedesktop_NetworkManagerSettings_Connection_update_async
-org_freedesktop_NetworkManagerSettings_Connection_update_async_callback
-org_freedesktop_NetworkManagerSettings_Connection_update_reply
-</SECTION>
-
-<SECTION>
-<FILE>nm-exported-connection-glue</FILE>
-dbus_glib_marshal_nm_exported_connection_BOOLEAN__POINTER_POINTER
-dbus_glib_marshal_nm_exported_connection_NONE__BOXED_POINTER
-dbus_glib_marshal_nm_exported_connection_NONE__POINTER
-dbus_glib_marshal_nm_exported_connection_NONE__STRING_BOXED_BOOLEAN_POINTER
-dbus_glib_marshal_nm_exported_connection_VOID__BOXED_POINTER
-dbus_glib_marshal_nm_exported_connection_VOID__POINTER
-dbus_glib_marshal_nm_exported_connection_VOID__STRING_BOXED_BOOLEAN_POINTER
-dbus_glib_nm_exported_connection_object_info
-g_marshal_value_peek_boolean
-g_marshal_value_peek_boxed
-g_marshal_value_peek_char
-g_marshal_value_peek_double
-g_marshal_value_peek_enum
-g_marshal_value_peek_flags
-g_marshal_value_peek_float
-g_marshal_value_peek_int
-g_marshal_value_peek_int64
-g_marshal_value_peek_long
-g_marshal_value_peek_object
-g_marshal_value_peek_param
-g_marshal_value_peek_pointer
-g_marshal_value_peek_string
-g_marshal_value_peek_uchar
-g_marshal_value_peek_uint
-g_marshal_value_peek_uint64
-g_marshal_value_peek_ulong
-g_marshal_value_peek_variant
-</SECTION>
-
-<SECTION>
 <FILE>nm-glib-enum-types</FILE>
 <SUBSECTION Standard>
 NM_TYPE_CLIENT_PERMISSION
 NM_TYPE_CLIENT_PERMISSION_RESULT
+NM_TYPE_DEVICE_ADSL_ERROR
+NM_TYPE_DEVICE_BOND_ERROR
+NM_TYPE_DEVICE_BT_ERROR
+NM_TYPE_DEVICE_ETHERNET_ERROR
+NM_TYPE_DEVICE_INFINIBAND_ERROR
+NM_TYPE_DEVICE_MODEM_ERROR
+NM_TYPE_DEVICE_OLPC_MESH_ERROR
+NM_TYPE_DEVICE_VLAN_ERROR
+NM_TYPE_DEVICE_WIFI_ERROR
+NM_TYPE_DEVICE_WIMAX_ERROR
+NM_TYPE_OBJECT_ERROR
 NM_TYPE_REMOTE_SETTINGS_ERROR
 NM_TYPE_SECRET_AGENT_ERROR
 NM_TYPE_SECRET_AGENT_GET_SECRETS_FLAGS
 NM_TYPE_WIMAX_NSP_NETWORK_TYPE
 nm_client_permission_get_type
 nm_client_permission_result_get_type
+nm_device_adsl_error_get_type
+nm_device_bond_error_get_type
+nm_device_bt_error_get_type
+nm_device_ethernet_error_get_type
+nm_device_infiniband_error_get_type
+nm_device_modem_error_get_type
+nm_device_olpc_mesh_error_get_type
+nm_device_vlan_error_get_type
+nm_device_wifi_error_get_type
+nm_device_wimax_error_get_type
+nm_object_error_get_type
 nm_remote_settings_error_get_type
 nm_secret_agent_error_get_type
 nm_secret_agent_get_secrets_flags_get_type
@@ -566,8 +585,11 @@ nm_ip6_config_get_type
 <TITLE>NMObject</TITLE>
 NMObject
 NMObjectClass
+NMObjectError
 NM_OBJECT_DBUS_CONNECTION
 NM_OBJECT_DBUS_PATH
+NM_OBJECT_ERROR
+nm_object_error_quark
 nm_object_get_connection
 nm_object_get_path
 <SUBSECTION Standard>
@@ -651,9 +673,11 @@ NMSecretAgentSaveSecretsFunc
 NM_SECRET_AGENT_AUTO_REGISTER
 NM_SECRET_AGENT_ERROR
 NM_SECRET_AGENT_IDENTIFIER
+NM_SECRET_AGENT_REGISTERED
 NM_SECRET_AGENT_REGISTRATION_RESULT
 nm_secret_agent_delete_secrets
 nm_secret_agent_error_quark
+nm_secret_agent_get_registered
 nm_secret_agent_get_secrets
 nm_secret_agent_register
 nm_secret_agent_save_secrets
@@ -669,50 +693,6 @@ nm_secret_agent_get_type
 </SECTION>
 
 <SECTION>
-<FILE>nm-secret-agent-glue</FILE>
-dbus_glib_marshal_nm_secret_agent_NONE__BOXED_BOXED_POINTER
-dbus_glib_marshal_nm_secret_agent_NONE__BOXED_BOXED_STRING_BOXED_UINT_POINTER
-dbus_glib_marshal_nm_secret_agent_NONE__BOXED_STRING_POINTER
-dbus_glib_marshal_nm_secret_agent_VOID__BOXED_BOXED_POINTER
-dbus_glib_marshal_nm_secret_agent_VOID__BOXED_BOXED_STRING_BOXED_UINT_POINTER
-dbus_glib_marshal_nm_secret_agent_VOID__BOXED_STRING_POINTER
-dbus_glib_nm_secret_agent_object_info
-g_marshal_value_peek_boolean
-g_marshal_value_peek_boxed
-g_marshal_value_peek_char
-g_marshal_value_peek_double
-g_marshal_value_peek_enum
-g_marshal_value_peek_flags
-g_marshal_value_peek_float
-g_marshal_value_peek_int
-g_marshal_value_peek_int64
-g_marshal_value_peek_long
-g_marshal_value_peek_object
-g_marshal_value_peek_param
-g_marshal_value_peek_pointer
-g_marshal_value_peek_string
-g_marshal_value_peek_uchar
-g_marshal_value_peek_uint
-g_marshal_value_peek_uint64
-g_marshal_value_peek_ulong
-g_marshal_value_peek_variant
-</SECTION>
-
-<SECTION>
-<FILE>nm-settings-system-bindings</FILE>
-DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManagerSettings_System
-dbus_g_proxy_begin_call
-org_freedesktop_NetworkManagerSettings_System_get_permissions
-org_freedesktop_NetworkManagerSettings_System_get_permissions_async
-org_freedesktop_NetworkManagerSettings_System_get_permissions_async_callback
-org_freedesktop_NetworkManagerSettings_System_get_permissions_reply
-org_freedesktop_NetworkManagerSettings_System_save_hostname
-org_freedesktop_NetworkManagerSettings_System_save_hostname_async
-org_freedesktop_NetworkManagerSettings_System_save_hostname_async_callback
-org_freedesktop_NetworkManagerSettings_System_save_hostname_reply
-</SECTION>
-
-<SECTION>
 <FILE>nm-types</FILE>
 <SUBSECTION Standard>
 NM_TYPE_IP6_ADDRESS_ARRAY
@@ -773,7 +753,9 @@ nm_vpn_plugin_error_quark
 nm_vpn_plugin_failure
 nm_vpn_plugin_get_connection
 nm_vpn_plugin_get_state
+nm_vpn_plugin_set_config
 nm_vpn_plugin_set_ip4_config
+nm_vpn_plugin_set_ip6_config
 nm_vpn_plugin_set_login_banner
 nm_vpn_plugin_set_state
 <SUBSECTION Standard>
diff --git a/docs/libnm-glib/tmpl/nm-device-adsl.sgml b/docs/libnm-glib/tmpl/nm-device-adsl.sgml
new file mode 100644
index 00000000..dc26b35c
--- /dev/null
+++ b/docs/libnm-glib/tmpl/nm-device-adsl.sgml
@@ -0,0 +1,93 @@
+<!-- ##### SECTION Title ##### -->
+NMDeviceAdsl
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### STRUCT NMDeviceAdsl ##### -->
+<para>
+
+</para>
+
+@parent: 
+
+<!-- ##### STRUCT NMDeviceAdslClass ##### -->
+<para>
+
+</para>
+
+@parent: 
+@_reserved1: 
+@_reserved2: 
+@_reserved3: 
+@_reserved4: 
+@_reserved5: 
+@_reserved6: 
+
+<!-- ##### ENUM NMDeviceAdslError ##### -->
+<para>
+
+</para>
+
+@NM_DEVICE_ADSL_ERROR_UNKNOWN: 
+@NM_DEVICE_ADSL_ERROR_NOT_ADSL_CONNECTION: 
+@NM_DEVICE_ADSL_ERROR_INVALID_ADSL_CONNECTION: 
+
+<!-- ##### MACRO NM_DEVICE_ADSL_CARRIER ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO NM_DEVICE_ADSL_ERROR ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### FUNCTION nm_device_adsl_error_quark ##### -->
+<para>
+
+</para>
+
+@void: 
+@Returns: 
+
+
+<!-- ##### FUNCTION nm_device_adsl_get_carrier ##### -->
+<para>
+
+</para>
+
+@device: 
+@Returns: 
+
+
+<!-- ##### FUNCTION nm_device_adsl_new ##### -->
+<para>
+
+</para>
+
+@connection: 
+@path: 
+@Returns: 
+
+
diff --git a/docs/libnm-glib/tmpl/nm-device-bond.sgml b/docs/libnm-glib/tmpl/nm-device-bond.sgml
index d719184c..8f9e8db6 100644
--- a/docs/libnm-glib/tmpl/nm-device-bond.sgml
+++ b/docs/libnm-glib/tmpl/nm-device-bond.sgml
@@ -49,6 +49,16 @@ NMDeviceBond
 @_reserved5: 
 @_reserved6: 
 
+<!-- ##### ENUM NMDeviceBondError ##### -->
+<para>
+
+</para>
+
+@NM_DEVICE_BOND_ERROR_UNKNOWN: 
+@NM_DEVICE_BOND_ERROR_NOT_BOND_CONNECTION: 
+@NM_DEVICE_BOND_ERROR_INVALID_BOND_CONNECTION: 
+@NM_DEVICE_BOND_ERROR_INTERFACE_MISMATCH: 
+
 <!-- ##### MACRO NM_DEVICE_BOND_CARRIER ##### -->
 <para>
 
@@ -56,6 +66,13 @@ NMDeviceBond
 
 
 
+<!-- ##### MACRO NM_DEVICE_BOND_ERROR ##### -->
+<para>
+
+</para>
+
+
+
 <!-- ##### MACRO NM_DEVICE_BOND_HW_ADDRESS ##### -->
 <para>
 
@@ -63,6 +80,15 @@ NMDeviceBond
 
 
 
+<!-- ##### FUNCTION nm_device_bond_error_quark ##### -->
+<para>
+
+</para>
+
+@void: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_device_bond_get_carrier ##### -->
 <para>
 
diff --git a/docs/libnm-glib/tmpl/nm-device-bt.sgml b/docs/libnm-glib/tmpl/nm-device-bt.sgml
index bcf2d3c6..26582065 100644
--- a/docs/libnm-glib/tmpl/nm-device-bt.sgml
+++ b/docs/libnm-glib/tmpl/nm-device-bt.sgml
@@ -54,6 +54,18 @@ NMDeviceBt
 @_reserved5: 
 @_reserved6: 
 
+<!-- ##### ENUM NMDeviceBtError ##### -->
+<para>
+
+</para>
+
+@NM_DEVICE_BT_ERROR_UNKNOWN: 
+@NM_DEVICE_BT_ERROR_NOT_BT_CONNECTION: 
+@NM_DEVICE_BT_ERROR_INVALID_BT_CONNECTION: 
+@NM_DEVICE_BT_ERROR_INVALID_DEVICE_MAC: 
+@NM_DEVICE_BT_ERROR_MAC_MISMATCH: 
+@NM_DEVICE_BT_ERROR_MISSING_DEVICE_CAPS: 
+
 <!-- ##### MACRO NM_DEVICE_BT_CAPABILITIES ##### -->
 <para>
 
@@ -61,6 +73,13 @@ NMDeviceBt
 
 
 
+<!-- ##### MACRO NM_DEVICE_BT_ERROR ##### -->
+<para>
+
+</para>
+
+
+
 <!-- ##### MACRO NM_DEVICE_BT_HW_ADDRESS ##### -->
 <para>
 
@@ -75,6 +94,15 @@ NMDeviceBt
 
 
 
+<!-- ##### FUNCTION nm_device_bt_error_quark ##### -->
+<para>
+
+</para>
+
+@void: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_device_bt_get_capabilities ##### -->
 <para>
 
diff --git a/docs/libnm-glib/tmpl/nm-device-ethernet.sgml b/docs/libnm-glib/tmpl/nm-device-ethernet.sgml
index b3620ab0..ea04914e 100644
--- a/docs/libnm-glib/tmpl/nm-device-ethernet.sgml
+++ b/docs/libnm-glib/tmpl/nm-device-ethernet.sgml
@@ -59,6 +59,17 @@ NMDeviceEthernet
 @_reserved5: 
 @_reserved6: 
 
+<!-- ##### ENUM NMDeviceEthernetError ##### -->
+<para>
+
+</para>
+
+@NM_DEVICE_ETHERNET_ERROR_UNKNOWN: 
+@NM_DEVICE_ETHERNET_ERROR_NOT_ETHERNET_CONNECTION: 
+@NM_DEVICE_ETHERNET_ERROR_INVALID_ETHERNET_CONNECTION: 
+@NM_DEVICE_ETHERNET_ERROR_INVALID_DEVICE_MAC: 
+@NM_DEVICE_ETHERNET_ERROR_MAC_MISMATCH: 
+
 <!-- ##### MACRO NM_DEVICE_ETHERNET_CARRIER ##### -->
 <para>
 
@@ -66,6 +77,13 @@ NMDeviceEthernet
 
 
 
+<!-- ##### MACRO NM_DEVICE_ETHERNET_ERROR ##### -->
+<para>
+
+</para>
+
+
+
 <!-- ##### MACRO NM_DEVICE_ETHERNET_HW_ADDRESS ##### -->
 <para>
 
@@ -87,6 +105,15 @@ NMDeviceEthernet
 
 
 
+<!-- ##### FUNCTION nm_device_ethernet_error_quark ##### -->
+<para>
+
+</para>
+
+@void: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_device_ethernet_get_carrier ##### -->
 <para>
 
diff --git a/docs/libnm-glib/tmpl/nm-device-infiniband-bindings.sgml b/docs/libnm-glib/tmpl/nm-device-infiniband-bindings.sgml
deleted file mode 100644
index 09405987..00000000
--- a/docs/libnm-glib/tmpl/nm-device-infiniband-bindings.sgml
+++ /dev/null
@@ -1,29 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-nm-device-infiniband-bindings
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManager_Device_Infiniband ##### -->
-<para>
-
-</para>
-
-
-
diff --git a/docs/libnm-glib/tmpl/nm-device-infiniband.sgml b/docs/libnm-glib/tmpl/nm-device-infiniband.sgml
index bd2ef58e..e94c6bae 100644
--- a/docs/libnm-glib/tmpl/nm-device-infiniband.sgml
+++ b/docs/libnm-glib/tmpl/nm-device-infiniband.sgml
@@ -49,6 +49,17 @@ NMDeviceInfiniband
 @_reserved5: 
 @_reserved6: 
 
+<!-- ##### ENUM NMDeviceInfinibandError ##### -->
+<para>
+
+</para>
+
+@NM_DEVICE_INFINIBAND_ERROR_UNKNOWN: 
+@NM_DEVICE_INFINIBAND_ERROR_NOT_INFINIBAND_CONNECTION: 
+@NM_DEVICE_INFINIBAND_ERROR_INVALID_INFINIBAND_CONNECTION: 
+@NM_DEVICE_INFINIBAND_ERROR_INVALID_DEVICE_MAC: 
+@NM_DEVICE_INFINIBAND_ERROR_MAC_MISMATCH: 
+
 <!-- ##### MACRO NM_DEVICE_INFINIBAND_CARRIER ##### -->
 <para>
 
@@ -56,6 +67,13 @@ NMDeviceInfiniband
 
 
 
+<!-- ##### MACRO NM_DEVICE_INFINIBAND_ERROR ##### -->
+<para>
+
+</para>
+
+
+
 <!-- ##### MACRO NM_DEVICE_INFINIBAND_HW_ADDRESS ##### -->
 <para>
 
@@ -63,6 +81,15 @@ NMDeviceInfiniband
 
 
 
+<!-- ##### FUNCTION nm_device_infiniband_error_quark ##### -->
+<para>
+
+</para>
+
+@void: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_device_infiniband_get_carrier ##### -->
 <para>
 
diff --git a/docs/libnm-glib/tmpl/nm-device-modem.sgml b/docs/libnm-glib/tmpl/nm-device-modem.sgml
index a67c4777..259db939 100644
--- a/docs/libnm-glib/tmpl/nm-device-modem.sgml
+++ b/docs/libnm-glib/tmpl/nm-device-modem.sgml
@@ -49,6 +49,16 @@ NMDeviceModem
 @_reserved5: 
 @_reserved6: 
 
+<!-- ##### ENUM NMDeviceModemError ##### -->
+<para>
+
+</para>
+
+@NM_DEVICE_MODEM_ERROR_UNKNOWN: 
+@NM_DEVICE_MODEM_ERROR_NOT_MODEM_CONNECTION: 
+@NM_DEVICE_MODEM_ERROR_INVALID_MODEM_CONNECTION: 
+@NM_DEVICE_MODEM_ERROR_MISSING_DEVICE_CAPS: 
+
 <!-- ##### MACRO NM_DEVICE_MODEM_CURRENT_CAPABILITIES ##### -->
 <para>
 
@@ -56,6 +66,13 @@ NMDeviceModem
 
 
 
+<!-- ##### MACRO NM_DEVICE_MODEM_ERROR ##### -->
+<para>
+
+</para>
+
+
+
 <!-- ##### MACRO NM_DEVICE_MODEM_MODEM_CAPABILITIES ##### -->
 <para>
 
@@ -63,6 +80,15 @@ NMDeviceModem
 
 
 
+<!-- ##### FUNCTION nm_device_modem_error_quark ##### -->
+<para>
+
+</para>
+
+@void: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_device_modem_get_current_capabilities ##### -->
 <para>
 
diff --git a/docs/libnm-glib/tmpl/nm-device-olpc-mesh.sgml b/docs/libnm-glib/tmpl/nm-device-olpc-mesh.sgml
index 69e2cd52..a604a43a 100644
--- a/docs/libnm-glib/tmpl/nm-device-olpc-mesh.sgml
+++ b/docs/libnm-glib/tmpl/nm-device-olpc-mesh.sgml
@@ -54,6 +54,15 @@ NMDeviceOlpcMesh
 @_reserved5: 
 @_reserved6: 
 
+<!-- ##### ENUM NMDeviceOlpcMeshError ##### -->
+<para>
+
+</para>
+
+@NM_DEVICE_OLPC_MESH_ERROR_UNKNOWN: 
+@NM_DEVICE_OLPC_MESH_ERROR_NOT_OLPC_MESH_CONNECTION: 
+@NM_DEVICE_OLPC_MESH_ERROR_INVALID_OLPC_MESH_CONNECTION: 
+
 <!-- ##### MACRO NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL ##### -->
 <para>
 
@@ -68,6 +77,13 @@ NMDeviceOlpcMesh
 
 
 
+<!-- ##### MACRO NM_DEVICE_OLPC_MESH_ERROR ##### -->
+<para>
+
+</para>
+
+
+
 <!-- ##### MACRO NM_DEVICE_OLPC_MESH_HW_ADDRESS ##### -->
 <para>
 
@@ -75,6 +91,15 @@ NMDeviceOlpcMesh
 
 
 
+<!-- ##### FUNCTION nm_device_olpc_mesh_error_quark ##### -->
+<para>
+
+</para>
+
+@void: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_device_olpc_mesh_get_active_channel ##### -->
 <para>
 
diff --git a/docs/libnm-glib/tmpl/nm-device-vlan.sgml b/docs/libnm-glib/tmpl/nm-device-vlan.sgml
index 5d38d111..5a58b7b2 100644
--- a/docs/libnm-glib/tmpl/nm-device-vlan.sgml
+++ b/docs/libnm-glib/tmpl/nm-device-vlan.sgml
@@ -54,6 +54,17 @@ NMDeviceVlan
 @_reserved5: 
 @_reserved6: 
 
+<!-- ##### ENUM NMDeviceVlanError ##### -->
+<para>
+
+</para>
+
+@NM_DEVICE_VLAN_ERROR_UNKNOWN: 
+@NM_DEVICE_VLAN_ERROR_NOT_VLAN_CONNECTION: 
+@NM_DEVICE_VLAN_ERROR_INVALID_VLAN_CONNECTION: 
+@NM_DEVICE_VLAN_ERROR_ID_MISMATCH: 
+@NM_DEVICE_VLAN_ERROR_INTERFACE_MISMATCH: 
+
 <!-- ##### MACRO NM_DEVICE_VLAN_CARRIER ##### -->
 <para>
 
@@ -61,6 +72,13 @@ NMDeviceVlan
 
 
 
+<!-- ##### MACRO NM_DEVICE_VLAN_ERROR ##### -->
+<para>
+
+</para>
+
+
+
 <!-- ##### MACRO NM_DEVICE_VLAN_HW_ADDRESS ##### -->
 <para>
 
@@ -75,6 +93,15 @@ NMDeviceVlan
 
 
 
+<!-- ##### FUNCTION nm_device_vlan_error_quark ##### -->
+<para>
+
+</para>
+
+@void: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_device_vlan_get_carrier ##### -->
 <para>
 
diff --git a/docs/libnm-glib/tmpl/nm-device-wifi.sgml b/docs/libnm-glib/tmpl/nm-device-wifi.sgml
index 94cc3e9f..89ead82a 100644
--- a/docs/libnm-glib/tmpl/nm-device-wifi.sgml
+++ b/docs/libnm-glib/tmpl/nm-device-wifi.sgml
@@ -87,6 +87,19 @@ NMDeviceWifi
 @_reserved5: 
 @_reserved6: 
 
+<!-- ##### ENUM NMDeviceWifiError ##### -->
+<para>
+
+</para>
+
+@NM_DEVICE_WIFI_ERROR_UNKNOWN: 
+@NM_DEVICE_WIFI_ERROR_NOT_WIFI_CONNECTION: 
+@NM_DEVICE_WIFI_ERROR_INVALID_WIFI_CONNECTION: 
+@NM_DEVICE_WIFI_ERROR_INVALID_DEVICE_MAC: 
+@NM_DEVICE_WIFI_ERROR_MAC_MISMATCH: 
+@NM_DEVICE_WIFI_ERROR_MISSING_DEVICE_WPA_CAPS: 
+@NM_DEVICE_WIFI_ERROR_MISSING_DEVICE_RSN_CAPS: 
+
 <!-- ##### MACRO NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT ##### -->
 <para>
 
@@ -108,6 +121,13 @@ NMDeviceWifi
 
 
 
+<!-- ##### MACRO NM_DEVICE_WIFI_ERROR ##### -->
+<para>
+
+</para>
+
+
+
 <!-- ##### MACRO NM_DEVICE_WIFI_HW_ADDRESS ##### -->
 <para>
 
@@ -129,6 +149,15 @@ NMDeviceWifi
 
 
 
+<!-- ##### FUNCTION nm_device_wifi_error_quark ##### -->
+<para>
+
+</para>
+
+@void: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_device_wifi_get_access_point_by_path ##### -->
 <para>
 
diff --git a/docs/libnm-glib/tmpl/nm-device-wimax.sgml b/docs/libnm-glib/tmpl/nm-device-wimax.sgml
index fbda3469..8d23e4da 100644
--- a/docs/libnm-glib/tmpl/nm-device-wimax.sgml
+++ b/docs/libnm-glib/tmpl/nm-device-wimax.sgml
@@ -86,6 +86,17 @@ NMDeviceWimax
 @nsp_added: 
 @nsp_removed: 
 
+<!-- ##### ENUM NMDeviceWimaxError ##### -->
+<para>
+
+</para>
+
+@NM_DEVICE_WIMAX_ERROR_UNKNOWN: 
+@NM_DEVICE_WIMAX_ERROR_NOT_WIMAX_CONNECTION: 
+@NM_DEVICE_WIMAX_ERROR_INVALID_WIMAX_CONNECTION: 
+@NM_DEVICE_WIMAX_ERROR_INVALID_DEVICE_MAC: 
+@NM_DEVICE_WIMAX_ERROR_MAC_MISMATCH: 
+
 <!-- ##### MACRO NM_DEVICE_WIMAX_ACTIVE_NSP ##### -->
 <para>
 
@@ -114,6 +125,13 @@ NMDeviceWimax
 
 
 
+<!-- ##### MACRO NM_DEVICE_WIMAX_ERROR ##### -->
+<para>
+
+</para>
+
+
+
 <!-- ##### MACRO NM_DEVICE_WIMAX_HW_ADDRESS ##### -->
 <para>
 
@@ -135,6 +153,15 @@ NMDeviceWimax
 
 
 
+<!-- ##### FUNCTION nm_device_wimax_error_quark ##### -->
+<para>
+
+</para>
+
+@void: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_device_wimax_get_active_nsp ##### -->
 <para>
 
diff --git a/docs/libnm-glib/tmpl/nm-device.sgml b/docs/libnm-glib/tmpl/nm-device.sgml
index c2d02f96..68df46f9 100644
--- a/docs/libnm-glib/tmpl/nm-device.sgml
+++ b/docs/libnm-glib/tmpl/nm-device.sgml
@@ -41,6 +41,11 @@ NMDevice
 
 </para>
 
+<!-- ##### ARG NMDevice:autoconnect ##### -->
+<para>
+
+</para>
+
 <!-- ##### ARG NMDevice:capabilities ##### -->
 <para>
 
@@ -66,11 +71,21 @@ NMDevice
 
 </para>
 
+<!-- ##### ARG NMDevice:driver-version ##### -->
+<para>
+
+</para>
+
 <!-- ##### ARG NMDevice:firmware-missing ##### -->
 <para>
 
 </para>
 
+<!-- ##### ARG NMDevice:firmware-version ##### -->
+<para>
+
+</para>
+
 <!-- ##### ARG NMDevice:interface ##### -->
 <para>
 
@@ -153,6 +168,13 @@ NMDevice
 
 
 
+<!-- ##### MACRO NM_DEVICE_AUTOCONNECT ##### -->
+<para>
+
+</para>
+
+
+
 <!-- ##### MACRO NM_DEVICE_CAPABILITIES ##### -->
 <para>
 
@@ -188,6 +210,13 @@ NMDevice
 
 
 
+<!-- ##### MACRO NM_DEVICE_DRIVER_VERSION ##### -->
+<para>
+
+</para>
+
+
+
 <!-- ##### MACRO NM_DEVICE_FIRMWARE_MISSING ##### -->
 <para>
 
@@ -195,6 +224,13 @@ NMDevice
 
 
 
+<!-- ##### MACRO NM_DEVICE_FIRMWARE_VERSION ##### -->
+<para>
+
+</para>
+
+
+
 <!-- ##### MACRO NM_DEVICE_INTERFACE ##### -->
 <para>
 
@@ -265,6 +301,17 @@ NMDevice
 
 
 
+<!-- ##### FUNCTION nm_device_connection_compatible ##### -->
+<para>
+
+</para>
+
+@device: 
+@connection: 
+@error: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_device_connection_valid ##### -->
 <para>
 
@@ -304,6 +351,15 @@ NMDevice
 @Returns: 
 
 
+<!-- ##### FUNCTION nm_device_get_autoconnect ##### -->
+<para>
+
+</para>
+
+@device: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_device_get_capabilities ##### -->
 <para>
 
@@ -349,6 +405,15 @@ NMDevice
 @Returns: 
 
 
+<!-- ##### FUNCTION nm_device_get_driver_version ##### -->
+<para>
+
+</para>
+
+@device: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_device_get_firmware_missing ##### -->
 <para>
 
@@ -358,6 +423,15 @@ NMDevice
 @Returns: 
 
 
+<!-- ##### FUNCTION nm_device_get_firmware_version ##### -->
+<para>
+
+</para>
+
+@device: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_device_get_iface ##### -->
 <para>
 
@@ -459,3 +533,12 @@ NMDevice
 @Returns: 
 
 
+<!-- ##### FUNCTION nm_device_set_autoconnect ##### -->
+<para>
+
+</para>
+
+@device: 
+@autoconnect: 
+
+
diff --git a/docs/libnm-glib/tmpl/nm-exported-connection-bindings.sgml b/docs/libnm-glib/tmpl/nm-exported-connection-bindings.sgml
deleted file mode 100644
index 6d7bd83d..00000000
--- a/docs/libnm-glib/tmpl/nm-exported-connection-bindings.sgml
+++ /dev/null
@@ -1,213 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-nm-exported-connection-bindings
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManagerSettings_Connection ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManagerSettings_Connection_Secrets ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION dbus_g_proxy_begin_call ##### -->
-<para>
-
-</para>
-
-@Param1: 
-@Returns: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_Connection_Secrets_get_secrets ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@IN_setting_name: 
-@IN_hints: 
-@IN_request_new: 
-@OUT_secrets: 
-@Returns: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_Connection_Secrets_get_secrets_async ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@IN_setting_name: 
-@IN_hints: 
-@IN_request_new: 
-@callback: 
-@Returns: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_Connection_Secrets_get_secrets_async_callback ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@call: 
-@user_data: 
-
-
-<!-- ##### USER_FUNCTION org_freedesktop_NetworkManagerSettings_Connection_Secrets_get_secrets_reply ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@OUT_secrets: 
-@error: 
-@userdata: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_Connection_delete ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@Returns: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_Connection_delete_async ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@callback: 
-@Returns: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_Connection_delete_async_callback ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@call: 
-@user_data: 
-
-
-<!-- ##### USER_FUNCTION org_freedesktop_NetworkManagerSettings_Connection_delete_reply ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@error: 
-@userdata: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_Connection_get_settings ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@OUT_settings: 
-@Returns: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_Connection_get_settings_async ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@callback: 
-@Returns: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_Connection_get_settings_async_callback ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@call: 
-@user_data: 
-
-
-<!-- ##### USER_FUNCTION org_freedesktop_NetworkManagerSettings_Connection_get_settings_reply ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@OUT_settings: 
-@error: 
-@userdata: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_Connection_update ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@IN_properties: 
-@Returns: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_Connection_update_async ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@IN_properties: 
-@callback: 
-@Returns: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_Connection_update_async_callback ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@call: 
-@user_data: 
-
-
-<!-- ##### USER_FUNCTION org_freedesktop_NetworkManagerSettings_Connection_update_reply ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@error: 
-@userdata: 
-
-
diff --git a/docs/libnm-glib/tmpl/nm-exported-connection-glue.sgml b/docs/libnm-glib/tmpl/nm-exported-connection-glue.sgml
deleted file mode 100644
index fda72e2e..00000000
--- a/docs/libnm-glib/tmpl/nm-exported-connection-glue.sgml
+++ /dev/null
@@ -1,247 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-nm-exported-connection-glue
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION dbus_glib_marshal_nm_exported_connection_BOOLEAN__POINTER_POINTER ##### -->
-<para>
-
-</para>
-
-@closure: 
-@return_value: 
-@n_param_values: 
-@param_values: 
-@invocation_hint: 
-@marshal_data: 
-
-
-<!-- ##### MACRO dbus_glib_marshal_nm_exported_connection_NONE__BOXED_POINTER ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO dbus_glib_marshal_nm_exported_connection_NONE__POINTER ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO dbus_glib_marshal_nm_exported_connection_NONE__STRING_BOXED_BOOLEAN_POINTER ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION dbus_glib_marshal_nm_exported_connection_VOID__BOXED_POINTER ##### -->
-<para>
-
-</para>
-
-@closure: 
-@return_value: 
-@n_param_values: 
-@param_values: 
-@invocation_hint: 
-@marshal_data: 
-
-
-<!-- ##### MACRO dbus_glib_marshal_nm_exported_connection_VOID__POINTER ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION dbus_glib_marshal_nm_exported_connection_VOID__STRING_BOXED_BOOLEAN_POINTER ##### -->
-<para>
-
-</para>
-
-@closure: 
-@return_value: 
-@n_param_values: 
-@param_values: 
-@invocation_hint: 
-@marshal_data: 
-
-
-<!-- ##### VARIABLE dbus_glib_nm_exported_connection_object_info ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO g_marshal_value_peek_boolean ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_boxed ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_char ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_double ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_enum ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_flags ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_float ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_int ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_int64 ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_long ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_object ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_param ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_pointer ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_string ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_uchar ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_uint ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_uint64 ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_ulong ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_variant ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
diff --git a/docs/libnm-glib/tmpl/nm-object.sgml b/docs/libnm-glib/tmpl/nm-object.sgml
index d79c1522..aaf91b49 100644
--- a/docs/libnm-glib/tmpl/nm-object.sgml
+++ b/docs/libnm-glib/tmpl/nm-object.sgml
@@ -26,6 +26,15 @@ NMObject
 </para>
 
 
+<!-- ##### SIGNAL NMObject::object-creation-failed ##### -->
+<para>
+
+</para>
+
+@nmobject: the object which received the signal.
+@arg1: 
+@arg2: 
+
 <!-- ##### ARG NMObject:dbus-connection ##### -->
 <para>
 
@@ -42,6 +51,7 @@ NMObject
 </para>
 
 @parent: 
+@object_creation_failed: 
 @_reserved1: 
 @_reserved2: 
 @_reserved3: 
@@ -49,6 +59,14 @@ NMObject
 @_reserved5: 
 @_reserved6: 
 
+<!-- ##### ENUM NMObjectError ##### -->
+<para>
+
+</para>
+
+@NM_OBJECT_ERROR_UNKNOWN: 
+@NM_OBJECT_ERROR_OBJECT_CREATION_FAILURE: 
+
 <!-- ##### MACRO NM_OBJECT_DBUS_CONNECTION ##### -->
 <para>
 
@@ -63,6 +81,22 @@ NMObject
 
 
 
+<!-- ##### MACRO NM_OBJECT_ERROR ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### FUNCTION nm_object_error_quark ##### -->
+<para>
+
+</para>
+
+@void: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_object_get_connection ##### -->
 <para>
 
diff --git a/docs/libnm-glib/tmpl/nm-secret-agent-glue.sgml b/docs/libnm-glib/tmpl/nm-secret-agent-glue.sgml
deleted file mode 100644
index f8b51d7d..00000000
--- a/docs/libnm-glib/tmpl/nm-secret-agent-glue.sgml
+++ /dev/null
@@ -1,240 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-nm-secret-agent-glue
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO dbus_glib_marshal_nm_secret_agent_NONE__BOXED_BOXED_POINTER ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO dbus_glib_marshal_nm_secret_agent_NONE__BOXED_BOXED_STRING_BOXED_UINT_POINTER ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO dbus_glib_marshal_nm_secret_agent_NONE__BOXED_STRING_POINTER ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION dbus_glib_marshal_nm_secret_agent_VOID__BOXED_BOXED_POINTER ##### -->
-<para>
-
-</para>
-
-@closure: 
-@return_value: 
-@n_param_values: 
-@param_values: 
-@invocation_hint: 
-@marshal_data: 
-
-
-<!-- ##### FUNCTION dbus_glib_marshal_nm_secret_agent_VOID__BOXED_BOXED_STRING_BOXED_UINT_POINTER ##### -->
-<para>
-
-</para>
-
-@closure: 
-@return_value: 
-@n_param_values: 
-@param_values: 
-@invocation_hint: 
-@marshal_data: 
-
-
-<!-- ##### FUNCTION dbus_glib_marshal_nm_secret_agent_VOID__BOXED_STRING_POINTER ##### -->
-<para>
-
-</para>
-
-@closure: 
-@return_value: 
-@n_param_values: 
-@param_values: 
-@invocation_hint: 
-@marshal_data: 
-
-
-<!-- ##### VARIABLE dbus_glib_nm_secret_agent_object_info ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO g_marshal_value_peek_boolean ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_boxed ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_char ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_double ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_enum ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_flags ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_float ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_int ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_int64 ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_long ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_object ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_param ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_pointer ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_string ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_uchar ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_uint ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_uint64 ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_ulong ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
-<!-- ##### MACRO g_marshal_value_peek_variant ##### -->
-<para>
-
-</para>
-
-@v: 
-
-
diff --git a/docs/libnm-glib/tmpl/nm-secret-agent.sgml b/docs/libnm-glib/tmpl/nm-secret-agent.sgml
index 9f31c86b..428b7afd 100644
--- a/docs/libnm-glib/tmpl/nm-secret-agent.sgml
+++ b/docs/libnm-glib/tmpl/nm-secret-agent.sgml
@@ -98,6 +98,7 @@ NMSecretAgent
 @NM_SECRET_AGENT_GET_SECRETS_FLAG_NONE: 
 @NM_SECRET_AGENT_GET_SECRETS_FLAG_ALLOW_INTERACTION: 
 @NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW: 
+@NM_SECRET_AGENT_GET_SECRETS_FLAG_USER_REQUESTED: 
 
 <!-- ##### USER_FUNCTION NMSecretAgentGetSecretsFunc ##### -->
 <para>
@@ -143,6 +144,13 @@ NMSecretAgent
 
 
 
+<!-- ##### MACRO NM_SECRET_AGENT_REGISTERED ##### -->
+<para>
+
+</para>
+
+
+
 <!-- ##### MACRO NM_SECRET_AGENT_REGISTRATION_RESULT ##### -->
 <para>
 
@@ -170,6 +178,15 @@ NMSecretAgent
 @Returns: 
 
 
+<!-- ##### FUNCTION nm_secret_agent_get_registered ##### -->
+<para>
+
+</para>
+
+@self: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_secret_agent_get_secrets ##### -->
 <para>
 
diff --git a/docs/libnm-glib/tmpl/nm-settings-system-bindings.sgml b/docs/libnm-glib/tmpl/nm-settings-system-bindings.sgml
deleted file mode 100644
index 29790794..00000000
--- a/docs/libnm-glib/tmpl/nm-settings-system-bindings.sgml
+++ /dev/null
@@ -1,120 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-nm-settings-system-bindings
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManagerSettings_System ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION dbus_g_proxy_begin_call ##### -->
-<para>
-
-</para>
-
-@Param1: 
-@Returns: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_System_get_permissions ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@OUT_permissions: 
-@Returns: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_System_get_permissions_async ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@callback: 
-@Returns: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_System_get_permissions_async_callback ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@call: 
-@user_data: 
-
-
-<!-- ##### USER_FUNCTION org_freedesktop_NetworkManagerSettings_System_get_permissions_reply ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@OUT_permissions: 
-@error: 
-@userdata: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_System_save_hostname ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@IN_hostname: 
-@Returns: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_System_save_hostname_async ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@IN_hostname: 
-@callback: 
-@Returns: 
-
-
-<!-- ##### FUNCTION org_freedesktop_NetworkManagerSettings_System_save_hostname_async_callback ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@call: 
-@user_data: 
-
-
-<!-- ##### USER_FUNCTION org_freedesktop_NetworkManagerSettings_System_save_hostname_reply ##### -->
-<para>
-
-</para>
-
-@proxy: 
-@error: 
-@userdata: 
-
-
diff --git a/docs/libnm-glib/tmpl/nm-vpn-plugin.sgml b/docs/libnm-glib/tmpl/nm-vpn-plugin.sgml
index 08e0807c..c04eb296 100644
--- a/docs/libnm-glib/tmpl/nm-vpn-plugin.sgml
+++ b/docs/libnm-glib/tmpl/nm-vpn-plugin.sgml
@@ -41,12 +41,12 @@ NMVPNPlugin
 @login_banner: 
 @failure: 
 @quit: 
+@config: 
+@ip6_config: 
 @_reserved1: 
 @_reserved2: 
 @_reserved3: 
 @_reserved4: 
-@_reserved5: 
-@_reserved6: 
 
 <!-- ##### ENUM NMVPNPluginError ##### -->
 <para>
@@ -123,6 +123,15 @@ NMVPNPlugin
 @Returns: 
 
 
+<!-- ##### FUNCTION nm_vpn_plugin_set_config ##### -->
+<para>
+
+</para>
+
+@plugin: 
+@config: 
+
+
 <!-- ##### FUNCTION nm_vpn_plugin_set_ip4_config ##### -->
 <para>
 
@@ -132,6 +141,15 @@ NMVPNPlugin
 @ip4_config: 
 
 
+<!-- ##### FUNCTION nm_vpn_plugin_set_ip6_config ##### -->
+<para>
+
+</para>
+
+@plugin: 
+@ip6_config: 
+
+
 <!-- ##### FUNCTION nm_vpn_plugin_set_login_banner ##### -->
 <para>
 
diff --git a/docs/libnm-util/Makefile.in b/docs/libnm-util/Makefile.in
index 281aa765..de0a694a 100644
--- a/docs/libnm-util/Makefile.in
+++ b/docs/libnm-util/Makefile.in
@@ -53,7 +53,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -141,6 +141,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -236,6 +240,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -274,6 +281,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/docs/libnm-util/html/NMConnection.html b/docs/libnm-util/html/NMConnection.html
index 45911ba8..c1bd42e1 100644
--- a/docs/libnm-util/html/NMConnection.html
+++ b/docs/libnm-util/html/NMConnection.html
@@ -78,16 +78,17 @@ const <span class="returnvalue">char</span> *        <a class="link" href="NMCon
 <a class="link" href="NMSetting.html" title="NMSetting"><span class="returnvalue">NMSetting</span></a> *         <a class="link" href="NMConnection.html#nm-connection-get-setting" title="nm_connection_get_setting ()">nm_connection_get_setting</a>           (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>,
                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> setting_type</code></em>);
 <a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="returnvalue">NMSetting8021x</span></a> *    <a class="link" href="NMConnection.html#nm-connection-get-setting-802-1x" title="nm_connection_get_setting_802_1x ()">nm_connection_get_setting_802_1x</a>    (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
+<span class="returnvalue">NMSettingAdsl</span> *     <a class="link" href="NMConnection.html#nm-connection-get-setting-adsl" title="nm_connection_get_setting_adsl ()">nm_connection_get_setting_adsl</a>      (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
 <a class="link" href="NMSettingBluetooth.html" title="NMSettingBluetooth"><span class="returnvalue">NMSettingBluetooth</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-bluetooth" title="nm_connection_get_setting_bluetooth ()">nm_connection_get_setting_bluetooth</a>
                                                         (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
-<span class="returnvalue">NMSettingBond</span> *     <a class="link" href="NMConnection.html#nm-connection-get-setting-bond" title="nm_connection_get_setting_bond ()">nm_connection_get_setting_bond</a>      (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
+<a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="returnvalue">NMSettingBond</span></a> *     <a class="link" href="NMConnection.html#nm-connection-get-setting-bond" title="nm_connection_get_setting_bond ()">nm_connection_get_setting_bond</a>      (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
 <a class="link" href="NMSetting.html" title="NMSetting"><span class="returnvalue">NMSetting</span></a> *         <a class="link" href="NMConnection.html#nm-connection-get-setting-by-name" title="nm_connection_get_setting_by_name ()">nm_connection_get_setting_by_name</a>   (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>,
                                                          <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);
 <a class="link" href="NMSettingCdma.html" title="NMSettingCdma"><span class="returnvalue">NMSettingCdma</span></a> *     <a class="link" href="NMConnection.html#nm-connection-get-setting-cdma" title="nm_connection_get_setting_cdma ()">nm_connection_get_setting_cdma</a>      (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
 <a class="link" href="NMSettingConnection.html" title="NMSettingConnection"><span class="returnvalue">NMSettingConnection</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-connection" title="nm_connection_get_setting_connection ()">nm_connection_get_setting_connection</a>
                                                         (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
 <a class="link" href="NMSettingGsm.html" title="NMSettingGsm"><span class="returnvalue">NMSettingGsm</span></a> *      <a class="link" href="NMConnection.html#nm-connection-get-setting-gsm" title="nm_connection_get_setting_gsm ()">nm_connection_get_setting_gsm</a>       (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
-<span class="returnvalue">NMSettingInfiniband</span> * <a class="link" href="NMConnection.html#nm-connection-get-setting-infiniband" title="nm_connection_get_setting_infiniband ()">nm_connection_get_setting_infiniband</a>
+<a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="returnvalue">NMSettingInfiniband</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-infiniband" title="nm_connection_get_setting_infiniband ()">nm_connection_get_setting_infiniband</a>
                                                         (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
 <a class="link" href="NMSettingIP4Config.html" title="NMSettingIP4Config"><span class="returnvalue">NMSettingIP4Config</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-ip4-config" title="nm_connection_get_setting_ip4_config ()">nm_connection_get_setting_ip4_config</a>
                                                         (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
@@ -97,7 +98,7 @@ const <span class="returnvalue">char</span> *        <a class="link" href="NMCon
 <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="returnvalue">NMSettingPPP</span></a> *      <a class="link" href="NMConnection.html#nm-connection-get-setting-ppp" title="nm_connection_get_setting_ppp ()">nm_connection_get_setting_ppp</a>       (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
 <a class="link" href="NMSettingPPPOE.html" title="NMSettingPPPOE"><span class="returnvalue">NMSettingPPPOE</span></a> *    <a class="link" href="NMConnection.html#nm-connection-get-setting-pppoe" title="nm_connection_get_setting_pppoe ()">nm_connection_get_setting_pppoe</a>     (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
 <a class="link" href="NMSettingSerial.html" title="NMSettingSerial"><span class="returnvalue">NMSettingSerial</span></a> *   <a class="link" href="NMConnection.html#nm-connection-get-setting-serial" title="nm_connection_get_setting_serial ()">nm_connection_get_setting_serial</a>    (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
-<span class="returnvalue">NMSettingVlan</span> *     <a class="link" href="NMConnection.html#nm-connection-get-setting-vlan" title="nm_connection_get_setting_vlan ()">nm_connection_get_setting_vlan</a>      (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
+<a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="returnvalue">NMSettingVlan</span></a> *     <a class="link" href="NMConnection.html#nm-connection-get-setting-vlan" title="nm_connection_get_setting_vlan ()">nm_connection_get_setting_vlan</a>      (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
 <a class="link" href="NMSettingVPN.html" title="NMSettingVPN"><span class="returnvalue">NMSettingVPN</span></a> *      <a class="link" href="NMConnection.html#nm-connection-get-setting-vpn" title="nm_connection_get_setting_vpn ()">nm_connection_get_setting_vpn</a>       (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
 <a class="link" href="NMSettingWimax.html" title="NMSettingWimax"><span class="returnvalue">NMSettingWimax</span></a> *    <a class="link" href="NMConnection.html#nm-connection-get-setting-wimax" title="nm_connection_get_setting_wimax ()">nm_connection_get_setting_wimax</a>     (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
 <a class="link" href="NMSettingWired.html" title="NMSettingWired"><span class="returnvalue">NMSettingWired</span></a> *    <a class="link" href="NMConnection.html#nm-connection-get-setting-wired" title="nm_connection_get_setting_wired ()">nm_connection_get_setting_wired</a>     (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);
@@ -629,6 +630,29 @@ A shortcut to return any <a class="link" href="NMSetting8021x.html" title="NMSet
 </div>
 <hr>
 <div class="refsect2">
+<a name="nm-connection-get-setting-adsl"></a><h3>nm_connection_get_setting_adsl ()</h3>
+<pre class="programlisting"><span class="returnvalue">NMSettingAdsl</span> *     nm_connection_get_setting_adsl      (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre>
+<p>
+A shortcut to return any <span class="type">NMSettingAdsl</span> the connection might contain.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
+<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>an <span class="type">NMSettingAdsl</span> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-connection-get-setting-bluetooth"></a><h3>nm_connection_get_setting_bluetooth ()</h3>
 <pre class="programlisting"><a class="link" href="NMSettingBluetooth.html" title="NMSettingBluetooth"><span class="returnvalue">NMSettingBluetooth</span></a> * nm_connection_get_setting_bluetooth
                                                         (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre>
@@ -654,9 +678,9 @@ A shortcut to return any <a class="link" href="NMSettingBluetooth.html" title="N
 <hr>
 <div class="refsect2">
 <a name="nm-connection-get-setting-bond"></a><h3>nm_connection_get_setting_bond ()</h3>
-<pre class="programlisting"><span class="returnvalue">NMSettingBond</span> *     nm_connection_get_setting_bond      (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre>
+<pre class="programlisting"><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="returnvalue">NMSettingBond</span></a> *     nm_connection_get_setting_bond      (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre>
 <p>
-A shortcut to return any <span class="type">NMSettingBond</span> the connection might contain.
+A shortcut to return any <a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> the connection might contain.
 </p>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
@@ -668,7 +692,7 @@ A shortcut to return any <span class="type">NMSettingBond</span> the connection
 </tr>
 <tr>
 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>an <span class="type">NMSettingBond</span> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+<td>an <a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
 </td>
 </tr>
 </tbody>
@@ -777,10 +801,10 @@ A shortcut to return any <a class="link" href="NMSettingGsm.html" title="NMSetti
 <hr>
 <div class="refsect2">
 <a name="nm-connection-get-setting-infiniband"></a><h3>nm_connection_get_setting_infiniband ()</h3>
-<pre class="programlisting"><span class="returnvalue">NMSettingInfiniband</span> * nm_connection_get_setting_infiniband
+<pre class="programlisting"><a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="returnvalue">NMSettingInfiniband</span></a> * nm_connection_get_setting_infiniband
                                                         (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre>
 <p>
-A shortcut to return any <span class="type">NMSettingInfiniband</span> the connection might contain.
+A shortcut to return any <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="type">NMSettingInfiniband</span></a> the connection might contain.
 </p>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
@@ -792,7 +816,7 @@ A shortcut to return any <span class="type">NMSettingInfiniband</span> the conne
 </tr>
 <tr>
 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>an <span class="type">NMSettingInfiniband</span> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+<td>an <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="type">NMSettingInfiniband</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
 </td>
 </tr>
 </tbody>
@@ -941,9 +965,9 @@ A shortcut to return any <a class="link" href="NMSettingSerial.html" title="NMSe
 <hr>
 <div class="refsect2">
 <a name="nm-connection-get-setting-vlan"></a><h3>nm_connection_get_setting_vlan ()</h3>
-<pre class="programlisting"><span class="returnvalue">NMSettingVlan</span> *     nm_connection_get_setting_vlan      (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre>
+<pre class="programlisting"><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="returnvalue">NMSettingVlan</span></a> *     nm_connection_get_setting_vlan      (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre>
 <p>
-A shortcut to return any <span class="type">NMSettingVlan</span> the connection might contain.
+A shortcut to return any <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> the connection might contain.
 </p>
 <div class="variablelist"><table border="0">
 <col align="left" valign="top">
@@ -955,7 +979,7 @@ A shortcut to return any <span class="type">NMSettingVlan</span> the connection
 </tr>
 <tr>
 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>an <span class="type">NMSettingVlan</span> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+<td>an <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
 </td>
 </tr>
 </tbody>
diff --git a/docs/libnm-util/html/NMSetting.html b/docs/libnm-util/html/NMSetting.html
index 3e64eeb0..cccfd00b 100644
--- a/docs/libnm-util/html/NMSetting.html
+++ b/docs/libnm-util/html/NMSetting.html
@@ -113,19 +113,20 @@ const <span class="returnvalue">char</span> *        <a class="link" href="NMSet
   <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
    +----NMSetting
          +----<a class="link" href="NMSetting8021x.html" title="NMSetting8021x">NMSetting8021x</a>
+         +----NMSettingAdsl
          +----<a class="link" href="NMSettingBluetooth.html" title="NMSettingBluetooth">NMSettingBluetooth</a>
-         +----NMSettingBond
+         +----<a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
          +----<a class="link" href="NMSettingCdma.html" title="NMSettingCdma">NMSettingCdma</a>
          +----<a class="link" href="NMSettingConnection.html" title="NMSettingConnection">NMSettingConnection</a>
          +----<a class="link" href="NMSettingGsm.html" title="NMSettingGsm">NMSettingGsm</a>
-         +----NMSettingInfiniband
+         +----<a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
          +----<a class="link" href="NMSettingIP4Config.html" title="NMSettingIP4Config">NMSettingIP4Config</a>
          +----<a class="link" href="NMSettingIP6Config.html" title="NMSettingIP6Config">NMSettingIP6Config</a>
          +----<a class="link" href="NMSettingOlpcMesh.html" title="NMSettingOlpcMesh">NMSettingOlpcMesh</a>
          +----<a class="link" href="NMSettingPPP.html" title="NMSettingPPP">NMSettingPPP</a>
          +----<a class="link" href="NMSettingPPPOE.html" title="NMSettingPPPOE">NMSettingPPPOE</a>
          +----<a class="link" href="NMSettingSerial.html" title="NMSettingSerial">NMSettingSerial</a>
-         +----NMSettingVlan
+         +----<a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
          +----<a class="link" href="NMSettingVPN.html" title="NMSettingVPN">NMSettingVPN</a>
          +----<a class="link" href="NMSettingWimax.html" title="NMSettingWimax">NMSettingWimax</a>
          +----<a class="link" href="NMSettingWired.html" title="NMSettingWired">NMSettingWired</a>
diff --git a/docs/libnm-util/html/NMSettingBond.html b/docs/libnm-util/html/NMSettingBond.html
new file mode 100644
index 00000000..e29bca05
--- /dev/null
+++ b/docs/libnm-util/html/NMSettingBond.html
@@ -0,0 +1,547 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>NMSettingBond</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="libnm-util Reference Manual">
+<link rel="up" href="ch01.html" title="libnm-util API Reference">
+<link rel="prev" href="NMSettingWimax.html" title="NMSettingWimax">
+<link rel="next" href="NMSettingInfiniband.html" title="NMSettingInfiniband">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="NMSettingWimax.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libnm-util Reference Manual</th>
+<td><a accesskey="n" href="NMSettingInfiniband.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#NMSettingBond.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#NMSettingBond.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#NMSettingBond.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#NMSettingBond.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="NMSettingBond"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="NMSettingBond.top_of_page"></a>NMSettingBond</span></h2>
+<p>NMSettingBond — Describes connection properties for bonds</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="NMSettingBond.synopsis"></a><h2>Synopsis</h2>
+<a name="NMSettingBondError"></a><pre class="synopsis">
+#include &lt;nm-setting-bond.h&gt;
+
+                    <a class="link" href="NMSettingBond.html#NMSettingBond-struct" title="NMSettingBond">NMSettingBond</a>;
+                    <a class="link" href="NMSettingBond.html#NMSettingBondClass" title="NMSettingBondClass">NMSettingBondClass</a>;
+enum                <a class="link" href="NMSettingBond.html#NMSettingBondError-enum" title="enum NMSettingBondError">NMSettingBondError</a>;
+#define             <a class="link" href="NMSettingBond.html#NM-SETTING-BOND-ERROR:CAPS" title="NM_SETTING_BOND_ERROR">NM_SETTING_BOND_ERROR</a>
+#define             <a class="link" href="NMSettingBond.html#NM-SETTING-BOND-INTERFACE-NAME:CAPS" title="NM_SETTING_BOND_INTERFACE_NAME">NM_SETTING_BOND_INTERFACE_NAME</a>
+#define             <a class="link" href="NMSettingBond.html#NM-SETTING-BOND-OPTIONS:CAPS" title="NM_SETTING_BOND_OPTIONS">NM_SETTING_BOND_OPTIONS</a>
+#define             <a class="link" href="NMSettingBond.html#NM-SETTING-BOND-OPTION-ARP-INTERVAL:CAPS" title="NM_SETTING_BOND_OPTION_ARP_INTERVAL">NM_SETTING_BOND_OPTION_ARP_INTERVAL</a>
+#define             <a class="link" href="NMSettingBond.html#NM-SETTING-BOND-OPTION-ARP-IP-TARGET:CAPS" title="NM_SETTING_BOND_OPTION_ARP_IP_TARGET">NM_SETTING_BOND_OPTION_ARP_IP_TARGET</a>
+#define             <a class="link" href="NMSettingBond.html#NM-SETTING-BOND-OPTION-DOWNDELAY:CAPS" title="NM_SETTING_BOND_OPTION_DOWNDELAY">NM_SETTING_BOND_OPTION_DOWNDELAY</a>
+#define             <a class="link" href="NMSettingBond.html#NM-SETTING-BOND-OPTION-MIIMON:CAPS" title="NM_SETTING_BOND_OPTION_MIIMON">NM_SETTING_BOND_OPTION_MIIMON</a>
+#define             <a class="link" href="NMSettingBond.html#NM-SETTING-BOND-OPTION-MODE:CAPS" title="NM_SETTING_BOND_OPTION_MODE">NM_SETTING_BOND_OPTION_MODE</a>
+#define             <a class="link" href="NMSettingBond.html#NM-SETTING-BOND-OPTION-UPDELAY:CAPS" title="NM_SETTING_BOND_OPTION_UPDELAY">NM_SETTING_BOND_OPTION_UPDELAY</a>
+#define             <a class="link" href="NMSettingBond.html#NM-SETTING-BOND-SETTING-NAME:CAPS" title="NM_SETTING_BOND_SETTING_NAME">NM_SETTING_BOND_SETTING_NAME</a>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="NMSettingBond.html#nm-setting-bond-add-option" title="nm_setting_bond_add_option ()">nm_setting_bond_add_option</a>          (<em class="parameter"><code><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *value</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              <a class="link" href="NMSettingBond.html#nm-setting-bond-error-quark" title="nm_setting_bond_error_quark ()">nm_setting_bond_error_quark</a>         (<em class="parameter"><code><span class="type">void</span></code></em>);
+const <span class="returnvalue">char</span> *        <a class="link" href="NMSettingBond.html#nm-setting-bond-get-interface-name" title="nm_setting_bond_get_interface_name ()">nm_setting_bond_get_interface_name</a>  (<em class="parameter"><code><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> *setting</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a>             <a class="link" href="NMSettingBond.html#nm-setting-bond-get-num-options" title="nm_setting_bond_get_num_options ()">nm_setting_bond_get_num_options</a>     (<em class="parameter"><code><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> *setting</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="NMSettingBond.html#nm-setting-bond-get-option" title="nm_setting_bond_get_option ()">nm_setting_bond_get_option</a>          (<em class="parameter"><code><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> idx</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> **out_name</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> **out_value</code></em>);
+const <span class="returnvalue">char</span> *        <a class="link" href="NMSettingBond.html#nm-setting-bond-get-option-by-name" title="nm_setting_bond_get_option_by_name ()">nm_setting_bond_get_option_by_name</a>  (<em class="parameter"><code><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);
+const <span class="returnvalue">char</span> *        <a class="link" href="NMSettingBond.html#nm-setting-bond-get-option-default" title="nm_setting_bond_get_option_default ()">nm_setting_bond_get_option_default</a>  (<em class="parameter"><code><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);
+const <span class="returnvalue">char</span> **       <a class="link" href="NMSettingBond.html#nm-setting-bond-get-valid-options" title="nm_setting_bond_get_valid_options ()">nm_setting_bond_get_valid_options</a>   (<em class="parameter"><code><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> *setting</code></em>);
+<a class="link" href="NMSetting.html" title="NMSetting"><span class="returnvalue">NMSetting</span></a> *         <a class="link" href="NMSettingBond.html#nm-setting-bond-new" title="nm_setting_bond_new ()">nm_setting_bond_new</a>                 (<em class="parameter"><code><span class="type">void</span></code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="NMSettingBond.html#nm-setting-bond-remove-option" title="nm_setting_bond_remove_option ()">nm_setting_bond_remove_option</a>       (<em class="parameter"><code><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMSettingBond.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a class="link" href="NMSetting.html" title="NMSetting">NMSetting</a>
+         +----NMSettingBond
+</pre>
+<pre class="synopsis">
+  GEnum
+   +----NMSettingBondError
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMSettingBond.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="NMSettingBond.html#NMSettingBond--interface-name" title='The "interface-name" property'>interface-name</a>"           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write
+  "<a class="link" href="NMSettingBond.html#NMSettingBond--options" title='The "options" property'>options</a>"                  <span class="type">GHashTable_gchararray+gchararray_*</span>  : Read / Write
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMSettingBond.description"></a><h2>Description</h2>
+<p>
+The <a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> object is a <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> subclass that describes properties
+necessary for bond connections.
+</p>
+</div>
+<div class="refsect1">
+<a name="NMSettingBond.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="NMSettingBond-struct"></a><h3>NMSettingBond</h3>
+<pre class="programlisting">typedef struct _NMSettingBond NMSettingBond;</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMSettingBondClass"></a><h3>NMSettingBondClass</h3>
+<pre class="programlisting">typedef struct {
+	NMSettingClass parent;
+
+	/* Padding for future expansion */
+	void (*_reserved1) (void);
+	void (*_reserved2) (void);
+	void (*_reserved3) (void);
+	void (*_reserved4) (void);
+} NMSettingBondClass;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMSettingBondError-enum"></a><h3>enum NMSettingBondError</h3>
+<pre class="programlisting">typedef enum {
+	NM_SETTING_BOND_ERROR_UNKNOWN = 0,      /*&lt; nick=UnknownError &gt;*/
+	NM_SETTING_BOND_ERROR_INVALID_PROPERTY, /*&lt; nick=InvalidProperty &gt;*/
+	NM_SETTING_BOND_ERROR_MISSING_PROPERTY, /*&lt; nick=MissingProperty &gt;*/
+	NM_SETTING_BOND_ERROR_INVALID_OPTION,   /*&lt; nick=InvalidOption &gt;*/
+	NM_SETTING_BOND_ERROR_MISSING_OPTION,   /*&lt; nick=MissingOption &gt;*/
+} NMSettingBondError;
+</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="NM-SETTING-BOND-ERROR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">NM_SETTING_BOND_ERROR_UNKNOWN</code></span></p></td>
+<td>unknown or unclassified error
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-SETTING-BOND-ERROR-INVALID-PROPERTY:CAPS"></a><span class="term"><code class="literal">NM_SETTING_BOND_ERROR_INVALID_PROPERTY</code></span></p></td>
+<td>the property was invalid
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-SETTING-BOND-ERROR-MISSING-PROPERTY:CAPS"></a><span class="term"><code class="literal">NM_SETTING_BOND_ERROR_MISSING_PROPERTY</code></span></p></td>
+<td>the property was missing and is
+required
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-SETTING-BOND-ERROR-INVALID-OPTION:CAPS"></a><span class="term"><code class="literal">NM_SETTING_BOND_ERROR_INVALID_OPTION</code></span></p></td>
+<td>
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-SETTING-BOND-ERROR-MISSING-OPTION:CAPS"></a><span class="term"><code class="literal">NM_SETTING_BOND_ERROR_MISSING_OPTION</code></span></p></td>
+<td>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-BOND-ERROR:CAPS"></a><h3>NM_SETTING_BOND_ERROR</h3>
+<pre class="programlisting">#define NM_SETTING_BOND_ERROR nm_setting_bond_error_quark ()
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-BOND-INTERFACE-NAME:CAPS"></a><h3>NM_SETTING_BOND_INTERFACE_NAME</h3>
+<pre class="programlisting">#define NM_SETTING_BOND_INTERFACE_NAME "interface-name"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-BOND-OPTIONS:CAPS"></a><h3>NM_SETTING_BOND_OPTIONS</h3>
+<pre class="programlisting">#define NM_SETTING_BOND_OPTIONS "options"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-BOND-OPTION-ARP-INTERVAL:CAPS"></a><h3>NM_SETTING_BOND_OPTION_ARP_INTERVAL</h3>
+<pre class="programlisting">#define NM_SETTING_BOND_OPTION_ARP_INTERVAL  "arp_interval"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-BOND-OPTION-ARP-IP-TARGET:CAPS"></a><h3>NM_SETTING_BOND_OPTION_ARP_IP_TARGET</h3>
+<pre class="programlisting">#define NM_SETTING_BOND_OPTION_ARP_IP_TARGET "arp_ip_target"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-BOND-OPTION-DOWNDELAY:CAPS"></a><h3>NM_SETTING_BOND_OPTION_DOWNDELAY</h3>
+<pre class="programlisting">#define NM_SETTING_BOND_OPTION_DOWNDELAY     "downdelay"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-BOND-OPTION-MIIMON:CAPS"></a><h3>NM_SETTING_BOND_OPTION_MIIMON</h3>
+<pre class="programlisting">#define NM_SETTING_BOND_OPTION_MIIMON        "miimon"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-BOND-OPTION-MODE:CAPS"></a><h3>NM_SETTING_BOND_OPTION_MODE</h3>
+<pre class="programlisting">#define NM_SETTING_BOND_OPTION_MODE          "mode"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-BOND-OPTION-UPDELAY:CAPS"></a><h3>NM_SETTING_BOND_OPTION_UPDELAY</h3>
+<pre class="programlisting">#define NM_SETTING_BOND_OPTION_UPDELAY       "updelay"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-BOND-SETTING-NAME:CAPS"></a><h3>NM_SETTING_BOND_SETTING_NAME</h3>
+<pre class="programlisting">#define NM_SETTING_BOND_SETTING_NAME "bond"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-bond-add-option"></a><h3>nm_setting_bond_add_option ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_bond_add_option          (<em class="parameter"><code><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *value</code></em>);</pre>
+<p>
+Add an option to the table.  The option is compared to an internal list
+of allowed options.  Option names may contain only alphanumeric characters
+(ie [a-zA-Z0-9]).  Adding a new name replaces any existing name/value pair
+that may already exist.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>name for the option</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>value for the option</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the option was valid and was added to the internal option
+list, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if it was not.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-bond-error-quark"></a><h3>nm_setting_bond_error_quark ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              nm_setting_bond_error_quark         (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Registers an error quark for <a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> if necessary.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the error quark used for <a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> errors.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-bond-get-interface-name"></a><h3>nm_setting_bond_get_interface_name ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> *        nm_setting_bond_get_interface_name  (<em class="parameter"><code><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> *setting</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingBond.html#NMSettingBond--interface-name" title='The "interface-name" property'><span class="type">"interface-name"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-bond-get-num-options"></a><h3>nm_setting_bond_get_num_options ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a>             nm_setting_bond_get_num_options     (<em class="parameter"><code><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> *setting</code></em>);</pre>
+<p>
+Returns the number of options that should be set for this bond when it
+is activated. This can be used to retrieve each option individually
+using <a class="link" href="NMSettingBond.html#nm-setting-bond-get-option" title="nm_setting_bond_get_option ()"><code class="function">nm_setting_bond_get_option()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the number of bonding options</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-bond-get-option"></a><h3>nm_setting_bond_get_option ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_bond_get_option          (<em class="parameter"><code><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> idx</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> **out_name</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> **out_value</code></em>);</pre>
+<p>
+Given an index, return the value of the bonding option at that index.  Indexes
+are *not* guaranteed to be static across modifications to options done by
+<a class="link" href="NMSettingBond.html#nm-setting-bond-add-option" title="nm_setting_bond_add_option ()"><code class="function">nm_setting_bond_add_option()</code></a> and <a class="link" href="NMSettingBond.html#nm-setting-bond-remove-option" title="nm_setting_bond_remove_option ()"><code class="function">nm_setting_bond_remove_option()</code></a>,
+and should not be used to refer to options except for short periods of time
+such as during option iteration.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>idx</code></em> :</span></p></td>
+<td>index of the desired option, from 0 to
+<a class="link" href="NMSettingBond.html#nm-setting-bond-get-num-options" title="nm_setting_bond_get_num_options ()"><code class="function">nm_setting_bond_get_num_options()</code></a> - 1</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>out_name</code></em> :</span></p></td>
+<td>on return, the name of the bonding option; this
+value is owned by the setting and should not be modified. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>out_value</code></em> :</span></p></td>
+<td>on return, the value of the name of the bonding
+option; this value is owned by the setting and should not be modified. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success if the index was valid and an option was found,
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if the index was invalid (ie, greater than the number of options
+currently held by the setting)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-bond-get-option-by-name"></a><h3>nm_setting_bond_get_option_by_name ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> *        nm_setting_bond_get_option_by_name  (<em class="parameter"><code><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre>
+<p>
+Returns the value associated with the bonding option specified by
+<em class="parameter"><code>name</code></em>, if it exists.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>the option name for which to retrieve the value</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the value, or <a href="/usr/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL:CAPS"><code class="literal">NULL</code></a> if the key/value pair was never added to the
+setting; the value is owned by the setting and must not be modified</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-bond-get-option-default"></a><h3>nm_setting_bond_get_option_default ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> *        nm_setting_bond_get_option_default  (<em class="parameter"><code><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>the name of the option</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the value of the bond option if not overridden by an entry in
+the <a class="link" href="NMSettingBond.html#NMSettingBond--options" title='The "options" property'><span class="type">"options"</span></a> property.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-bond-get-valid-options"></a><h3>nm_setting_bond_get_valid_options ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> **       nm_setting_bond_get_valid_options   (<em class="parameter"><code><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> *setting</code></em>);</pre>
+<p>
+Returns a list of valid bond options.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a NULL-terminated array of strings of valid bond options. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-bond-new"></a><h3>nm_setting_bond_new ()</h3>
+<pre class="programlisting"><a class="link" href="NMSetting.html" title="NMSetting"><span class="returnvalue">NMSetting</span></a> *         nm_setting_bond_new                 (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Creates a new <a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> object with default values.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the new empty <a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> object. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-bond-remove-option"></a><h3>nm_setting_bond_remove_option ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_bond_remove_option       (<em class="parameter"><code><a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre>
+<p>
+Remove the bonding option referenced by <em class="parameter"><code>name</code></em> from the internal option
+list.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingBond.html" title="NMSettingBond"><span class="type">NMSettingBond</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>name of the option to remove</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the option was found and removed from the internal option
+list, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if it was not.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="refsect1">
+<a name="NMSettingBond.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="NMSettingBond--interface-name"></a><h3>The <code class="literal">"interface-name"</code> property</h3>
+<pre class="programlisting">  "interface-name"           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write</pre>
+<p>
+The name of the virtual in-kernel bonding network interface
+</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMSettingBond--options"></a><h3>The <code class="literal">"options"</code> property</h3>
+<pre class="programlisting">  "options"                  <span class="type">GHashTable_gchararray+gchararray_*</span>  : Read / Write</pre>
+<p>
+Dictionary of key/value pairs of bonding options.  Both keys
+and values must be strings. Option names must contain only
+alphanumeric characters (ie, [a-zA-Z0-9]).
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libnm-util/html/NMSettingConnection.html b/docs/libnm-util/html/NMSettingConnection.html
index 360c9743..339919d2 100644
--- a/docs/libnm-util/html/NMSettingConnection.html
+++ b/docs/libnm-util/html/NMSettingConnection.html
@@ -697,7 +697,7 @@ Returns the <a class="link" href="NMSettingConnection.html#NMSettingConnection--
 </tr>
 <tr>
 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
-<td>the setting name (ie <span class="type">NM_SETTING_BOND_SETTING_NAME</span>) to be matched
+<td>the setting name (ie <a class="link" href="NMSettingBond.html#NM-SETTING-BOND-SETTING-NAME:CAPS" title="NM_SETTING_BOND_SETTING_NAME"><span class="type">NM_SETTING_BOND_SETTING_NAME</span></a>) to be matched
 against <em class="parameter"><code>setting</code></em>'s slave type</td>
 </tr>
 <tr>
@@ -849,7 +849,7 @@ if the connection is read-only and cannot be modified.
 <pre class="programlisting">  "slave-type"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write</pre>
 <p>
 Setting name describing the type of slave device (ie
-<span class="type">NM_SETTING_BOND_SETTING_NAME</span>) or NULL if this connection is not a slave.
+<a class="link" href="NMSettingBond.html#NM-SETTING-BOND-SETTING-NAME:CAPS" title="NM_SETTING_BOND_SETTING_NAME"><span class="type">NM_SETTING_BOND_SETTING_NAME</span></a>) or NULL if this connection is not a slave.
 </p>
 <p>Default value: NULL</p>
 </div>
diff --git a/docs/libnm-util/html/NMSettingInfiniband.html b/docs/libnm-util/html/NMSettingInfiniband.html
new file mode 100644
index 00000000..a208bff1
--- /dev/null
+++ b/docs/libnm-util/html/NMSettingInfiniband.html
@@ -0,0 +1,318 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>NMSettingInfiniband</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="libnm-util Reference Manual">
+<link rel="up" href="ch01.html" title="libnm-util API Reference">
+<link rel="prev" href="NMSettingBond.html" title="NMSettingBond">
+<link rel="next" href="NMSettingVlan.html" title="NMSettingVlan">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="NMSettingBond.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libnm-util Reference Manual</th>
+<td><a accesskey="n" href="NMSettingVlan.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#NMSettingInfiniband.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#NMSettingInfiniband.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#NMSettingInfiniband.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#NMSettingInfiniband.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="NMSettingInfiniband"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="NMSettingInfiniband.top_of_page"></a>NMSettingInfiniband</span></h2>
+<p>NMSettingInfiniband — Describes connection properties for IP-over-InfiniBand networks</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="NMSettingInfiniband.synopsis"></a><h2>Synopsis</h2>
+<a name="NMSettingInfinibandError"></a><pre class="synopsis">
+#include &lt;nm-setting-infiniband.h&gt;
+
+                    <a class="link" href="NMSettingInfiniband.html#NMSettingInfiniband-struct" title="NMSettingInfiniband">NMSettingInfiniband</a>;
+                    <a class="link" href="NMSettingInfiniband.html#NMSettingInfinibandClass" title="NMSettingInfinibandClass">NMSettingInfinibandClass</a>;
+enum                <a class="link" href="NMSettingInfiniband.html#NMSettingInfinibandError-enum" title="enum NMSettingInfinibandError">NMSettingInfinibandError</a>;
+#define             <a class="link" href="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-ERROR:CAPS" title="NM_SETTING_INFINIBAND_ERROR">NM_SETTING_INFINIBAND_ERROR</a>
+#define             <a class="link" href="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-MAC-ADDRESS:CAPS" title="NM_SETTING_INFINIBAND_MAC_ADDRESS">NM_SETTING_INFINIBAND_MAC_ADDRESS</a>
+#define             <a class="link" href="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-MTU:CAPS" title="NM_SETTING_INFINIBAND_MTU">NM_SETTING_INFINIBAND_MTU</a>
+#define             <a class="link" href="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-SETTING-NAME:CAPS" title="NM_SETTING_INFINIBAND_SETTING_NAME">NM_SETTING_INFINIBAND_SETTING_NAME</a>
+#define             <a class="link" href="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-TRANSPORT-MODE:CAPS" title="NM_SETTING_INFINIBAND_TRANSPORT_MODE">NM_SETTING_INFINIBAND_TRANSPORT_MODE</a>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              <a class="link" href="NMSettingInfiniband.html#nm-setting-infiniband-error-quark" title="nm_setting_infiniband_error_quark ()">nm_setting_infiniband_error_quark</a>   (<em class="parameter"><code><span class="type">void</span></code></em>);
+const <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.html#GByteArray"><span class="returnvalue">GByteArray</span></a> *  <a class="link" href="NMSettingInfiniband.html#nm-setting-infiniband-get-mac-address" title="nm_setting_infiniband_get_mac_address ()">nm_setting_infiniband_get_mac_address</a>
+                                                        (<em class="parameter"><code><a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="type">NMSettingInfiniband</span></a> *setting</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a>             <a class="link" href="NMSettingInfiniband.html#nm-setting-infiniband-get-mtu" title="nm_setting_infiniband_get_mtu ()">nm_setting_infiniband_get_mtu</a>       (<em class="parameter"><code><a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="type">NMSettingInfiniband</span></a> *setting</code></em>);
+const <span class="returnvalue">char</span> *        <a class="link" href="NMSettingInfiniband.html#nm-setting-infiniband-get-transport-mode" title="nm_setting_infiniband_get_transport_mode ()">nm_setting_infiniband_get_transport_mode</a>
+                                                        (<em class="parameter"><code><a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="type">NMSettingInfiniband</span></a> *setting</code></em>);
+<a class="link" href="NMSetting.html" title="NMSetting"><span class="returnvalue">NMSetting</span></a> *         <a class="link" href="NMSettingInfiniband.html#nm-setting-infiniband-new" title="nm_setting_infiniband_new ()">nm_setting_infiniband_new</a>           (<em class="parameter"><code><span class="type">void</span></code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMSettingInfiniband.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a class="link" href="NMSetting.html" title="NMSetting">NMSetting</a>
+         +----NMSettingInfiniband
+</pre>
+<pre class="synopsis">
+  GEnum
+   +----NMSettingInfinibandError
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMSettingInfiniband.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="NMSettingInfiniband.html#NMSettingInfiniband--mac-address" title='The "mac-address" property'>mac-address</a>"              <span class="type">GArray_guchar_</span>*       : Read / Write
+  "<a class="link" href="NMSettingInfiniband.html#NMSettingInfiniband--mtu" title='The "mtu" property'>mtu</a>"                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write / Construct
+  "<a class="link" href="NMSettingInfiniband.html#NMSettingInfiniband--transport-mode" title='The "transport-mode" property'>transport-mode</a>"           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write / Construct
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMSettingInfiniband.description"></a><h2>Description</h2>
+<p>
+The <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="type">NMSettingInfiniband</span></a> object is a <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> subclass that describes properties
+necessary for connection to IP-over-InfiniBand networks.
+</p>
+</div>
+<div class="refsect1">
+<a name="NMSettingInfiniband.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="NMSettingInfiniband-struct"></a><h3>NMSettingInfiniband</h3>
+<pre class="programlisting">typedef struct _NMSettingInfiniband NMSettingInfiniband;</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMSettingInfinibandClass"></a><h3>NMSettingInfinibandClass</h3>
+<pre class="programlisting">typedef struct {
+	NMSettingClass parent;
+
+	/* Padding for future expansion */
+	void (*_reserved1) (void);
+	void (*_reserved2) (void);
+	void (*_reserved3) (void);
+	void (*_reserved4) (void);
+} NMSettingInfinibandClass;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMSettingInfinibandError-enum"></a><h3>enum NMSettingInfinibandError</h3>
+<pre class="programlisting">typedef enum {
+	NM_SETTING_INFINIBAND_ERROR_UNKNOWN = 0,      /*&lt; nick=UnknownError &gt;*/
+	NM_SETTING_INFINIBAND_ERROR_INVALID_PROPERTY, /*&lt; nick=InvalidProperty &gt;*/
+	NM_SETTING_INFINIBAND_ERROR_MISSING_PROPERTY  /*&lt; nick=MissingProperty &gt;*/
+} NMSettingInfinibandError;
+</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="NM-SETTING-INFINIBAND-ERROR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">NM_SETTING_INFINIBAND_ERROR_UNKNOWN</code></span></p></td>
+<td>unknown or unclassified error
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-SETTING-INFINIBAND-ERROR-INVALID-PROPERTY:CAPS"></a><span class="term"><code class="literal">NM_SETTING_INFINIBAND_ERROR_INVALID_PROPERTY</code></span></p></td>
+<td>the property was invalid
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-SETTING-INFINIBAND-ERROR-MISSING-PROPERTY:CAPS"></a><span class="term"><code class="literal">NM_SETTING_INFINIBAND_ERROR_MISSING_PROPERTY</code></span></p></td>
+<td>the property was missing and is
+required
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-INFINIBAND-ERROR:CAPS"></a><h3>NM_SETTING_INFINIBAND_ERROR</h3>
+<pre class="programlisting">#define NM_SETTING_INFINIBAND_ERROR nm_setting_infiniband_error_quark ()
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-INFINIBAND-MAC-ADDRESS:CAPS"></a><h3>NM_SETTING_INFINIBAND_MAC_ADDRESS</h3>
+<pre class="programlisting">#define NM_SETTING_INFINIBAND_MAC_ADDRESS    "mac-address"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-INFINIBAND-MTU:CAPS"></a><h3>NM_SETTING_INFINIBAND_MTU</h3>
+<pre class="programlisting">#define NM_SETTING_INFINIBAND_MTU            "mtu"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-INFINIBAND-SETTING-NAME:CAPS"></a><h3>NM_SETTING_INFINIBAND_SETTING_NAME</h3>
+<pre class="programlisting">#define NM_SETTING_INFINIBAND_SETTING_NAME "infiniband"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-INFINIBAND-TRANSPORT-MODE:CAPS"></a><h3>NM_SETTING_INFINIBAND_TRANSPORT_MODE</h3>
+<pre class="programlisting">#define NM_SETTING_INFINIBAND_TRANSPORT_MODE "transport-mode"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-infiniband-error-quark"></a><h3>nm_setting_infiniband_error_quark ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              nm_setting_infiniband_error_quark   (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Registers an error quark for <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="type">NMSettingInfiniband</span></a> if necessary.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the error quark used for <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="type">NMSettingInfiniband</span></a> errors.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-infiniband-get-mac-address"></a><h3>nm_setting_infiniband_get_mac_address ()</h3>
+<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.html#GByteArray"><span class="returnvalue">GByteArray</span></a> *  nm_setting_infiniband_get_mac_address
+                                                        (<em class="parameter"><code><a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="type">NMSettingInfiniband</span></a> *setting</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="type">NMSettingInfiniband</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingInfiniband.html#NMSettingInfiniband--mac-address" title='The "mac-address" property'><span class="type">"mac-address"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-infiniband-get-mtu"></a><h3>nm_setting_infiniband_get_mtu ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a>             nm_setting_infiniband_get_mtu       (<em class="parameter"><code><a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="type">NMSettingInfiniband</span></a> *setting</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="type">NMSettingInfiniband</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingInfiniband.html#NMSettingInfiniband--mtu" title='The "mtu" property'><span class="type">"mtu"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-infiniband-get-transport-mode"></a><h3>nm_setting_infiniband_get_transport_mode ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> *        nm_setting_infiniband_get_transport_mode
+                                                        (<em class="parameter"><code><a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="type">NMSettingInfiniband</span></a> *setting</code></em>);</pre>
+<p>
+Returns the transport mode for this device. Either 'datagram' or
+'connected'.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="type">NMSettingInfiniband</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the IPoIB transport mode</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-infiniband-new"></a><h3>nm_setting_infiniband_new ()</h3>
+<pre class="programlisting"><a class="link" href="NMSetting.html" title="NMSetting"><span class="returnvalue">NMSetting</span></a> *         nm_setting_infiniband_new           (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Creates a new <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="type">NMSettingInfiniband</span></a> object with default values.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the new empty <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband"><span class="type">NMSettingInfiniband</span></a> object. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
+</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<div class="refsect1">
+<a name="NMSettingInfiniband.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="NMSettingInfiniband--mac-address"></a><h3>The <code class="literal">"mac-address"</code> property</h3>
+<pre class="programlisting">  "mac-address"              <span class="type">GArray_guchar_</span>*       : Read / Write</pre>
+<p>
+If specified, this connection will only apply to the IPoIB
+device whose permanent MAC address matches. This property does
+not change the MAC address of the device (i.e. MAC spoofing).
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMSettingInfiniband--mtu"></a><h3>The <code class="literal">"mtu"</code> property</h3>
+<pre class="programlisting">  "mtu"                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write / Construct</pre>
+<p>
+If non-zero, only transmit packets of the specified size or smaller,
+breaking larger packets up into multiple frames.
+</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMSettingInfiniband--transport-mode"></a><h3>The <code class="literal">"transport-mode"</code> property</h3>
+<pre class="programlisting">  "transport-mode"           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write / Construct</pre>
+<p>
+The IP-over-InfiniBand transport mode. Either 'datagram' or
+'connected'.
+</p>
+<p>Default value: NULL</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libnm-util/html/NMSettingOlpcMesh.html b/docs/libnm-util/html/NMSettingOlpcMesh.html
index 15992600..53ee169c 100644
--- a/docs/libnm-util/html/NMSettingOlpcMesh.html
+++ b/docs/libnm-util/html/NMSettingOlpcMesh.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
 <link rel="home" href="index.html" title="libnm-util Reference Manual">
 <link rel="up" href="ch01.html" title="libnm-util API Reference">
-<link rel="prev" href="NMSettingWimax.html" title="NMSettingWimax">
+<link rel="prev" href="NMSettingVlan.html" title="NMSettingVlan">
 <link rel="next" href="NMSetting8021x.html" title="NMSetting8021x">
 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -14,7 +14,7 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
 <tr valign="middle">
-<td><a accesskey="p" href="NMSettingWimax.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="NMSettingVlan.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
 <th width="100%" align="center">libnm-util Reference Manual</th>
diff --git a/docs/libnm-util/html/NMSettingPPP.html b/docs/libnm-util/html/NMSettingPPP.html
index 0f95d8f6..c4d92133 100644
--- a/docs/libnm-util/html/NMSettingPPP.html
+++ b/docs/libnm-util/html/NMSettingPPP.html
@@ -375,128 +375,344 @@ Registers an error quark for <a class="link" href="NMSettingPPP.html" title="NMS
 <div class="refsect2">
 <a name="nm-setting-ppp-get-baud"></a><h3>nm_setting_ppp_get_baud ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a>             nm_setting_ppp_get_baud             (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--baud" title='The "baud" property'><span class="type">"baud"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-crtscts"></a><h3>nm_setting_ppp_get_crtscts ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_ppp_get_crtscts          (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--crtscts" title='The "crtscts" property'><span class="type">"crtscts"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-lcp-echo-failure"></a><h3>nm_setting_ppp_get_lcp_echo_failure ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a>             nm_setting_ppp_get_lcp_echo_failure (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--lcp-echo-failure" title='The "lcp-echo-failure" property'><span class="type">"lcp-echo-failure"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-lcp-echo-interval"></a><h3>nm_setting_ppp_get_lcp_echo_interval ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a>             nm_setting_ppp_get_lcp_echo_interval
                                                         (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--lcp-echo-interval" title='The "lcp-echo-interval" property'><span class="type">"lcp-echo-interval"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-mppe-stateful"></a><h3>nm_setting_ppp_get_mppe_stateful ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_ppp_get_mppe_stateful    (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--mppe-stateful" title='The "mppe-stateful" property'><span class="type">"mppe-stateful"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-mru"></a><h3>nm_setting_ppp_get_mru ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a>             nm_setting_ppp_get_mru              (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--mru" title='The "mru" property'><span class="type">"mru"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-mtu"></a><h3>nm_setting_ppp_get_mtu ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a>             nm_setting_ppp_get_mtu              (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--mtu" title='The "mtu" property'><span class="type">"mtu"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-no-vj-comp"></a><h3>nm_setting_ppp_get_no_vj_comp ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_ppp_get_no_vj_comp       (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--no-vj-comp" title='The "no-vj-comp" property'><span class="type">"no-vj-comp"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-noauth"></a><h3>nm_setting_ppp_get_noauth ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_ppp_get_noauth           (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--noauth" title='The "noauth" property'><span class="type">"noauth"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-nobsdcomp"></a><h3>nm_setting_ppp_get_nobsdcomp ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_ppp_get_nobsdcomp        (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--nobsdcomp" title='The "nobsdcomp" property'><span class="type">"nobsdcomp"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-nodeflate"></a><h3>nm_setting_ppp_get_nodeflate ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_ppp_get_nodeflate        (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--nodeflate" title='The "nodeflate" property'><span class="type">"nodeflate"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-refuse-chap"></a><h3>nm_setting_ppp_get_refuse_chap ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_ppp_get_refuse_chap      (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--refuse-chap" title='The "refuse-chap" property'><span class="type">"refuse-chap"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-refuse-eap"></a><h3>nm_setting_ppp_get_refuse_eap ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_ppp_get_refuse_eap       (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--refuse-eap" title='The "refuse-eap" property'><span class="type">"refuse-eap"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-refuse-mschap"></a><h3>nm_setting_ppp_get_refuse_mschap ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_ppp_get_refuse_mschap    (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--refuse-mschap" title='The "refuse-mschap" property'><span class="type">"refuse-mschap"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-refuse-mschapv2"></a><h3>nm_setting_ppp_get_refuse_mschapv2 ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_ppp_get_refuse_mschapv2  (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--refuse-mschapv2" title='The "refuse-mschapv2" property'><span class="type">"refuse-mschapv2"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-refuse-pap"></a><h3>nm_setting_ppp_get_refuse_pap ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_ppp_get_refuse_pap       (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--refuse-pap" title='The "refuse-pap" property'><span class="type">"refuse-pap"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-require-mppe"></a><h3>nm_setting_ppp_get_require_mppe ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_ppp_get_require_mppe     (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--require-mppe" title='The "require-mppe" property'><span class="type">"require-mppe"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
 <a name="nm-setting-ppp-get-require-mppe-128"></a><h3>nm_setting_ppp_get_require_mppe_128 ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_ppp_get_require_mppe_128 (<em class="parameter"><code><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPP.html#NMSettingPPP--require-mppe-128" title='The "require-mppe-128" property'><span class="type">"require-mppe-128"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
diff --git a/docs/libnm-util/html/NMSettingPPPOE.html b/docs/libnm-util/html/NMSettingPPPOE.html
index bdbeeead..3f20ccec 100644
--- a/docs/libnm-util/html/NMSettingPPPOE.html
+++ b/docs/libnm-util/html/NMSettingPPPOE.html
@@ -220,8 +220,20 @@ Registers an error quark for <a class="link" href="NMSettingPPPOE.html" title="N
 <div class="refsect2">
 <a name="nm-setting-pppoe-get-password"></a><h3>nm_setting_pppoe_get_password ()</h3>
 <pre class="programlisting">const <span class="returnvalue">char</span> *        nm_setting_pppoe_get_password       (<em class="parameter"><code><a class="link" href="NMSettingPPPOE.html" title="NMSettingPPPOE"><span class="type">NMSettingPPPOE</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPPOE.html" title="NMSettingPPPOE"><span class="type">NMSettingPPPOE</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPPOE.html#NMSettingPPPOE--password" title='The "password" property'><span class="type">"password"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
@@ -258,7 +270,7 @@ Registers an error quark for <a class="link" href="NMSettingPPPOE.html" title="N
 </tr>
 <tr>
 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>the <a class="link" href="NMSettingPPPOE.html#NMSettingPPPOE--password" title='The "password" property'><span class="type">"password"</span></a> property of the setting</td>
+<td>the <a class="link" href="NMSettingPPPOE.html#NMSettingPPPOE--service" title='The "service" property'><span class="type">"service"</span></a> property of the setting</td>
 </tr>
 </tbody>
 </table></div>
@@ -267,8 +279,20 @@ Registers an error quark for <a class="link" href="NMSettingPPPOE.html" title="N
 <div class="refsect2">
 <a name="nm-setting-pppoe-get-username"></a><h3>nm_setting_pppoe_get_username ()</h3>
 <pre class="programlisting">const <span class="returnvalue">char</span> *        nm_setting_pppoe_get_username       (<em class="parameter"><code><a class="link" href="NMSettingPPPOE.html" title="NMSettingPPPOE"><span class="type">NMSettingPPPOE</span></a> *setting</code></em>);</pre>
-<p>
-</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPPOE.html" title="NMSettingPPPOE"><span class="type">NMSettingPPPOE</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingPPPOE.html#NMSettingPPPOE--username" title='The "username" property'><span class="type">"username"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
diff --git a/docs/libnm-util/html/NMSettingVlan.html b/docs/libnm-util/html/NMSettingVlan.html
new file mode 100644
index 00000000..cc50161e
--- /dev/null
+++ b/docs/libnm-util/html/NMSettingVlan.html
@@ -0,0 +1,708 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>NMSettingVlan</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="libnm-util Reference Manual">
+<link rel="up" href="ch01.html" title="libnm-util API Reference">
+<link rel="prev" href="NMSettingInfiniband.html" title="NMSettingInfiniband">
+<link rel="next" href="NMSettingOlpcMesh.html" title="NMSettingOlpcMesh">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="NMSettingInfiniband.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libnm-util Reference Manual</th>
+<td><a accesskey="n" href="NMSettingOlpcMesh.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#NMSettingVlan.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#NMSettingVlan.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#NMSettingVlan.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#NMSettingVlan.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="NMSettingVlan"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="NMSettingVlan.top_of_page"></a>NMSettingVlan</span></h2>
+<p>NMSettingVlan — Describes connection properties for VLAN interfaces</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="NMSettingVlan.synopsis"></a><h2>Synopsis</h2>
+<a name="NMSettingVlanError"></a><a name="NMVlanFlags"></a><a name="NMVlanPriorityMap"></a><pre class="synopsis">
+#include &lt;nm-setting-vlan.h&gt;
+
+                    <a class="link" href="NMSettingVlan.html#NMSettingVlan-struct" title="NMSettingVlan">NMSettingVlan</a>;
+                    <a class="link" href="NMSettingVlan.html#NMSettingVlanClass" title="NMSettingVlanClass">NMSettingVlanClass</a>;
+enum                <a class="link" href="NMSettingVlan.html#NMSettingVlanError-enum" title="enum NMSettingVlanError">NMSettingVlanError</a>;
+enum                <a class="link" href="NMSettingVlan.html#NMVlanFlags-enum" title="enum NMVlanFlags">NMVlanFlags</a>;
+enum                <a class="link" href="NMSettingVlan.html#NMVlanPriorityMap-enum" title="enum NMVlanPriorityMap">NMVlanPriorityMap</a>;
+#define             <a class="link" href="NMSettingVlan.html#NM-SETTING-VLAN-EGRESS-PRIORITY-MAP:CAPS" title="NM_SETTING_VLAN_EGRESS_PRIORITY_MAP">NM_SETTING_VLAN_EGRESS_PRIORITY_MAP</a>
+#define             <a class="link" href="NMSettingVlan.html#NM-SETTING-VLAN-ERROR:CAPS" title="NM_SETTING_VLAN_ERROR">NM_SETTING_VLAN_ERROR</a>
+#define             <a class="link" href="NMSettingVlan.html#NM-SETTING-VLAN-FLAGS:CAPS" title="NM_SETTING_VLAN_FLAGS">NM_SETTING_VLAN_FLAGS</a>
+#define             <a class="link" href="NMSettingVlan.html#NM-SETTING-VLAN-ID:CAPS" title="NM_SETTING_VLAN_ID">NM_SETTING_VLAN_ID</a>
+#define             <a class="link" href="NMSettingVlan.html#NM-SETTING-VLAN-INGRESS-PRIORITY-MAP:CAPS" title="NM_SETTING_VLAN_INGRESS_PRIORITY_MAP">NM_SETTING_VLAN_INGRESS_PRIORITY_MAP</a>
+#define             <a class="link" href="NMSettingVlan.html#NM-SETTING-VLAN-INTERFACE-NAME:CAPS" title="NM_SETTING_VLAN_INTERFACE_NAME">NM_SETTING_VLAN_INTERFACE_NAME</a>
+#define             <a class="link" href="NMSettingVlan.html#NM-SETTING-VLAN-PARENT:CAPS" title="NM_SETTING_VLAN_PARENT">NM_SETTING_VLAN_PARENT</a>
+#define             <a class="link" href="NMSettingVlan.html#NM-SETTING-VLAN-SETTING-NAME:CAPS" title="NM_SETTING_VLAN_SETTING_NAME">NM_SETTING_VLAN_SETTING_NAME</a>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="NMSettingVlan.html#nm-setting-vlan-add-priority" title="nm_setting_vlan_add_priority ()">nm_setting_vlan_add_priority</a>        (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code><a class="link" href="NMSettingVlan.html#NMVlanPriorityMap"><span class="type">NMVlanPriorityMap</span></a> map</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> from</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> to</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="NMSettingVlan.html#nm-setting-vlan-add-priority-str" title="nm_setting_vlan_add_priority_str ()">nm_setting_vlan_add_priority_str</a>    (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code><a class="link" href="NMSettingVlan.html#NMVlanPriorityMap"><span class="type">NMVlanPriorityMap</span></a> map</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *str</code></em>);
+<span class="returnvalue">void</span>                <a class="link" href="NMSettingVlan.html#nm-setting-vlan-clear-priorities" title="nm_setting_vlan_clear_priorities ()">nm_setting_vlan_clear_priorities</a>    (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code><a class="link" href="NMSettingVlan.html#NMVlanPriorityMap"><span class="type">NMVlanPriorityMap</span></a> map</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              <a class="link" href="NMSettingVlan.html#nm-setting-vlan-error-quark" title="nm_setting_vlan_error_quark ()">nm_setting_vlan_error_quark</a>         (<em class="parameter"><code><span class="type">void</span></code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a>             <a class="link" href="NMSettingVlan.html#nm-setting-vlan-get-flags" title="nm_setting_vlan_get_flags ()">nm_setting_vlan_get_flags</a>           (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a>             <a class="link" href="NMSettingVlan.html#nm-setting-vlan-get-id" title="nm_setting_vlan_get_id ()">nm_setting_vlan_get_id</a>              (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>);
+const <span class="returnvalue">char</span> *        <a class="link" href="NMSettingVlan.html#nm-setting-vlan-get-interface-name" title="nm_setting_vlan_get_interface_name ()">nm_setting_vlan_get_interface_name</a>  (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint32"><span class="returnvalue">gint32</span></a>              <a class="link" href="NMSettingVlan.html#nm-setting-vlan-get-num-priorities" title="nm_setting_vlan_get_num_priorities ()">nm_setting_vlan_get_num_priorities</a>  (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code><a class="link" href="NMSettingVlan.html#NMVlanPriorityMap"><span class="type">NMVlanPriorityMap</span></a> map</code></em>);
+const <span class="returnvalue">char</span> *        <a class="link" href="NMSettingVlan.html#nm-setting-vlan-get-parent" title="nm_setting_vlan_get_parent ()">nm_setting_vlan_get_parent</a>          (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="NMSettingVlan.html#nm-setting-vlan-get-priority" title="nm_setting_vlan_get_priority ()">nm_setting_vlan_get_priority</a>        (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code><a class="link" href="NMSettingVlan.html#NMVlanPriorityMap"><span class="type">NMVlanPriorityMap</span></a> map</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> idx</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> *out_from</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> *out_to</code></em>);
+<a class="link" href="NMSetting.html" title="NMSetting"><span class="returnvalue">NMSetting</span></a> *         <a class="link" href="NMSettingVlan.html#nm-setting-vlan-new" title="nm_setting_vlan_new ()">nm_setting_vlan_new</a>                 (<em class="parameter"><code><span class="type">void</span></code></em>);
+<span class="returnvalue">void</span>                <a class="link" href="NMSettingVlan.html#nm-setting-vlan-remove-priority" title="nm_setting_vlan_remove_priority ()">nm_setting_vlan_remove_priority</a>     (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code><a class="link" href="NMSettingVlan.html#NMVlanPriorityMap"><span class="type">NMVlanPriorityMap</span></a> map</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> idx</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMSettingVlan.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a class="link" href="NMSetting.html" title="NMSetting">NMSetting</a>
+         +----NMSettingVlan
+</pre>
+<pre class="synopsis">
+  GEnum
+   +----NMSettingVlanError
+</pre>
+<pre class="synopsis">
+  GEnum
+   +----NMVlanFlags
+</pre>
+<pre class="synopsis">
+  GEnum
+   +----NMVlanPriorityMap
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMSettingVlan.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="NMSettingVlan.html#NMSettingVlan--egress-priority-map" title='The "egress-priority-map" property'>egress-priority-map</a>"      <span class="type">GSList_gchararray_</span>*   : Read / Write
+  "<a class="link" href="NMSettingVlan.html#NMSettingVlan--flags" title='The "flags" property'>flags</a>"                    <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write / Construct
+  "<a class="link" href="NMSettingVlan.html#NMSettingVlan--id" title='The "id" property'>id</a>"                       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write / Construct
+  "<a class="link" href="NMSettingVlan.html#NMSettingVlan--ingress-priority-map" title='The "ingress-priority-map" property'>ingress-priority-map</a>"     <span class="type">GSList_gchararray_</span>*   : Read / Write
+  "<a class="link" href="NMSettingVlan.html#NMSettingVlan--interface-name" title='The "interface-name" property'>interface-name</a>"           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write / Construct
+  "<a class="link" href="NMSettingVlan.html#NMSettingVlan--parent" title='The "parent" property'>parent</a>"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write / Construct
+</pre>
+</div>
+<div class="refsect1">
+<a name="NMSettingVlan.description"></a><h2>Description</h2>
+<p>
+The <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> object is a <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> subclass that describes properties
+necessary for connection to VLAN interfaces.
+</p>
+</div>
+<div class="refsect1">
+<a name="NMSettingVlan.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="NMSettingVlan-struct"></a><h3>NMSettingVlan</h3>
+<pre class="programlisting">typedef struct _NMSettingVlan NMSettingVlan;</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMSettingVlanClass"></a><h3>NMSettingVlanClass</h3>
+<pre class="programlisting">typedef struct {
+	NMSettingClass parent;
+
+	/* Padding for future expansion */
+	void (*_reserved1) (void);
+	void (*_reserved2) (void);
+	void (*_reserved3) (void);
+	void (*_reserved4) (void);
+} NMSettingVlanClass;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMSettingVlanError-enum"></a><h3>enum NMSettingVlanError</h3>
+<pre class="programlisting">typedef enum {
+	NM_SETTING_VLAN_ERROR_UNKNOWN = 0,      /*&lt; nick=Unknown &gt;*/
+	NM_SETTING_VLAN_ERROR_INVALID_PROPERTY, /*&lt; nick=InvalidProperty &gt;*/
+	NM_SETTING_VLAN_ERROR_MISSING_PROPERTY  /*&lt; nick=MissingProperty &gt;*/
+} NMSettingVlanError;
+</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="NM-SETTING-VLAN-ERROR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">NM_SETTING_VLAN_ERROR_UNKNOWN</code></span></p></td>
+<td>unknown or unclassified error
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-SETTING-VLAN-ERROR-INVALID-PROPERTY:CAPS"></a><span class="term"><code class="literal">NM_SETTING_VLAN_ERROR_INVALID_PROPERTY</code></span></p></td>
+<td>the property was invalid
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-SETTING-VLAN-ERROR-MISSING-PROPERTY:CAPS"></a><span class="term"><code class="literal">NM_SETTING_VLAN_ERROR_MISSING_PROPERTY</code></span></p></td>
+<td>the property was missing and is
+required
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMVlanFlags-enum"></a><h3>enum NMVlanFlags</h3>
+<pre class="programlisting">typedef enum {
+	NM_VLAN_FLAG_REORDER_HEADERS = 0x1,
+	NM_VLAN_FLAG_GVRP            = 0x2,
+	NM_VLAN_FLAG_LOOSE_BINDING   = 0x4,
+
+	/* NOTE: if adding flags update nm-setting-vlan.c::verify() */
+} NMVlanFlags;
+</pre>
+<p>
+<a class="link" href="NMSettingVlan.html#NMVlanFlags"><span class="type">NMVlanFlags</span></a> values control the behavior of the VLAN interface.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="NM-VLAN-FLAG-REORDER-HEADERS:CAPS"></a><span class="term"><code class="literal">NM_VLAN_FLAG_REORDER_HEADERS</code></span></p></td>
+<td>indicates that this interface should reorder
+ outgoing packet headers to look more like a non-VLAN ethernet interface
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-VLAN-FLAG-GVRP:CAPS"></a><span class="term"><code class="literal">NM_VLAN_FLAG_GVRP</code></span></p></td>
+<td>indicates that this interface should use GVRP to register
+ itself with it's switch
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-VLAN-FLAG-LOOSE-BINDING:CAPS"></a><span class="term"><code class="literal">NM_VLAN_FLAG_LOOSE_BINDING</code></span></p></td>
+<td>indicates that this interface's operating
+ state is tied to the underlying network interface but other details
+ (like routing) are not.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMVlanPriorityMap-enum"></a><h3>enum NMVlanPriorityMap</h3>
+<pre class="programlisting">typedef enum {
+	NM_VLAN_INGRESS_MAP,
+	NM_VLAN_EGRESS_MAP
+} NMVlanPriorityMap;
+</pre>
+<p>
+A selector for traffic priority maps; these map Linux SKB priorities
+to 802.1p priorities used in VLANs.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="NM-VLAN-INGRESS-MAP:CAPS"></a><span class="term"><code class="literal">NM_VLAN_INGRESS_MAP</code></span></p></td>
+<td>map for incoming data
+</td>
+</tr>
+<tr>
+<td><p><a name="NM-VLAN-EGRESS-MAP:CAPS"></a><span class="term"><code class="literal">NM_VLAN_EGRESS_MAP</code></span></p></td>
+<td>map for outgoing data
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-VLAN-EGRESS-PRIORITY-MAP:CAPS"></a><h3>NM_SETTING_VLAN_EGRESS_PRIORITY_MAP</h3>
+<pre class="programlisting">#define NM_SETTING_VLAN_EGRESS_PRIORITY_MAP  "egress-priority-map"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-VLAN-ERROR:CAPS"></a><h3>NM_SETTING_VLAN_ERROR</h3>
+<pre class="programlisting">#define NM_SETTING_VLAN_ERROR nm_setting_vlan_error_quark ()
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-VLAN-FLAGS:CAPS"></a><h3>NM_SETTING_VLAN_FLAGS</h3>
+<pre class="programlisting">#define NM_SETTING_VLAN_FLAGS                "flags"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-VLAN-ID:CAPS"></a><h3>NM_SETTING_VLAN_ID</h3>
+<pre class="programlisting">#define NM_SETTING_VLAN_ID                   "id"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-VLAN-INGRESS-PRIORITY-MAP:CAPS"></a><h3>NM_SETTING_VLAN_INGRESS_PRIORITY_MAP</h3>
+<pre class="programlisting">#define NM_SETTING_VLAN_INGRESS_PRIORITY_MAP "ingress-priority-map"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-VLAN-INTERFACE-NAME:CAPS"></a><h3>NM_SETTING_VLAN_INTERFACE_NAME</h3>
+<pre class="programlisting">#define NM_SETTING_VLAN_INTERFACE_NAME       "interface-name"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-VLAN-PARENT:CAPS"></a><h3>NM_SETTING_VLAN_PARENT</h3>
+<pre class="programlisting">#define NM_SETTING_VLAN_PARENT               "parent"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NM-SETTING-VLAN-SETTING-NAME:CAPS"></a><h3>NM_SETTING_VLAN_SETTING_NAME</h3>
+<pre class="programlisting">#define NM_SETTING_VLAN_SETTING_NAME "vlan"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-vlan-add-priority"></a><h3>nm_setting_vlan_add_priority ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_vlan_add_priority        (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code><a class="link" href="NMSettingVlan.html#NMVlanPriorityMap"><span class="type">NMVlanPriorityMap</span></a> map</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> from</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> to</code></em>);</pre>
+<p>
+Adds a priority mapping to the <a class="link" href="NMSettingVlan.html#NMSettingVlan--ingress-priority-map" title='The "ingress-priority-map" property'><span class="type">"ingress_priority_map"</span></a> or
+<a class="link" href="NMSettingVlan.html#NMSettingVlan--egress-priority-map" title='The "egress-priority-map" property'><span class="type">"egress_priority_map"</span></a> properties of the setting. If <em class="parameter"><code>from</code></em> is
+already in the given priority map, this function will overwrite the
+existing entry with the new <em class="parameter"><code>to</code></em>.
+</p>
+<p>
+If <em class="parameter"><code>map</code></em> is <a class="link" href="NMSettingVlan.html#NM-VLAN-INGRESS-MAP:CAPS"><span class="type">NM_VLAN_INGRESS_MAP</span></a> then <em class="parameter"><code>from</code></em> is the incoming 802.1q VLAN
+Priority Code Point (PCP) value, and <em class="parameter"><code>to</code></em> is the Linux SKB priority value.
+</p>
+<p>
+If <em class="parameter"><code>map</code></em> is <a class="link" href="NMSettingVlan.html#NM-VLAN-EGRESS-MAP:CAPS"><span class="type">NM_VLAN_EGRESS_MAP</span></a> then <em class="parameter"><code>from</code></em> is the Linux SKB priority value and
+<em class="parameter"><code>to</code></em> is the outgoing 802.1q VLAN Priority Code Point (PCP) value.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>map</code></em> :</span></p></td>
+<td>the type of priority map</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>from</code></em> :</span></p></td>
+<td>the priority to map to <em class="parameter"><code>to</code></em>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>to</code></em> :</span></p></td>
+<td>the priority to map <em class="parameter"><code>from</code></em> to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>TRUE if the new priority mapping was successfully added to the
+list, FALSE if error</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-vlan-add-priority-str"></a><h3>nm_setting_vlan_add_priority_str ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_vlan_add_priority_str    (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code><a class="link" href="NMSettingVlan.html#NMVlanPriorityMap"><span class="type">NMVlanPriorityMap</span></a> map</code></em>,
+                                                         <em class="parameter"><code>const <span class="type">char</span> *str</code></em>);</pre>
+<p>
+Adds a priority map entry into either the <a class="link" href="NMSettingVlan.html#NMSettingVlan--ingress-priority-map" title='The "ingress-priority-map" property'><span class="type">"ingress_priority_map"</span></a>
+or the <a class="link" href="NMSettingVlan.html#NMSettingVlan--egress-priority-map" title='The "egress-priority-map" property'><span class="type">"egress_priority_map"</span></a> properties.  The priority map maps
+the Linux SKB priorities to 802.1p priorities.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>map</code></em> :</span></p></td>
+<td>the type of priority map</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>str</code></em> :</span></p></td>
+<td>the string which contains a priority map, like "3:7"</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>TRUE if the entry was successfully added to the list, or it
+overwrote the old value, FALSE if error</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-vlan-clear-priorities"></a><h3>nm_setting_vlan_clear_priorities ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>                nm_setting_vlan_clear_priorities    (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code><a class="link" href="NMSettingVlan.html#NMVlanPriorityMap"><span class="type">NMVlanPriorityMap</span></a> map</code></em>);</pre>
+<p>
+Clear all the entires from <a class="link" href="NMSettingVlan.html#NMSettingVlan--ingress-priority-map" title='The "ingress-priority-map" property'><span class="type">"ingress_priority_map"</span></a> or
+<a class="link" href="NMSettingVlan.html#NMSettingVlan--egress-priority-map" title='The "egress-priority-map" property'><span class="type">"egress_priority_map"</span></a> properties.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>map</code></em> :</span></p></td>
+<td>the type of priority map</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-vlan-error-quark"></a><h3>nm_setting_vlan_error_quark ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              nm_setting_vlan_error_quark         (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Registers an error quark for <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> if necessary.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the error quark used for <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> errors.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-vlan-get-flags"></a><h3>nm_setting_vlan_get_flags ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a>             nm_setting_vlan_get_flags           (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingVlan.html#NMSettingVlan--flags" title='The "flags" property'><span class="type">"flags"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-vlan-get-id"></a><h3>nm_setting_vlan_get_id ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a>             nm_setting_vlan_get_id              (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingVlan.html#NMSettingVlan--id" title='The "id" property'><span class="type">"id"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-vlan-get-interface-name"></a><h3>nm_setting_vlan_get_interface_name ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> *        nm_setting_vlan_get_interface_name  (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingVlan.html#NMSettingVlan--interface-name" title='The "interface-name" property'><span class="type">"interface_name"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-vlan-get-num-priorities"></a><h3>nm_setting_vlan_get_num_priorities ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint32"><span class="returnvalue">gint32</span></a>              nm_setting_vlan_get_num_priorities  (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code><a class="link" href="NMSettingVlan.html#NMVlanPriorityMap"><span class="type">NMVlanPriorityMap</span></a> map</code></em>);</pre>
+<p>
+Returns the number of entires in the
+<a class="link" href="NMSettingVlan.html#NMSettingVlan--ingress-priority-map" title='The "ingress-priority-map" property'><span class="type">"ingress_priority_map"</span></a> or <a class="link" href="NMSettingVlan.html#NMSettingVlan--egress-priority-map" title='The "egress-priority-map" property'><span class="type">"egress_priority_map"</span></a>
+properties of this setting.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>map</code></em> :</span></p></td>
+<td>the type of priority map</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>return the number of ingress/egress priority entries, -1 if error</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-vlan-get-parent"></a><h3>nm_setting_vlan_get_parent ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> *        nm_setting_vlan_get_parent          (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingVlan.html#NMSettingVlan--parent" title='The "parent" property'><span class="type">"parent"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-vlan-get-priority"></a><h3>nm_setting_vlan_get_priority ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_vlan_get_priority        (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code><a class="link" href="NMSettingVlan.html#NMVlanPriorityMap"><span class="type">NMVlanPriorityMap</span></a> map</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> idx</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> *out_from</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> *out_to</code></em>);</pre>
+<p>
+Retrieve one of the entries of the <a class="link" href="NMSettingVlan.html#NMSettingVlan--ingress-priority-map" title='The "ingress-priority-map" property'><span class="type">"ingress_priority_map"</span></a>
+or <a class="link" href="NMSettingVlan.html#NMSettingVlan--egress-priority-map" title='The "egress-priority-map" property'><span class="type">"egress_priority_map"</span></a> properties of this setting.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>map</code></em> :</span></p></td>
+<td>the type of priority map</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>idx</code></em> :</span></p></td>
+<td>the zero-based index of the ingress/egress priority map entry</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>out_from</code></em> :</span></p></td>
+<td>on return the value of the priority map's 'from' item. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>out_to</code></em> :</span></p></td>
+<td>on return the value of priority map's 'to' item. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if a priority map was returned, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if error</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-vlan-new"></a><h3>nm_setting_vlan_new ()</h3>
+<pre class="programlisting"><a class="link" href="NMSetting.html" title="NMSetting"><span class="returnvalue">NMSetting</span></a> *         nm_setting_vlan_new                 (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Creates a new <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> object with default values.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the new empty <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> object. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="nm-setting-vlan-remove-priority"></a><h3>nm_setting_vlan_remove_priority ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>                nm_setting_vlan_remove_priority     (<em class="parameter"><code><a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a> *setting</code></em>,
+                                                         <em class="parameter"><code><a class="link" href="NMSettingVlan.html#NMVlanPriorityMap"><span class="type">NMVlanPriorityMap</span></a> map</code></em>,
+                                                         <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> idx</code></em>);</pre>
+<p>
+Removes the priority map at index <em class="parameter"><code>idx</code></em> from the
+<a class="link" href="NMSettingVlan.html#NMSettingVlan--ingress-priority-map" title='The "ingress-priority-map" property'><span class="type">"ingress_priority_map"</span></a> or <a class="link" href="NMSettingVlan.html#NMSettingVlan--egress-priority-map" title='The "egress-priority-map" property'><span class="type">"egress_priority_map"</span></a>
+properties.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingVlan.html" title="NMSettingVlan"><span class="type">NMSettingVlan</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>map</code></em> :</span></p></td>
+<td>the type of priority map</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>idx</code></em> :</span></p></td>
+<td>the zero-based index of the priority map to remove</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="refsect1">
+<a name="NMSettingVlan.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="NMSettingVlan--egress-priority-map"></a><h3>The <code class="literal">"egress-priority-map"</code> property</h3>
+<pre class="programlisting">  "egress-priority-map"      <span class="type">GSList_gchararray_</span>*   : Read / Write</pre>
+<p>
+For outgoing packets, a list of mappings from Linux SKB priorities to
+802.1p priorities.  The mapping is given in the format 'from:to'
+where both 'from' and 'to' are unsigned integers, ie '7:3'.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMSettingVlan--flags"></a><h3>The <code class="literal">"flags"</code> property</h3>
+<pre class="programlisting">  "flags"                    <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write / Construct</pre>
+<p>
+One or more of <a class="link" href="NMSettingVlan.html#NMVlanFlags"><code class="literal">NMVlanFlags</code></a> which control the behavior and features of
+the VLAN interface.
+</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMSettingVlan--id"></a><h3>The <code class="literal">"id"</code> property</h3>
+<pre class="programlisting">  "id"                       <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write / Construct</pre>
+<p>
+The VLAN identifier the interface created by this connection should be
+assigned.
+</p>
+<p>Allowed values: &lt;= 4095</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMSettingVlan--ingress-priority-map"></a><h3>The <code class="literal">"ingress-priority-map"</code> property</h3>
+<pre class="programlisting">  "ingress-priority-map"     <span class="type">GSList_gchararray_</span>*   : Read / Write</pre>
+<p>
+For incoming packets, a list of mappings from 802.1p priorities to Linux
+SKB priorities.  The mapping is given in the format 'from:to' where both
+'from' and 'to' are unsigned integers, ie '7:3'.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMSettingVlan--interface-name"></a><h3>The <code class="literal">"interface-name"</code> property</h3>
+<pre class="programlisting">  "interface-name"           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write / Construct</pre>
+<p>
+If given, specifies the kernel name of the VLAN interface. If not given,
+a default name will be constructed from the interface described by the
+parent interface and the <a class="link" href="NMSettingVlan.html#NMSettingVlan--id" title='The "id" property'><span class="type">"id"</span></a> , ex 'eth2.1'. The parent
+interface may be given by the <a class="link" href="NMSettingVlan.html#NMSettingVlan--parent" title='The "parent" property'><span class="type">"parent"</span></a> property or by a
+hardware address property, eg <a class="link" href="NMSettingWired.html#NMSettingWired--mac-address" title='The "mac-address" property'><span class="type">"mac-address"</span></a> or
+<a class="link" href="NMSettingInfiniband.html#NMSettingInfiniband--mac-address" title='The "mac-address" property'><span class="type">"mac-address"</span></a>.
+</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="NMSettingVlan--parent"></a><h3>The <code class="literal">"parent"</code> property</h3>
+<pre class="programlisting">  "parent"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write / Construct</pre>
+<p>
+If given, specifies the parent interface name or parent connection UUID
+from which this VLAN interface should be created.  If this property is
+not specified, the connection must contain a hardware address in a
+hardware-specific setting, like <a class="link" href="NMSettingWired.html#NMSettingWired--mac-address" title='The "mac-address" property'><span class="type">"mac-address"</span></a> or
+<a class="link" href="NMSettingInfiniband.html#NMSettingInfiniband--mac-address" title='The "mac-address" property'><span class="type">"mac-address"</span></a>.
+</p>
+<p>Default value: NULL</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libnm-util/html/NMSettingWimax.html b/docs/libnm-util/html/NMSettingWimax.html
index 66f68ba9..ee30d02e 100644
--- a/docs/libnm-util/html/NMSettingWimax.html
+++ b/docs/libnm-util/html/NMSettingWimax.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="libnm-util Reference Manual">
 <link rel="up" href="ch01.html" title="libnm-util API Reference">
 <link rel="prev" href="NMSettingGsm.html" title="NMSettingGsm">
-<link rel="next" href="NMSettingOlpcMesh.html" title="NMSettingOlpcMesh">
+<link rel="next" href="NMSettingBond.html" title="NMSettingBond">
 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -18,7 +18,7 @@
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
 <th width="100%" align="center">libnm-util Reference Manual</th>
-<td><a accesskey="n" href="NMSettingOlpcMesh.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="NMSettingBond.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
 </tr>
 <tr><td colspan="5" class="shortcuts">
 <a href="#NMSettingWimax.synopsis" class="shortcut">Top</a>
diff --git a/docs/libnm-util/html/NMSettingWireless.html b/docs/libnm-util/html/NMSettingWireless.html
index ab05340e..85e17c1d 100644
--- a/docs/libnm-util/html/NMSettingWireless.html
+++ b/docs/libnm-util/html/NMSettingWireless.html
@@ -52,6 +52,7 @@ enum                <a class="link" href="NMSettingWireless.html#NMSettingWirele
 #define             <a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-CHANNEL:CAPS" title="NM_SETTING_WIRELESS_CHANNEL">NM_SETTING_WIRELESS_CHANNEL</a>
 #define             <a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-CLONED-MAC-ADDRESS:CAPS" title="NM_SETTING_WIRELESS_CLONED_MAC_ADDRESS">NM_SETTING_WIRELESS_CLONED_MAC_ADDRESS</a>
 #define             <a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-ERROR:CAPS" title="NM_SETTING_WIRELESS_ERROR">NM_SETTING_WIRELESS_ERROR</a>
+#define             <a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-HIDDEN:CAPS" title="NM_SETTING_WIRELESS_HIDDEN">NM_SETTING_WIRELESS_HIDDEN</a>
 #define             <a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-MAC-ADDRESS:CAPS" title="NM_SETTING_WIRELESS_MAC_ADDRESS">NM_SETTING_WIRELESS_MAC_ADDRESS</a>
 #define             <a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-MAC-ADDRESS-BLACKLIST:CAPS" title="NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST">NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST</a>
 #define             <a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-MODE:CAPS" title="NM_SETTING_WIRELESS_MODE">NM_SETTING_WIRELESS_MODE</a>
@@ -79,6 +80,7 @@ const <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.htm
 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a>             <a class="link" href="NMSettingWireless.html#nm-setting-wireless-get-channel" title="nm_setting_wireless_get_channel ()">nm_setting_wireless_get_channel</a>     (<em class="parameter"><code><a class="link" href="NMSettingWireless.html" title="NMSettingWireless"><span class="type">NMSettingWireless</span></a> *setting</code></em>);
 const <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.html#GByteArray"><span class="returnvalue">GByteArray</span></a> *  <a class="link" href="NMSettingWireless.html#nm-setting-wireless-get-cloned-mac-address" title="nm_setting_wireless_get_cloned_mac_address ()">nm_setting_wireless_get_cloned_mac_address</a>
                                                         (<em class="parameter"><code><a class="link" href="NMSettingWireless.html" title="NMSettingWireless"><span class="type">NMSettingWireless</span></a> *setting</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="NMSettingWireless.html#nm-setting-wireless-get-hidden" title="nm_setting_wireless_get_hidden ()">nm_setting_wireless_get_hidden</a>      (<em class="parameter"><code><a class="link" href="NMSettingWireless.html" title="NMSettingWireless"><span class="type">NMSettingWireless</span></a> *setting</code></em>);
 const <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.html#GByteArray"><span class="returnvalue">GByteArray</span></a> *  <a class="link" href="NMSettingWireless.html#nm-setting-wireless-get-mac-address" title="nm_setting_wireless_get_mac_address ()">nm_setting_wireless_get_mac_address</a> (<em class="parameter"><code><a class="link" href="NMSettingWireless.html" title="NMSettingWireless"><span class="type">NMSettingWireless</span></a> *setting</code></em>);
 const <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#GSList"><span class="returnvalue">GSList</span></a> *      <a class="link" href="NMSettingWireless.html#nm-setting-wireless-get-mac-address-blacklist" title="nm_setting_wireless_get_mac_address_blacklist ()">nm_setting_wireless_get_mac_address_blacklist</a>
                                                         (<em class="parameter"><code><a class="link" href="NMSettingWireless.html" title="NMSettingWireless"><span class="type">NMSettingWireless</span></a> *setting</code></em>);
@@ -114,6 +116,7 @@ const <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.htm
   "<a class="link" href="NMSettingWireless.html#NMSettingWireless--bssid" title='The "bssid" property'>bssid</a>"                    <span class="type">GArray_guchar_</span>*       : Read / Write
   "<a class="link" href="NMSettingWireless.html#NMSettingWireless--channel" title='The "channel" property'>channel</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write / Construct
   "<a class="link" href="NMSettingWireless.html#NMSettingWireless--cloned-mac-address" title='The "cloned-mac-address" property'>cloned-mac-address</a>"       <span class="type">GArray_guchar_</span>*       : Read / Write
+  "<a class="link" href="NMSettingWireless.html#NMSettingWireless--hidden" title='The "hidden" property'>hidden</a>"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
   "<a class="link" href="NMSettingWireless.html#NMSettingWireless--mac-address" title='The "mac-address" property'>mac-address</a>"              <span class="type">GArray_guchar_</span>*       : Read / Write
   "<a class="link" href="NMSettingWireless.html#NMSettingWireless--mac-address-blacklist" title='The "mac-address-blacklist" property'>mac-address-blacklist</a>"    <span class="type">GSList_gchararray_</span>*   : Read / Write
   "<a class="link" href="NMSettingWireless.html#NMSettingWireless--mode" title='The "mode" property'>mode</a>"                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write
@@ -243,6 +246,14 @@ set to a value that requires the <a class="link" href="NMSettingWireless.html#NM
 </div>
 <hr>
 <div class="refsect2">
+<a name="NM-SETTING-WIRELESS-HIDDEN:CAPS"></a><h3>NM_SETTING_WIRELESS_HIDDEN</h3>
+<pre class="programlisting">#define NM_SETTING_WIRELESS_HIDDEN      "hidden"
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NM-SETTING-WIRELESS-MAC-ADDRESS:CAPS"></a><h3>NM_SETTING_WIRELESS_MAC_ADDRESS</h3>
 <pre class="programlisting">#define NM_SETTING_WIRELESS_MAC_ADDRESS "mac-address"
 </pre>
@@ -522,6 +533,25 @@ Registers an error quark for <a class="link" href="NMSettingWireless.html" title
 </div>
 <hr>
 <div class="refsect2">
+<a name="nm-setting-wireless-get-hidden"></a><h3>nm_setting_wireless_get_hidden ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            nm_setting_wireless_get_hidden      (<em class="parameter"><code><a class="link" href="NMSettingWireless.html" title="NMSettingWireless"><span class="type">NMSettingWireless</span></a> *setting</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td>
+<td>the <a class="link" href="NMSettingWireless.html" title="NMSettingWireless"><span class="type">NMSettingWireless</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the <a class="link" href="NMSettingWireless.html#NMSettingWireless--hidden" title='The "hidden" property'><span class="type">"hidden"</span></a> property of the setting</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="nm-setting-wireless-get-mac-address"></a><h3>nm_setting_wireless_get_mac_address ()</h3>
 <pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.html#GByteArray"><span class="returnvalue">GByteArray</span></a> *  nm_setting_wireless_get_mac_address (<em class="parameter"><code><a class="link" href="NMSettingWireless.html" title="NMSettingWireless"><span class="type">NMSettingWireless</span></a> *setting</code></em>);</pre>
 <div class="variablelist"><table border="0">
@@ -786,6 +816,19 @@ permanent MAC address.  This is known as MAC cloning or spoofing.
 </div>
 <hr>
 <div class="refsect2">
+<a name="NMSettingWireless--hidden"></a><h3>The <code class="literal">"hidden"</code> property</h3>
+<pre class="programlisting">  "hidden"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>
+If <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, indicates this network is a non-broadcasting network that
+hides its SSID.  In this case various workarounds may take place, such
+as probe-scanning the SSID for more reliable network discovery.  However,
+these workarounds expose inherent insecurities with hidden SSID networks,
+and thus hidden SSID networks should be used with caution.
+</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="NMSettingWireless--mac-address"></a><h3>The <code class="literal">"mac-address"</code> property</h3>
 <pre class="programlisting">  "mac-address"              <span class="type">GArray_guchar_</span>*       : Read / Write</pre>
 <p>
diff --git a/docs/libnm-util/html/NMSettingWirelessSecurity.html b/docs/libnm-util/html/NMSettingWirelessSecurity.html
index b9022091..94ff1432 100644
--- a/docs/libnm-util/html/NMSettingWirelessSecurity.html
+++ b/docs/libnm-util/html/NMSettingWirelessSecurity.html
@@ -653,7 +653,15 @@ specified then all protocols are allowed.
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a>              nm_setting_wireless_security_error_quark
                                                         (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
 <p>
+Registers an error quark for <a class="link" href="NMSettingWired.html" title="NMSettingWired"><span class="type">NMSettingWired</span></a> if necessary.
 </p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the error quark used for <a class="link" href="NMSettingWired.html" title="NMSettingWired"><span class="type">NMSettingWired</span></a> errors.</td>
+</tr></tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
diff --git a/docs/libnm-util/html/api-index-full.html b/docs/libnm-util/html/api-index-full.html
index 9f287353..7ceff0ba 100644
--- a/docs/libnm-util/html/api-index-full.html
+++ b/docs/libnm-util/html/api-index-full.html
@@ -123,6 +123,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMConnection.html#nm-connection-get-setting-adsl" title="nm_connection_get_setting_adsl ()">nm_connection_get_setting_adsl</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMConnection.html#nm-connection-get-setting-bluetooth" title="nm_connection_get_setting_bluetooth ()">nm_connection_get_setting_bluetooth</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a>
 </dt>
 <dd></dd>
@@ -617,6 +621,46 @@
 </dt>
 <dd></dd>
 <dt>
+NMSettingAdsl, struct in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NMSettingAdsl:encapsulation, object property in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NMSettingAdsl:password, object property in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NMSettingAdsl:password-flags, object property in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NMSettingAdsl:protocol, object property in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NMSettingAdsl:username, object property in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NMSettingAdsl:vci, object property in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NMSettingAdsl:vpi, object property in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NMSettingAdslClass, struct in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NMSettingAdslError, enum in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMSettingBluetooth.html#NMSettingBluetooth-struct" title="NMSettingBluetooth">NMSettingBluetooth</a>, struct in <a class="link" href="NMSettingBluetooth.html" title="NMSettingBluetooth">NMSettingBluetooth</a>
 </dt>
 <dd></dd>
@@ -637,23 +681,23 @@
 </dt>
 <dd></dd>
 <dt>
-NMSettingBond, struct in NMSettingBond
+<a class="link" href="NMSettingBond.html#NMSettingBond-struct" title="NMSettingBond">NMSettingBond</a>, struct in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingBond:interface-name, object property in NMSettingBond
+<a class="link" href="NMSettingBond.html#NMSettingBond--interface-name" title='The "interface-name" property'>NMSettingBond:interface-name</a>, object property in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingBond:options, object property in NMSettingBond
+<a class="link" href="NMSettingBond.html#NMSettingBond--options" title='The "options" property'>NMSettingBond:options</a>, object property in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingBondClass, struct in NMSettingBond
+<a class="link" href="NMSettingBond.html#NMSettingBondClass" title="NMSettingBondClass">NMSettingBondClass</a>, struct in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingBondError, enum in NMSettingBond
+<a class="link" href="NMSettingBond.html#NMSettingBondError-enum" title="enum NMSettingBondError">NMSettingBondError</a>, enum in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
@@ -825,27 +869,27 @@ NMSettingBondError, enum in NMSettingBond
 </dt>
 <dd></dd>
 <dt>
-NMSettingInfiniband, struct in NMSettingInfiniband
+<a class="link" href="NMSettingInfiniband.html#NMSettingInfiniband-struct" title="NMSettingInfiniband">NMSettingInfiniband</a>, struct in <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingInfiniband:mac-address, object property in NMSettingInfiniband
+<a class="link" href="NMSettingInfiniband.html#NMSettingInfiniband--mac-address" title='The "mac-address" property'>NMSettingInfiniband:mac-address</a>, object property in <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingInfiniband:mtu, object property in NMSettingInfiniband
+<a class="link" href="NMSettingInfiniband.html#NMSettingInfiniband--mtu" title='The "mtu" property'>NMSettingInfiniband:mtu</a>, object property in <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingInfiniband:transport-mode, object property in NMSettingInfiniband
+<a class="link" href="NMSettingInfiniband.html#NMSettingInfiniband--transport-mode" title='The "transport-mode" property'>NMSettingInfiniband:transport-mode</a>, object property in <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingInfinibandClass, struct in NMSettingInfiniband
+<a class="link" href="NMSettingInfiniband.html#NMSettingInfinibandClass" title="NMSettingInfinibandClass">NMSettingInfinibandClass</a>, struct in <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingInfinibandError, enum in NMSettingInfiniband
+<a class="link" href="NMSettingInfiniband.html#NMSettingInfinibandError-enum" title="enum NMSettingInfinibandError">NMSettingInfinibandError</a>, enum in <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
@@ -1141,39 +1185,39 @@ NMSettingInfinibandError, enum in NMSettingInfiniband
 </dt>
 <dd></dd>
 <dt>
-NMSettingVlan, struct in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NMSettingVlan-struct" title="NMSettingVlan">NMSettingVlan</a>, struct in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingVlan:egress-priority-map, object property in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NMSettingVlan--egress-priority-map" title='The "egress-priority-map" property'>NMSettingVlan:egress-priority-map</a>, object property in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingVlan:flags, object property in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NMSettingVlan--flags" title='The "flags" property'>NMSettingVlan:flags</a>, object property in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingVlan:id, object property in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NMSettingVlan--id" title='The "id" property'>NMSettingVlan:id</a>, object property in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingVlan:ingress-priority-map, object property in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NMSettingVlan--ingress-priority-map" title='The "ingress-priority-map" property'>NMSettingVlan:ingress-priority-map</a>, object property in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingVlan:interface-name, object property in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NMSettingVlan--interface-name" title='The "interface-name" property'>NMSettingVlan:interface-name</a>, object property in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingVlan:parent, object property in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NMSettingVlan--parent" title='The "parent" property'>NMSettingVlan:parent</a>, object property in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingVlanClass, struct in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NMSettingVlanClass" title="NMSettingVlanClass">NMSettingVlanClass</a>, struct in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NMSettingVlanError, enum in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NMSettingVlanError-enum" title="enum NMSettingVlanError">NMSettingVlanError</a>, enum in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
@@ -1301,6 +1345,10 @@ NMSettingVlanError, enum in NMSettingVlan
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMSettingWireless.html#NMSettingWireless--hidden" title='The "hidden" property'>NMSettingWireless:hidden</a>, object property in <a class="link" href="NMSettingWireless.html" title="NMSettingWireless">NMSettingWireless</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMSettingWireless.html#NMSettingWireless--mac-address" title='The "mac-address" property'>NMSettingWireless:mac-address</a>, object property in <a class="link" href="NMSettingWireless.html" title="NMSettingWireless">NMSettingWireless</a>
 </dt>
 <dd></dd>
@@ -1825,6 +1873,98 @@ NMSettingVlanError, enum in NMSettingVlan
 </dt>
 <dd></dd>
 <dt>
+NM_SETTING_ADSL_ENCAPSULATION, macro in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NM_SETTING_ADSL_ENCAPSULATION_LLC, macro in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NM_SETTING_ADSL_ENCAPSULATION_VCMUX, macro in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NM_SETTING_ADSL_ERROR, macro in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+nm_setting_adsl_error_quark, function in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+nm_setting_adsl_get_encapsulation, function in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+nm_setting_adsl_get_password, function in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+nm_setting_adsl_get_password_flags, function in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+nm_setting_adsl_get_protocol, function in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+nm_setting_adsl_get_username, function in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+nm_setting_adsl_get_vci, function in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+nm_setting_adsl_get_vpi, function in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+nm_setting_adsl_new, function in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NM_SETTING_ADSL_PASSWORD, macro in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NM_SETTING_ADSL_PASSWORD_FLAGS, macro in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NM_SETTING_ADSL_PROTOCOL, macro in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NM_SETTING_ADSL_PROTOCOL_IPOATM, macro in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NM_SETTING_ADSL_PROTOCOL_PPPOA, macro in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NM_SETTING_ADSL_PROTOCOL_PPPOE, macro in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NM_SETTING_ADSL_SETTING_NAME, macro in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NM_SETTING_ADSL_USERNAME, macro in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NM_SETTING_ADSL_VCI, macro in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
+NM_SETTING_ADSL_VPI, macro in NMSettingAdsl
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="NMSettingBluetooth.html#NM-SETTING-BLUETOOTH-BDADDR:CAPS" title="NM_SETTING_BLUETOOTH_BDADDR">NM_SETTING_BLUETOOTH_BDADDR</a>, macro in <a class="link" href="NMSettingBluetooth.html" title="NMSettingBluetooth">NMSettingBluetooth</a>
 </dt>
 <dd></dd>
@@ -1865,83 +2005,83 @@ NMSettingVlanError, enum in NMSettingVlan
 </dt>
 <dd></dd>
 <dt>
-nm_setting_bond_add_option, function in NMSettingBond
+<a class="link" href="NMSettingBond.html#nm-setting-bond-add-option" title="nm_setting_bond_add_option ()">nm_setting_bond_add_option</a>, function in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_BOND_ERROR, macro in NMSettingBond
+<a class="link" href="NMSettingBond.html#NM-SETTING-BOND-ERROR:CAPS" title="NM_SETTING_BOND_ERROR">NM_SETTING_BOND_ERROR</a>, macro in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_bond_error_quark, function in NMSettingBond
+<a class="link" href="NMSettingBond.html#nm-setting-bond-error-quark" title="nm_setting_bond_error_quark ()">nm_setting_bond_error_quark</a>, function in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_bond_get_interface_name, function in NMSettingBond
+<a class="link" href="NMSettingBond.html#nm-setting-bond-get-interface-name" title="nm_setting_bond_get_interface_name ()">nm_setting_bond_get_interface_name</a>, function in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_bond_get_num_options, function in NMSettingBond
+<a class="link" href="NMSettingBond.html#nm-setting-bond-get-num-options" title="nm_setting_bond_get_num_options ()">nm_setting_bond_get_num_options</a>, function in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_bond_get_option, function in NMSettingBond
+<a class="link" href="NMSettingBond.html#nm-setting-bond-get-option" title="nm_setting_bond_get_option ()">nm_setting_bond_get_option</a>, function in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_bond_get_option_by_name, function in NMSettingBond
+<a class="link" href="NMSettingBond.html#nm-setting-bond-get-option-by-name" title="nm_setting_bond_get_option_by_name ()">nm_setting_bond_get_option_by_name</a>, function in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_bond_get_option_default, function in NMSettingBond
+<a class="link" href="NMSettingBond.html#nm-setting-bond-get-option-default" title="nm_setting_bond_get_option_default ()">nm_setting_bond_get_option_default</a>, function in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_bond_get_valid_options, function in NMSettingBond
+<a class="link" href="NMSettingBond.html#nm-setting-bond-get-valid-options" title="nm_setting_bond_get_valid_options ()">nm_setting_bond_get_valid_options</a>, function in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_BOND_INTERFACE_NAME, macro in NMSettingBond
+<a class="link" href="NMSettingBond.html#NM-SETTING-BOND-INTERFACE-NAME:CAPS" title="NM_SETTING_BOND_INTERFACE_NAME">NM_SETTING_BOND_INTERFACE_NAME</a>, macro in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_bond_new, function in NMSettingBond
+<a class="link" href="NMSettingBond.html#nm-setting-bond-new" title="nm_setting_bond_new ()">nm_setting_bond_new</a>, function in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_BOND_OPTIONS, macro in NMSettingBond
+<a class="link" href="NMSettingBond.html#NM-SETTING-BOND-OPTIONS:CAPS" title="NM_SETTING_BOND_OPTIONS">NM_SETTING_BOND_OPTIONS</a>, macro in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_BOND_OPTION_ARP_INTERVAL, macro in NMSettingBond
+<a class="link" href="NMSettingBond.html#NM-SETTING-BOND-OPTION-ARP-INTERVAL:CAPS" title="NM_SETTING_BOND_OPTION_ARP_INTERVAL">NM_SETTING_BOND_OPTION_ARP_INTERVAL</a>, macro in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_BOND_OPTION_ARP_IP_TARGET, macro in NMSettingBond
+<a class="link" href="NMSettingBond.html#NM-SETTING-BOND-OPTION-ARP-IP-TARGET:CAPS" title="NM_SETTING_BOND_OPTION_ARP_IP_TARGET">NM_SETTING_BOND_OPTION_ARP_IP_TARGET</a>, macro in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_BOND_OPTION_DOWNDELAY, macro in NMSettingBond
+<a class="link" href="NMSettingBond.html#NM-SETTING-BOND-OPTION-DOWNDELAY:CAPS" title="NM_SETTING_BOND_OPTION_DOWNDELAY">NM_SETTING_BOND_OPTION_DOWNDELAY</a>, macro in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_BOND_OPTION_MIIMON, macro in NMSettingBond
+<a class="link" href="NMSettingBond.html#NM-SETTING-BOND-OPTION-MIIMON:CAPS" title="NM_SETTING_BOND_OPTION_MIIMON">NM_SETTING_BOND_OPTION_MIIMON</a>, macro in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_BOND_OPTION_MODE, macro in NMSettingBond
+<a class="link" href="NMSettingBond.html#NM-SETTING-BOND-OPTION-MODE:CAPS" title="NM_SETTING_BOND_OPTION_MODE">NM_SETTING_BOND_OPTION_MODE</a>, macro in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_BOND_OPTION_UPDELAY, macro in NMSettingBond
+<a class="link" href="NMSettingBond.html#NM-SETTING-BOND-OPTION-UPDELAY:CAPS" title="NM_SETTING_BOND_OPTION_UPDELAY">NM_SETTING_BOND_OPTION_UPDELAY</a>, macro in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_bond_remove_option, function in NMSettingBond
+<a class="link" href="NMSettingBond.html#nm-setting-bond-remove-option" title="nm_setting_bond_remove_option ()">nm_setting_bond_remove_option</a>, function in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_BOND_SETTING_NAME, macro in NMSettingBond
+<a class="link" href="NMSettingBond.html#NM-SETTING-BOND-SETTING-NAME:CAPS" title="NM_SETTING_BOND_SETTING_NAME">NM_SETTING_BOND_SETTING_NAME</a>, macro in <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
 </dt>
 <dd></dd>
 <dt>
@@ -2277,43 +2417,43 @@ NM_SETTING_BOND_SETTING_NAME, macro in NMSettingBond
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_INFINIBAND_ERROR, macro in NMSettingInfiniband
+<a class="link" href="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-ERROR:CAPS" title="NM_SETTING_INFINIBAND_ERROR">NM_SETTING_INFINIBAND_ERROR</a>, macro in <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_infiniband_error_quark, function in NMSettingInfiniband
+<a class="link" href="NMSettingInfiniband.html#nm-setting-infiniband-error-quark" title="nm_setting_infiniband_error_quark ()">nm_setting_infiniband_error_quark</a>, function in <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_infiniband_get_mac_address, function in NMSettingInfiniband
+<a class="link" href="NMSettingInfiniband.html#nm-setting-infiniband-get-mac-address" title="nm_setting_infiniband_get_mac_address ()">nm_setting_infiniband_get_mac_address</a>, function in <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_infiniband_get_mtu, function in NMSettingInfiniband
+<a class="link" href="NMSettingInfiniband.html#nm-setting-infiniband-get-mtu" title="nm_setting_infiniband_get_mtu ()">nm_setting_infiniband_get_mtu</a>, function in <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_infiniband_get_transport_mode, function in NMSettingInfiniband
+<a class="link" href="NMSettingInfiniband.html#nm-setting-infiniband-get-transport-mode" title="nm_setting_infiniband_get_transport_mode ()">nm_setting_infiniband_get_transport_mode</a>, function in <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_INFINIBAND_MAC_ADDRESS, macro in NMSettingInfiniband
+<a class="link" href="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-MAC-ADDRESS:CAPS" title="NM_SETTING_INFINIBAND_MAC_ADDRESS">NM_SETTING_INFINIBAND_MAC_ADDRESS</a>, macro in <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_INFINIBAND_MTU, macro in NMSettingInfiniband
+<a class="link" href="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-MTU:CAPS" title="NM_SETTING_INFINIBAND_MTU">NM_SETTING_INFINIBAND_MTU</a>, macro in <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_infiniband_new, function in NMSettingInfiniband
+<a class="link" href="NMSettingInfiniband.html#nm-setting-infiniband-new" title="nm_setting_infiniband_new ()">nm_setting_infiniband_new</a>, function in <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_INFINIBAND_SETTING_NAME, macro in NMSettingInfiniband
+<a class="link" href="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-SETTING-NAME:CAPS" title="NM_SETTING_INFINIBAND_SETTING_NAME">NM_SETTING_INFINIBAND_SETTING_NAME</a>, macro in <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_INFINIBAND_TRANSPORT_MODE, macro in NMSettingInfiniband
+<a class="link" href="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-TRANSPORT-MODE:CAPS" title="NM_SETTING_INFINIBAND_TRANSPORT_MODE">NM_SETTING_INFINIBAND_TRANSPORT_MODE</a>, macro in <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
 </dt>
 <dd></dd>
 <dt>
@@ -3053,83 +3193,83 @@ NM_SETTING_SECRET_FLAGS_ALL, macro in nm-setting-private
 </dt>
 <dd></dd>
 <dt>
-nm_setting_vlan_add_priority, function in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#nm-setting-vlan-add-priority" title="nm_setting_vlan_add_priority ()">nm_setting_vlan_add_priority</a>, function in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_vlan_add_priority_str, function in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#nm-setting-vlan-add-priority-str" title="nm_setting_vlan_add_priority_str ()">nm_setting_vlan_add_priority_str</a>, function in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_vlan_clear_priorities, function in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#nm-setting-vlan-clear-priorities" title="nm_setting_vlan_clear_priorities ()">nm_setting_vlan_clear_priorities</a>, function in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_VLAN_EGRESS_PRIORITY_MAP, macro in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NM-SETTING-VLAN-EGRESS-PRIORITY-MAP:CAPS" title="NM_SETTING_VLAN_EGRESS_PRIORITY_MAP">NM_SETTING_VLAN_EGRESS_PRIORITY_MAP</a>, macro in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_VLAN_ERROR, macro in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NM-SETTING-VLAN-ERROR:CAPS" title="NM_SETTING_VLAN_ERROR">NM_SETTING_VLAN_ERROR</a>, macro in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_vlan_error_quark, function in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#nm-setting-vlan-error-quark" title="nm_setting_vlan_error_quark ()">nm_setting_vlan_error_quark</a>, function in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_VLAN_FLAGS, macro in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NM-SETTING-VLAN-FLAGS:CAPS" title="NM_SETTING_VLAN_FLAGS">NM_SETTING_VLAN_FLAGS</a>, macro in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_vlan_get_flags, function in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#nm-setting-vlan-get-flags" title="nm_setting_vlan_get_flags ()">nm_setting_vlan_get_flags</a>, function in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_vlan_get_id, function in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#nm-setting-vlan-get-id" title="nm_setting_vlan_get_id ()">nm_setting_vlan_get_id</a>, function in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_vlan_get_interface_name, function in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#nm-setting-vlan-get-interface-name" title="nm_setting_vlan_get_interface_name ()">nm_setting_vlan_get_interface_name</a>, function in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_vlan_get_num_priorities, function in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#nm-setting-vlan-get-num-priorities" title="nm_setting_vlan_get_num_priorities ()">nm_setting_vlan_get_num_priorities</a>, function in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_vlan_get_parent, function in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#nm-setting-vlan-get-parent" title="nm_setting_vlan_get_parent ()">nm_setting_vlan_get_parent</a>, function in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_vlan_get_priority, function in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#nm-setting-vlan-get-priority" title="nm_setting_vlan_get_priority ()">nm_setting_vlan_get_priority</a>, function in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_VLAN_ID, macro in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NM-SETTING-VLAN-ID:CAPS" title="NM_SETTING_VLAN_ID">NM_SETTING_VLAN_ID</a>, macro in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_VLAN_INGRESS_PRIORITY_MAP, macro in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NM-SETTING-VLAN-INGRESS-PRIORITY-MAP:CAPS" title="NM_SETTING_VLAN_INGRESS_PRIORITY_MAP">NM_SETTING_VLAN_INGRESS_PRIORITY_MAP</a>, macro in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_VLAN_INTERFACE_NAME, macro in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NM-SETTING-VLAN-INTERFACE-NAME:CAPS" title="NM_SETTING_VLAN_INTERFACE_NAME">NM_SETTING_VLAN_INTERFACE_NAME</a>, macro in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_vlan_new, function in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#nm-setting-vlan-new" title="nm_setting_vlan_new ()">nm_setting_vlan_new</a>, function in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_VLAN_PARENT, macro in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NM-SETTING-VLAN-PARENT:CAPS" title="NM_SETTING_VLAN_PARENT">NM_SETTING_VLAN_PARENT</a>, macro in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-nm_setting_vlan_remove_priority, function in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#nm-setting-vlan-remove-priority" title="nm_setting_vlan_remove_priority ()">nm_setting_vlan_remove_priority</a>, function in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NM_SETTING_VLAN_SETTING_NAME, macro in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NM-SETTING-VLAN-SETTING-NAME:CAPS" title="NM_SETTING_VLAN_SETTING_NAME">NM_SETTING_VLAN_SETTING_NAME</a>, macro in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
@@ -3413,6 +3553,10 @@ NM_SETTING_VLAN_SETTING_NAME, macro in NMSettingVlan
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="NMSettingWireless.html#nm-setting-wireless-get-hidden" title="nm_setting_wireless_get_hidden ()">nm_setting_wireless_get_hidden</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-get-mac-address" title="nm_setting_wireless_get_mac_address ()">nm_setting_wireless_get_mac_address</a>, function in <a class="link" href="NMSettingWireless.html" title="NMSettingWireless">NMSettingWireless</a>
 </dt>
 <dd></dd>
@@ -3453,6 +3597,10 @@ NM_SETTING_VLAN_SETTING_NAME, macro in NMSettingVlan
 </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>
+<dt>
 <a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-MAC-ADDRESS:CAPS" title="NM_SETTING_WIRELESS_MAC_ADDRESS">NM_SETTING_WIRELESS_MAC_ADDRESS</a>, macro in <a class="link" href="NMSettingWireless.html" title="NMSettingWireless">NMSettingWireless</a>
 </dt>
 <dd></dd>
@@ -3843,11 +3991,11 @@ NM_SETTING_VLAN_SETTING_NAME, macro in NMSettingVlan
 <dd></dd>
 <a name="idxV"></a><h3 class="title">V</h3>
 <dt>
-NMVlanFlags, enum in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NMVlanFlags-enum" title="enum NMVlanFlags">NMVlanFlags</a>, enum in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
-NMVlanPriorityMap, enum in NMSettingVlan
+<a class="link" href="NMSettingVlan.html#NMVlanPriorityMap-enum" title="enum NMVlanPriorityMap">NMVlanPriorityMap</a>, enum in <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
 </dt>
 <dd></dd>
 <dt>
diff --git a/docs/libnm-util/html/ch01.html b/docs/libnm-util/html/ch01.html
index c23e7223..1cddc6b2 100644
--- a/docs/libnm-util/html/ch01.html
+++ b/docs/libnm-util/html/ch01.html
@@ -21,7 +21,7 @@
 </tr></table>
 <div class="chapter">
 <div class="titlepage"><div><div><h2 class="title">
-<a name="id500813"></a>libnm-util API Reference</h2></div></div></div>
+<a name="id507708"></a>libnm-util API Reference</h2></div></div></div>
 <div class="toc"><dl>
 <dt>
 <span class="refentrytitle"><a href="NMConnection.html">NMConnection</a></span><span class="refpurpose"> — Describes a connection to specific network or provider</span>
@@ -59,6 +59,15 @@ serial communications</span>
 <span class="refentrytitle"><a href="NMSettingWimax.html">NMSettingWimax</a></span><span class="refpurpose"> — Describes 802.16e Mobile WiMAX connection properties</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="NMSettingBond.html">NMSettingBond</a></span><span class="refpurpose"> — Describes connection properties for bonds</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="NMSettingInfiniband.html">NMSettingInfiniband</a></span><span class="refpurpose"> — Describes connection properties for IP-over-InfiniBand networks</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="NMSettingVlan.html">NMSettingVlan</a></span><span class="refpurpose"> — Describes connection properties for VLAN interfaces</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="NMSettingOlpcMesh.html">NMSettingOlpcMesh</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
diff --git a/docs/libnm-util/html/index.html b/docs/libnm-util/html/index.html
index 6f6ac022..dea375f6 100644
--- a/docs/libnm-util/html/index.html
+++ b/docs/libnm-util/html/index.html
@@ -61,6 +61,15 @@ serial communications</span>
 <span class="refentrytitle"><a href="NMSettingWimax.html">NMSettingWimax</a></span><span class="refpurpose"> — Describes 802.16e Mobile WiMAX connection properties</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="NMSettingBond.html">NMSettingBond</a></span><span class="refpurpose"> — Describes connection properties for bonds</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="NMSettingInfiniband.html">NMSettingInfiniband</a></span><span class="refpurpose"> — Describes connection properties for IP-over-InfiniBand networks</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="NMSettingVlan.html">NMSettingVlan</a></span><span class="refpurpose"> — Describes connection properties for VLAN interfaces</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="NMSettingOlpcMesh.html">NMSettingOlpcMesh</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
diff --git a/docs/libnm-util/html/index.sgml b/docs/libnm-util/html/index.sgml
index 18260e91..c2b27338 100644
--- a/docs/libnm-util/html/index.sgml
+++ b/docs/libnm-util/html/index.sgml
@@ -30,6 +30,7 @@
 <ANCHOR id="nm-connection-get-path" href="libnm-util/NMConnection.html#nm-connection-get-path">
 <ANCHOR id="nm-connection-get-setting" href="libnm-util/NMConnection.html#nm-connection-get-setting">
 <ANCHOR id="nm-connection-get-setting-802-1x" href="libnm-util/NMConnection.html#nm-connection-get-setting-802-1x">
+<ANCHOR id="nm-connection-get-setting-adsl" href="libnm-util/NMConnection.html#nm-connection-get-setting-adsl">
 <ANCHOR id="nm-connection-get-setting-bluetooth" href="libnm-util/NMConnection.html#nm-connection-get-setting-bluetooth">
 <ANCHOR id="nm-connection-get-setting-bond" href="libnm-util/NMConnection.html#nm-connection-get-setting-bond">
 <ANCHOR id="nm-connection-get-setting-by-name" href="libnm-util/NMConnection.html#nm-connection-get-setting-by-name">
@@ -268,6 +269,7 @@
 <ANCHOR id="NM-SETTING-WIRELESS-CHANNEL:CAPS" href="libnm-util/NMSettingWireless.html#NM-SETTING-WIRELESS-CHANNEL:CAPS">
 <ANCHOR id="NM-SETTING-WIRELESS-CLONED-MAC-ADDRESS:CAPS" href="libnm-util/NMSettingWireless.html#NM-SETTING-WIRELESS-CLONED-MAC-ADDRESS:CAPS">
 <ANCHOR id="NM-SETTING-WIRELESS-ERROR:CAPS" href="libnm-util/NMSettingWireless.html#NM-SETTING-WIRELESS-ERROR:CAPS">
+<ANCHOR id="NM-SETTING-WIRELESS-HIDDEN:CAPS" href="libnm-util/NMSettingWireless.html#NM-SETTING-WIRELESS-HIDDEN:CAPS">
 <ANCHOR id="NM-SETTING-WIRELESS-MAC-ADDRESS:CAPS" href="libnm-util/NMSettingWireless.html#NM-SETTING-WIRELESS-MAC-ADDRESS:CAPS">
 <ANCHOR id="NM-SETTING-WIRELESS-MAC-ADDRESS-BLACKLIST:CAPS" href="libnm-util/NMSettingWireless.html#NM-SETTING-WIRELESS-MAC-ADDRESS-BLACKLIST:CAPS">
 <ANCHOR id="NM-SETTING-WIRELESS-MODE:CAPS" href="libnm-util/NMSettingWireless.html#NM-SETTING-WIRELESS-MODE:CAPS">
@@ -287,6 +289,7 @@
 <ANCHOR id="nm-setting-wireless-get-bssid" href="libnm-util/NMSettingWireless.html#nm-setting-wireless-get-bssid">
 <ANCHOR id="nm-setting-wireless-get-channel" href="libnm-util/NMSettingWireless.html#nm-setting-wireless-get-channel">
 <ANCHOR id="nm-setting-wireless-get-cloned-mac-address" href="libnm-util/NMSettingWireless.html#nm-setting-wireless-get-cloned-mac-address">
+<ANCHOR id="nm-setting-wireless-get-hidden" href="libnm-util/NMSettingWireless.html#nm-setting-wireless-get-hidden">
 <ANCHOR id="nm-setting-wireless-get-mac-address" href="libnm-util/NMSettingWireless.html#nm-setting-wireless-get-mac-address">
 <ANCHOR id="nm-setting-wireless-get-mac-address-blacklist" href="libnm-util/NMSettingWireless.html#nm-setting-wireless-get-mac-address-blacklist">
 <ANCHOR id="nm-setting-wireless-get-mode" href="libnm-util/NMSettingWireless.html#nm-setting-wireless-get-mode">
@@ -303,6 +306,7 @@
 <ANCHOR id="NMSettingWireless--bssid" href="libnm-util/NMSettingWireless.html#NMSettingWireless--bssid">
 <ANCHOR id="NMSettingWireless--channel" href="libnm-util/NMSettingWireless.html#NMSettingWireless--channel">
 <ANCHOR id="NMSettingWireless--cloned-mac-address" href="libnm-util/NMSettingWireless.html#NMSettingWireless--cloned-mac-address">
+<ANCHOR id="NMSettingWireless--hidden" href="libnm-util/NMSettingWireless.html#NMSettingWireless--hidden">
 <ANCHOR id="NMSettingWireless--mac-address" href="libnm-util/NMSettingWireless.html#NMSettingWireless--mac-address">
 <ANCHOR id="NMSettingWireless--mac-address-blacklist" href="libnm-util/NMSettingWireless.html#NMSettingWireless--mac-address-blacklist">
 <ANCHOR id="NMSettingWireless--mode" href="libnm-util/NMSettingWireless.html#NMSettingWireless--mode">
@@ -593,6 +597,120 @@
 <ANCHOR id="NMSettingWimax.property-details" href="libnm-util/NMSettingWimax.html#NMSettingWimax.property-details">
 <ANCHOR id="NMSettingWimax--mac-address" href="libnm-util/NMSettingWimax.html#NMSettingWimax--mac-address">
 <ANCHOR id="NMSettingWimax--network-name" href="libnm-util/NMSettingWimax.html#NMSettingWimax--network-name">
+<ANCHOR id="NMSettingBond" href="libnm-util/NMSettingBond.html">
+<ANCHOR id="NMSettingBond.synopsis" href="libnm-util/NMSettingBond.html#NMSettingBond.synopsis">
+<ANCHOR id="NMSettingBondError" href="libnm-util/NMSettingBond.html#NMSettingBondError">
+<ANCHOR id="NMSettingBond.object-hierarchy" href="libnm-util/NMSettingBond.html#NMSettingBond.object-hierarchy">
+<ANCHOR id="NMSettingBond.properties" href="libnm-util/NMSettingBond.html#NMSettingBond.properties">
+<ANCHOR id="NMSettingBond.description" href="libnm-util/NMSettingBond.html#NMSettingBond.description">
+<ANCHOR id="NMSettingBond.details" href="libnm-util/NMSettingBond.html#NMSettingBond.details">
+<ANCHOR id="NMSettingBond-struct" href="libnm-util/NMSettingBond.html#NMSettingBond-struct">
+<ANCHOR id="NMSettingBondClass" href="libnm-util/NMSettingBond.html#NMSettingBondClass">
+<ANCHOR id="NMSettingBondError-enum" href="libnm-util/NMSettingBond.html#NMSettingBondError-enum">
+<ANCHOR id="NM-SETTING-BOND-ERROR-UNKNOWN:CAPS" href="libnm-util/NMSettingBond.html#NM-SETTING-BOND-ERROR-UNKNOWN:CAPS">
+<ANCHOR id="NM-SETTING-BOND-ERROR-INVALID-PROPERTY:CAPS" href="libnm-util/NMSettingBond.html#NM-SETTING-BOND-ERROR-INVALID-PROPERTY:CAPS">
+<ANCHOR id="NM-SETTING-BOND-ERROR-MISSING-PROPERTY:CAPS" href="libnm-util/NMSettingBond.html#NM-SETTING-BOND-ERROR-MISSING-PROPERTY:CAPS">
+<ANCHOR id="NM-SETTING-BOND-ERROR-INVALID-OPTION:CAPS" href="libnm-util/NMSettingBond.html#NM-SETTING-BOND-ERROR-INVALID-OPTION:CAPS">
+<ANCHOR id="NM-SETTING-BOND-ERROR-MISSING-OPTION:CAPS" href="libnm-util/NMSettingBond.html#NM-SETTING-BOND-ERROR-MISSING-OPTION:CAPS">
+<ANCHOR id="NM-SETTING-BOND-ERROR:CAPS" href="libnm-util/NMSettingBond.html#NM-SETTING-BOND-ERROR:CAPS">
+<ANCHOR id="NM-SETTING-BOND-INTERFACE-NAME:CAPS" href="libnm-util/NMSettingBond.html#NM-SETTING-BOND-INTERFACE-NAME:CAPS">
+<ANCHOR id="NM-SETTING-BOND-OPTIONS:CAPS" href="libnm-util/NMSettingBond.html#NM-SETTING-BOND-OPTIONS:CAPS">
+<ANCHOR id="NM-SETTING-BOND-OPTION-ARP-INTERVAL:CAPS" href="libnm-util/NMSettingBond.html#NM-SETTING-BOND-OPTION-ARP-INTERVAL:CAPS">
+<ANCHOR id="NM-SETTING-BOND-OPTION-ARP-IP-TARGET:CAPS" href="libnm-util/NMSettingBond.html#NM-SETTING-BOND-OPTION-ARP-IP-TARGET:CAPS">
+<ANCHOR id="NM-SETTING-BOND-OPTION-DOWNDELAY:CAPS" href="libnm-util/NMSettingBond.html#NM-SETTING-BOND-OPTION-DOWNDELAY:CAPS">
+<ANCHOR id="NM-SETTING-BOND-OPTION-MIIMON:CAPS" href="libnm-util/NMSettingBond.html#NM-SETTING-BOND-OPTION-MIIMON:CAPS">
+<ANCHOR id="NM-SETTING-BOND-OPTION-MODE:CAPS" href="libnm-util/NMSettingBond.html#NM-SETTING-BOND-OPTION-MODE:CAPS">
+<ANCHOR id="NM-SETTING-BOND-OPTION-UPDELAY:CAPS" href="libnm-util/NMSettingBond.html#NM-SETTING-BOND-OPTION-UPDELAY:CAPS">
+<ANCHOR id="NM-SETTING-BOND-SETTING-NAME:CAPS" href="libnm-util/NMSettingBond.html#NM-SETTING-BOND-SETTING-NAME:CAPS">
+<ANCHOR id="nm-setting-bond-add-option" href="libnm-util/NMSettingBond.html#nm-setting-bond-add-option">
+<ANCHOR id="nm-setting-bond-error-quark" href="libnm-util/NMSettingBond.html#nm-setting-bond-error-quark">
+<ANCHOR id="nm-setting-bond-get-interface-name" href="libnm-util/NMSettingBond.html#nm-setting-bond-get-interface-name">
+<ANCHOR id="nm-setting-bond-get-num-options" href="libnm-util/NMSettingBond.html#nm-setting-bond-get-num-options">
+<ANCHOR id="nm-setting-bond-get-option" href="libnm-util/NMSettingBond.html#nm-setting-bond-get-option">
+<ANCHOR id="nm-setting-bond-get-option-by-name" href="libnm-util/NMSettingBond.html#nm-setting-bond-get-option-by-name">
+<ANCHOR id="nm-setting-bond-get-option-default" href="libnm-util/NMSettingBond.html#nm-setting-bond-get-option-default">
+<ANCHOR id="nm-setting-bond-get-valid-options" href="libnm-util/NMSettingBond.html#nm-setting-bond-get-valid-options">
+<ANCHOR id="nm-setting-bond-new" href="libnm-util/NMSettingBond.html#nm-setting-bond-new">
+<ANCHOR id="nm-setting-bond-remove-option" href="libnm-util/NMSettingBond.html#nm-setting-bond-remove-option">
+<ANCHOR id="NMSettingBond.property-details" href="libnm-util/NMSettingBond.html#NMSettingBond.property-details">
+<ANCHOR id="NMSettingBond--interface-name" href="libnm-util/NMSettingBond.html#NMSettingBond--interface-name">
+<ANCHOR id="NMSettingBond--options" href="libnm-util/NMSettingBond.html#NMSettingBond--options">
+<ANCHOR id="NMSettingInfiniband" href="libnm-util/NMSettingInfiniband.html">
+<ANCHOR id="NMSettingInfiniband.synopsis" href="libnm-util/NMSettingInfiniband.html#NMSettingInfiniband.synopsis">
+<ANCHOR id="NMSettingInfinibandError" href="libnm-util/NMSettingInfiniband.html#NMSettingInfinibandError">
+<ANCHOR id="NMSettingInfiniband.object-hierarchy" href="libnm-util/NMSettingInfiniband.html#NMSettingInfiniband.object-hierarchy">
+<ANCHOR id="NMSettingInfiniband.properties" href="libnm-util/NMSettingInfiniband.html#NMSettingInfiniband.properties">
+<ANCHOR id="NMSettingInfiniband.description" href="libnm-util/NMSettingInfiniband.html#NMSettingInfiniband.description">
+<ANCHOR id="NMSettingInfiniband.details" href="libnm-util/NMSettingInfiniband.html#NMSettingInfiniband.details">
+<ANCHOR id="NMSettingInfiniband-struct" href="libnm-util/NMSettingInfiniband.html#NMSettingInfiniband-struct">
+<ANCHOR id="NMSettingInfinibandClass" href="libnm-util/NMSettingInfiniband.html#NMSettingInfinibandClass">
+<ANCHOR id="NMSettingInfinibandError-enum" href="libnm-util/NMSettingInfiniband.html#NMSettingInfinibandError-enum">
+<ANCHOR id="NM-SETTING-INFINIBAND-ERROR-UNKNOWN:CAPS" href="libnm-util/NMSettingInfiniband.html#NM-SETTING-INFINIBAND-ERROR-UNKNOWN:CAPS">
+<ANCHOR id="NM-SETTING-INFINIBAND-ERROR-INVALID-PROPERTY:CAPS" href="libnm-util/NMSettingInfiniband.html#NM-SETTING-INFINIBAND-ERROR-INVALID-PROPERTY:CAPS">
+<ANCHOR id="NM-SETTING-INFINIBAND-ERROR-MISSING-PROPERTY:CAPS" href="libnm-util/NMSettingInfiniband.html#NM-SETTING-INFINIBAND-ERROR-MISSING-PROPERTY:CAPS">
+<ANCHOR id="NM-SETTING-INFINIBAND-ERROR:CAPS" href="libnm-util/NMSettingInfiniband.html#NM-SETTING-INFINIBAND-ERROR:CAPS">
+<ANCHOR id="NM-SETTING-INFINIBAND-MAC-ADDRESS:CAPS" href="libnm-util/NMSettingInfiniband.html#NM-SETTING-INFINIBAND-MAC-ADDRESS:CAPS">
+<ANCHOR id="NM-SETTING-INFINIBAND-MTU:CAPS" href="libnm-util/NMSettingInfiniband.html#NM-SETTING-INFINIBAND-MTU:CAPS">
+<ANCHOR id="NM-SETTING-INFINIBAND-SETTING-NAME:CAPS" href="libnm-util/NMSettingInfiniband.html#NM-SETTING-INFINIBAND-SETTING-NAME:CAPS">
+<ANCHOR id="NM-SETTING-INFINIBAND-TRANSPORT-MODE:CAPS" href="libnm-util/NMSettingInfiniband.html#NM-SETTING-INFINIBAND-TRANSPORT-MODE:CAPS">
+<ANCHOR id="nm-setting-infiniband-error-quark" href="libnm-util/NMSettingInfiniband.html#nm-setting-infiniband-error-quark">
+<ANCHOR id="nm-setting-infiniband-get-mac-address" href="libnm-util/NMSettingInfiniband.html#nm-setting-infiniband-get-mac-address">
+<ANCHOR id="nm-setting-infiniband-get-mtu" href="libnm-util/NMSettingInfiniband.html#nm-setting-infiniband-get-mtu">
+<ANCHOR id="nm-setting-infiniband-get-transport-mode" href="libnm-util/NMSettingInfiniband.html#nm-setting-infiniband-get-transport-mode">
+<ANCHOR id="nm-setting-infiniband-new" href="libnm-util/NMSettingInfiniband.html#nm-setting-infiniband-new">
+<ANCHOR id="NMSettingInfiniband.property-details" href="libnm-util/NMSettingInfiniband.html#NMSettingInfiniband.property-details">
+<ANCHOR id="NMSettingInfiniband--mac-address" href="libnm-util/NMSettingInfiniband.html#NMSettingInfiniband--mac-address">
+<ANCHOR id="NMSettingInfiniband--mtu" href="libnm-util/NMSettingInfiniband.html#NMSettingInfiniband--mtu">
+<ANCHOR id="NMSettingInfiniband--transport-mode" href="libnm-util/NMSettingInfiniband.html#NMSettingInfiniband--transport-mode">
+<ANCHOR id="NMSettingVlan" href="libnm-util/NMSettingVlan.html">
+<ANCHOR id="NMSettingVlan.synopsis" href="libnm-util/NMSettingVlan.html#NMSettingVlan.synopsis">
+<ANCHOR id="NMSettingVlanError" href="libnm-util/NMSettingVlan.html#NMSettingVlanError">
+<ANCHOR id="NMVlanFlags" href="libnm-util/NMSettingVlan.html#NMVlanFlags">
+<ANCHOR id="NMVlanPriorityMap" href="libnm-util/NMSettingVlan.html#NMVlanPriorityMap">
+<ANCHOR id="NMSettingVlan.object-hierarchy" href="libnm-util/NMSettingVlan.html#NMSettingVlan.object-hierarchy">
+<ANCHOR id="NMSettingVlan.properties" href="libnm-util/NMSettingVlan.html#NMSettingVlan.properties">
+<ANCHOR id="NMSettingVlan.description" href="libnm-util/NMSettingVlan.html#NMSettingVlan.description">
+<ANCHOR id="NMSettingVlan.details" href="libnm-util/NMSettingVlan.html#NMSettingVlan.details">
+<ANCHOR id="NMSettingVlan-struct" href="libnm-util/NMSettingVlan.html#NMSettingVlan-struct">
+<ANCHOR id="NMSettingVlanClass" href="libnm-util/NMSettingVlan.html#NMSettingVlanClass">
+<ANCHOR id="NMSettingVlanError-enum" href="libnm-util/NMSettingVlan.html#NMSettingVlanError-enum">
+<ANCHOR id="NM-SETTING-VLAN-ERROR-UNKNOWN:CAPS" href="libnm-util/NMSettingVlan.html#NM-SETTING-VLAN-ERROR-UNKNOWN:CAPS">
+<ANCHOR id="NM-SETTING-VLAN-ERROR-INVALID-PROPERTY:CAPS" href="libnm-util/NMSettingVlan.html#NM-SETTING-VLAN-ERROR-INVALID-PROPERTY:CAPS">
+<ANCHOR id="NM-SETTING-VLAN-ERROR-MISSING-PROPERTY:CAPS" href="libnm-util/NMSettingVlan.html#NM-SETTING-VLAN-ERROR-MISSING-PROPERTY:CAPS">
+<ANCHOR id="NMVlanFlags-enum" href="libnm-util/NMSettingVlan.html#NMVlanFlags-enum">
+<ANCHOR id="NM-VLAN-FLAG-REORDER-HEADERS:CAPS" href="libnm-util/NMSettingVlan.html#NM-VLAN-FLAG-REORDER-HEADERS:CAPS">
+<ANCHOR id="NM-VLAN-FLAG-GVRP:CAPS" href="libnm-util/NMSettingVlan.html#NM-VLAN-FLAG-GVRP:CAPS">
+<ANCHOR id="NM-VLAN-FLAG-LOOSE-BINDING:CAPS" href="libnm-util/NMSettingVlan.html#NM-VLAN-FLAG-LOOSE-BINDING:CAPS">
+<ANCHOR id="NMVlanPriorityMap-enum" href="libnm-util/NMSettingVlan.html#NMVlanPriorityMap-enum">
+<ANCHOR id="NM-VLAN-INGRESS-MAP:CAPS" href="libnm-util/NMSettingVlan.html#NM-VLAN-INGRESS-MAP:CAPS">
+<ANCHOR id="NM-VLAN-EGRESS-MAP:CAPS" href="libnm-util/NMSettingVlan.html#NM-VLAN-EGRESS-MAP:CAPS">
+<ANCHOR id="NM-SETTING-VLAN-EGRESS-PRIORITY-MAP:CAPS" href="libnm-util/NMSettingVlan.html#NM-SETTING-VLAN-EGRESS-PRIORITY-MAP:CAPS">
+<ANCHOR id="NM-SETTING-VLAN-ERROR:CAPS" href="libnm-util/NMSettingVlan.html#NM-SETTING-VLAN-ERROR:CAPS">
+<ANCHOR id="NM-SETTING-VLAN-FLAGS:CAPS" href="libnm-util/NMSettingVlan.html#NM-SETTING-VLAN-FLAGS:CAPS">
+<ANCHOR id="NM-SETTING-VLAN-ID:CAPS" href="libnm-util/NMSettingVlan.html#NM-SETTING-VLAN-ID:CAPS">
+<ANCHOR id="NM-SETTING-VLAN-INGRESS-PRIORITY-MAP:CAPS" href="libnm-util/NMSettingVlan.html#NM-SETTING-VLAN-INGRESS-PRIORITY-MAP:CAPS">
+<ANCHOR id="NM-SETTING-VLAN-INTERFACE-NAME:CAPS" href="libnm-util/NMSettingVlan.html#NM-SETTING-VLAN-INTERFACE-NAME:CAPS">
+<ANCHOR id="NM-SETTING-VLAN-PARENT:CAPS" href="libnm-util/NMSettingVlan.html#NM-SETTING-VLAN-PARENT:CAPS">
+<ANCHOR id="NM-SETTING-VLAN-SETTING-NAME:CAPS" href="libnm-util/NMSettingVlan.html#NM-SETTING-VLAN-SETTING-NAME:CAPS">
+<ANCHOR id="nm-setting-vlan-add-priority" href="libnm-util/NMSettingVlan.html#nm-setting-vlan-add-priority">
+<ANCHOR id="nm-setting-vlan-add-priority-str" href="libnm-util/NMSettingVlan.html#nm-setting-vlan-add-priority-str">
+<ANCHOR id="nm-setting-vlan-clear-priorities" href="libnm-util/NMSettingVlan.html#nm-setting-vlan-clear-priorities">
+<ANCHOR id="nm-setting-vlan-error-quark" href="libnm-util/NMSettingVlan.html#nm-setting-vlan-error-quark">
+<ANCHOR id="nm-setting-vlan-get-flags" href="libnm-util/NMSettingVlan.html#nm-setting-vlan-get-flags">
+<ANCHOR id="nm-setting-vlan-get-id" href="libnm-util/NMSettingVlan.html#nm-setting-vlan-get-id">
+<ANCHOR id="nm-setting-vlan-get-interface-name" href="libnm-util/NMSettingVlan.html#nm-setting-vlan-get-interface-name">
+<ANCHOR id="nm-setting-vlan-get-num-priorities" href="libnm-util/NMSettingVlan.html#nm-setting-vlan-get-num-priorities">
+<ANCHOR id="nm-setting-vlan-get-parent" href="libnm-util/NMSettingVlan.html#nm-setting-vlan-get-parent">
+<ANCHOR id="nm-setting-vlan-get-priority" href="libnm-util/NMSettingVlan.html#nm-setting-vlan-get-priority">
+<ANCHOR id="nm-setting-vlan-new" href="libnm-util/NMSettingVlan.html#nm-setting-vlan-new">
+<ANCHOR id="nm-setting-vlan-remove-priority" href="libnm-util/NMSettingVlan.html#nm-setting-vlan-remove-priority">
+<ANCHOR id="NMSettingVlan.property-details" href="libnm-util/NMSettingVlan.html#NMSettingVlan.property-details">
+<ANCHOR id="NMSettingVlan--egress-priority-map" href="libnm-util/NMSettingVlan.html#NMSettingVlan--egress-priority-map">
+<ANCHOR id="NMSettingVlan--flags" href="libnm-util/NMSettingVlan.html#NMSettingVlan--flags">
+<ANCHOR id="NMSettingVlan--id" href="libnm-util/NMSettingVlan.html#NMSettingVlan--id">
+<ANCHOR id="NMSettingVlan--ingress-priority-map" href="libnm-util/NMSettingVlan.html#NMSettingVlan--ingress-priority-map">
+<ANCHOR id="NMSettingVlan--interface-name" href="libnm-util/NMSettingVlan.html#NMSettingVlan--interface-name">
+<ANCHOR id="NMSettingVlan--parent" href="libnm-util/NMSettingVlan.html#NMSettingVlan--parent">
 <ANCHOR id="NMSettingOlpcMesh" href="libnm-util/NMSettingOlpcMesh.html">
 <ANCHOR id="NMSettingOlpcMesh.synopsis" href="libnm-util/NMSettingOlpcMesh.html#NMSettingOlpcMesh.synopsis">
 <ANCHOR id="NMSettingOlpcMeshError" href="libnm-util/NMSettingOlpcMesh.html#NMSettingOlpcMeshError">
diff --git a/docs/libnm-util/html/libnm-util-nm-utils.html b/docs/libnm-util/html/libnm-util-nm-utils.html
index a17c1ece..a4404b33 100644
--- a/docs/libnm-util/html/libnm-util-nm-utils.html
+++ b/docs/libnm-util/html/libnm-util-nm-utils.html
@@ -664,7 +664,25 @@ which should be unset by the caller (when no longer needed) with
 <a name="nm-utils-ip6-dns-from-gvalue"></a><h3>nm_utils_ip6_dns_from_gvalue ()</h3>
 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#GSList"><span class="returnvalue">GSList</span></a> *            nm_utils_ip6_dns_from_gvalue        (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value</code></em>);</pre>
 <p>
+Converts a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> containing a <a href="http://library.gnome.org/devel/glib/unstable/glib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> of IP6 DNS, represented as
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.html#GByteArray"><span class="type">GByteArray</span></a>s into a <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#GSList"><span class="type">GSList</span></a> of <span class="type">in6_addr</span>s.
 </p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#GSList"><span class="type">GSList</span></a> of IP6
+addresses. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> Posix.in6_addr]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
@@ -672,7 +690,26 @@ which should be unset by the caller (when no longer needed) with
 <pre class="programlisting"><span class="returnvalue">void</span>                nm_utils_ip6_dns_to_gvalue          (<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#GSList"><span class="type">GSList</span></a> *list</code></em>,
                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value</code></em>);</pre>
 <p>
+Utility function to convert a <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#GSList"><span class="type">GSList</span></a> of 'struct in6_addr' structs into a
+GPtrArray of GByteArrays representing each server's IPv6 addresses in
+network byte order.  The specific format of this serialization is not
+guaranteed to be stable and may be extended in the future.
 </p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td>
+<td>a list of <a class="link" href="NMSettingIP6Config.html#NMIP6Route"><span class="type">NMIP6Route</span></a> objects</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>a pointer to a <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> into which to place the converted DNS server
+addresses, which should be unset by the caller (when no longer needed) with
+<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#g-value-unset"><code class="function">g_value_unset()</code></a>.</td>
+</tr>
+</tbody>
+</table></div>
 </div>
 <hr>
 <div class="refsect2">
diff --git a/docs/libnm-util/html/libnm-util.devhelp2 b/docs/libnm-util/html/libnm-util.devhelp2
index 993a29d7..fb3955a3 100644
--- a/docs/libnm-util/html/libnm-util.devhelp2
+++ b/docs/libnm-util/html/libnm-util.devhelp2
@@ -14,6 +14,9 @@
       <sub name="NMSettingCdma" link="NMSettingCdma.html"/>
       <sub name="NMSettingGsm" link="NMSettingGsm.html"/>
       <sub name="NMSettingWimax" link="NMSettingWimax.html"/>
+      <sub name="NMSettingBond" link="NMSettingBond.html"/>
+      <sub name="NMSettingInfiniband" link="NMSettingInfiniband.html"/>
+      <sub name="NMSettingVlan" link="NMSettingVlan.html"/>
       <sub name="NMSettingOlpcMesh" link="NMSettingOlpcMesh.html"/>
       <sub name="NMSetting8021x" link="NMSetting8021x.html"/>
       <sub name="NMSettingIP4Config" link="NMSettingIP4Config.html"/>
@@ -47,6 +50,7 @@
     <keyword type="function" name="nm_connection_get_path ()" link="NMConnection.html#nm-connection-get-path"/>
     <keyword type="function" name="nm_connection_get_setting ()" link="NMConnection.html#nm-connection-get-setting"/>
     <keyword type="function" name="nm_connection_get_setting_802_1x ()" link="NMConnection.html#nm-connection-get-setting-802-1x"/>
+    <keyword type="function" name="nm_connection_get_setting_adsl ()" link="NMConnection.html#nm-connection-get-setting-adsl"/>
     <keyword type="function" name="nm_connection_get_setting_bluetooth ()" link="NMConnection.html#nm-connection-get-setting-bluetooth"/>
     <keyword type="function" name="nm_connection_get_setting_bond ()" link="NMConnection.html#nm-connection-get-setting-bond"/>
     <keyword type="function" name="nm_connection_get_setting_by_name ()" link="NMConnection.html#nm-connection-get-setting-by-name"/>
@@ -215,6 +219,7 @@
     <keyword type="macro" name="NM_SETTING_WIRELESS_CHANNEL" link="NMSettingWireless.html#NM-SETTING-WIRELESS-CHANNEL:CAPS"/>
     <keyword type="macro" name="NM_SETTING_WIRELESS_CLONED_MAC_ADDRESS" link="NMSettingWireless.html#NM-SETTING-WIRELESS-CLONED-MAC-ADDRESS:CAPS"/>
     <keyword type="macro" name="NM_SETTING_WIRELESS_ERROR" link="NMSettingWireless.html#NM-SETTING-WIRELESS-ERROR:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_WIRELESS_HIDDEN" link="NMSettingWireless.html#NM-SETTING-WIRELESS-HIDDEN:CAPS"/>
     <keyword type="macro" name="NM_SETTING_WIRELESS_MAC_ADDRESS" link="NMSettingWireless.html#NM-SETTING-WIRELESS-MAC-ADDRESS:CAPS"/>
     <keyword type="macro" name="NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST" link="NMSettingWireless.html#NM-SETTING-WIRELESS-MAC-ADDRESS-BLACKLIST:CAPS"/>
     <keyword type="macro" name="NM_SETTING_WIRELESS_MODE" link="NMSettingWireless.html#NM-SETTING-WIRELESS-MODE:CAPS"/>
@@ -234,6 +239,7 @@
     <keyword type="function" name="nm_setting_wireless_get_bssid ()" link="NMSettingWireless.html#nm-setting-wireless-get-bssid"/>
     <keyword type="function" name="nm_setting_wireless_get_channel ()" link="NMSettingWireless.html#nm-setting-wireless-get-channel"/>
     <keyword type="function" name="nm_setting_wireless_get_cloned_mac_address ()" link="NMSettingWireless.html#nm-setting-wireless-get-cloned-mac-address"/>
+    <keyword type="function" name="nm_setting_wireless_get_hidden ()" link="NMSettingWireless.html#nm-setting-wireless-get-hidden"/>
     <keyword type="function" name="nm_setting_wireless_get_mac_address ()" link="NMSettingWireless.html#nm-setting-wireless-get-mac-address"/>
     <keyword type="function" name="nm_setting_wireless_get_mac_address_blacklist ()" link="NMSettingWireless.html#nm-setting-wireless-get-mac-address-blacklist"/>
     <keyword type="function" name="nm_setting_wireless_get_mode ()" link="NMSettingWireless.html#nm-setting-wireless-get-mode"/>
@@ -249,6 +255,7 @@
     <keyword type="property" name="The &quot;bssid&quot; property" link="NMSettingWireless.html#NMSettingWireless--bssid"/>
     <keyword type="property" name="The &quot;channel&quot; property" link="NMSettingWireless.html#NMSettingWireless--channel"/>
     <keyword type="property" name="The &quot;cloned-mac-address&quot; property" link="NMSettingWireless.html#NMSettingWireless--cloned-mac-address"/>
+    <keyword type="property" name="The &quot;hidden&quot; property" link="NMSettingWireless.html#NMSettingWireless--hidden"/>
     <keyword type="property" name="The &quot;mac-address&quot; property" link="NMSettingWireless.html#NMSettingWireless--mac-address"/>
     <keyword type="property" name="The &quot;mac-address-blacklist&quot; property" link="NMSettingWireless.html#NMSettingWireless--mac-address-blacklist"/>
     <keyword type="property" name="The &quot;mode&quot; property" link="NMSettingWireless.html#NMSettingWireless--mode"/>
@@ -438,6 +445,78 @@
     <keyword type="function" name="nm_setting_wimax_new ()" link="NMSettingWimax.html#nm-setting-wimax-new"/>
     <keyword type="property" name="The &quot;mac-address&quot; property" link="NMSettingWimax.html#NMSettingWimax--mac-address"/>
     <keyword type="property" name="The &quot;network-name&quot; property" link="NMSettingWimax.html#NMSettingWimax--network-name"/>
+    <keyword type="struct" name="NMSettingBond" link="NMSettingBond.html#NMSettingBond-struct"/>
+    <keyword type="struct" name="NMSettingBondClass" link="NMSettingBond.html#NMSettingBondClass"/>
+    <keyword type="enum" name="enum NMSettingBondError" link="NMSettingBond.html#NMSettingBondError-enum"/>
+    <keyword type="macro" name="NM_SETTING_BOND_ERROR" link="NMSettingBond.html#NM-SETTING-BOND-ERROR:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_BOND_INTERFACE_NAME" link="NMSettingBond.html#NM-SETTING-BOND-INTERFACE-NAME:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_BOND_OPTIONS" link="NMSettingBond.html#NM-SETTING-BOND-OPTIONS:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_BOND_OPTION_ARP_INTERVAL" link="NMSettingBond.html#NM-SETTING-BOND-OPTION-ARP-INTERVAL:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_BOND_OPTION_ARP_IP_TARGET" link="NMSettingBond.html#NM-SETTING-BOND-OPTION-ARP-IP-TARGET:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_BOND_OPTION_DOWNDELAY" link="NMSettingBond.html#NM-SETTING-BOND-OPTION-DOWNDELAY:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_BOND_OPTION_MIIMON" link="NMSettingBond.html#NM-SETTING-BOND-OPTION-MIIMON:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_BOND_OPTION_MODE" link="NMSettingBond.html#NM-SETTING-BOND-OPTION-MODE:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_BOND_OPTION_UPDELAY" link="NMSettingBond.html#NM-SETTING-BOND-OPTION-UPDELAY:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_BOND_SETTING_NAME" link="NMSettingBond.html#NM-SETTING-BOND-SETTING-NAME:CAPS"/>
+    <keyword type="function" name="nm_setting_bond_add_option ()" link="NMSettingBond.html#nm-setting-bond-add-option"/>
+    <keyword type="function" name="nm_setting_bond_error_quark ()" link="NMSettingBond.html#nm-setting-bond-error-quark"/>
+    <keyword type="function" name="nm_setting_bond_get_interface_name ()" link="NMSettingBond.html#nm-setting-bond-get-interface-name"/>
+    <keyword type="function" name="nm_setting_bond_get_num_options ()" link="NMSettingBond.html#nm-setting-bond-get-num-options"/>
+    <keyword type="function" name="nm_setting_bond_get_option ()" link="NMSettingBond.html#nm-setting-bond-get-option"/>
+    <keyword type="function" name="nm_setting_bond_get_option_by_name ()" link="NMSettingBond.html#nm-setting-bond-get-option-by-name"/>
+    <keyword type="function" name="nm_setting_bond_get_option_default ()" link="NMSettingBond.html#nm-setting-bond-get-option-default"/>
+    <keyword type="function" name="nm_setting_bond_get_valid_options ()" link="NMSettingBond.html#nm-setting-bond-get-valid-options"/>
+    <keyword type="function" name="nm_setting_bond_new ()" link="NMSettingBond.html#nm-setting-bond-new"/>
+    <keyword type="function" name="nm_setting_bond_remove_option ()" link="NMSettingBond.html#nm-setting-bond-remove-option"/>
+    <keyword type="property" name="The &quot;interface-name&quot; property" link="NMSettingBond.html#NMSettingBond--interface-name"/>
+    <keyword type="property" name="The &quot;options&quot; property" link="NMSettingBond.html#NMSettingBond--options"/>
+    <keyword type="struct" name="NMSettingInfiniband" link="NMSettingInfiniband.html#NMSettingInfiniband-struct"/>
+    <keyword type="struct" name="NMSettingInfinibandClass" link="NMSettingInfiniband.html#NMSettingInfinibandClass"/>
+    <keyword type="enum" name="enum NMSettingInfinibandError" link="NMSettingInfiniband.html#NMSettingInfinibandError-enum"/>
+    <keyword type="macro" name="NM_SETTING_INFINIBAND_ERROR" link="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-ERROR:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_INFINIBAND_MAC_ADDRESS" link="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-MAC-ADDRESS:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_INFINIBAND_MTU" link="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-MTU:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_INFINIBAND_SETTING_NAME" link="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-SETTING-NAME:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_INFINIBAND_TRANSPORT_MODE" link="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-TRANSPORT-MODE:CAPS"/>
+    <keyword type="function" name="nm_setting_infiniband_error_quark ()" link="NMSettingInfiniband.html#nm-setting-infiniband-error-quark"/>
+    <keyword type="function" name="nm_setting_infiniband_get_mac_address ()" link="NMSettingInfiniband.html#nm-setting-infiniband-get-mac-address"/>
+    <keyword type="function" name="nm_setting_infiniband_get_mtu ()" link="NMSettingInfiniband.html#nm-setting-infiniband-get-mtu"/>
+    <keyword type="function" name="nm_setting_infiniband_get_transport_mode ()" link="NMSettingInfiniband.html#nm-setting-infiniband-get-transport-mode"/>
+    <keyword type="function" name="nm_setting_infiniband_new ()" link="NMSettingInfiniband.html#nm-setting-infiniband-new"/>
+    <keyword type="property" name="The &quot;mac-address&quot; property" link="NMSettingInfiniband.html#NMSettingInfiniband--mac-address"/>
+    <keyword type="property" name="The &quot;mtu&quot; property" link="NMSettingInfiniband.html#NMSettingInfiniband--mtu"/>
+    <keyword type="property" name="The &quot;transport-mode&quot; property" link="NMSettingInfiniband.html#NMSettingInfiniband--transport-mode"/>
+    <keyword type="struct" name="NMSettingVlan" link="NMSettingVlan.html#NMSettingVlan-struct"/>
+    <keyword type="struct" name="NMSettingVlanClass" link="NMSettingVlan.html#NMSettingVlanClass"/>
+    <keyword type="enum" name="enum NMSettingVlanError" link="NMSettingVlan.html#NMSettingVlanError-enum"/>
+    <keyword type="enum" name="enum NMVlanFlags" link="NMSettingVlan.html#NMVlanFlags-enum"/>
+    <keyword type="enum" name="enum NMVlanPriorityMap" link="NMSettingVlan.html#NMVlanPriorityMap-enum"/>
+    <keyword type="macro" name="NM_SETTING_VLAN_EGRESS_PRIORITY_MAP" link="NMSettingVlan.html#NM-SETTING-VLAN-EGRESS-PRIORITY-MAP:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_VLAN_ERROR" link="NMSettingVlan.html#NM-SETTING-VLAN-ERROR:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_VLAN_FLAGS" link="NMSettingVlan.html#NM-SETTING-VLAN-FLAGS:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_VLAN_ID" link="NMSettingVlan.html#NM-SETTING-VLAN-ID:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_VLAN_INGRESS_PRIORITY_MAP" link="NMSettingVlan.html#NM-SETTING-VLAN-INGRESS-PRIORITY-MAP:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_VLAN_INTERFACE_NAME" link="NMSettingVlan.html#NM-SETTING-VLAN-INTERFACE-NAME:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_VLAN_PARENT" link="NMSettingVlan.html#NM-SETTING-VLAN-PARENT:CAPS"/>
+    <keyword type="macro" name="NM_SETTING_VLAN_SETTING_NAME" link="NMSettingVlan.html#NM-SETTING-VLAN-SETTING-NAME:CAPS"/>
+    <keyword type="function" name="nm_setting_vlan_add_priority ()" link="NMSettingVlan.html#nm-setting-vlan-add-priority"/>
+    <keyword type="function" name="nm_setting_vlan_add_priority_str ()" link="NMSettingVlan.html#nm-setting-vlan-add-priority-str"/>
+    <keyword type="function" name="nm_setting_vlan_clear_priorities ()" link="NMSettingVlan.html#nm-setting-vlan-clear-priorities"/>
+    <keyword type="function" name="nm_setting_vlan_error_quark ()" link="NMSettingVlan.html#nm-setting-vlan-error-quark"/>
+    <keyword type="function" name="nm_setting_vlan_get_flags ()" link="NMSettingVlan.html#nm-setting-vlan-get-flags"/>
+    <keyword type="function" name="nm_setting_vlan_get_id ()" link="NMSettingVlan.html#nm-setting-vlan-get-id"/>
+    <keyword type="function" name="nm_setting_vlan_get_interface_name ()" link="NMSettingVlan.html#nm-setting-vlan-get-interface-name"/>
+    <keyword type="function" name="nm_setting_vlan_get_num_priorities ()" link="NMSettingVlan.html#nm-setting-vlan-get-num-priorities"/>
+    <keyword type="function" name="nm_setting_vlan_get_parent ()" link="NMSettingVlan.html#nm-setting-vlan-get-parent"/>
+    <keyword type="function" name="nm_setting_vlan_get_priority ()" link="NMSettingVlan.html#nm-setting-vlan-get-priority"/>
+    <keyword type="function" name="nm_setting_vlan_new ()" link="NMSettingVlan.html#nm-setting-vlan-new"/>
+    <keyword type="function" name="nm_setting_vlan_remove_priority ()" link="NMSettingVlan.html#nm-setting-vlan-remove-priority"/>
+    <keyword type="property" name="The &quot;egress-priority-map&quot; property" link="NMSettingVlan.html#NMSettingVlan--egress-priority-map"/>
+    <keyword type="property" name="The &quot;flags&quot; property" link="NMSettingVlan.html#NMSettingVlan--flags"/>
+    <keyword type="property" name="The &quot;id&quot; property" link="NMSettingVlan.html#NMSettingVlan--id"/>
+    <keyword type="property" name="The &quot;ingress-priority-map&quot; property" link="NMSettingVlan.html#NMSettingVlan--ingress-priority-map"/>
+    <keyword type="property" name="The &quot;interface-name&quot; property" link="NMSettingVlan.html#NMSettingVlan--interface-name"/>
+    <keyword type="property" name="The &quot;parent&quot; property" link="NMSettingVlan.html#NMSettingVlan--parent"/>
     <keyword type="struct" name="NMSettingOlpcMesh" link="NMSettingOlpcMesh.html#NMSettingOlpcMesh-struct"/>
     <keyword type="struct" name="NMSettingOlpcMeshClass" link="NMSettingOlpcMesh.html#NMSettingOlpcMeshClass"/>
     <keyword type="enum" name="enum NMSettingOlpcMeshError" link="NMSettingOlpcMesh.html#NMSettingOlpcMeshError-enum"/>
@@ -996,6 +1075,22 @@
     <keyword type="constant" name="NM_SETTING_WIMAX_ERROR_UNKNOWN" link="NMSettingWimax.html#NM-SETTING-WIMAX-ERROR-UNKNOWN:CAPS"/>
     <keyword type="constant" name="NM_SETTING_WIMAX_ERROR_INVALID_PROPERTY" link="NMSettingWimax.html#NM-SETTING-WIMAX-ERROR-INVALID-PROPERTY:CAPS"/>
     <keyword type="constant" name="NM_SETTING_WIMAX_ERROR_MISSING_PROPERTY" link="NMSettingWimax.html#NM-SETTING-WIMAX-ERROR-MISSING-PROPERTY:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_BOND_ERROR_UNKNOWN" link="NMSettingBond.html#NM-SETTING-BOND-ERROR-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_BOND_ERROR_INVALID_PROPERTY" link="NMSettingBond.html#NM-SETTING-BOND-ERROR-INVALID-PROPERTY:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_BOND_ERROR_MISSING_PROPERTY" link="NMSettingBond.html#NM-SETTING-BOND-ERROR-MISSING-PROPERTY:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_BOND_ERROR_INVALID_OPTION" link="NMSettingBond.html#NM-SETTING-BOND-ERROR-INVALID-OPTION:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_BOND_ERROR_MISSING_OPTION" link="NMSettingBond.html#NM-SETTING-BOND-ERROR-MISSING-OPTION:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_INFINIBAND_ERROR_UNKNOWN" link="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-ERROR-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_INFINIBAND_ERROR_INVALID_PROPERTY" link="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-ERROR-INVALID-PROPERTY:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_INFINIBAND_ERROR_MISSING_PROPERTY" link="NMSettingInfiniband.html#NM-SETTING-INFINIBAND-ERROR-MISSING-PROPERTY:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_VLAN_ERROR_UNKNOWN" link="NMSettingVlan.html#NM-SETTING-VLAN-ERROR-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_VLAN_ERROR_INVALID_PROPERTY" link="NMSettingVlan.html#NM-SETTING-VLAN-ERROR-INVALID-PROPERTY:CAPS"/>
+    <keyword type="constant" name="NM_SETTING_VLAN_ERROR_MISSING_PROPERTY" link="NMSettingVlan.html#NM-SETTING-VLAN-ERROR-MISSING-PROPERTY:CAPS"/>
+    <keyword type="constant" name="NM_VLAN_FLAG_REORDER_HEADERS" link="NMSettingVlan.html#NM-VLAN-FLAG-REORDER-HEADERS:CAPS"/>
+    <keyword type="constant" name="NM_VLAN_FLAG_GVRP" link="NMSettingVlan.html#NM-VLAN-FLAG-GVRP:CAPS"/>
+    <keyword type="constant" name="NM_VLAN_FLAG_LOOSE_BINDING" link="NMSettingVlan.html#NM-VLAN-FLAG-LOOSE-BINDING:CAPS"/>
+    <keyword type="constant" name="NM_VLAN_INGRESS_MAP" link="NMSettingVlan.html#NM-VLAN-INGRESS-MAP:CAPS"/>
+    <keyword type="constant" name="NM_VLAN_EGRESS_MAP" link="NMSettingVlan.html#NM-VLAN-EGRESS-MAP:CAPS"/>
     <keyword type="constant" name="NM_SETTING_802_1X_CK_FORMAT_UNKNOWN" link="NMSetting8021x.html#NM-SETTING-802-1X-CK-FORMAT-UNKNOWN:CAPS"/>
     <keyword type="constant" name="NM_SETTING_802_1X_CK_FORMAT_X509" link="NMSetting8021x.html#NM-SETTING-802-1X-CK-FORMAT-X509:CAPS"/>
     <keyword type="constant" name="NM_SETTING_802_1X_CK_FORMAT_RAW_KEY" link="NMSetting8021x.html#NM-SETTING-802-1X-CK-FORMAT-RAW-KEY:CAPS"/>
diff --git a/docs/libnm-util/html/object-tree.html b/docs/libnm-util/html/object-tree.html
index 8670ba6c..edb82a82 100644
--- a/docs/libnm-util/html/object-tree.html
+++ b/docs/libnm-util/html/object-tree.html
@@ -27,19 +27,20 @@
         <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a>
         <a class="link" href="NMSetting.html" title="NMSetting">NMSetting</a>
             <a class="link" href="NMSetting8021x.html" title="NMSetting8021x">NMSetting8021x</a>
+            NMSettingAdsl
             <a class="link" href="NMSettingBluetooth.html" title="NMSettingBluetooth">NMSettingBluetooth</a>
-            NMSettingBond
+            <a class="link" href="NMSettingBond.html" title="NMSettingBond">NMSettingBond</a>
             <a class="link" href="NMSettingCdma.html" title="NMSettingCdma">NMSettingCdma</a>
             <a class="link" href="NMSettingConnection.html" title="NMSettingConnection">NMSettingConnection</a>
             <a class="link" href="NMSettingGsm.html" title="NMSettingGsm">NMSettingGsm</a>
-            NMSettingInfiniband
+            <a class="link" href="NMSettingInfiniband.html" title="NMSettingInfiniband">NMSettingInfiniband</a>
             <a class="link" href="NMSettingIP4Config.html" title="NMSettingIP4Config">NMSettingIP4Config</a>
             <a class="link" href="NMSettingIP6Config.html" title="NMSettingIP6Config">NMSettingIP6Config</a>
             <a class="link" href="NMSettingOlpcMesh.html" title="NMSettingOlpcMesh">NMSettingOlpcMesh</a>
             <a class="link" href="NMSettingPPP.html" title="NMSettingPPP">NMSettingPPP</a>
             <a class="link" href="NMSettingPPPOE.html" title="NMSettingPPPOE">NMSettingPPPOE</a>
             <a class="link" href="NMSettingSerial.html" title="NMSettingSerial">NMSettingSerial</a>
-            NMSettingVlan
+            <a class="link" href="NMSettingVlan.html" title="NMSettingVlan">NMSettingVlan</a>
             <a class="link" href="NMSettingVPN.html" title="NMSettingVPN">NMSettingVPN</a>
             <a class="link" href="NMSettingWimax.html" title="NMSettingWimax">NMSettingWimax</a>
             <a class="link" href="NMSettingWired.html" title="NMSettingWired">NMSettingWired</a>
@@ -50,8 +51,9 @@
         <a class="link" href="NMSetting8021x.html#NMSetting8021xCKFormat">NMSetting8021xCKFormat</a>
         <a class="link" href="NMSetting8021x.html#NMSetting8021xCKScheme">NMSetting8021xCKScheme</a>
         <a class="link" href="NMSetting8021x.html#NMSetting8021xError">NMSetting8021xError</a>
+        NMSettingAdslError
         <a class="link" href="NMSettingBluetooth.html#NMSettingBluetoothError">NMSettingBluetoothError</a>
-        NMSettingBondError
+        <a class="link" href="NMSettingBond.html#NMSettingBondError">NMSettingBondError</a>
         <a class="link" href="NMSettingCdma.html#NMSettingCdmaError">NMSettingCdmaError</a>
         <a class="link" href="NMSetting.html#NMSettingCompareFlags">NMSettingCompareFlags</a>
         <a class="link" href="NMSettingConnection.html#NMSettingConnectionError">NMSettingConnectionError</a>
@@ -61,7 +63,7 @@
         <a class="link" href="NMSettingGsm.html#NMSettingGsmNetworkBand">NMSettingGsmNetworkBand</a>
         <a class="link" href="NMSettingGsm.html#NMSettingGsmNetworkType">NMSettingGsmNetworkType</a>
         <a class="link" href="NMSetting.html#NMSettingHashFlags">NMSettingHashFlags</a>
-        NMSettingInfinibandError
+        <a class="link" href="NMSettingInfiniband.html#NMSettingInfinibandError">NMSettingInfinibandError</a>
         <a class="link" href="NMSettingIP4Config.html#NMSettingIP4ConfigError">NMSettingIP4ConfigError</a>
         <a class="link" href="NMSettingIP6Config.html#NMSettingIP6ConfigError">NMSettingIP6ConfigError</a>
         <a class="link" href="NMSettingIP6Config.html#NMSettingIP6ConfigPrivacy">NMSettingIP6ConfigPrivacy</a>
@@ -70,15 +72,15 @@
         <a class="link" href="NMSettingPPPOE.html#NMSettingPPPOEError">NMSettingPPPOEError</a>
         <a class="link" href="NMSetting.html#NMSettingSecretFlags">NMSettingSecretFlags</a>
         <a class="link" href="NMSettingSerial.html#NMSettingSerialError">NMSettingSerialError</a>
-        NMSettingVlanError
+        <a class="link" href="NMSettingVlan.html#NMSettingVlanError">NMSettingVlanError</a>
         <a class="link" href="NMSettingVPN.html#NMSettingVpnError">NMSettingVpnError</a>
         <a class="link" href="NMSettingWimax.html#NMSettingWimaxError">NMSettingWimaxError</a>
         <a class="link" href="NMSettingWired.html#NMSettingWiredError">NMSettingWiredError</a>
         <a class="link" href="NMSettingWireless.html#NMSettingWirelessError">NMSettingWirelessError</a>
         <a class="link" href="NMSettingWirelessSecurity.html#NMSettingWirelessSecurityError">NMSettingWirelessSecurityError</a>
         <a class="link" href="libnm-util-nm-utils.html#NMUtilsSecurityType">NMUtilsSecurityType</a>
-        NMVlanFlags
-        NMVlanPriorityMap
+        <a class="link" href="NMSettingVlan.html#NMVlanFlags">NMVlanFlags</a>
+        <a class="link" href="NMSettingVlan.html#NMVlanPriorityMap">NMVlanPriorityMap</a>
         <a class="link" href="NMSettingWirelessSecurity.html#NMWepKeyType">NMWepKeyType</a>
     GBoxed
         <a class="link" href="NMSettingIP4Config.html#NMIP4Address">NMIP4Address</a>
diff --git a/docs/libnm-util/libnm-util-docs.sgml b/docs/libnm-util/libnm-util-docs.sgml
index f717db37..f389971b 100644
--- a/docs/libnm-util/libnm-util-docs.sgml
+++ b/docs/libnm-util/libnm-util-docs.sgml
@@ -27,6 +27,9 @@
     <xi:include href="xml/nm-setting-cdma.xml"/>
     <xi:include href="xml/nm-setting-gsm.xml"/>
     <xi:include href="xml/nm-setting-wimax.xml"/>
+    <xi:include href="xml/nm-setting-bond.xml"/>
+    <xi:include href="xml/nm-setting-infiniband.xml"/>
+    <xi:include href="xml/nm-setting-vlan.xml"/>
     <xi:include href="xml/nm-setting-olpc-mesh.xml"/>
     <xi:include href="xml/nm-setting-8021x.xml"/>
     <xi:include href="xml/nm-setting-ip4-config.xml"/>
diff --git a/docs/libnm-util/libnm-util-sections.txt b/docs/libnm-util/libnm-util-sections.txt
index a278e8e8..c55c690f 100644
--- a/docs/libnm-util/libnm-util-sections.txt
+++ b/docs/libnm-util/libnm-util-sections.txt
@@ -20,6 +20,7 @@ nm_connection_get_id
 nm_connection_get_path
 nm_connection_get_setting
 nm_connection_get_setting_802_1x
+nm_connection_get_setting_adsl
 nm_connection_get_setting_bluetooth
 nm_connection_get_setting_bond
 nm_connection_get_setting_by_name
@@ -227,6 +228,45 @@ nm_setting_802_1x_get_type
 </SECTION>
 
 <SECTION>
+<FILE>nm-setting-adsl</FILE>
+<TITLE>NMSettingAdsl</TITLE>
+NMSettingAdsl
+NMSettingAdslClass
+NMSettingAdslError
+NM_SETTING_ADSL_ENCAPSULATION
+NM_SETTING_ADSL_ENCAPSULATION_LLC
+NM_SETTING_ADSL_ENCAPSULATION_VCMUX
+NM_SETTING_ADSL_ERROR
+NM_SETTING_ADSL_PASSWORD
+NM_SETTING_ADSL_PASSWORD_FLAGS
+NM_SETTING_ADSL_PROTOCOL
+NM_SETTING_ADSL_PROTOCOL_IPOATM
+NM_SETTING_ADSL_PROTOCOL_PPPOA
+NM_SETTING_ADSL_PROTOCOL_PPPOE
+NM_SETTING_ADSL_SETTING_NAME
+NM_SETTING_ADSL_USERNAME
+NM_SETTING_ADSL_VCI
+NM_SETTING_ADSL_VPI
+nm_setting_adsl_error_quark
+nm_setting_adsl_get_encapsulation
+nm_setting_adsl_get_password
+nm_setting_adsl_get_password_flags
+nm_setting_adsl_get_protocol
+nm_setting_adsl_get_username
+nm_setting_adsl_get_vci
+nm_setting_adsl_get_vpi
+nm_setting_adsl_new
+<SUBSECTION Standard>
+NM_IS_SETTING_ADSL
+NM_IS_SETTING_ADSL_CLASS
+NM_SETTING_ADSL
+NM_SETTING_ADSL_CLASS
+NM_SETTING_ADSL_GET_CLASS
+NM_TYPE_SETTING_ADSL
+nm_setting_adsl_get_type
+</SECTION>
+
+<SECTION>
 <FILE>nm-setting-bluetooth</FILE>
 <TITLE>NMSettingBluetooth</TITLE>
 NMSettingBluetooth
@@ -921,6 +961,7 @@ NM_SETTING_WIRELESS_BSSID
 NM_SETTING_WIRELESS_CHANNEL
 NM_SETTING_WIRELESS_CLONED_MAC_ADDRESS
 NM_SETTING_WIRELESS_ERROR
+NM_SETTING_WIRELESS_HIDDEN
 NM_SETTING_WIRELESS_MAC_ADDRESS
 NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST
 NM_SETTING_WIRELESS_MODE
@@ -940,6 +981,7 @@ nm_setting_wireless_get_band
 nm_setting_wireless_get_bssid
 nm_setting_wireless_get_channel
 nm_setting_wireless_get_cloned_mac_address
+nm_setting_wireless_get_hidden
 nm_setting_wireless_get_mac_address
 nm_setting_wireless_get_mac_address_blacklist
 nm_setting_wireless_get_mode
@@ -1073,6 +1115,7 @@ NM_TYPE_CONNECTION_ERROR
 NM_TYPE_SETTING_802_1X_CK_FORMAT
 NM_TYPE_SETTING_802_1X_CK_SCHEME
 NM_TYPE_SETTING_802_1X_ERROR
+NM_TYPE_SETTING_ADSL_ERROR
 NM_TYPE_SETTING_BLUETOOTH_ERROR
 NM_TYPE_SETTING_BOND_ERROR
 NM_TYPE_SETTING_CDMA_ERROR
@@ -1107,6 +1150,7 @@ nm_connection_error_get_type
 nm_setting_802_1x_ck_format_get_type
 nm_setting_802_1x_ck_scheme_get_type
 nm_setting_802_1x_error_get_type
+nm_setting_adsl_error_get_type
 nm_setting_bluetooth_error_get_type
 nm_setting_bond_error_get_type
 nm_setting_cdma_error_get_type
diff --git a/docs/libnm-util/libnm-util.types b/docs/libnm-util/libnm-util.types
index 72f62e06..511e539d 100644
--- a/docs/libnm-util/libnm-util.types
+++ b/docs/libnm-util/libnm-util.types
@@ -8,6 +8,8 @@ nm_setting_802_1x_ck_format_get_type
 nm_setting_802_1x_ck_scheme_get_type
 nm_setting_802_1x_error_get_type
 nm_setting_802_1x_get_type
+nm_setting_adsl_error_get_type
+nm_setting_adsl_get_type
 nm_setting_bluetooth_error_get_type
 nm_setting_bluetooth_get_type
 nm_setting_bond_error_get_type
diff --git a/docs/libnm-util/tmpl/libnm-util-unused.sgml b/docs/libnm-util/tmpl/libnm-util-unused.sgml
index 26fd8b52..e69de29b 100644
--- a/docs/libnm-util/tmpl/libnm-util-unused.sgml
+++ b/docs/libnm-util/tmpl/libnm-util-unused.sgml
@@ -1,260 +0,0 @@
-<!-- ##### SECTION ./tmpl/nm-setting-adsl.sgml:Image ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/nm-setting-adsl.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/nm-setting-adsl.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/nm-setting-adsl.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/nm-setting-adsl.sgml:Stability_Level ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/nm-setting-adsl.sgml:Title ##### -->
-NMSettingAdsl
-
-
-<!-- ##### STRUCT NMSettingAdsl ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG NMSettingAdsl:encapsulation ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG NMSettingAdsl:password ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG NMSettingAdsl:password-flags ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG NMSettingAdsl:protocol ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG NMSettingAdsl:username ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG NMSettingAdsl:vci ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG NMSettingAdsl:vpi ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT NMSettingAdslClass ##### -->
-<para>
-
-</para>
-
-@parent: 
-@_reserved1: 
-@_reserved2: 
-@_reserved3: 
-@_reserved4: 
-
-<!-- ##### ENUM NMSettingAdslError ##### -->
-<para>
-
-</para>
-
-@NM_SETTING_ADSL_ERROR_UNKNOWN: 
-@NM_SETTING_ADSL_ERROR_INVALID_PROPERTY: 
-@NM_SETTING_ADSL_ERROR_MISSING_PROPERTY: 
-
-<!-- ##### MACRO NM_SETTING_ADSL_ENCAPSULATION ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NM_SETTING_ADSL_ENCAPSULATION_LLC ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NM_SETTING_ADSL_ENCAPSULATION_VCMUX ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NM_SETTING_ADSL_ERROR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NM_SETTING_ADSL_PASSWORD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NM_SETTING_ADSL_PASSWORD_FLAGS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NM_SETTING_ADSL_PROTOCOL ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NM_SETTING_ADSL_PROTOCOL_IPOATM ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NM_SETTING_ADSL_PROTOCOL_PPPOA ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NM_SETTING_ADSL_PROTOCOL_PPPOE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NM_SETTING_ADSL_SETTING_NAME ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NM_SETTING_ADSL_USERNAME ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NM_SETTING_ADSL_VCI ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NM_SETTING_ADSL_VPI ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION nm_connection_get_setting_adsl ##### -->
-<para>
-
-</para>
-
-@connection: 
-@Returns: 
-
-<!-- ##### FUNCTION nm_setting_adsl_error_quark ##### -->
-<para>
-
-</para>
-
-@void: 
-@Returns: 
-
-<!-- ##### FUNCTION nm_setting_adsl_get_encapsulation ##### -->
-<para>
-
-</para>
-
-@setting: 
-@Returns: 
-
-<!-- ##### FUNCTION nm_setting_adsl_get_password ##### -->
-<para>
-
-</para>
-
-@setting: 
-@Returns: 
-
-<!-- ##### FUNCTION nm_setting_adsl_get_password_flags ##### -->
-<para>
-
-</para>
-
-@setting: 
-@Returns: 
-
-<!-- ##### FUNCTION nm_setting_adsl_get_protocol ##### -->
-<para>
-
-</para>
-
-@setting: 
-@Returns: 
-
-<!-- ##### FUNCTION nm_setting_adsl_get_username ##### -->
-<para>
-
-</para>
-
-@setting: 
-@Returns: 
-
-<!-- ##### FUNCTION nm_setting_adsl_get_vci ##### -->
-<para>
-
-</para>
-
-@setting: 
-@Returns: 
-
-<!-- ##### FUNCTION nm_setting_adsl_get_vpi ##### -->
-<para>
-
-</para>
-
-@setting: 
-@Returns: 
-
-<!-- ##### FUNCTION nm_setting_adsl_new ##### -->
-<para>
-
-</para>
-
-@void: 
-@Returns: 
-
diff --git a/docs/libnm-util/tmpl/nm-connection.sgml b/docs/libnm-util/tmpl/nm-connection.sgml
index 434e0d1b..59799611 100644
--- a/docs/libnm-util/tmpl/nm-connection.sgml
+++ b/docs/libnm-util/tmpl/nm-connection.sgml
@@ -210,6 +210,15 @@ NMConnection
 @Returns: 
 
 
+<!-- ##### FUNCTION nm_connection_get_setting_adsl ##### -->
+<para>
+
+</para>
+
+@connection: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_connection_get_setting_bluetooth ##### -->
 <para>
 
diff --git a/docs/libnm-util/tmpl/nm-setting-wireless.sgml b/docs/libnm-util/tmpl/nm-setting-wireless.sgml
index 3790e252..6a34f4c5 100644
--- a/docs/libnm-util/tmpl/nm-setting-wireless.sgml
+++ b/docs/libnm-util/tmpl/nm-setting-wireless.sgml
@@ -46,6 +46,11 @@ NMSettingWireless
 
 </para>
 
+<!-- ##### ARG NMSettingWireless:hidden ##### -->
+<para>
+
+</para>
+
 <!-- ##### ARG NMSettingWireless:mac-address ##### -->
 <para>
 
@@ -148,6 +153,13 @@ NMSettingWireless
 
 
 
+<!-- ##### MACRO NM_SETTING_WIRELESS_HIDDEN ##### -->
+<para>
+
+</para>
+
+
+
 <!-- ##### MACRO NM_SETTING_WIRELESS_MAC_ADDRESS ##### -->
 <para>
 
@@ -301,6 +313,15 @@ NMSettingWireless
 @Returns: 
 
 
+<!-- ##### FUNCTION nm_setting_wireless_get_hidden ##### -->
+<para>
+
+</para>
+
+@setting: 
+@Returns: 
+
+
 <!-- ##### FUNCTION nm_setting_wireless_get_mac_address ##### -->
 <para>
 
diff --git a/examples/C/Makefile.in b/examples/C/Makefile.in
index 463b6d49..faec1665 100644
--- a/examples/C/Makefile.in
+++ b/examples/C/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -175,6 +175,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -270,6 +274,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -308,6 +315,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/examples/C/glib/Makefile.in b/examples/C/glib/Makefile.in
index 871da9c9..8624e5b8 100644
--- a/examples/C/glib/Makefile.in
+++ b/examples/C/glib/Makefile.in
@@ -56,7 +56,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -244,6 +244,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -339,6 +343,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -377,6 +384,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/examples/C/qt/Makefile.in b/examples/C/qt/Makefile.in
index 5c3f9a33..f65e28ee 100644
--- a/examples/C/qt/Makefile.in
+++ b/examples/C/qt/Makefile.in
@@ -50,7 +50,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -185,6 +185,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -280,6 +284,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -318,6 +325,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/examples/Makefile.in b/examples/Makefile.in
index bd89738c..f9d9a51b 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -46,7 +46,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -174,6 +174,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -269,6 +273,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -307,6 +314,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/examples/python/Makefile.am b/examples/python/Makefile.am
index 59e16088..2706c0f4 100644
--- a/examples/python/Makefile.am
+++ b/examples/python/Makefile.am
@@ -7,4 +7,6 @@ EXTRA_DIST = \
 	show-bssids.py \
 	disconnect-device.py \
 	get-active-connections.py \
-	list-devices.py
+	list-devices.py \
+	goi-list-connections.py \
+	goi-device-state-ip4config.py
diff --git a/examples/python/Makefile.in b/examples/python/Makefile.in
index fce5f16a..aefb9384 100644
--- a/examples/python/Makefile.in
+++ b/examples/python/Makefile.in
@@ -46,7 +46,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -134,6 +134,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -229,6 +233,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -267,6 +274,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -481,7 +490,9 @@ uninstall-am:
 	show-bssids.py \
 	disconnect-device.py \
 	get-active-connections.py \
-	list-devices.py
+	list-devices.py \
+	goi-list-connections.py \
+	goi-device-state-ip4config.py
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/examples/ruby/Makefile.in b/examples/ruby/Makefile.in
index 0e5db416..71a9f9e9 100644
--- a/examples/ruby/Makefile.in
+++ b/examples/ruby/Makefile.in
@@ -46,7 +46,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -134,6 +134,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -229,6 +233,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -267,6 +274,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/examples/shell/Makefile.in b/examples/shell/Makefile.in
index 1933a406..47571c4b 100644
--- a/examples/shell/Makefile.in
+++ b/examples/shell/Makefile.in
@@ -46,7 +46,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -134,6 +134,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -229,6 +233,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -267,6 +274,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/include/Makefile.in b/include/Makefile.in
index 8b60268a..01d92cde 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -161,6 +161,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -256,6 +260,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -294,6 +301,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/include/NetworkManager.h b/include/NetworkManager.h
index 0aa31aef..96b132e9 100644
--- a/include/NetworkManager.h
+++ b/include/NetworkManager.h
@@ -34,6 +34,7 @@
 #define	NM_DBUS_INTERFACE                   "org.freedesktop.NetworkManager"
 #define	NM_DBUS_INTERFACE_DEVICE            NM_DBUS_INTERFACE ".Device"
 #define NM_DBUS_INTERFACE_DEVICE_WIRED      NM_DBUS_INTERFACE_DEVICE ".Wired"
+#define NM_DBUS_INTERFACE_DEVICE_ADSL       NM_DBUS_INTERFACE_DEVICE ".Adsl"
 #define NM_DBUS_INTERFACE_DEVICE_WIRELESS   NM_DBUS_INTERFACE_DEVICE ".Wireless"
 #define NM_DBUS_INTERFACE_DEVICE_BLUETOOTH  NM_DBUS_INTERFACE_DEVICE ".Bluetooth"
 #define NM_DBUS_INTERFACE_DEVICE_OLPC_MESH  NM_DBUS_INTERFACE_DEVICE ".OlpcMesh"
@@ -107,6 +108,7 @@ typedef enum {
  * GSM/UMTS, or LTE network access protocols
  * @NM_DEVICE_TYPE_INFINIBAND: an IP-over-InfiniBand device
  * @NM_DEVICE_TYPE_BOND: a bond master interface
+ * @NM_DEVICE_TYPE_ADSL: ADSL modem
  *
  * #NMDeviceType values indicate the type of hardware represented by
  * an #NMDevice.
@@ -124,6 +126,7 @@ typedef enum {
 	NM_DEVICE_TYPE_INFINIBAND = 9,
 	NM_DEVICE_TYPE_BOND       = 10,
 	NM_DEVICE_TYPE_VLAN       = 11,
+	NM_DEVICE_TYPE_ADSL       = 12,
 } NMDeviceType;
 
 /**
@@ -491,6 +494,9 @@ typedef enum {
 	/* A dependency of the connection failed */
 	NM_DEVICE_STATE_REASON_DEPENDENCY_FAILED = 50,
 
+	/* Problem with the RFC 2684 Ethernet over ADSL bridge */
+	NM_DEVICE_STATE_REASON_BR2684_FAILED = 51,
+
 	/* Unused */
 	NM_DEVICE_STATE_REASON_LAST = 0xFFFF
 } NMDeviceStateReason;
diff --git a/include/NetworkManagerVPN.h b/include/NetworkManagerVPN.h
index 8ee5b9a3..6e654b3a 100644
--- a/include/NetworkManagerVPN.h
+++ b/include/NetworkManagerVPN.h
@@ -114,8 +114,28 @@ typedef enum {
 } NMVPNPluginFailure;
 
 
-/* uint32: IP address of the public external VPN gateway (network byte order) */
-#define NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY "gateway"
+/*** Generic config ***/
+
+/* string: VPN interface name (tun0, tap0, etc) */
+#define NM_VPN_PLUGIN_CONFIG_TUNDEV      "tundev"
+
+/* string: Login message */
+#define NM_VPN_PLUGIN_CONFIG_BANNER      "banner"
+
+/* uint32 / array of uint8: IP address of the public external VPN gateway (network byte order) */
+#define NM_VPN_PLUGIN_CONFIG_EXT_GATEWAY "gateway"
+
+/* uint32: Maximum Transfer Unit that the VPN interface should use */
+#define NM_VPN_PLUGIN_CONFIG_MTU         "mtu"
+
+/* boolean: Has IP4 configuration? */
+#define NM_VPN_PLUGIN_CONFIG_HAS_IP4     "has-ip4"
+
+/* boolean: Has IP6 configuration? */
+#define NM_VPN_PLUGIN_CONFIG_HAS_IP6     "has-ip6"
+
+
+/*** Ip4Config ***/
 
 /* uint32: IP address of the internal gateway of the subnet the VPN interface is
  *         on, if the VPN uses subnet configuration (network byte order)
@@ -142,30 +162,14 @@ typedef enum {
 /* uint32: Message Segment Size that the VPN interface should use */
 #define NM_VPN_PLUGIN_IP4_CONFIG_MSS         "mss"
 
-/* uint32: Maximum Transfer Unit that the VPN interface should use */
-#define NM_VPN_PLUGIN_IP4_CONFIG_MTU         "mtu"
-
-/* string: VPN interface name (tun0, tap0, etc) */
-#define NM_VPN_PLUGIN_IP4_CONFIG_TUNDEV      "tundev"
-
 /* string: DNS domain name */
 #define NM_VPN_PLUGIN_IP4_CONFIG_DOMAIN      "domain"
 
 /* array of strings: DNS domain names */
 #define NM_VPN_PLUGIN_IP4_CONFIG_DOMAINS     "domains"
 
-/* string: Login message */
-#define NM_VPN_PLUGIN_IP4_CONFIG_BANNER      "banner"
-
-/* array of array of uint32: custom routes the client should apply.  NOTE: NM
- *     expects the D-Bus argument signature "aau" here.  i.e., an array of
- *     routes, where each route is a 4-element array of uint32 values.
- *
- *     Each route consists of the following 4 uint32 values, in this order:
- *              1: destination IP address (network byte order)
- *              2: destination prefix (1 - 32 inclusive)
- *              3: IP address of next hop (network byte order)
- *              4: route metric
+/* [ip4 routes]: custom routes the client should apply, in the format used
+ *         by nm_utils_ip4_routes_to/from_gvalue
  */
 #define NM_VPN_PLUGIN_IP4_CONFIG_ROUTES      "routes"
 
@@ -175,5 +179,52 @@ typedef enum {
 /* Deprecated */
 #define NM_VPN_PLUGIN_IP4_CONFIG_GATEWAY   NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY
 
+/* Legacy IP4 items; these are included in the IP4 config by older plugins,
+ * but in the generic config by newer plugins.
+ */
+
+#define NM_VPN_PLUGIN_IP4_CONFIG_BANNER      NM_VPN_PLUGIN_CONFIG_BANNER
+#define NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY NM_VPN_PLUGIN_CONFIG_EXT_GATEWAY
+#define NM_VPN_PLUGIN_IP4_CONFIG_MTU         NM_VPN_PLUGIN_CONFIG_MTU
+#define NM_VPN_PLUGIN_IP4_CONFIG_TUNDEV      NM_VPN_PLUGIN_CONFIG_TUNDEV
+
+
+/*** Ip6Config ***/
+
+/* array of uint8: IP address of the internal gateway of the subnet the VPN interface is
+ *         on, if the VPN uses subnet configuration (network byte order)
+ */
+#define NM_VPN_PLUGIN_IP6_CONFIG_INT_GATEWAY "internal-gateway"
+
+/* array of uint8: internal IP address of the local VPN interface (network byte order) */
+#define NM_VPN_PLUGIN_IP6_CONFIG_ADDRESS     "address"
+
+/* array of uint8: IP address of the other side of Point-to-Point connection if the VPN
+ *         uses Point-to-Point configuration. (network byte order)
+ */
+#define NM_VPN_PLUGIN_IP6_CONFIG_PTP         "ptp"
+
+/* uint32: prefix length of the VPN interface; 1 - 128 inclusive */
+#define NM_VPN_PLUGIN_IP6_CONFIG_PREFIX      "prefix"
+
+/* array of array of uint8: IP addresses of DNS servers for the VPN (network byte order) */
+#define NM_VPN_PLUGIN_IP6_CONFIG_DNS         "dns"
+
+/* uint32: Message Segment Size that the VPN interface should use */
+#define NM_VPN_PLUGIN_IP6_CONFIG_MSS         "mss"
+
+/* string: DNS domain name */
+#define NM_VPN_PLUGIN_IP6_CONFIG_DOMAIN      "domain"
+
+/* array of strings: DNS domain names */
+#define NM_VPN_PLUGIN_IP6_CONFIG_DOMAINS     "domains"
+
+/* [ip6 routes]: custom routes the client should apply, in the format used
+ *         by nm_utils_ip6_routes_to/from_gvalue
+ */
+#define NM_VPN_PLUGIN_IP6_CONFIG_ROUTES      "routes"
+
+/* boolean: prevent this VPN connection from ever getting the default route */
+#define NM_VPN_PLUGIN_IP6_CONFIG_NEVER_DEFAULT "never-default"
 
 #endif /* NETWORK_MANAGER_VPN_H */
diff --git a/include/nm-glib-compat.h b/include/nm-glib-compat.h
index 30b83e0d..3b772f4f 100644
--- a/include/nm-glib-compat.h
+++ b/include/nm-glib-compat.h
@@ -42,6 +42,16 @@
 		g_simple_async_result_set_from_error (result, __error); \
 		g_error_free (__error); \
 	} G_STMT_END
+
+#define g_clear_object(object_ptr) \
+	G_STMT_START { \
+		GObject **__obj_p = (gpointer) (object_ptr); \
+		if (*__obj_p) { \
+			g_object_unref (*__obj_p); \
+			*__obj_p = NULL; \
+		} \
+	} G_STMT_END
+
 #endif
 
 #endif  /* NM_GLIB_COMPAT_H */
diff --git a/include/nm-settings-flags.h b/include/nm-settings-flags.h
index 4bf59f2f..57f38ea5 100644
--- a/include/nm-settings-flags.h
+++ b/include/nm-settings-flags.h
@@ -29,6 +29,7 @@ typedef enum {
 	NM_SETTINGS_GET_SECRETS_FLAG_NONE = 0x0,
 	NM_SETTINGS_GET_SECRETS_FLAG_ALLOW_INTERACTION = 0x1,
 	NM_SETTINGS_GET_SECRETS_FLAG_REQUEST_NEW = 0x2,
+	NM_SETTINGS_GET_SECRETS_FLAG_USER_REQUESTED = 0x4,
 
 	/* Internal only to NM */
 	NM_SETTINGS_GET_SECRETS_FLAG_ONLY_SYSTEM = 0x80000000
diff --git a/include/nm-version.h b/include/nm-version.h
index 19af476b..4bf3ebe5 100644
--- a/include/nm-version.h
+++ b/include/nm-version.h
@@ -43,7 +43,7 @@
  * Evaluates to the micro version number of NetworkManager which this source
  * compiled against.
  */
-#define NM_MICRO_VERSION (4)
+#define NM_MICRO_VERSION (5)
 
 /**
  * NM_CHECK_VERSION:
diff --git a/initscript/Arch/Makefile.in b/initscript/Arch/Makefile.in
index cd2ba2ea..dc554265 100644
--- a/initscript/Arch/Makefile.in
+++ b/initscript/Arch/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -159,6 +159,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -254,6 +258,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -292,6 +299,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/initscript/Debian/Makefile.in b/initscript/Debian/Makefile.in
index 7ddadb9c..6af40e44 100644
--- a/initscript/Debian/Makefile.in
+++ b/initscript/Debian/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -159,6 +159,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -254,6 +258,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -292,6 +299,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/initscript/Gentoo/Makefile.in b/initscript/Gentoo/Makefile.in
index 4da1a2a4..9729a2a4 100644
--- a/initscript/Gentoo/Makefile.in
+++ b/initscript/Gentoo/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -159,6 +159,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -254,6 +258,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -292,6 +299,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/initscript/Makefile.in b/initscript/Makefile.in
index a3a61d15..1078bb89 100644
--- a/initscript/Makefile.in
+++ b/initscript/Makefile.in
@@ -55,7 +55,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -184,6 +184,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -279,6 +283,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -317,6 +324,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/initscript/Mandriva/Makefile.in b/initscript/Mandriva/Makefile.in
index 1b1c8710..584e3493 100644
--- a/initscript/Mandriva/Makefile.in
+++ b/initscript/Mandriva/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -159,6 +159,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -254,6 +258,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -292,6 +299,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/initscript/RedHat/Makefile.in b/initscript/RedHat/Makefile.in
index 6ee9f033..2e6e9af4 100644
--- a/initscript/RedHat/Makefile.in
+++ b/initscript/RedHat/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -159,6 +159,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -254,6 +258,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -292,6 +299,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/initscript/SUSE/Makefile.in b/initscript/SUSE/Makefile.in
index b0a0fce1..f465e5cd 100644
--- a/initscript/SUSE/Makefile.in
+++ b/initscript/SUSE/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -135,6 +135,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -230,6 +234,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -268,6 +275,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/initscript/Slackware/Makefile.in b/initscript/Slackware/Makefile.in
index 3d5ad040..593b6630 100644
--- a/initscript/Slackware/Makefile.in
+++ b/initscript/Slackware/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -159,6 +159,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -254,6 +258,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -292,6 +299,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/initscript/linexa/Makefile.in b/initscript/linexa/Makefile.in
index 9e65bda2..60a15a15 100644
--- a/initscript/linexa/Makefile.in
+++ b/initscript/linexa/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -159,6 +159,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -254,6 +258,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -292,6 +299,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/initscript/paldo/Makefile.in b/initscript/paldo/Makefile.in
index 44f3f7f7..b80b0da9 100644
--- a/initscript/paldo/Makefile.in
+++ b/initscript/paldo/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -159,6 +159,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -254,6 +258,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -292,6 +299,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/introspection/Makefile.am b/introspection/Makefile.am
index ea1c51ba..a267b51a 100644
--- a/introspection/Makefile.am
+++ b/introspection/Makefile.am
@@ -8,6 +8,7 @@ EXTRA_DIST = \
 	nm-device-wifi.xml \
 	nm-device-olpc-mesh.xml \
 	nm-device-ethernet.xml \
+	nm-device-adsl.xml \
 	nm-device-modem.xml \
 	nm-device-wimax.xml \
 	nm-device-infiniband.xml \
diff --git a/introspection/Makefile.in b/introspection/Makefile.in
index 382cd5ab..31078f0f 100644
--- a/introspection/Makefile.in
+++ b/introspection/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -135,6 +135,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -230,6 +234,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -268,6 +275,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -298,6 +307,7 @@ EXTRA_DIST = \
 	nm-device-wifi.xml \
 	nm-device-olpc-mesh.xml \
 	nm-device-ethernet.xml \
+	nm-device-adsl.xml \
 	nm-device-modem.xml \
 	nm-device-wimax.xml \
 	nm-device-infiniband.xml \
diff --git a/introspection/all.xml.in b/introspection/all.xml.in
index 406140e9..e9e7b0e0 100644
--- a/introspection/all.xml.in
+++ b/introspection/all.xml.in
@@ -37,6 +37,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
 <xi:include href="nm-device-infiniband.xml"/>
 <xi:include href="nm-device-bond.xml"/>
 <xi:include href="nm-device-vlan.xml"/>
+<xi:include href="nm-device-adsl.xml"/>
 <xi:include href="nm-wimax-nsp.xml"/>
 <xi:include href="nm-ip4-config.xml"/>
 <xi:include href="nm-ip6-config.xml"/>
diff --git a/introspection/nm-device-adsl.xml b/introspection/nm-device-adsl.xml
new file mode 100644
index 00000000..ec50d110
--- /dev/null
+++ b/introspection/nm-device-adsl.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<node name="/" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
+  <interface name="org.freedesktop.NetworkManager.Device.Adsl">
+
+    <signal name="PropertiesChanged">
+        <arg name="properties" type="a{sv}" tp:type="String_Variant_Map">
+            <tp:docstring>
+                A dictionary mapping property names to variant boxed values
+            </tp:docstring>
+        </arg>
+    </signal>
+
+    <property name="Carrier" type="b" access="read">
+      <tp:docstring>
+        Indicates whether the physical carrier is found.
+      </tp:docstring>
+    </property>
+
+  </interface>
+</node>
diff --git a/introspection/nm-device-wifi.xml b/introspection/nm-device-wifi.xml
index fb507624..531fc893 100644
--- a/introspection/nm-device-wifi.xml
+++ b/introspection/nm-device-wifi.xml
@@ -14,6 +14,19 @@
       </tp:docstring>
     </method>
 
+    <method name="RequestScan">
+      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_device_request_scan"/>
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <arg name="options" type="a{sv}" direction="in">
+        <tp:docstring>
+          Options of scan
+        </tp:docstring>
+      </arg>
+      <tp:docstring>
+        Request the device to scan
+      </tp:docstring>
+    </method>
+
     <property name="HwAddress" type="s" access="read">
       <tp:docstring>
         The active hardware address of the device.
diff --git a/introspection/nm-device.xml b/introspection/nm-device.xml
index d12d4778..7f6a0a07 100644
--- a/introspection/nm-device.xml
+++ b/introspection/nm-device.xml
@@ -36,6 +36,16 @@
         The driver handling the device.
       </tp:docstring>
     </property>
+    <property name="DriverVersion" type="s" access="read">
+      <tp:docstring>
+        The version of the driver handling the device.
+      </tp:docstring>
+    </property>
+    <property name="FirmwareVersion" type="s" access="read">
+      <tp:docstring>
+        The firmware version for the device.
+      </tp:docstring>
+    </property>
     <property name="Capabilities" type="u" access="read" tp:type="NM_DEVICE_CAP">
       <tp:docstring>
         Flags describing the capabilities of the device.
@@ -91,6 +101,14 @@
         Whether or not this device is managed by NetworkManager.
       </tp:docstring>
     </property>
+    <property name="Autoconnect" type="b" access="readwrite">
+      <tp:docstring>
+        If TRUE, indicates the device is allowed to autoconnect.  If FALSE,
+        manual intervention is required before the device will automatically
+        connect to a known network, such as activating a connection using the
+        device, or setting this property to TRUE.
+      </tp:docstring>
+    </property>
     <property name="FirmwareMissing" type="b" access="read">
       <tp:docstring>
         If TRUE, indicates the device is likely missing firmware necessary for
@@ -526,6 +544,11 @@
           A dependency of the connection failed.
         </tp:docstring>
       </tp:enumvalue>
+      <tp:enumvalue suffix="BR2684_FAILED" value="50">
+        <tp:docstring>
+          Problem with the RFC 2684 Ethernet over ADSL bridge.
+        </tp:docstring>
+      </tp:enumvalue>
     </tp:enum>
 
     <tp:struct name="NM_DEVICE_STATE_REASON_STRUCT">
diff --git a/introspection/nm-secret-agent.xml b/introspection/nm-secret-agent.xml
index 0a67efdc..81a1321b 100644
--- a/introspection/nm-secret-agent.xml
+++ b/introspection/nm-secret-agent.xml
@@ -96,6 +96,14 @@
               invalid or wrong.  This flag implies that interaction is allowed.
             </tp:docstring>
           </tp:flag>
+          <tp:flag suffix="USER_REQUESTED" value="0x4">
+            <tp:docstring>
+              Set if the request was initiated by user-requested action via the
+              D-Bus interface, as opposed to automatically initiated by
+              NetworkManager in response to (for example) scan results or
+              carrier changes.
+            </tp:docstring>
+          </tp:flag>
         </tp:flags>
 
         <method name="CancelGetSecrets">
diff --git a/introspection/nm-vpn-plugin.xml b/introspection/nm-vpn-plugin.xml
index 72861f26..5fb11622 100644
--- a/introspection/nm-vpn-plugin.xml
+++ b/introspection/nm-vpn-plugin.xml
@@ -55,6 +55,18 @@
       </tp:possible-errors>
     </method>
 
+    <method name="SetConfig">
+      <tp:docstring>
+        Set generic connection details on the connection.
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_vpn_plugin_set_config"/>
+      <arg name="config" type="a{sv}" direction="in" tp:type="String_Variant_Map">
+        <tp:docstring>
+          Generic configuration details for the connection.
+        </tp:docstring>
+      </arg>
+    </method>
+
     <method name="SetIp4Config">
       <tp:docstring>
         Set IPv4 details on the connection.
@@ -62,7 +74,21 @@
       <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_vpn_plugin_set_ip4_config"/>
       <arg name="config" type="a{sv}" direction="in" tp:type="String_Variant_Map">
         <tp:docstring>
-          Ip4Config details for the conneciton.
+          Ip4Config details for the connection. You must call
+	  SetConfig() before calling this.
+        </tp:docstring>
+      </arg>
+    </method>
+
+    <method name="SetIp6Config">
+      <tp:docstring>
+        Set IPv6 details on the connection.
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_vpn_plugin_set_ip6_config"/>
+      <arg name="config" type="a{sv}" direction="in" tp:type="String_Variant_Map">
+        <tp:docstring>
+          Ip6Config details for the connection. You must call
+	  SetConfig() before calling this.
         </tp:docstring>
       </arg>
     </method>
@@ -96,6 +122,17 @@
       </arg>
     </signal>
 
+    <signal name="Config">
+      <tp:docstring>
+        The plugin obtained generic configuration information.
+      </tp:docstring>
+      <arg name="config" type="a{sv}" tp:type="String_Variant_Map">
+        <tp:docstring>
+          The configuration information.
+        </tp:docstring>
+      </arg>
+    </signal>
+
     <signal name="Ip4Config">
       <tp:docstring>
         The plugin obtained an IPv4 configuration.
@@ -107,6 +144,17 @@
       </arg>
     </signal>
 
+    <signal name="Ip6Config">
+      <tp:docstring>
+        The plugin obtained an IPv6 configuration.
+      </tp:docstring>
+      <arg name="ip6config" type="a{sv}" tp:type="String_Variant_Map">
+        <tp:docstring>
+          The IPv6 configuration.
+        </tp:docstring>
+      </arg>
+    </signal>
+
     <signal name="LoginBanner">
       <tp:docstring>
         Emitted when the plugin receives a login banner from the VPN service.
diff --git a/libnm-glib/Makefile.am b/libnm-glib/Makefile.am
index b2ea3b79..89ed3c5e 100644
--- a/libnm-glib/Makefile.am
+++ b/libnm-glib/Makefile.am
@@ -59,6 +59,7 @@ libnminclude_HEADERS = \
 	nm-device.h \
 	nm-device-ethernet.h \
 	nm-device-infiniband.h \
+	nm-device-adsl.h \
 	nm-device-wifi.h \
 	nm-device-bt.h \
 	nm-device-olpc-mesh.h \
@@ -92,6 +93,7 @@ libnm_glib_la_csources = \
 	nm-device.c \
 	nm-device-ethernet.c \
 	nm-device-infiniband.c \
+	nm-device-adsl.c \
 	nm-device-wifi.c \
 	nm-device-bt.c \
 	nm-device-olpc-mesh.c \
@@ -215,10 +217,11 @@ introspection_sources = $(libnminclude_HEADERS) $(libnm_glib_la_csources)
 NMClient-1.0.gir: libnm-glib.la
 NMClient_1_0_gir_INCLUDES = Gio-2.0 DBusGLib-1.0
 NMClient_1_0_gir_PACKAGES = gio-2.0 dbus-glib-1 gudev-1.0
+NMClient_1_0_gir_EXPORT_PACKAGES = libnm-glib libnm-glib-vpn
 NMClient_1_0_gir_CFLAGS = $(INCLUDES) -I$(top_srcdir)/libnm-glib -I$(top_srcdir)/libnm-util
-NMClient_1_0_gir_LIBS = libnm-glib.la
+NMClient_1_0_gir_LIBS = libnm-glib.la $(top_builddir)/libnm-util/libnm-util.la
 NMClient_1_0_gir_FILES = $(introspection_sources)
-NMClient_1_0_gir_SCANNERFLAGS = --warn-all --identifier-prefix=NM --symbol-prefix=nm_ --include-uninstalled=$(top_builddir)/libnm-util/NetworkManager-1.0.gir
+NMClient_1_0_gir_SCANNERFLAGS = --warn-all --identifier-prefix=NM --symbol-prefix=nm --include-uninstalled=$(top_builddir)/libnm-util/NetworkManager-1.0.gir
 INTROSPECTION_GIRS += NMClient-1.0.gir
 
 girdir = $(datadir)/gir-1.0
diff --git a/libnm-glib/Makefile.in b/libnm-glib/Makefile.in
index 5a013e87..b3535234 100644
--- a/libnm-glib/Makefile.in
+++ b/libnm-glib/Makefile.in
@@ -56,7 +56,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -108,6 +108,7 @@ am__objects_2 = libnm_glib_test_la-nm-object.lo \
 	libnm_glib_test_la-nm-device.lo \
 	libnm_glib_test_la-nm-device-ethernet.lo \
 	libnm_glib_test_la-nm-device-infiniband.lo \
+	libnm_glib_test_la-nm-device-adsl.lo \
 	libnm_glib_test_la-nm-device-wifi.lo \
 	libnm_glib_test_la-nm-device-bt.lo \
 	libnm_glib_test_la-nm-device-olpc-mesh.lo \
@@ -155,6 +156,7 @@ libnm_glib_la_DEPENDENCIES = $(top_builddir)/libnm-util/libnm-util.la \
 am__objects_4 = libnm_glib_la-nm-object.lo libnm_glib_la-nm-client.lo \
 	libnm_glib_la-nm-device.lo libnm_glib_la-nm-device-ethernet.lo \
 	libnm_glib_la-nm-device-infiniband.lo \
+	libnm_glib_la-nm-device-adsl.lo \
 	libnm_glib_la-nm-device-wifi.lo libnm_glib_la-nm-device-bt.lo \
 	libnm_glib_la-nm-device-olpc-mesh.lo \
 	libnm_glib_la-nm-device-bond.lo \
@@ -338,6 +340,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -433,6 +439,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -471,6 +480,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -543,6 +554,7 @@ libnminclude_HEADERS = \
 	nm-device.h \
 	nm-device-ethernet.h \
 	nm-device-infiniband.h \
+	nm-device-adsl.h \
 	nm-device-wifi.h \
 	nm-device-bt.h \
 	nm-device-olpc-mesh.h \
@@ -576,6 +588,7 @@ libnm_glib_la_csources = \
 	nm-device.c \
 	nm-device-ethernet.c \
 	nm-device-infiniband.c \
+	nm-device-adsl.c \
 	nm-device-wifi.c \
 	nm-device-bt.c \
 	nm-device-olpc-mesh.c \
@@ -674,10 +687,11 @@ INTROSPECTION_COMPILER_ARGS = --includedir=$(top_builddir)/libnm-util
 @HAVE_INTROSPECTION_TRUE@introspection_sources = $(libnminclude_HEADERS) $(libnm_glib_la_csources)
 @HAVE_INTROSPECTION_TRUE@NMClient_1_0_gir_INCLUDES = Gio-2.0 DBusGLib-1.0
 @HAVE_INTROSPECTION_TRUE@NMClient_1_0_gir_PACKAGES = gio-2.0 dbus-glib-1 gudev-1.0
+@HAVE_INTROSPECTION_TRUE@NMClient_1_0_gir_EXPORT_PACKAGES = libnm-glib libnm-glib-vpn
 @HAVE_INTROSPECTION_TRUE@NMClient_1_0_gir_CFLAGS = $(INCLUDES) -I$(top_srcdir)/libnm-glib -I$(top_srcdir)/libnm-util
-@HAVE_INTROSPECTION_TRUE@NMClient_1_0_gir_LIBS = libnm-glib.la
+@HAVE_INTROSPECTION_TRUE@NMClient_1_0_gir_LIBS = libnm-glib.la $(top_builddir)/libnm-util/libnm-util.la
 @HAVE_INTROSPECTION_TRUE@NMClient_1_0_gir_FILES = $(introspection_sources)
-@HAVE_INTROSPECTION_TRUE@NMClient_1_0_gir_SCANNERFLAGS = --warn-all --identifier-prefix=NM --symbol-prefix=nm_ --include-uninstalled=$(top_builddir)/libnm-util/NetworkManager-1.0.gir
+@HAVE_INTROSPECTION_TRUE@NMClient_1_0_gir_SCANNERFLAGS = --warn-all --identifier-prefix=NM --symbol-prefix=nm --include-uninstalled=$(top_builddir)/libnm-util/NetworkManager-1.0.gir
 @HAVE_INTROSPECTION_TRUE@girdir = $(datadir)/gir-1.0
 @HAVE_INTROSPECTION_TRUE@gir_DATA = $(INTROSPECTION_GIRS)
 @HAVE_INTROSPECTION_TRUE@typelibdir = $(libdir)/girepository-1.0
@@ -792,6 +806,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_glib_la-nm-access-point.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_glib_la-nm-active-connection.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_glib_la-nm-client.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_glib_la-nm-device-adsl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_glib_la-nm-device-bond.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_glib_la-nm-device-bt.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_glib_la-nm-device-ethernet.Plo@am__quote@
@@ -820,6 +835,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_glib_test_la-nm-access-point.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_glib_test_la-nm-active-connection.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_glib_test_la-nm-client.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_glib_test_la-nm-device-adsl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_glib_test_la-nm-device-bond.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_glib_test_la-nm-device-bt.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_glib_test_la-nm-device-ethernet.Plo@am__quote@
@@ -924,6 +940,14 @@ libnm_glib_test_la-nm-device-infiniband.lo: nm-device-infiniband.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libnm_glib_test_la_CFLAGS) $(CFLAGS) -c -o libnm_glib_test_la-nm-device-infiniband.lo `test -f 'nm-device-infiniband.c' || echo '$(srcdir)/'`nm-device-infiniband.c
 
+libnm_glib_test_la-nm-device-adsl.lo: nm-device-adsl.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libnm_glib_test_la_CFLAGS) $(CFLAGS) -MT libnm_glib_test_la-nm-device-adsl.lo -MD -MP -MF $(DEPDIR)/libnm_glib_test_la-nm-device-adsl.Tpo -c -o libnm_glib_test_la-nm-device-adsl.lo `test -f 'nm-device-adsl.c' || echo '$(srcdir)/'`nm-device-adsl.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnm_glib_test_la-nm-device-adsl.Tpo $(DEPDIR)/libnm_glib_test_la-nm-device-adsl.Plo
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='nm-device-adsl.c' object='libnm_glib_test_la-nm-device-adsl.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libnm_glib_test_la_CFLAGS) $(CFLAGS) -c -o libnm_glib_test_la-nm-device-adsl.lo `test -f 'nm-device-adsl.c' || echo '$(srcdir)/'`nm-device-adsl.c
+
 libnm_glib_test_la-nm-device-wifi.lo: nm-device-wifi.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libnm_glib_test_la_CFLAGS) $(CFLAGS) -MT libnm_glib_test_la-nm-device-wifi.lo -MD -MP -MF $(DEPDIR)/libnm_glib_test_la-nm-device-wifi.Tpo -c -o libnm_glib_test_la-nm-device-wifi.lo `test -f 'nm-device-wifi.c' || echo '$(srcdir)/'`nm-device-wifi.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnm_glib_test_la-nm-device-wifi.Tpo $(DEPDIR)/libnm_glib_test_la-nm-device-wifi.Plo
@@ -1172,6 +1196,14 @@ libnm_glib_la-nm-device-infiniband.lo: nm-device-infiniband.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libnm_glib_la_CFLAGS) $(CFLAGS) -c -o libnm_glib_la-nm-device-infiniband.lo `test -f 'nm-device-infiniband.c' || echo '$(srcdir)/'`nm-device-infiniband.c
 
+libnm_glib_la-nm-device-adsl.lo: nm-device-adsl.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libnm_glib_la_CFLAGS) $(CFLAGS) -MT libnm_glib_la-nm-device-adsl.lo -MD -MP -MF $(DEPDIR)/libnm_glib_la-nm-device-adsl.Tpo -c -o libnm_glib_la-nm-device-adsl.lo `test -f 'nm-device-adsl.c' || echo '$(srcdir)/'`nm-device-adsl.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnm_glib_la-nm-device-adsl.Tpo $(DEPDIR)/libnm_glib_la-nm-device-adsl.Plo
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='nm-device-adsl.c' object='libnm_glib_la-nm-device-adsl.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libnm_glib_la_CFLAGS) $(CFLAGS) -c -o libnm_glib_la-nm-device-adsl.lo `test -f 'nm-device-adsl.c' || echo '$(srcdir)/'`nm-device-adsl.c
+
 libnm_glib_la-nm-device-wifi.lo: nm-device-wifi.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libnm_glib_la_CFLAGS) $(CFLAGS) -MT libnm_glib_la-nm-device-wifi.lo -MD -MP -MF $(DEPDIR)/libnm_glib_la-nm-device-wifi.Tpo -c -o libnm_glib_la-nm-device-wifi.lo `test -f 'nm-device-wifi.c' || echo '$(srcdir)/'`nm-device-wifi.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnm_glib_la-nm-device-wifi.Tpo $(DEPDIR)/libnm_glib_la-nm-device-wifi.Plo
diff --git a/libnm-glib/libnm-glib.ver b/libnm-glib/libnm-glib.ver
index 427e2484..4bcbfb0d 100644
--- a/libnm-glib/libnm-glib.ver
+++ b/libnm-glib/libnm-glib.ver
@@ -58,6 +58,11 @@ global:
 	nm_client_wwan_get_enabled;
 	nm_client_wwan_hardware_get_enabled;
 	nm_client_wwan_set_enabled;
+	nm_device_adsl_error_get_type;
+	nm_device_adsl_error_quark;
+	nm_device_adsl_get_carrier;
+	nm_device_adsl_get_type;
+	nm_device_adsl_new;
 	nm_device_bond_error_get_type;
 	nm_device_bond_error_quark;
 	nm_device_bond_get_carrier;
@@ -84,12 +89,15 @@ global:
 	nm_device_ethernet_new;
 	nm_device_filter_connections;
 	nm_device_get_active_connection;
+	nm_device_get_autoconnect;
 	nm_device_get_capabilities;
 	nm_device_get_device_type;
 	nm_device_get_dhcp4_config;
 	nm_device_get_dhcp6_config;
 	nm_device_get_driver;
+	nm_device_get_driver_version;
 	nm_device_get_firmware_missing;
+	nm_device_get_firmware_version;
 	nm_device_get_iface;
 	nm_device_get_ip4_config;
 	nm_device_get_ip6_config;
@@ -120,6 +128,7 @@ global:
 	nm_device_olpc_mesh_get_hw_address;
 	nm_device_olpc_mesh_get_type;
 	nm_device_olpc_mesh_new;
+	nm_device_set_autoconnect;
 	nm_device_vlan_error_get_type;
 	nm_device_vlan_error_quark;
 	nm_device_vlan_get_carrier;
@@ -177,6 +186,8 @@ global:
 	nm_ip6_config_new;
 	nm_ip6_route_object_array_get_type;
 	nm_object_array_get_type;
+	nm_object_error_get_type;
+	nm_object_error_quark;
 	nm_object_get_connection;
 	nm_object_get_path;
 	nm_object_get_type;
diff --git a/libnm-glib/nm-access-point.c b/libnm-glib/nm-access-point.c
index 53993b07..fef65575 100644
--- a/libnm-glib/nm-access-point.c
+++ b/libnm-glib/nm-access-point.c
@@ -25,6 +25,8 @@
 #include <string.h>
 #include <netinet/ether.h>
 
+#include "nm-glib-compat.h"
+
 #include <nm-connection.h>
 #include <nm-setting-connection.h>
 #include <nm-setting-wireless.h>
@@ -41,7 +43,6 @@ G_DEFINE_TYPE (NMAccessPoint, nm_access_point, NM_TYPE_OBJECT)
 #define NM_ACCESS_POINT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_ACCESS_POINT, NMAccessPointPrivate))
 
 typedef struct {
-	gboolean disposed;
 	DBusGProxy *proxy;
 
 	NM80211ApFlags flags;
@@ -431,14 +432,7 @@ dispose (GObject *object)
 {
 	NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (object);
 
-	if (priv->disposed) {
-		G_OBJECT_CLASS (nm_access_point_parent_class)->dispose (object);
-		return;
-	}
-
-	priv->disposed = TRUE;
-
-	g_object_unref (priv->proxy);
+	g_clear_object (&priv->proxy);
 
 	G_OBJECT_CLASS (nm_access_point_parent_class)->dispose (object);
 }
@@ -464,6 +458,8 @@ get_property (GObject *object,
 {
 	NMAccessPoint *ap = NM_ACCESS_POINT (object);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_FLAGS:
 		g_value_set_uint (value, nm_access_point_get_flags (ap));
diff --git a/libnm-glib/nm-access-point.h b/libnm-glib/nm-access-point.h
index 97bd9a25..ffbf63cc 100644
--- a/libnm-glib/nm-access-point.h
+++ b/libnm-glib/nm-access-point.h
@@ -27,6 +27,7 @@
 #include <glib.h>
 #include <glib-object.h>
 #include <NetworkManager.h>
+#include <nm-connection.h>
 #include "nm-object.h"
 
 G_BEGIN_DECLS
diff --git a/libnm-glib/nm-active-connection.c b/libnm-glib/nm-active-connection.c
index 59d8a6af..f170121b 100644
--- a/libnm-glib/nm-active-connection.c
+++ b/libnm-glib/nm-active-connection.c
@@ -49,7 +49,6 @@ G_DEFINE_TYPE_WITH_CODE (NMActiveConnection, nm_active_connection, NM_TYPE_OBJEC
 #define NM_ACTIVE_CONNECTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_ACTIVE_CONNECTION, NMActiveConnectionPrivate))
 
 typedef struct {
-	gboolean disposed;
 	DBusGProxy *proxy;
 
 	char *connection;
@@ -357,18 +356,13 @@ dispose (GObject *object)
 {
 	NMActiveConnectionPrivate *priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (object);
 
-	if (priv->disposed) {
-		G_OBJECT_CLASS (nm_active_connection_parent_class)->dispose (object);
-		return;
-	}
-
-	priv->disposed = TRUE;
-
 	if (priv->devices) {
 		g_ptr_array_foreach (priv->devices, (GFunc) g_object_unref, NULL);
 		g_ptr_array_free (priv->devices, TRUE);
+		priv->devices = NULL;
 	}
-	g_object_unref (priv->proxy);
+
+	g_clear_object (&priv->proxy);
 
 	G_OBJECT_CLASS (nm_active_connection_parent_class)->dispose (object);
 }
@@ -394,6 +388,8 @@ get_property (GObject *object,
 {
 	NMActiveConnection *self = NM_ACTIVE_CONNECTION (object);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_CONNECTION:
 		g_value_set_string (value, nm_active_connection_get_connection (self));
diff --git a/libnm-glib/nm-client.c b/libnm-glib/nm-client.c
index 937a1bf8..a21b8147 100644
--- a/libnm-glib/nm-client.c
+++ b/libnm-glib/nm-client.c
@@ -53,8 +53,6 @@ G_DEFINE_TYPE_WITH_CODE (NMClient, nm_client, NM_TYPE_OBJECT,
 #define NM_CLIENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_CLIENT, NMClientPrivate))
 
 typedef struct {
-	gboolean disposed;
-
 	DBusGProxy *client_proxy;
 	DBusGProxy *bus_proxy;
 	gboolean manager_running;
@@ -459,35 +457,56 @@ activate_info_complete (ActivateInfo *info,
 }
 
 static void
-recheck_pending_activations (NMClient *self)
+recheck_pending_activations (NMClient *self, const char *failed_path, GError *error)
 {
 	NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (self);
 	GSList *iter;
 	const GPtrArray *active_connections;
+	gboolean found_in_active = FALSE;
+	gboolean found_in_pending = FALSE;
+	ActivateInfo *ainfo = NULL;
 	int i;
 
 	active_connections = nm_client_get_active_connections (self);
-	if (!active_connections)
-		return;
 
-	/* For each active connection, look for a pending activation that has
-	 * the active connection's object path, and call its callback.
+	/* For each pending activation, look for a active connection that has
+	 * the pending activation's object path, and call pending connection's
+	 * callback.
+	 * If the connection to activate doesn't make it to active_connections,
+	 * due to an error, we have to call the callback for failed_path.
 	 */
-	for (i = 0; i < active_connections->len; i++) {
-		NMActiveConnection *active = g_ptr_array_index (active_connections, i);
-		const char *active_path = nm_object_get_path (NM_OBJECT (active));
+	for (iter = priv->pending_activations; iter; iter = g_slist_next (iter)) {
+		ActivateInfo *info = iter->data;
+
+		if (!found_in_pending && failed_path && g_strcmp0 (failed_path, info->active_path) == 0) {
+			found_in_pending = TRUE;
+			ainfo = info;
+		}
 
-		for (iter = priv->pending_activations; iter; iter = g_slist_next (iter)) {
-			ActivateInfo *info = iter->data;
+		for (i = 0; active_connections && i < active_connections->len; i++) {
+			NMActiveConnection *active = g_ptr_array_index (active_connections, i);
+			const char *active_path = nm_object_get_path (NM_OBJECT (active));
+
+			if (!found_in_active && failed_path && g_strcmp0 (failed_path, active_path) == 0)
+				found_in_active = TRUE;
 
 			if (g_strcmp0 (info->active_path, active_path) == 0) {
-				/* Call the pending activation's callback and it all up*/
+				/* Call the pending activation's callback and it all up */
 				activate_info_complete (info, active, NULL);
 				activate_info_free (info);
 				break;
 			}
 		}
 	}
+
+	if (!found_in_active && found_in_pending) {
+		/* A newly activated connection failed due to some immediate error
+		 * and disappeared from active connection list.  Make sure the
+		 * callback gets called.
+		 */
+		activate_info_complete (ainfo, NULL, error);
+		activate_info_free (ainfo);
+	}
 }
 
 static void
@@ -508,7 +527,7 @@ activate_cb (DBusGProxy *proxy,
 		g_clear_error (&error);
 	} else {
 		info->active_path = path;
-		recheck_pending_activations (info->client);
+		recheck_pending_activations (info->client, NULL, NULL);
 	}
 }
 
@@ -587,7 +606,7 @@ add_activate_cb (DBusGProxy *proxy,
 	} else {
 		info->new_connection_path = connection_path;
 		info->active_path = active_path;
-		recheck_pending_activations (info->client);
+		recheck_pending_activations (info->client, NULL, NULL);
 	}
 }
 
@@ -653,7 +672,14 @@ nm_client_add_and_activate_connection (NMClient *client,
 static void
 active_connections_changed_cb (GObject *object, GParamSpec *pspec, gpointer user_data)
 {
-	recheck_pending_activations (NM_CLIENT (object));
+	recheck_pending_activations (NM_CLIENT (object), NULL, NULL);
+}
+
+static void
+object_creation_failed_cb (GObject *object, GError *error, char *failed_path)
+{
+	if (error)
+		recheck_pending_activations (NM_CLIENT (object), failed_path, error);
 }
 
 /**
@@ -692,7 +718,7 @@ nm_client_deactivate_connection (NMClient *client, NMActiveConnection *active)
  * Gets the active connections.
  *
  * Returns: (transfer none) (element-type NMClient.ActiveConnection): a #GPtrArray
-*  containing all the active #NMActiveConnection<!-- -->s.
+ *  containing all the active #NMActiveConnection<!-- -->s.
  * The returned array is owned by the client and should not be modified.
  **/
 const GPtrArray * 
@@ -1018,30 +1044,50 @@ nm_client_get_permission_result (NMClient *client, NMClientPermission permission
 /****************************************************************/
 
 static void
-free_object_array (GPtrArray **array)
+free_devices (NMClient *client, gboolean emit_signals)
 {
-	g_return_if_fail (array != NULL);
+	NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (client);
+	GPtrArray *devices;
+	NMDevice *device;
+	int i;
+
+	if (!priv->devices)
+		return;
 
-	if (*array) {
-		g_ptr_array_foreach (*array, (GFunc) g_object_unref, NULL);
-		g_ptr_array_free (*array, TRUE);
-		*array = NULL;
+	devices = priv->devices;
+	priv->devices = NULL;
+	for (i = 0; i < devices->len; i++) {
+		device = devices->pdata[i];
+		if (emit_signals)
+			g_signal_emit (client, signals[DEVICE_REMOVED], 0, device);
+		g_object_unref (device);
 	}
+	g_ptr_array_free (devices, TRUE);
 }
 
 static void
-dispose_and_free_object_array (GPtrArray **array)
+free_active_connections (NMClient *client, gboolean emit_signals)
 {
-	g_return_if_fail (array != NULL);
+	NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (client);
+	GPtrArray *active_connections;
+	NMActiveConnection *active_connection;
+	int i;
 
-	if (*array) {
-		/* The objects in the array may have circular refs with other
-		 * objects, which the caller will need to know to break by
-		 * calling this function rather than free_object_array().
-		 */
-		g_ptr_array_foreach (*array, (GFunc) g_object_run_dispose, NULL);
-		free_object_array (array);
+	if (!priv->active_connections)
+		return;
+
+	active_connections = priv->active_connections;
+	priv->active_connections = NULL;
+	for (i = 0; i < active_connections->len; i++) {
+		active_connection = active_connections->pdata[i];
+		/* Break circular refs */
+		g_object_run_dispose (G_OBJECT (active_connection));
+		g_object_unref (active_connection);
 	}
+	g_ptr_array_free (active_connections, TRUE);
+
+	if (emit_signals)
+		g_object_notify (G_OBJECT (client), NM_CLIENT_ACTIVE_CONNECTIONS);
 }
 
 static void
@@ -1088,8 +1134,8 @@ proxy_name_owner_changed (DBusGProxy *proxy,
 		_nm_object_queue_notify (NM_OBJECT (client), NM_CLIENT_MANAGER_RUNNING);
 		_nm_object_suppress_property_updates (NM_OBJECT (client), TRUE);
 		poke_wireless_devices_with_rf_status (client);
-		free_object_array (&priv->devices);
-		dispose_and_free_object_array (&priv->active_connections);
+		free_devices (client, TRUE);
+		free_active_connections (client, TRUE);
 		priv->wireless_enabled = FALSE;
 		priv->wireless_hw_enabled = FALSE;
 		priv->wwan_enabled = FALSE;
@@ -1098,6 +1144,11 @@ proxy_name_owner_changed (DBusGProxy *proxy,
 		priv->wimax_hw_enabled = FALSE;
 		g_free (priv->version);
 		priv->version = NULL;
+
+		/* Clear object cache to ensure bad refcounting by clients doesn't
+		 * keep objects in the cache.
+		 */
+		_nm_object_cache_clear (NM_OBJECT (client));
 	} else {
 		_nm_object_suppress_property_updates (NM_OBJECT (client), FALSE);
 		_nm_object_reload_properties_async (NM_OBJECT (client), updated_properties, client);
@@ -1241,6 +1292,104 @@ nm_client_new_finish (GAsyncResult *result, GError **error)
 		return g_object_ref (g_simple_async_result_get_op_res_gpointer (simple));
 }
 
+/*
+ * Validate D-Bus object path.
+ * The function is copied and adjusted version of
+ * g_variant_serialiser_is_object_path() from glib.
+ * FIXME: The function can be replaced by g_variant_is_object_path()
+ * when we start using GLib >= 2.24
+ */
+static gboolean
+_nm_client_is_object_path (const char *string)
+{
+	gsize i;
+
+	if (!g_utf8_validate (string, -1, NULL))
+		return FALSE;
+
+	/* The path must begin with an ASCII '/' (integer 47) character */
+	if (string[0] != '/')
+		return FALSE;
+
+	for (i = 1; string[i]; i++) {
+		/* Each element must only contain the ASCII characters
+		 * "[A-Z][a-z][0-9]_"
+		 */
+		if (g_ascii_isalnum (string[i]) || string[i] == '_')
+			;
+		/* must consist of elements separated by slash characters. */
+		else if (string[i] == '/') {
+			/* No element may be the empty string. */
+			/* Multiple '/' characters cannot occur in sequence. */
+			if (string[i - 1] == '/')
+				return FALSE;
+		} else
+			return FALSE;
+	}
+
+	/* A trailing '/' character is not allowed unless the path is the
+	 * root path (a single '/' character).
+	 */
+	if (i > 1 && string[i - 1] == '/')
+		return FALSE;
+
+	return TRUE;
+}
+
+/*
+ * constructor() shouldn't be overriden in most cases, rather constructed()
+ * method is preferred and more useful.
+ * But, this serves as a workaround for bindings (use) calling the constructor()
+ * directly instead of nm_client_new() function, and neither providing
+ * construction properties. So, we fill "dbus-path" here if it was not specified
+ * (was set to default value (NULL)).
+ *
+ * It allows this python code:
+ * from gi.repository import NMClient
+ * nmclient = NMClient.Client()
+ * print nmclient.get_active_connections()
+ *
+ * instead of proper
+ * nmclient = NMClient.Client().new()
+ *
+ * Note:
+ * A nice overview of GObject construction is here:
+ * http://blogs.gnome.org/desrt/2012/02/26/a-gentle-introduction-to-gobject-construction
+ * It is much better explanation than the official docs
+ * http://developer.gnome.org/gobject/unstable/chapter-gobject.html#gobject-instantiation
+ */
+static GObject*
+constructor (GType type,
+             guint n_construct_params,
+             GObjectConstructParam *construct_params)
+{
+	GObject *object;
+	guint i;
+	const char *dbus_path;
+
+	for (i = 0; i < n_construct_params; i++) {
+		if (strcmp (construct_params[i].pspec->name, NM_OBJECT_DBUS_PATH) == 0) {
+			dbus_path = g_value_get_string (construct_params[i].value);
+			if (dbus_path == NULL) {
+				g_value_set_static_string (construct_params[i].value, NM_DBUS_PATH);
+			} else {
+				if (!_nm_client_is_object_path (dbus_path)) {
+					g_warning ("Passsed D-Bus object path '%s' is invalid; using default '%s' instead",
+					            dbus_path, NM_DBUS_PATH);
+					g_value_set_static_string (construct_params[i].value, NM_DBUS_PATH);
+				}
+			}
+			break;
+		}
+	}
+
+	object = G_OBJECT_CLASS (nm_client_parent_class)->constructor (type,
+	                                                               n_construct_params,
+	                                                               construct_params);
+
+	return object;
+}
+
 static void
 constructed (GObject *object)
 {
@@ -1287,6 +1436,9 @@ constructed (GObject *object)
 
 	g_signal_connect (object, "notify::" NM_CLIENT_ACTIVE_CONNECTIONS,
 	                  G_CALLBACK (active_connections_changed_cb), NULL);
+
+	g_signal_connect (object, "object-creation-failed",
+	                  G_CALLBACK (object_creation_failed_cb), NULL);
 }
 
 static gboolean
@@ -1417,26 +1569,26 @@ init_async (GAsyncInitable *initable, int io_priority,
 static void
 dispose (GObject *object)
 {
+	NMClient *client = NM_CLIENT (object);
 	NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (object);
 
-	if (priv->disposed) {
-		G_OBJECT_CLASS (nm_client_parent_class)->dispose (object);
-		return;
-	}
-
-	if (priv->perm_call)
+	if (priv->perm_call) {
 		dbus_g_proxy_cancel_call (priv->client_proxy, priv->perm_call);
+		priv->perm_call = NULL;
+	}
 
-	g_object_unref (priv->client_proxy);
-	g_object_unref (priv->bus_proxy);
+	g_clear_object (&priv->client_proxy);
+	g_clear_object (&priv->bus_proxy);
 
-	free_object_array (&priv->devices);
-	dispose_and_free_object_array (&priv->active_connections);
+	free_devices (client, FALSE);
+	free_active_connections (client, FALSE);
 
 	g_slist_foreach (priv->pending_activations, (GFunc) activate_info_free, NULL);
 	g_slist_free (priv->pending_activations);
+	priv->pending_activations = NULL;
 
 	g_hash_table_destroy (priv->permissions);
+	priv->permissions = NULL;
 
 	G_OBJECT_CLASS (nm_client_parent_class)->dispose (object);
 }
@@ -1502,6 +1654,8 @@ get_property (GObject *object,
 	NMClient *self = NM_CLIENT (object);
 	NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (self);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_VERSION:
 		g_value_set_string (value, nm_client_get_version (self));
@@ -1550,6 +1704,7 @@ nm_client_class_init (NMClientClass *client_class)
 	g_type_class_add_private (client_class, sizeof (NMClientPrivate));
 
 	/* virtual methods */
+	object_class->constructor = constructor;
 	object_class->constructed = constructed;
 	object_class->set_property = set_property;
 	object_class->get_property = get_property;
diff --git a/libnm-glib/nm-device-adsl.c b/libnm-glib/nm-device-adsl.c
new file mode 100644
index 00000000..67aad9e8
--- /dev/null
+++ b/libnm-glib/nm-device-adsl.c
@@ -0,0 +1,245 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/*
+ * libnm_glib -- Access network status & information from glib applications
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * author: Pantelis Koukousoulas <pktoss@gmail.com>
+ * Copyright 2009 - 2011 Red Hat, Inc.
+ */
+
+#include "nm-device-adsl.h"
+#include "nm-device-private.h"
+#include "nm-object-private.h"
+
+#include "nm-setting-adsl.h"
+
+#include <string.h>
+
+G_DEFINE_TYPE (NMDeviceAdsl, nm_device_adsl, NM_TYPE_DEVICE)
+
+#define NM_DEVICE_ADSL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_ADSL, NMDeviceAdslPrivate))
+
+typedef struct {
+	DBusGProxy *proxy;
+
+	gboolean carrier;
+
+	gboolean disposed;
+} NMDeviceAdslPrivate;
+
+enum {
+	PROP_0,
+	PROP_CARRIER,
+	LAST_PROP
+};
+#define DBUS_PROP_CARRIER "Carrier"
+
+/**
+ * nm_device_adsl_error_quark:
+ *
+ * Registers an error quark for #NMDeviceAdsl if necessary.
+ *
+ * Returns: the error quark used for #NMDeviceAdsl errors.
+ **/
+GQuark
+nm_device_adsl_error_quark (void)
+{
+	static GQuark quark = 0;
+
+	if (G_UNLIKELY (quark == 0))
+		quark = g_quark_from_static_string ("nm-device-adsl-error-quark");
+	return quark;
+}
+
+/**
+ * nm_device_adsl_new:
+ * @connection: the #DBusGConnection
+ * @path: the DBus object path of the device
+ *
+ * Creates a new #NMDeviceAdsl.
+ *
+ * Returns: a new device
+ **/
+GObject *
+nm_device_adsl_new (DBusGConnection *connection, const char *path)
+{
+	GObject *device;
+
+	g_return_val_if_fail (connection != NULL, NULL);
+	g_return_val_if_fail (path != NULL, NULL);
+
+	device = g_object_new (NM_TYPE_DEVICE_ADSL,
+	                       NM_OBJECT_DBUS_CONNECTION, connection,
+	                       NM_OBJECT_DBUS_PATH, path,
+	                       NULL);
+	_nm_object_ensure_inited (NM_OBJECT (device));
+	return device;
+}
+
+/**
+ * nm_device_adsl_get_carrier:
+ * @device: a #NMDeviceAdsl
+ *
+ * Whether the device has carrier.
+ *
+ * Returns: %TRUE if the device has carrier
+ **/
+gboolean
+nm_device_adsl_get_carrier (NMDeviceAdsl *device)
+{
+	g_return_val_if_fail (NM_IS_DEVICE_ADSL (device), FALSE);
+
+	_nm_object_ensure_inited (NM_OBJECT (device));
+	return NM_DEVICE_ADSL_GET_PRIVATE (device)->carrier;
+}
+
+static gboolean
+connection_compatible (NMDevice *device, NMConnection *connection, GError **error)
+{
+	NMSettingConnection *s_con;
+	NMSettingAdsl *s_adsl;
+	const char *ctype;
+
+	s_con = nm_connection_get_setting_connection (connection);
+	g_assert (s_con);
+
+	ctype = nm_setting_connection_get_connection_type (s_con);
+	if (strcmp (ctype, NM_SETTING_ADSL_SETTING_NAME) != 0) {
+		g_set_error (error, NM_DEVICE_ADSL_ERROR, NM_DEVICE_ADSL_ERROR_NOT_ADSL_CONNECTION,
+		             "The connection was not an ADSL connection.");
+		return FALSE;
+	}
+
+	s_adsl = nm_connection_get_setting_adsl (connection);
+	if (!s_adsl) {
+		g_set_error (error, NM_DEVICE_ADSL_ERROR, NM_DEVICE_ADSL_ERROR_INVALID_ADSL_CONNECTION,
+		             "The connection was not a valid ADSL connection.");
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+/******************************************************************/
+
+static void
+nm_device_adsl_init (NMDeviceAdsl *device)
+{
+	_nm_device_set_device_type (NM_DEVICE (device), NM_DEVICE_TYPE_ADSL);
+}
+
+static void
+register_properties (NMDeviceAdsl *device)
+{
+	NMDeviceAdslPrivate *priv = NM_DEVICE_ADSL_GET_PRIVATE (device);
+	const NMPropertiesInfo property_info[] = {
+		{ NM_DEVICE_ADSL_CARRIER,              &priv->carrier },
+		{ NULL },
+	};
+
+	_nm_object_register_properties (NM_OBJECT (device),
+	                                priv->proxy,
+	                                property_info);
+}
+
+static void
+constructed (GObject *object)
+{
+	NMDeviceAdslPrivate *priv;
+
+	G_OBJECT_CLASS (nm_device_adsl_parent_class)->constructed (object);
+
+	priv = NM_DEVICE_ADSL_GET_PRIVATE (object);
+
+	priv->proxy = dbus_g_proxy_new_for_name (nm_object_get_connection (NM_OBJECT (object)),
+	                                         NM_DBUS_SERVICE,
+	                                         nm_object_get_path (NM_OBJECT (object)),
+	                                         NM_DBUS_INTERFACE_DEVICE_ADSL);
+
+	register_properties (NM_DEVICE_ADSL (object));
+}
+
+static void
+dispose (GObject *object)
+{
+	NMDeviceAdslPrivate *priv = NM_DEVICE_ADSL_GET_PRIVATE (object);
+
+	if (priv->disposed) {
+		G_OBJECT_CLASS (nm_device_adsl_parent_class)->dispose (object);
+		return;
+	}
+
+	priv->disposed = TRUE;
+
+	g_object_unref (priv->proxy);
+
+	G_OBJECT_CLASS (nm_device_adsl_parent_class)->dispose (object);
+}
+
+static void
+finalize (GObject *object)
+{
+	G_OBJECT_CLASS (nm_device_adsl_parent_class)->finalize (object);
+}
+
+static void
+get_property (GObject *object,
+              guint prop_id,
+              GValue *value,
+              GParamSpec *pspec)
+{
+	NMDeviceAdsl *device = NM_DEVICE_ADSL (object);
+
+	switch (prop_id) {
+	case PROP_CARRIER:
+		g_value_set_boolean (value, nm_device_adsl_get_carrier (device));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+nm_device_adsl_class_init (NMDeviceAdslClass *adsl_class)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (adsl_class);
+	NMDeviceClass *device_class = NM_DEVICE_CLASS (adsl_class);
+
+	g_type_class_add_private (object_class, sizeof (NMDeviceAdslPrivate));
+
+	/* virtual methods */
+	object_class->constructed = constructed;
+	object_class->dispose = dispose;
+	object_class->finalize = finalize;
+	object_class->get_property = get_property;
+	device_class->connection_compatible = connection_compatible;
+
+	/* properties */
+	/**
+	 * NMDeviceAdsl:carrier:
+	 *
+	 * Whether the device has carrier.
+	 **/
+	g_object_class_install_property
+		(object_class, PROP_CARRIER,
+		 g_param_spec_boolean (NM_DEVICE_ADSL_CARRIER,
+		                       "Carrier",
+		                       "Carrier",
+		                       FALSE,
+		                       G_PARAM_READABLE));
+}
diff --git a/libnm-glib/nm-device-adsl.h b/libnm-glib/nm-device-adsl.h
new file mode 100644
index 00000000..9d83e267
--- /dev/null
+++ b/libnm-glib/nm-device-adsl.h
@@ -0,0 +1,77 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/*
+ * libnm_glib -- Access network status & information from glib applications
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2011 Pantelis Koukousoulas <pktoss@gmail.com>
+ */
+
+#ifndef NM_DEVICE_ADSL_H
+#define NM_DEVICE_ADSL_H
+
+#include "nm-device.h"
+
+G_BEGIN_DECLS
+
+#define NM_TYPE_DEVICE_ADSL            (nm_device_adsl_get_type ())
+#define NM_DEVICE_ADSL(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DEVICE_ADSL, NMDeviceAdsl))
+#define NM_DEVICE_ADSL_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_DEVICE_ADSL, NMDeviceAdslClass))
+#define NM_IS_DEVICE_ADSL(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_DEVICE_ADSL))
+#define NM_IS_DEVICE_ADSL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NM_TYPE_DEVICE_ADSL))
+#define NM_DEVICE_ADSL_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_ADSL, NMDeviceAdslClass))
+
+/**
+ * NMDeviceAdslError:
+ * @NM_DEVICE_ADSL_ERROR_UNKNOWN: unknown or unclassified error
+ * @NM_DEVICE_ADSL_ERROR_NOT_ADSL_CONNECTION: the connection was not of ADSL type
+ * @NM_DEVICE_ADSL_ERROR_INVALID_ADSL_CONNECTION: the ADSL connection was invalid
+ */
+typedef enum {
+	NM_DEVICE_ADSL_ERROR_UNKNOWN = 0,             /*< nick=UnknownError >*/
+	NM_DEVICE_ADSL_ERROR_NOT_ADSL_CONNECTION,     /*< nick=NotAdslConnection >*/
+	NM_DEVICE_ADSL_ERROR_INVALID_ADSL_CONNECTION, /*< nick=InvalidAdslConnection >*/
+} NMDeviceAdslError;
+
+#define NM_DEVICE_ADSL_ERROR nm_device_adsl_error_quark ()
+GQuark nm_device_adsl_error_quark (void);
+
+#define NM_DEVICE_ADSL_CARRIER "carrier"
+
+typedef struct {
+	NMDevice parent;
+} NMDeviceAdsl;
+
+typedef struct {
+	NMDeviceClass parent;
+
+	/* Padding for future expansion */
+	void (*_reserved1) (void);
+	void (*_reserved2) (void);
+	void (*_reserved3) (void);
+	void (*_reserved4) (void);
+	void (*_reserved5) (void);
+	void (*_reserved6) (void);
+} NMDeviceAdslClass;
+
+GType nm_device_adsl_get_type (void);
+
+GObject *nm_device_adsl_new (DBusGConnection *connection, const char *path);
+gboolean nm_device_adsl_get_carrier (NMDeviceAdsl *device);
+
+G_END_DECLS
+
+#endif /* NM_DEVICE_ADSL_H */
diff --git a/libnm-glib/nm-device-bond.c b/libnm-glib/nm-device-bond.c
index 034b7b3c..d5e33e50 100644
--- a/libnm-glib/nm-device-bond.c
+++ b/libnm-glib/nm-device-bond.c
@@ -24,6 +24,8 @@
 #include <string.h>
 #include <netinet/ether.h>
 
+#include "nm-glib-compat.h"
+
 #include <nm-setting-connection.h>
 #include <nm-setting-bond.h>
 #include <nm-utils.h>
@@ -215,10 +217,7 @@ dispose (GObject *object)
 {
 	NMDeviceBondPrivate *priv = NM_DEVICE_BOND_GET_PRIVATE (object);
 
-	if (priv->proxy) {
-		g_object_unref (priv->proxy);
-		priv->proxy = NULL;
-	}
+	g_clear_object (&priv->proxy);
 
 	G_OBJECT_CLASS (nm_device_bond_parent_class)->dispose (object);
 }
@@ -241,6 +240,8 @@ get_property (GObject *object,
 {
 	NMDeviceBond *device = NM_DEVICE_BOND (object);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_HW_ADDRESS:
 		g_value_set_string (value, nm_device_bond_get_hw_address (device));
diff --git a/libnm-glib/nm-device-bt.c b/libnm-glib/nm-device-bt.c
index 8e0ff200..ccfa83ca 100644
--- a/libnm-glib/nm-device-bt.c
+++ b/libnm-glib/nm-device-bt.c
@@ -25,6 +25,8 @@
 #include <string.h>
 #include <netinet/ether.h>
 
+#include "nm-glib-compat.h"
+
 #include <nm-setting-connection.h>
 #include <nm-setting-bluetooth.h>
 
@@ -42,8 +44,6 @@ typedef struct {
 	char *hw_address;
 	char *name;
 	guint32 bt_capabilities;
-
-	gboolean disposed;
 } NMDeviceBtPrivate;
 
 enum {
@@ -273,13 +273,7 @@ dispose (GObject *object)
 {
 	NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (object);
 
-	if (priv->disposed) {
-		G_OBJECT_CLASS (nm_device_bt_parent_class)->dispose (object);
-		return;
-	}
-	priv->disposed = TRUE;
-
-	g_object_unref (priv->proxy);
+	g_clear_object (&priv->proxy);
 
 	G_OBJECT_CLASS (nm_device_bt_parent_class)->dispose (object);
 }
@@ -303,6 +297,8 @@ get_property (GObject *object,
 {
 	NMDeviceBt *device = NM_DEVICE_BT (object);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_HW_ADDRESS:
 		g_value_set_string (value, nm_device_bt_get_hw_address (device));
diff --git a/libnm-glib/nm-device-ethernet.c b/libnm-glib/nm-device-ethernet.c
index 62aedbbf..e9d1b4ad 100644
--- a/libnm-glib/nm-device-ethernet.c
+++ b/libnm-glib/nm-device-ethernet.c
@@ -25,6 +25,8 @@
 #include <string.h>
 #include <netinet/ether.h>
 
+#include "nm-glib-compat.h"
+
 #include <nm-setting-connection.h>
 #include <nm-setting-wired.h>
 #include <nm-setting-pppoe.h>
@@ -44,8 +46,6 @@ typedef struct {
 	char *perm_hw_address;
 	guint32 speed;
 	gboolean carrier;
-
-	gboolean disposed;
 } NMDeviceEthernetPrivate;
 
 enum {
@@ -280,14 +280,7 @@ dispose (GObject *object)
 {
 	NMDeviceEthernetPrivate *priv = NM_DEVICE_ETHERNET_GET_PRIVATE (object);
 
-	if (priv->disposed) {
-		G_OBJECT_CLASS (nm_device_ethernet_parent_class)->dispose (object);
-		return;
-	}
-
-	priv->disposed = TRUE;
-
-	g_object_unref (priv->proxy);
+	g_clear_object (&priv->proxy);
 
 	G_OBJECT_CLASS (nm_device_ethernet_parent_class)->dispose (object);
 }
@@ -311,6 +304,8 @@ get_property (GObject *object,
 {
 	NMDeviceEthernet *device = NM_DEVICE_ETHERNET (object);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_HW_ADDRESS:
 		g_value_set_string (value, nm_device_ethernet_get_hw_address (device));
diff --git a/libnm-glib/nm-device-infiniband.c b/libnm-glib/nm-device-infiniband.c
index ec5f4a8b..d611993b 100644
--- a/libnm-glib/nm-device-infiniband.c
+++ b/libnm-glib/nm-device-infiniband.c
@@ -25,6 +25,8 @@
 #include <linux/if_infiniband.h>
 #include <netinet/ether.h>
 
+#include "nm-glib-compat.h"
+
 #include <nm-setting-connection.h>
 #include <nm-setting-infiniband.h>
 #include <nm-utils.h>
@@ -224,10 +226,7 @@ dispose (GObject *object)
 {
 	NMDeviceInfinibandPrivate *priv = NM_DEVICE_INFINIBAND_GET_PRIVATE (object);
 
-	if (priv->proxy) {
-		g_object_unref (priv->proxy);
-		priv->proxy = NULL;
-	}
+	g_clear_object (&priv->proxy);
 
 	G_OBJECT_CLASS (nm_device_infiniband_parent_class)->dispose (object);
 }
@@ -250,6 +249,8 @@ get_property (GObject *object,
 {
 	NMDeviceInfiniband *device = NM_DEVICE_INFINIBAND (object);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_HW_ADDRESS:
 		g_value_set_string (value, nm_device_infiniband_get_hw_address (device));
diff --git a/libnm-glib/nm-device-modem.c b/libnm-glib/nm-device-modem.c
index f1d1389b..f7a9230e 100644
--- a/libnm-glib/nm-device-modem.c
+++ b/libnm-glib/nm-device-modem.c
@@ -24,6 +24,8 @@
 #include <config.h>
 #include <string.h>
 
+#include "nm-glib-compat.h"
+
 #include <nm-setting-connection.h>
 #include <nm-setting-gsm.h>
 #include <nm-setting-cdma.h>
@@ -44,8 +46,6 @@ typedef struct {
 
 	NMDeviceModemCapabilities caps;
 	NMDeviceModemCapabilities current_caps;
-
-	gboolean disposed;
 } NMDeviceModemPrivate;
 
 enum {
@@ -205,6 +205,8 @@ get_property (GObject *object,
 {
 	NMDeviceModem *self = NM_DEVICE_MODEM (object);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_MODEM_CAPS:
 		g_value_set_uint (value, nm_device_modem_get_modem_capabilities (self));
@@ -223,14 +225,7 @@ dispose (GObject *object)
 {
 	NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (object);
 
-	if (priv->disposed) {
-		G_OBJECT_CLASS (nm_device_modem_parent_class)->dispose (object);
-		return;
-	}
-
-	priv->disposed = TRUE;
-
-	g_object_unref (priv->proxy);
+	g_clear_object (&priv->proxy);
 
 	G_OBJECT_CLASS (nm_device_modem_parent_class)->dispose (object);
 }
diff --git a/libnm-glib/nm-device-olpc-mesh.c b/libnm-glib/nm-device-olpc-mesh.c
index ed48ecb6..7ca36890 100644
--- a/libnm-glib/nm-device-olpc-mesh.c
+++ b/libnm-glib/nm-device-olpc-mesh.c
@@ -24,6 +24,8 @@
 #include <config.h>
 #include <string.h>
 
+#include "nm-glib-compat.h"
+
 #include <nm-setting-connection.h>
 #include <nm-setting-olpc-mesh.h>
 
@@ -227,14 +229,8 @@ dispose (GObject *object)
 {
 	NMDeviceOlpcMeshPrivate *priv = NM_DEVICE_OLPC_MESH_GET_PRIVATE (object);
 
-	if (priv->companion) {
-		g_object_unref (priv->companion);
-		priv->companion = NULL;
-	}
-	if (priv->proxy) {
-		g_object_unref (priv->proxy);
-		priv->proxy = NULL;
-	}
+	g_clear_object (&priv->companion);
+	g_clear_object (&priv->proxy);
 
 	G_OBJECT_CLASS (nm_device_olpc_mesh_parent_class)->dispose (object);
 }
@@ -257,6 +253,8 @@ get_property (GObject *object,
 {
 	NMDeviceOlpcMesh *device = NM_DEVICE_OLPC_MESH (object);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_HW_ADDRESS:
 		g_value_set_string (value, nm_device_olpc_mesh_get_hw_address (device));
diff --git a/libnm-glib/nm-device-vlan.c b/libnm-glib/nm-device-vlan.c
index 08b1142d..13ca3ac3 100644
--- a/libnm-glib/nm-device-vlan.c
+++ b/libnm-glib/nm-device-vlan.c
@@ -24,6 +24,8 @@
 #include <string.h>
 #include <netinet/ether.h>
 
+#include "nm-glib-compat.h"
+
 #include <nm-setting-connection.h>
 #include <nm-setting-vlan.h>
 #include <nm-utils.h>
@@ -238,10 +240,7 @@ dispose (GObject *object)
 {
 	NMDeviceVlanPrivate *priv = NM_DEVICE_VLAN_GET_PRIVATE (object);
 
-	if (priv->proxy) {
-		g_object_unref (priv->proxy);
-		priv->proxy = NULL;
-	}
+	g_clear_object (&priv->proxy);
 
 	G_OBJECT_CLASS (nm_device_vlan_parent_class)->dispose (object);
 }
@@ -264,6 +263,8 @@ get_property (GObject *object,
 {
 	NMDeviceVlan *device = NM_DEVICE_VLAN (object);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_HW_ADDRESS:
 		g_value_set_string (value, nm_device_vlan_get_hw_address (device));
diff --git a/libnm-glib/nm-device-wifi.c b/libnm-glib/nm-device-wifi.c
index 6975898f..0058fd10 100644
--- a/libnm-glib/nm-device-wifi.c
+++ b/libnm-glib/nm-device-wifi.c
@@ -25,6 +25,8 @@
 #include <string.h>
 #include <netinet/ether.h>
 
+#include "nm-glib-compat.h"
+
 #include <nm-setting-connection.h>
 #include <nm-setting-wireless.h>
 #include <nm-setting-wireless-security.h>
@@ -43,7 +45,6 @@ G_DEFINE_TYPE (NMDeviceWifi, nm_device_wifi, NM_TYPE_DEVICE)
 void _nm_device_wifi_set_wireless_enabled (NMDeviceWifi *device, gboolean enabled);
 
 typedef struct {
-	gboolean disposed;
 	DBusGProxy *proxy;
 
 	char *hw_address;
@@ -501,6 +502,8 @@ get_property (GObject *object,
 {
 	NMDeviceWifi *self = NM_DEVICE_WIFI (object);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_HW_ADDRESS:
 		g_value_set_string (value, nm_device_wifi_get_hw_address (self));
@@ -606,15 +609,8 @@ dispose (GObject *object)
 {
 	NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (object);
 
-	if (priv->disposed) {
-		G_OBJECT_CLASS (nm_device_wifi_parent_class)->dispose (object);
-		return;
-	}
-
-	priv->disposed = TRUE;
-
 	clean_up_aps (NM_DEVICE_WIFI (object), FALSE);
-	g_object_unref (priv->proxy);
+	g_clear_object (&priv->proxy);
 
 	G_OBJECT_CLASS (nm_device_wifi_parent_class)->dispose (object);
 }
diff --git a/libnm-glib/nm-device-wimax.c b/libnm-glib/nm-device-wimax.c
index 48a518d7..62e3f772 100644
--- a/libnm-glib/nm-device-wimax.c
+++ b/libnm-glib/nm-device-wimax.c
@@ -25,6 +25,8 @@
 #include <string.h>
 #include <netinet/ether.h>
 
+#include "nm-glib-compat.h"
+
 #include <nm-setting-connection.h>
 #include <nm-setting-wimax.h>
 
@@ -42,7 +44,6 @@ G_DEFINE_TYPE (NMDeviceWimax, nm_device_wimax, NM_TYPE_DEVICE)
 void _nm_device_wimax_set_wireless_enabled (NMDeviceWimax *wimax, gboolean enabled);
 
 typedef struct {
-	gboolean disposed;
 	DBusGProxy *proxy;
 
 	char *hw_address;
@@ -444,6 +445,8 @@ get_property (GObject *object,
 {
 	NMDeviceWimax *self = NM_DEVICE_WIMAX (object);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_HW_ADDRESS:
 		g_value_set_string (value, nm_device_wimax_get_hw_address (self));
@@ -591,18 +594,18 @@ dispose (GObject *object)
 {
 	NMDeviceWimaxPrivate *priv = NM_DEVICE_WIMAX_GET_PRIVATE (object);
 
-	if (priv->disposed) {
-		G_OBJECT_CLASS (nm_device_wimax_parent_class)->dispose (object);
-		return;
+	if (priv->hw_address) {
+		g_free (priv->hw_address);
+		priv->hw_address = NULL;
 	}
 
-	priv->disposed = TRUE;
-
-	g_free (priv->hw_address);
-	g_free (priv->bsid);
+	if (priv->bsid) {
+		g_free (priv->bsid);
+		priv->bsid = NULL;
+	}
 
 	clean_up_nsps (NM_DEVICE_WIMAX (object), FALSE);
-	g_object_unref (priv->proxy);
+	g_clear_object (&priv->proxy);
 
 	G_OBJECT_CLASS (nm_device_wimax_parent_class)->dispose (object);
 }
diff --git a/libnm-glib/nm-device.c b/libnm-glib/nm-device.c
index 96a037d5..36a36ebf 100644
--- a/libnm-glib/nm-device.c
+++ b/libnm-glib/nm-device.c
@@ -27,6 +27,7 @@
 
 #include "NetworkManager.h"
 #include "nm-device-ethernet.h"
+#include "nm-device-adsl.h"
 #include "nm-device-wifi.h"
 #include "nm-device-modem.h"
 #include "nm-device-bt.h"
@@ -60,7 +61,6 @@ G_DEFINE_TYPE_WITH_CODE (NMDevice, nm_device, NM_TYPE_OBJECT,
 #define NM_DEVICE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE, NMDevicePrivate))
 
 typedef struct {
-	gboolean disposed;
 	DBusGProxy *proxy;
 
 	char *iface;
@@ -68,9 +68,12 @@ typedef struct {
 	NMDeviceType device_type;
 	char *udi;
 	char *driver;
+	char *driver_version;
+	char *firmware_version;
 	NMDeviceCapabilities capabilities;
 	gboolean managed;
 	gboolean firmware_missing;
+	gboolean autoconnect;
 	NMIP4Config *ip4_config;
 	NMDHCP4Config *dhcp4_config;
 	NMIP6Config *ip6_config;
@@ -90,8 +93,11 @@ enum {
 	PROP_INTERFACE,
 	PROP_UDI,
 	PROP_DRIVER,
+	PROP_DRIVER_VERSION,
+	PROP_FIRMWARE_VERSION,
 	PROP_CAPABILITIES,
 	PROP_MANAGED,
+	PROP_AUTOCONNECT,
 	PROP_FIRMWARE_MISSING,
 	PROP_IP4_CONFIG,
 	PROP_DHCP4_CONFIG,
@@ -152,8 +158,11 @@ register_properties (NMDevice *device)
 		{ NM_DEVICE_INTERFACE,         &priv->iface },
 		{ NM_DEVICE_IP_INTERFACE,      &priv->ip_iface },
 		{ NM_DEVICE_DRIVER,            &priv->driver },
+		{ NM_DEVICE_DRIVER_VERSION,    &priv->driver_version },
+		{ NM_DEVICE_FIRMWARE_VERSION,  &priv->firmware_version },
 		{ NM_DEVICE_CAPABILITIES,      &priv->capabilities },
 		{ NM_DEVICE_MANAGED,           &priv->managed },
+		{ NM_DEVICE_AUTOCONNECT,       &priv->autoconnect },
 		{ NM_DEVICE_FIRMWARE_MISSING,  &priv->firmware_missing },
 		{ NM_DEVICE_IP4_CONFIG,        &priv->ip4_config, NULL, NM_TYPE_IP4_CONFIG },
 		{ NM_DEVICE_DHCP4_CONFIG,      &priv->dhcp4_config, NULL, NM_TYPE_DHCP4_CONFIG },
@@ -208,6 +217,8 @@ _nm_device_gtype_from_dtype (NMDeviceType dtype)
 		return NM_TYPE_DEVICE_MODEM;
 	case NM_DEVICE_TYPE_BT:
 		return NM_TYPE_DEVICE_BT;
+	case NM_DEVICE_TYPE_ADSL:
+		return NM_TYPE_DEVICE_ADSL;
 	case NM_DEVICE_TYPE_OLPC_MESH:
 		return NM_TYPE_DEVICE_OLPC_MESH;
 	case NM_DEVICE_TYPE_WIMAX:
@@ -265,26 +276,13 @@ dispose (GObject *object)
 {
 	NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (object);
 
-	if (priv->disposed) {
-		G_OBJECT_CLASS (nm_device_parent_class)->dispose (object);
-		return;
-	}
-
-	priv->disposed = TRUE;
-
-	g_object_unref (priv->proxy);
-	if (priv->ip4_config)
-		g_object_unref (priv->ip4_config);
-	if (priv->dhcp4_config)
-		g_object_unref (priv->dhcp4_config);
-	if (priv->ip6_config)
-		g_object_unref (priv->ip6_config);
-	if (priv->dhcp6_config)
-		g_object_unref (priv->dhcp6_config);
-	if (priv->client)
-		g_object_unref (priv->client);
-	if (priv->active_connection)
-		g_object_unref (priv->active_connection);
+	g_clear_object (&priv->proxy);
+	g_clear_object (&priv->ip4_config);
+	g_clear_object (&priv->dhcp4_config);
+	g_clear_object (&priv->ip6_config);
+	g_clear_object (&priv->dhcp6_config);
+	g_clear_object (&priv->client);
+	g_clear_object (&priv->active_connection);
 
 	G_OBJECT_CLASS (nm_device_parent_class)->dispose (object);
 }
@@ -298,6 +296,8 @@ finalize (GObject *object)
 	g_free (priv->ip_iface);
 	g_free (priv->udi);
 	g_free (priv->driver);
+	g_free (priv->driver_version);
+	g_free (priv->firmware_version);
 	g_free (priv->product);
 	g_free (priv->vendor);
 
@@ -313,6 +313,8 @@ get_property (GObject *object,
 	NMDevice *device = NM_DEVICE (object);
 	NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (device);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_DEVICE_TYPE:
 		g_value_set_uint (value, nm_device_get_device_type (device));
@@ -329,12 +331,21 @@ get_property (GObject *object,
 	case PROP_DRIVER:
 		g_value_set_string (value, nm_device_get_driver (device));
 		break;
+	case PROP_DRIVER_VERSION:
+		g_value_set_string (value, nm_device_get_driver_version (device));
+		break;
+	case PROP_FIRMWARE_VERSION:
+		g_value_set_string (value, nm_device_get_firmware_version (device));
+		break;
 	case PROP_CAPABILITIES:
 		g_value_set_uint (value, nm_device_get_capabilities (device));
 		break;
 	case PROP_MANAGED:
 		g_value_set_boolean (value, nm_device_get_managed (device));
 		break;
+	case PROP_AUTOCONNECT:
+		g_value_set_boolean (value, nm_device_get_autoconnect (device));
+		break;
 	case PROP_FIRMWARE_MISSING:
 		g_value_set_boolean (value, nm_device_get_firmware_missing (device));
 		break;
@@ -384,12 +395,18 @@ set_property (GObject *object,
 {
 	NMDevice *self = NM_DEVICE (object);
 	NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
+	gboolean b;
 
 	switch (prop_id) {
 	case PROP_DEVICE_TYPE:
 		/* Construct only */
 		priv->device_type = g_value_get_uint (value);
 		break;
+	case PROP_AUTOCONNECT:
+		b = g_value_get_boolean (value);
+		if (priv->autoconnect != b)
+			nm_device_set_autoconnect (NM_DEVICE (object), b);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -483,6 +500,32 @@ nm_device_class_init (NMDeviceClass *device_class)
 						  G_PARAM_READABLE));
 
 	/**
+	 * NMDevice:driver-version:
+	 *
+	 * The version of the device driver.
+	 **/
+	g_object_class_install_property
+		(object_class, PROP_DRIVER_VERSION,
+		 g_param_spec_string (NM_DEVICE_DRIVER_VERSION,
+		                      "Driver Version",
+		                      "Driver Version",
+		                      NULL,
+		                      G_PARAM_READABLE));
+
+	/**
+	 * NMDevice:firmware-version:
+	 *
+	 * The firmware version of the device.
+	 **/
+	g_object_class_install_property
+		(object_class, PROP_FIRMWARE_VERSION,
+		 g_param_spec_string (NM_DEVICE_FIRMWARE_VERSION,
+		                      "Firmware Version",
+		                      "Firmware Version",
+		                      NULL,
+		                      G_PARAM_READABLE));
+
+	/**
 	 * NMDevice:capabilities:
 	 *
 	 * The capabilities of the device.
@@ -509,6 +552,19 @@ nm_device_class_init (NMDeviceClass *device_class)
 						  G_PARAM_READABLE));
 
 	/**
+	 * NMDevice:autoconnect:
+	 *
+	 * Whether the device can auto-activate a connection.
+	 **/
+	g_object_class_install_property
+		(object_class, PROP_AUTOCONNECT,
+		 g_param_spec_boolean (NM_DEVICE_AUTOCONNECT,
+		                       "Autoconnect",
+		                       "Autoconnect",
+		                       TRUE,
+		                       G_PARAM_READWRITE));
+
+	/**
 	 * NMDevice:firmware-missing:
 	 *
 	 * When %TRUE indicates the device is likely missing firmware required
@@ -893,6 +949,42 @@ nm_device_get_driver (NMDevice *device)
 }
 
 /**
+ * nm_device_get_driver_version:
+ * @device: a #NMDevice
+ *
+ * Gets the driver version of the #NMDevice.
+ *
+ * Returns: the version of the device driver. This is the internal string used by the
+ * device, and must not be modified.
+ **/
+const char *
+nm_device_get_driver_version (NMDevice *device)
+{
+	g_return_val_if_fail (NM_IS_DEVICE (device), NULL);
+
+	_nm_object_ensure_inited (NM_OBJECT (device));
+	return NM_DEVICE_GET_PRIVATE (device)->driver_version;
+}
+
+/**
+ * nm_device_get_firmware_version:
+ * @device: a #NMDevice
+ *
+ * Gets the firmware version of the #NMDevice.
+ *
+ * Returns: the firmware version of the device. This is the internal string used by the
+ * device, and must not be modified.
+ **/
+const char *
+nm_device_get_firmware_version (NMDevice *device)
+{
+	g_return_val_if_fail (NM_IS_DEVICE (device), NULL);
+
+	_nm_object_ensure_inited (NM_OBJECT (device));
+	return NM_DEVICE_GET_PRIVATE (device)->firmware_version;
+}
+
+/**
  * nm_device_get_capabilities:
  * @device: a #NMDevice
  *
@@ -927,6 +1019,49 @@ nm_device_get_managed (NMDevice *device)
 }
 
 /**
+ * nm_device_get_autoconnect:
+ * @device: a #NMDevice
+ *
+ * Whether the #NMDevice can be autoconnected.
+ *
+ * Returns: %TRUE if the device is allowed to be autoconnected
+ **/
+gboolean
+nm_device_get_autoconnect (NMDevice *device)
+{
+	g_return_val_if_fail (NM_IS_DEVICE (device), FALSE);
+
+	_nm_object_ensure_inited (NM_OBJECT (device));
+	return NM_DEVICE_GET_PRIVATE (device)->autoconnect;
+}
+
+/**
+ * nm_device_set_autoconnect:
+ * @device: a #NMDevice
+ * @autoconnect: %TRUE to enable autoconnecting
+ *
+ * Enables or disables automatic activation of the #NMDevice.
+ **/
+void
+nm_device_set_autoconnect (NMDevice *device, gboolean autoconnect)
+{
+	GValue value = {0,};
+
+	g_return_if_fail (NM_IS_DEVICE (device));
+
+	g_value_init (&value, G_TYPE_BOOLEAN);
+	g_value_set_boolean (&value, autoconnect);
+
+
+	NM_DEVICE_GET_PRIVATE (device)->autoconnect = autoconnect;
+
+	_nm_object_set_property (NM_OBJECT (device),
+	                         NM_DBUS_INTERFACE_DEVICE,
+	                         "Autoconnect",
+	                         &value);
+}
+
+/**
  * nm_device_get_firmware_missing:
  * @device: a #NMDevice
  *
diff --git a/libnm-glib/nm-device.h b/libnm-glib/nm-device.h
index 50301dc9..9260a33c 100644
--- a/libnm-glib/nm-device.h
+++ b/libnm-glib/nm-device.h
@@ -50,8 +50,11 @@ G_BEGIN_DECLS
 #define NM_DEVICE_INTERFACE "interface"
 #define NM_DEVICE_IP_INTERFACE "ip-interface"
 #define NM_DEVICE_DRIVER "driver"
+#define NM_DEVICE_DRIVER_VERSION "driver-version"
+#define NM_DEVICE_FIRMWARE_VERSION "firmware-version"
 #define NM_DEVICE_CAPABILITIES "capabilities"
 #define NM_DEVICE_MANAGED "managed"
+#define NM_DEVICE_AUTOCONNECT "autoconnect"
 #define NM_DEVICE_FIRMWARE_MISSING "firmware-missing"
 #define NM_DEVICE_IP4_CONFIG "ip4-config"
 #define NM_DEVICE_DHCP4_CONFIG "dhcp4-config"
@@ -98,8 +101,12 @@ const char *         nm_device_get_ip_iface         (NMDevice *device);
 NMDeviceType         nm_device_get_device_type      (NMDevice *device);
 const char *         nm_device_get_udi              (NMDevice *device);
 const char *         nm_device_get_driver           (NMDevice *device);
+const char *         nm_device_get_driver_version   (NMDevice *device);
+const char *         nm_device_get_firmware_version (NMDevice *device);
 NMDeviceCapabilities nm_device_get_capabilities     (NMDevice *device);
 gboolean             nm_device_get_managed          (NMDevice *device);
+gboolean             nm_device_get_autoconnect      (NMDevice *device);
+void                 nm_device_set_autoconnect      (NMDevice *device, gboolean autoconnect);
 gboolean             nm_device_get_firmware_missing (NMDevice *device);
 NMIP4Config *        nm_device_get_ip4_config       (NMDevice *device);
 NMDHCP4Config *      nm_device_get_dhcp4_config     (NMDevice *device);
diff --git a/libnm-glib/nm-dhcp4-config.c b/libnm-glib/nm-dhcp4-config.c
index 2074e6d1..89ccf25e 100644
--- a/libnm-glib/nm-dhcp4-config.c
+++ b/libnm-glib/nm-dhcp4-config.c
@@ -132,6 +132,8 @@ get_property (GObject *object,
 {
 	NMDHCP4Config *self = NM_DHCP4_CONFIG (object);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_OPTIONS:
 		g_value_set_boxed (value, nm_dhcp4_config_get_options (self));
diff --git a/libnm-glib/nm-dhcp6-config.c b/libnm-glib/nm-dhcp6-config.c
index 3764cbf0..88b3b103 100644
--- a/libnm-glib/nm-dhcp6-config.c
+++ b/libnm-glib/nm-dhcp6-config.c
@@ -132,6 +132,8 @@ get_property (GObject *object,
 {
 	NMDHCP6Config *self = NM_DHCP6_CONFIG (object);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_OPTIONS:
 		g_value_set_boxed (value, nm_dhcp6_config_get_options (self));
diff --git a/libnm-glib/nm-glib-enum-types.c b/libnm-glib/nm-glib-enum-types.c
index 9fc4de96..6af605cf 100644
--- a/libnm-glib/nm-glib-enum-types.c
+++ b/libnm-glib/nm-glib-enum-types.c
@@ -10,6 +10,7 @@
 #include "nm-device.h" 
 #include "nm-device-ethernet.h" 
 #include "nm-device-infiniband.h" 
+#include "nm-device-adsl.h" 
 #include "nm-device-wifi.h" 
 #include "nm-device-bt.h" 
 #include "nm-device-olpc-mesh.h" 
@@ -31,6 +32,25 @@
 #include "nm-wimax-nsp.h"
 
 GType
+nm_object_error_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+
+  if (g_once_init_enter (&g_define_type_id__volatile))
+    {
+      static const GEnumValue values[] = {
+        { NM_OBJECT_ERROR_UNKNOWN, "NM_OBJECT_ERROR_UNKNOWN", "unknown" },
+        { NM_OBJECT_ERROR_OBJECT_CREATION_FAILURE, "NM_OBJECT_ERROR_OBJECT_CREATION_FAILURE", "object-creation-failure" },
+        { 0, NULL, NULL }
+      };
+      GType g_define_type_id =
+        g_enum_register_static (g_intern_static_string ("NMObjectError"), values);
+      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+    }
+
+  return g_define_type_id__volatile;
+}
+GType
 nm_client_permission_get_type (void)
 {
   static volatile gsize g_define_type_id__volatile = 0;
@@ -126,6 +146,26 @@ nm_device_infiniband_error_get_type (void)
   return g_define_type_id__volatile;
 }
 GType
+nm_device_adsl_error_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+
+  if (g_once_init_enter (&g_define_type_id__volatile))
+    {
+      static const GEnumValue values[] = {
+        { NM_DEVICE_ADSL_ERROR_UNKNOWN, "NM_DEVICE_ADSL_ERROR_UNKNOWN", "UnknownError" },
+        { NM_DEVICE_ADSL_ERROR_NOT_ADSL_CONNECTION, "NM_DEVICE_ADSL_ERROR_NOT_ADSL_CONNECTION", "NotAdslConnection" },
+        { NM_DEVICE_ADSL_ERROR_INVALID_ADSL_CONNECTION, "NM_DEVICE_ADSL_ERROR_INVALID_ADSL_CONNECTION", "InvalidAdslConnection" },
+        { 0, NULL, NULL }
+      };
+      GType g_define_type_id =
+        g_enum_register_static (g_intern_static_string ("NMDeviceAdslError"), values);
+      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+    }
+
+  return g_define_type_id__volatile;
+}
+GType
 nm_device_wifi_error_get_type (void)
 {
   static volatile gsize g_define_type_id__volatile = 0;
@@ -310,6 +350,7 @@ nm_secret_agent_get_secrets_flags_get_type (void)
         { NM_SECRET_AGENT_GET_SECRETS_FLAG_NONE, "NM_SECRET_AGENT_GET_SECRETS_FLAG_NONE", "none" },
         { NM_SECRET_AGENT_GET_SECRETS_FLAG_ALLOW_INTERACTION, "NM_SECRET_AGENT_GET_SECRETS_FLAG_ALLOW_INTERACTION", "allow-interaction" },
         { NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW, "NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW", "request-new" },
+        { NM_SECRET_AGENT_GET_SECRETS_FLAG_USER_REQUESTED, "NM_SECRET_AGENT_GET_SECRETS_FLAG_USER_REQUESTED", "user-requested" },
         { 0, NULL, NULL }
       };
       GType g_define_type_id =
diff --git a/libnm-glib/nm-glib-enum-types.h b/libnm-glib/nm-glib-enum-types.h
index 9aa5fa90..6493ab19 100644
--- a/libnm-glib/nm-glib-enum-types.h
+++ b/libnm-glib/nm-glib-enum-types.h
@@ -9,6 +9,8 @@
 #include <glib-object.h>
 
 G_BEGIN_DECLS
+GType nm_object_error_get_type (void) G_GNUC_CONST;
+#define NM_TYPE_OBJECT_ERROR (nm_object_error_get_type ())
 GType nm_client_permission_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_CLIENT_PERMISSION (nm_client_permission_get_type ())
 GType nm_client_permission_result_get_type (void) G_GNUC_CONST;
@@ -17,6 +19,8 @@ GType nm_device_ethernet_error_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_DEVICE_ETHERNET_ERROR (nm_device_ethernet_error_get_type ())
 GType nm_device_infiniband_error_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_DEVICE_INFINIBAND_ERROR (nm_device_infiniband_error_get_type ())
+GType nm_device_adsl_error_get_type (void) G_GNUC_CONST;
+#define NM_TYPE_DEVICE_ADSL_ERROR (nm_device_adsl_error_get_type ())
 GType nm_device_wifi_error_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_DEVICE_WIFI_ERROR (nm_device_wifi_error_get_type ())
 GType nm_device_bt_error_get_type (void) G_GNUC_CONST;
diff --git a/libnm-glib/nm-glib-marshal.c b/libnm-glib/nm-glib-marshal.c
index a6ca0113..4f4e4c86 100644
--- a/libnm-glib/nm-glib-marshal.c
+++ b/libnm-glib/nm-glib-marshal.c
@@ -5,7 +5,7 @@
 
 #ifdef G_ENABLE_DEBUG
 #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
-#define g_marshal_value_peek_char(v)     g_value_get_char (v)
+#define g_marshal_value_peek_char(v)     g_value_get_schar (v)
 #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
 #define g_marshal_value_peek_int(v)      g_value_get_int (v)
 #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
@@ -50,7 +50,44 @@
 #endif /* !G_ENABLE_DEBUG */
 
 
-/* VOID:STRING,STRING,STRING (nm-glib-marshal.list:1) */
+/* VOID:POINTER,POINTER (nm-glib-marshal.list:1) */
+void
+_nm_glib_marshal_VOID__POINTER_POINTER (GClosure     *closure,
+                                        GValue       *return_value G_GNUC_UNUSED,
+                                        guint         n_param_values,
+                                        const GValue *param_values,
+                                        gpointer      invocation_hint G_GNUC_UNUSED,
+                                        gpointer      marshal_data)
+{
+  typedef void (*GMarshalFunc_VOID__POINTER_POINTER) (gpointer     data1,
+                                                      gpointer     arg_1,
+                                                      gpointer     arg_2,
+                                                      gpointer     data2);
+  register GMarshalFunc_VOID__POINTER_POINTER callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+
+  g_return_if_fail (n_param_values == 3);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_VOID__POINTER_POINTER) (marshal_data ? marshal_data : cc->callback);
+
+  callback (data1,
+            g_marshal_value_peek_pointer (param_values + 1),
+            g_marshal_value_peek_pointer (param_values + 2),
+            data2);
+}
+
+/* VOID:STRING,STRING,STRING (nm-glib-marshal.list:2) */
 void
 _nm_glib_marshal_VOID__STRING_STRING_STRING (GClosure     *closure,
                                              GValue       *return_value G_GNUC_UNUSED,
@@ -89,7 +126,7 @@ _nm_glib_marshal_VOID__STRING_STRING_STRING (GClosure     *closure,
             data2);
 }
 
-/* VOID:UINT,UINT (nm-glib-marshal.list:2) */
+/* VOID:UINT,UINT (nm-glib-marshal.list:3) */
 void
 _nm_glib_marshal_VOID__UINT_UINT (GClosure     *closure,
                                   GValue       *return_value G_GNUC_UNUSED,
@@ -126,7 +163,7 @@ _nm_glib_marshal_VOID__UINT_UINT (GClosure     *closure,
             data2);
 }
 
-/* VOID:UINT,UINT,UINT (nm-glib-marshal.list:3) */
+/* VOID:UINT,UINT,UINT (nm-glib-marshal.list:4) */
 void
 _nm_glib_marshal_VOID__UINT_UINT_UINT (GClosure     *closure,
                                        GValue       *return_value G_GNUC_UNUSED,
diff --git a/libnm-glib/nm-glib-marshal.h b/libnm-glib/nm-glib-marshal.h
index 53d8c06b..01a96a87 100644
--- a/libnm-glib/nm-glib-marshal.h
+++ b/libnm-glib/nm-glib-marshal.h
@@ -6,7 +6,15 @@
 
 G_BEGIN_DECLS
 
-/* VOID:STRING,STRING,STRING (nm-glib-marshal.list:1) */
+/* VOID:POINTER,POINTER (nm-glib-marshal.list:1) */
+extern void _nm_glib_marshal_VOID__POINTER_POINTER (GClosure     *closure,
+                                                    GValue       *return_value,
+                                                    guint         n_param_values,
+                                                    const GValue *param_values,
+                                                    gpointer      invocation_hint,
+                                                    gpointer      marshal_data);
+
+/* VOID:STRING,STRING,STRING (nm-glib-marshal.list:2) */
 extern void _nm_glib_marshal_VOID__STRING_STRING_STRING (GClosure     *closure,
                                                          GValue       *return_value,
                                                          guint         n_param_values,
@@ -14,7 +22,7 @@ extern void _nm_glib_marshal_VOID__STRING_STRING_STRING (GClosure     *closure,
                                                          gpointer      invocation_hint,
                                                          gpointer      marshal_data);
 
-/* VOID:UINT,UINT (nm-glib-marshal.list:2) */
+/* VOID:UINT,UINT (nm-glib-marshal.list:3) */
 extern void _nm_glib_marshal_VOID__UINT_UINT (GClosure     *closure,
                                               GValue       *return_value,
                                               guint         n_param_values,
@@ -22,7 +30,7 @@ extern void _nm_glib_marshal_VOID__UINT_UINT (GClosure     *closure,
                                               gpointer      invocation_hint,
                                               gpointer      marshal_data);
 
-/* VOID:UINT,UINT,UINT (nm-glib-marshal.list:3) */
+/* VOID:UINT,UINT,UINT (nm-glib-marshal.list:4) */
 extern void _nm_glib_marshal_VOID__UINT_UINT_UINT (GClosure     *closure,
                                                    GValue       *return_value,
                                                    guint         n_param_values,
diff --git a/libnm-glib/nm-ip4-config.c b/libnm-glib/nm-ip4-config.c
index 56678545..862e7a01 100644
--- a/libnm-glib/nm-ip4-config.c
+++ b/libnm-glib/nm-ip4-config.c
@@ -187,6 +187,8 @@ get_property (GObject *object,
 	NMIP4Config *self = NM_IP4_CONFIG (object);
 	NMIP4ConfigPrivate *priv = NM_IP4_CONFIG_GET_PRIVATE (self);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_ADDRESSES:
 		nm_utils_ip4_addresses_to_gvalue (priv->addresses, value);
diff --git a/libnm-glib/nm-ip6-config.c b/libnm-glib/nm-ip6-config.c
index c9a26279..988dcd30 100644
--- a/libnm-glib/nm-ip6-config.c
+++ b/libnm-glib/nm-ip6-config.c
@@ -268,6 +268,8 @@ get_property (GObject *object,
 	NMIP6Config *self = NM_IP6_CONFIG (object);
 	NMIP6ConfigPrivate *priv = NM_IP6_CONFIG_GET_PRIVATE (self);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_ADDRESSES:
 		nm_utils_ip6_addresses_to_gvalue (priv->addresses, value);
diff --git a/libnm-glib/nm-object-cache.c b/libnm-glib/nm-object-cache.c
index 741f1291..2748b1df 100644
--- a/libnm-glib/nm-object-cache.c
+++ b/libnm-glib/nm-object-cache.c
@@ -64,3 +64,28 @@ _nm_object_cache_get (const char *path)
 	return object ? g_object_ref (object) : NULL;
 }
 
+void
+_nm_object_cache_clear (NMObject *except)
+{
+	GHashTableIter iter;
+	NMObject *obj;
+	const char *path;
+	char *foo;
+
+	_init_cache ();
+	g_hash_table_iter_init (&iter, cache);
+	while (g_hash_table_iter_next (&iter, (gpointer) &path, (gpointer) &obj)) {
+		if (obj != except) {
+			/* Remove the callback so that if the object isn't yet released
+			 * by a client, when it does finally get unrefed, it won't trigger
+			 * the cache removal for a new object with the same path as the
+			 * one being released.
+			 */
+			foo = g_object_steal_data (G_OBJECT (obj), "nm-object-cache-tag");
+			g_free (foo);
+
+			g_hash_table_iter_remove (&iter);
+		}
+	}
+}
+
diff --git a/libnm-glib/nm-object-cache.h b/libnm-glib/nm-object-cache.h
index 8386591c..84752134 100644
--- a/libnm-glib/nm-object-cache.h
+++ b/libnm-glib/nm-object-cache.h
@@ -32,6 +32,7 @@ G_BEGIN_DECLS
 /* Returns referenced object from the cache */
 NMObject *_nm_object_cache_get (const char *path);
 void _nm_object_cache_add (NMObject *object);
+void _nm_object_cache_clear (NMObject *except);
 
 G_END_DECLS
 
diff --git a/libnm-glib/nm-object.c b/libnm-glib/nm-object.c
index fc9d7f86..756bfa7a 100644
--- a/libnm-glib/nm-object.c
+++ b/libnm-glib/nm-object.c
@@ -18,7 +18,7 @@
  * Boston, MA 02110-1301 USA.
  *
  * Copyright (C) 2007 - 2008 Novell, Inc.
- * Copyright (C) 2007 - 2011 Red Hat, Inc.
+ * Copyright (C) 2007 - 2012 Red Hat, Inc.
  */
 
 #include <string.h>
@@ -31,6 +31,7 @@
 #include "nm-dbus-glib-types.h"
 #include "nm-glib-compat.h"
 #include "nm-types.h"
+#include "nm-glib-marshal.h"
 
 #define DEBUG 0
 
@@ -78,7 +79,7 @@ typedef struct {
 
 	GSList *notify_props;
 	guint32 notify_id;
-	gboolean inited, disposed;
+	gboolean inited;
 
 	GSList *reload_results;
 	guint reload_remaining;
@@ -93,6 +94,31 @@ enum {
 	LAST_PROP
 };
 
+enum {
+	OBJECT_CREATION_FAILED,
+
+	LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = { 0 };
+
+/**
+ * nm_object_error_quark:
+ *
+ * Registers an error quark for #NMObject if necessary.
+ *
+ * Returns: the error quark used for #NMObject errors.
+ **/
+GQuark
+nm_object_error_quark (void)
+{
+	static GQuark quark;
+
+	if (G_UNLIKELY (!quark))
+		quark = g_quark_from_static_string ("nm-object-error-quark");
+	return quark;
+}
+
 static void
 nm_object_init (NMObject *object)
 {
@@ -194,13 +220,6 @@ dispose (GObject *object)
 {
 	NMObjectPrivate *priv = NM_OBJECT_GET_PRIVATE (object);
 
-	if (priv->disposed) {
-		G_OBJECT_CLASS (nm_object_parent_class)->dispose (object);
-		return;
-	}
-
-	priv->disposed = TRUE;
-
 	if (priv->notify_id) {
 		g_source_remove (priv->notify_id);
 		priv->notify_id = 0;
@@ -208,12 +227,18 @@ dispose (GObject *object)
 
 	g_slist_foreach (priv->notify_props, (GFunc) g_free, NULL);
 	g_slist_free (priv->notify_props);
+	priv->notify_props = NULL;
 
 	g_slist_foreach (priv->property_interfaces, (GFunc) g_free, NULL);
 	g_slist_free (priv->property_interfaces);
+	priv->property_interfaces = NULL;
+
+	g_clear_object (&priv->properties_proxy);
 
-	g_object_unref (priv->properties_proxy);
-	dbus_g_connection_unref (priv->connection);
+	if (priv->connection) {
+		dbus_g_connection_unref (priv->connection);
+		priv->connection = NULL;
+	}
 
 	G_OBJECT_CLASS (nm_object_parent_class)->dispose (object);
 }
@@ -324,6 +349,29 @@ nm_object_class_init (NMObjectClass *nm_object_class)
 							  "DBus Object Path",
 							  NULL,
 							  G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+	/* signals */
+
+	/**
+	 * NMObject::object-creation-failed:
+	 * @master_object: the object that received the signal
+	 * @error: the error that occured while creating object
+	 * @failed_path: object path of the failed object
+	 *
+	 * Indicates that an error occured while creating an #NMObject object
+	 * during property handling of @master_object.
+	 *
+	 * Note: Be aware that the signal is private for libnm-glib's internal
+	 *       use.
+	 **/
+	signals[OBJECT_CREATION_FAILED] =
+		g_signal_new ("object-creation-failed",
+		              G_OBJECT_CLASS_TYPE (object_class),
+		              G_SIGNAL_RUN_FIRST,
+		              G_STRUCT_OFFSET (NMObjectClass, object_creation_failed),
+		              NULL, NULL,
+		              _nm_glib_marshal_VOID__POINTER_POINTER,
+		              G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_POINTER);
 }
 
 static void
@@ -464,7 +512,7 @@ _nm_object_create (GType type, DBusGConnection *connection, const char *path)
 	return object;
 }
 
-typedef void (*NMObjectCreateCallbackFunc) (GObject *, gpointer);
+typedef void (*NMObjectCreateCallbackFunc) (GObject *, const char *, gpointer);
 typedef struct {
 	DBusGConnection *connection;
 	char *path;
@@ -475,7 +523,7 @@ typedef struct {
 static void
 create_async_complete (GObject *object, NMObjectTypeAsyncData *async_data)
 {
-	async_data->callback (object, async_data->user_data);
+	async_data->callback (object, async_data->path, async_data->user_data);
 
 	g_free (async_data->path);
 	g_slice_free (NMObjectTypeAsyncData, async_data);
@@ -644,12 +692,23 @@ object_property_complete (ObjectCreatedData *odata)
 }
 
 static void
-object_created (GObject *obj, gpointer user_data)
+object_created (GObject *obj, const char *path, gpointer user_data)
 {
 	ObjectCreatedData *odata = user_data;
 
 	/* We assume that on error, the creator_func printed something */
 
+	if (obj == NULL && g_strcmp0 (path, "/") != 0 ) {
+		GError *error;
+		error = g_error_new (NM_OBJECT_ERROR,
+		                     NM_OBJECT_ERROR_OBJECT_CREATION_FAILURE,
+		                     "Creating object for path '%s' failed in libnm-glib.",
+		                     path);
+		/* Emit a signal about the error. */
+		g_signal_emit (odata->self, signals[OBJECT_CREATION_FAILED], 0, error, path);
+		g_error_free (error);
+	}
+
 	odata->objects[--odata->remaining] = obj;
 	if (!odata->remaining)
 		object_property_complete (odata);
@@ -676,18 +735,19 @@ handle_object_property (NMObject *self, const char *property_name, GValue *value
 		priv->reload_remaining++;
 
 	path = g_value_get_boxed (value);
+
 	if (!strcmp (path, "/")) {
-		object_created (NULL, odata);
+		object_created (NULL, path, odata);
 		return TRUE;
 	}
 
 	obj = G_OBJECT (_nm_object_cache_get (path));
 	if (obj) {
-		object_created (obj, odata);
+		object_created (obj, path, odata);
 		return TRUE;
 	} else if (synchronously) {
 		obj = _nm_object_create (pi->object_type, priv->connection, path);
-		object_created (obj, odata);
+		object_created (obj, path, odata);
 		return obj != NULL;
 	} else {
 		_nm_object_create_async (pi->object_type, priv->connection, path,
@@ -736,10 +796,10 @@ handle_object_array_property (NMObject *self, const char *property_name, GValue
 
 		obj = G_OBJECT (_nm_object_cache_get (path));
 		if (obj) {
-			object_created (obj, odata);
+			object_created (obj, path, odata);
 		} else if (synchronously) {
 			obj = _nm_object_create (pi->object_type, priv->connection, path);
-			object_created (obj, odata);
+			object_created (obj, path, odata);
 		} else {
 			_nm_object_create_async (pi->object_type, priv->connection, path,
 			                         object_created, odata);
@@ -844,8 +904,14 @@ process_properties_changed (NMObject *self, GHashTable *properties, gboolean syn
 		return;
 
 	g_hash_table_iter_init (&iter, properties);
-	while (g_hash_table_iter_next (&iter, &name, &value))
-		handle_property_changed (self, name, value, synchronously);
+	while (g_hash_table_iter_next (&iter, &name, &value)) {
+		if (value)
+			handle_property_changed (self, name, value, synchronously);
+		else {
+			g_warning ("%s:%d %s(): object %s property '%s' value is unexpectedly NULL",
+			           __FILE__, __LINE__, __func__, G_OBJECT_TYPE_NAME (self), (const char *) name);
+		}
+	}
 }
 
 static void
@@ -1086,7 +1152,7 @@ _nm_object_set_property (NMObject *object,
 }
 
 static void
-pseudo_property_object_created (GObject *obj, gpointer user_data)
+pseudo_property_object_created (GObject *obj, const char *path, gpointer user_data)
 {
 	PseudoPropertyInfo *ppi = user_data;
 
@@ -1112,7 +1178,7 @@ pseudo_property_added (DBusGProxy *proxy, const char *path, gpointer user_data)
 
 	obj = _nm_object_cache_get (path);
 	if (obj)
-		pseudo_property_object_created (G_OBJECT (obj), ppi);
+		pseudo_property_object_created (G_OBJECT (obj), path, ppi);
 	else {
 		_nm_object_create_async (ppi->pi.object_type, priv->connection, path,
 		                         pseudo_property_object_created, ppi);
diff --git a/libnm-glib/nm-object.h b/libnm-glib/nm-object.h
index 3f7b36cf..267c7148 100644
--- a/libnm-glib/nm-object.h
+++ b/libnm-glib/nm-object.h
@@ -18,7 +18,7 @@
  * Boston, MA 02110-1301 USA.
  *
  * Copyright (C) 2007 - 2008 Novell, Inc.
- * Copyright (C) 2007 - 2008 Red Hat, Inc.
+ * Copyright (C) 2007 - 2012 Red Hat, Inc.
  */
 
 #ifndef NM_OBJECT_H
@@ -37,6 +37,22 @@ G_BEGIN_DECLS
 #define NM_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NM_TYPE_OBJECT))
 #define NM_OBJECT_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_OBJECT, NMObjectClass))
 
+/**
+ * NMObjectError:
+ * @NM_OBJECT_ERROR_UNKNOWN: unknown or unclassified error
+ * @NM_OBJECT_ERROR_OBJECT_CREATION_FAILURE: an error ocured while creating an #NMObject
+ *
+ * Describes errors that may result from operations involving a #NMObject.
+ *
+ **/
+typedef enum {
+	NM_OBJECT_ERROR_UNKNOWN = 0,
+	NM_OBJECT_ERROR_OBJECT_CREATION_FAILURE,
+} NMObjectError;
+
+#define NM_OBJECT_ERROR nm_object_error_quark ()
+GQuark nm_object_error_quark (void);
+
 #define NM_OBJECT_DBUS_CONNECTION "dbus-connection"
 #define NM_OBJECT_DBUS_PATH "dbus-path"
 
@@ -47,6 +63,15 @@ typedef struct {
 typedef struct {
 	GObjectClass parent;
 
+	/* Signals */
+	/* The "object-creation-failed" signal is PRIVATE for libnm-glib and
+	 * is not meant for any external usage.  It indicates that an error
+	 * occured during creation of an object.
+	 */
+	void (*object_creation_failed) (NMObject *master_object,
+	                                GError *error,
+	                                char *failed_path);
+
 	/* Padding for future expansion */
 	void (*_reserved1) (void);
 	void (*_reserved2) (void);
diff --git a/libnm-glib/nm-remote-connection.c b/libnm-glib/nm-remote-connection.c
index c5e38643..e8b99dff 100644
--- a/libnm-glib/nm-remote-connection.c
+++ b/libnm-glib/nm-remote-connection.c
@@ -72,7 +72,6 @@ typedef struct {
 	GSList *calls;
 
 	gboolean visible;
-	gboolean disposed;
 } NMRemoteConnectionPrivate;
 
 #define NM_REMOTE_CONNECTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_REMOTE_CONNECTION, NMRemoteConnectionPrivate))
@@ -477,14 +476,14 @@ dispose (GObject *object)
 	NMRemoteConnection *self = NM_REMOTE_CONNECTION (object);
 	NMRemoteConnectionPrivate *priv = NM_REMOTE_CONNECTION_GET_PRIVATE (object);
 
-	if (!priv->disposed) {
-		priv->disposed = TRUE;
+	while (g_slist_length (priv->calls))
+		remote_call_complete (self, priv->calls->data);
 
-		while (g_slist_length (priv->calls))
-			remote_call_complete (self, priv->calls->data);
+	g_clear_object (&priv->proxy);
 
-		g_object_unref (priv->proxy);
+	if (priv->bus) {
 		dbus_g_connection_unref (priv->bus);
+		priv->bus = NULL;
 	}
 
 	G_OBJECT_CLASS (nm_remote_connection_parent_class)->dispose (object);
diff --git a/libnm-glib/nm-remote-connection.h b/libnm-glib/nm-remote-connection.h
index 809927ea..577e9a1b 100644
--- a/libnm-glib/nm-remote-connection.h
+++ b/libnm-glib/nm-remote-connection.h
@@ -63,14 +63,44 @@ typedef struct {
 	void (*_reserved6) (void);
 } NMRemoteConnectionClass;
 
+/**
+ * NMRemoteConnectionCommitFunc:
+ * @connection: the connection for which updates are to be committed
+ * @error: on failure, a descriptive error
+ * @user_data: user data passed to nm_remote_connection_commit_changes()
+ *
+ * Called when NetworkManager has committed outstanding changes to a connection
+ * to backing storage as a result of nm_remote_connection_commit_changes().
+ */
 typedef void (*NMRemoteConnectionCommitFunc) (NMRemoteConnection *connection,
                                               GError *error,
                                               gpointer user_data);
 
+/**
+ * NMRemoteConnectionDeleteFunc:
+ * @connection: the connection to be deleted
+ * @error: on failure, a descriptive error
+ * @user_data: user data passed to nm_remote_connection_delete()
+ *
+ * Called when NetworkManager has deleted a connection as a result of
+ * nm_remote_connection_delete().
+ */
 typedef void (*NMRemoteConnectionDeleteFunc) (NMRemoteConnection *connection,
                                               GError *error,
                                               gpointer user_data);
 
+/**
+ * NMRemoteConnectionGetSecretsFunc:
+ * @connection: the connection for which secrets were requested
+ * @secrets: (element-type utf8 GLib.HashTable): on success, a hash table of
+ *  hash tables, with each inner hash mapping a setting property to a #GValue
+ *  containing that property's value
+ * @error: on failure, a descriptive error
+ * @user_data: user data passed to nm_remote_connection_get_secrets()
+ *
+ * Called when NetworkManager returns secrets in response to a request for
+ * secrets via nm_remote_connection_get_secrets().
+ */
 typedef void (*NMRemoteConnectionGetSecretsFunc) (NMRemoteConnection *connection,
                                                   GHashTable *secrets,
                                                   GError *error,
diff --git a/libnm-glib/nm-remote-settings.c b/libnm-glib/nm-remote-settings.c
index 8f213f9e..19d865c0 100644
--- a/libnm-glib/nm-remote-settings.c
+++ b/libnm-glib/nm-remote-settings.c
@@ -61,8 +61,6 @@ typedef struct {
 	DBusGProxy *dbus_proxy;
 
 	guint fetch_id;
-
-	gboolean disposed;
 } NMRemoteSettingsPrivate;
 
 enum {
@@ -109,7 +107,7 @@ static void
 _nm_remote_settings_ensure_inited (NMRemoteSettings *self)
 {
 	NMRemoteSettingsPrivate *priv = NM_REMOTE_SETTINGS_GET_PRIVATE (self);
-	GError *error;
+	GError *error = NULL;
 
 	if (!priv->inited) {
 		if (!g_initable_init (G_INITABLE (self), NULL, &error)) {
@@ -258,6 +256,43 @@ connection_removed_cb (NMRemoteConnection *remote, gpointer user_data)
 	g_hash_table_remove (priv->pending, path);
 }
 
+static void connection_visible_cb (NMRemoteConnection *remote,
+                                   gboolean visible,
+                                   gpointer user_data);
+
+/* Takes a reference to the connection when adding to 'to' */
+static void
+move_connection (NMRemoteSettings *self,
+                 NMRemoteConnection *remote,
+                 GHashTable *from,
+                 GHashTable *to)
+{
+	const char *path = nm_connection_get_path (NM_CONNECTION (remote));
+
+	g_hash_table_insert (to, g_strdup (path), g_object_ref (remote));
+	if (from)
+		g_hash_table_remove (from, path);
+
+	/* Setup connection signals since removing from 'from' clears them, but
+	 * also the first time the connection is added to a hash if 'from' is NULL.
+	 */
+	if (!g_signal_handler_find (remote, G_SIGNAL_MATCH_FUNC,
+	                            0, 0, NULL, connection_removed_cb, NULL)) {
+		g_signal_connect (remote,
+		                  NM_REMOTE_CONNECTION_REMOVED,
+		                  G_CALLBACK (connection_removed_cb),
+		                  self);
+	}
+
+	if (!g_signal_handler_find (remote, G_SIGNAL_MATCH_FUNC,
+	                            0, 0, NULL, connection_visible_cb, NULL)) {
+		g_signal_connect (remote,
+		                  "visible",
+		                  G_CALLBACK (connection_visible_cb),
+		                  self);
+	}
+}
+
 static void
 connection_visible_cb (NMRemoteConnection *remote,
                        gboolean visible,
@@ -278,16 +313,14 @@ connection_visible_cb (NMRemoteConnection *remote,
 		/* Connection visible to this user again */
 		if (g_hash_table_lookup (priv->pending, path)) {
 			/* Move connection from pending to visible hash; emit for clients */
-			g_hash_table_insert (priv->connections, g_strdup (path), g_object_ref (remote));
-			g_hash_table_remove (priv->pending, path);
+			move_connection (self, remote, priv->pending, priv->connections);
 			g_signal_emit (self, signals[NEW_CONNECTION], 0, remote);
 		}
 	} else {
 		/* Connection now invisible to this user */
 		if (g_hash_table_lookup (priv->connections, path)) {
 			/* Move connection to pending hash and wait for it to become visible again */
-			g_hash_table_insert (priv->pending, g_strdup (path), g_object_ref (remote));
-			g_hash_table_remove (priv->connections, path);
+			move_connection (self, remote, priv->connections, priv->pending);
 
 			/* Signal to clients that the connection is gone; but we have to
 			 * block our connection removed handler so we don't destroy
@@ -308,17 +341,14 @@ connection_inited (GObject *source, GAsyncResult *result, gpointer user_data)
 	NMRemoteSettingsPrivate *priv = NM_REMOTE_SETTINGS_GET_PRIVATE (self);
 	AddConnectionInfo *addinfo;
 	const char *path;
-	GError *error = NULL;
-	gboolean remove_from_pending = TRUE;
+	GError *error = NULL, *local;
 
 	path = nm_connection_get_path (NM_CONNECTION (remote));
 	addinfo = add_connection_info_find (self, remote);
 
 	if (g_async_initable_init_finish (G_ASYNC_INITABLE (remote), result, &error)) {
-		/* ref it when adding to ->connections, since removing it from ->pending
-		 * will unref it.
-		 */
-		g_hash_table_insert (priv->connections, g_strdup (path), g_object_ref (remote));
+		/* Connection is initialized and visible; expose it to clients */
+		move_connection (self, remote, priv->pending, priv->connections);
 
 		/* If there's a pending AddConnection request, complete that here before
 		 * signaling new-connection.
@@ -331,23 +361,23 @@ connection_inited (GObject *source, GAsyncResult *result, gpointer user_data)
 		 */
 		g_signal_emit (self, signals[NEW_CONNECTION], 0, remote);
 	} else {
-		if (dbus_g_error_has_name (error, "org.freedesktop.NetworkManager.Settings.PermissionDenied")) {
-			/* Connection doesn't exist, or isn't visible to this user */
-			remove_from_pending = FALSE;
-		}
-		g_error_free (error);
-
 		if (addinfo) {
-			error = g_error_new_literal (NM_REMOTE_SETTINGS_ERROR,
+			local = g_error_new_literal (NM_REMOTE_SETTINGS_ERROR,
 			                             NM_REMOTE_SETTINGS_ERROR_CONNECTION_UNAVAILABLE,
 			                             "Connection not visible or not available");
-			add_connection_info_complete (self, addinfo, error);
-			g_error_free (error);
+			add_connection_info_complete (self, addinfo, local);
+			g_error_free (local);
 		}
-	}
 
-	if (remove_from_pending)
-		g_hash_table_remove (priv->pending, path);
+		/* PermissionDenied means the connection isn't visible to this user, so
+		 * keep it in priv->pending to be notified later of visibility changes.
+		 * Otherwise forget it.
+		 */
+		if (!dbus_g_error_has_name (error, "org.freedesktop.NetworkManager.Settings.PermissionDenied"))
+			g_hash_table_remove (priv->pending, path);
+
+		g_error_free (error);
+	}
 
 	/* Let listeners know that all connections have been found */
 	priv->init_left--;
@@ -373,14 +403,6 @@ new_connection_cb (DBusGProxy *proxy, const char *path, gpointer user_data)
 	/* Create a new connection object for it */
 	connection = nm_remote_connection_new (priv->bus, path);
 	if (connection) {
-		g_signal_connect (connection, NM_REMOTE_CONNECTION_REMOVED,
-		                  G_CALLBACK (connection_removed_cb),
-		                  self);
-
-		g_signal_connect (connection, "visible",
-		                  G_CALLBACK (connection_visible_cb),
-		                  self);
-
 		g_async_initable_init_async (G_ASYNC_INITABLE (connection),
 		                             G_PRIORITY_DEFAULT, NULL,
 		                             connection_inited, self);
@@ -389,7 +411,8 @@ new_connection_cb (DBusGProxy *proxy, const char *path, gpointer user_data)
 		 * it's settings asynchronously over D-Bus.  The connection isn't
 		 * really valid until it has all its settings, so hide it until it does.
 		 */
-		g_hash_table_insert (priv->pending, g_strdup (path), connection);
+		move_connection (self, connection, NULL, priv->pending);
+		g_object_unref (connection); /* move_connection() takes a ref */
 	}
 	return connection;
 }
@@ -796,14 +819,25 @@ nm_remote_settings_new_finish (GAsyncResult *result, GError **error)
 		return g_object_ref (g_simple_async_result_get_op_res_gpointer (simple));
 }
 
+static void
+forget_connection (gpointer user_data)
+{
+	NMRemoteConnection *remote = NM_REMOTE_CONNECTION (user_data);
+
+	g_signal_handlers_disconnect_matched (remote, G_SIGNAL_MATCH_FUNC,
+	                                      0, 0, NULL, connection_removed_cb, NULL);
+	g_signal_handlers_disconnect_matched (remote, G_SIGNAL_MATCH_FUNC,
+	                                      0, 0, NULL, connection_visible_cb, NULL);
+	g_object_unref (remote);
+}
 
 static void
 nm_remote_settings_init (NMRemoteSettings *self)
 {
 	NMRemoteSettingsPrivate *priv = NM_REMOTE_SETTINGS_GET_PRIVATE (self);
 
-	priv->connections = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
-	priv->pending = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
+	priv->connections = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, forget_connection);
+	priv->pending = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, forget_connection);
 }
 
 static void
@@ -1007,29 +1041,35 @@ dispose (GObject *object)
 	NMRemoteSettings *self = NM_REMOTE_SETTINGS (object);
 	NMRemoteSettingsPrivate *priv = NM_REMOTE_SETTINGS_GET_PRIVATE (self);
 
-	if (priv->disposed)
-		return;
-
-	priv->disposed = TRUE;
-
-	if (priv->fetch_id)
+	if (priv->fetch_id) {
 		g_source_remove (priv->fetch_id);
+		priv->fetch_id = 0;
+	}
 
 	while (g_slist_length (priv->add_list))
 		add_connection_info_dispose (self, (AddConnectionInfo *) priv->add_list->data);
 
-	if (priv->connections)
+	if (priv->connections) {
 		g_hash_table_destroy (priv->connections);
+		priv->connections = NULL;
+	}
 
-	if (priv->pending)
+	if (priv->pending) {
 		g_hash_table_destroy (priv->pending);
+		priv->pending = NULL;
+	}
 
 	g_free (priv->hostname);
+	priv->hostname = NULL;
 
-	g_object_unref (priv->dbus_proxy);
-	g_object_unref (priv->proxy);
-	g_object_unref (priv->props_proxy);
-	dbus_g_connection_unref (priv->bus);
+	g_clear_object (&priv->dbus_proxy);
+	g_clear_object (&priv->proxy);
+	g_clear_object (&priv->props_proxy);
+
+	if (priv->bus) {
+		dbus_g_connection_unref (priv->bus);
+		priv->bus = NULL;
+	}
 
 	G_OBJECT_CLASS (nm_remote_settings_parent_class)->dispose (object);
 }
@@ -1061,6 +1101,8 @@ get_property (GObject *object, guint prop_id,
 {
 	NMRemoteSettingsPrivate *priv = NM_REMOTE_SETTINGS_GET_PRIVATE (object);
 
+	_nm_remote_settings_ensure_inited (NM_REMOTE_SETTINGS (object));
+
 	switch (prop_id) {
 	case PROP_BUS:
 		g_value_set_boxed (value, priv->bus);
diff --git a/libnm-glib/nm-secret-agent.c b/libnm-glib/nm-secret-agent.c
index 19f55c0e..ae048d80 100644
--- a/libnm-glib/nm-secret-agent.c
+++ b/libnm-glib/nm-secret-agent.c
@@ -21,9 +21,12 @@
 #include <config.h>
 #include <ctype.h>
 #include <string.h>
-#include <NetworkManager.h>
 #include <dbus/dbus-glib-lowlevel.h>
 
+#include "nm-glib-compat.h"
+
+#include <NetworkManager.h>
+
 #include "nm-secret-agent.h"
 #include "nm-glib-enum-types.h"
 #include "nm-glib-marshal.h"
@@ -79,8 +82,6 @@ typedef struct {
 	gboolean auto_register;
 	gboolean suppress_auto;
 	gboolean auto_register_id;
-
-	gboolean disposed;
 } NMSecretAgentPrivate;
 
 enum {
@@ -878,29 +879,28 @@ dispose (GObject *object)
 	NMSecretAgent *self = NM_SECRET_AGENT (object);
 	NMSecretAgentPrivate *priv = NM_SECRET_AGENT_GET_PRIVATE (self);
 
-	if (!priv->disposed) {
-		priv->disposed = TRUE;
+	if (priv->registered)
+		nm_secret_agent_unregister (self);
 
-		if (priv->registered)
-			nm_secret_agent_unregister (self);
-
-		if (priv->auto_register_id)
-			g_source_remove (priv->auto_register_id);
-
-		g_free (priv->identifier);
-		g_free (priv->nm_owner);
+	if (priv->auto_register_id) {
+		g_source_remove (priv->auto_register_id);
+		priv->auto_register_id = 0;
+	}
 
-		while (priv->pending_gets)
-			get_secrets_info_finalize (self, priv->pending_gets->data);
+	g_free (priv->identifier);
+	priv->identifier = NULL;
+	g_free (priv->nm_owner);
+	priv->nm_owner = NULL;
 
-		if (priv->dbus_proxy)
-			g_object_unref (priv->dbus_proxy);
+	while (priv->pending_gets)
+		get_secrets_info_finalize (self, priv->pending_gets->data);
 
-		if (priv->manager_proxy)
-			g_object_unref (priv->manager_proxy);
+	g_clear_object (&priv->dbus_proxy);
+	g_clear_object (&priv->manager_proxy);
 
-		if (priv->bus)
-			dbus_g_connection_unref (priv->bus);
+	if (priv->bus) {
+		dbus_g_connection_unref (priv->bus);
+		priv->bus = NULL;
 	}
 
 	G_OBJECT_CLASS (nm_secret_agent_parent_class)->dispose (object);
diff --git a/libnm-glib/nm-secret-agent.h b/libnm-glib/nm-secret-agent.h
index c367f916..f96a39c1 100644
--- a/libnm-glib/nm-secret-agent.h
+++ b/libnm-glib/nm-secret-agent.h
@@ -50,13 +50,18 @@ typedef enum {
  * secrets from the user.  This flag signals that NetworkManager thinks any
  * existing secrets are invalid or wrong.  This flag implies that interaction
  * is allowed.
+ * @NM_SECRET_AGENT_GET_SECRETS_FLAG_USER_REQUESTED: set if the request was
+ * initiated by user-requested action via the D-Bus interface, as opposed to
+ * automatically initiated by NetworkManager in response to (for example) scan
+ * results or carrier changes.
  *
  * #NMSecretAgentGetSecretsFlags values modify the behavior of a GetSecrets request.
  */
 typedef enum {
 	NM_SECRET_AGENT_GET_SECRETS_FLAG_NONE = 0x0,
 	NM_SECRET_AGENT_GET_SECRETS_FLAG_ALLOW_INTERACTION = 0x1,
-	NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW = 0x2
+	NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW = 0x2,
+	NM_SECRET_AGENT_GET_SECRETS_FLAG_USER_REQUESTED = 0x4
 } NMSecretAgentGetSecretsFlags;
 
 #define NM_TYPE_SECRET_AGENT            (nm_secret_agent_get_type ())
diff --git a/libnm-glib/nm-vpn-connection.c b/libnm-glib/nm-vpn-connection.c
index 53934216..1fe59e5e 100644
--- a/libnm-glib/nm-vpn-connection.c
+++ b/libnm-glib/nm-vpn-connection.c
@@ -211,6 +211,8 @@ get_property (GObject *object,
 {
 	NMVPNConnection *self = NM_VPN_CONNECTION (object);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_VPN_STATE:
 		g_value_set_uint (value, nm_vpn_connection_get_vpn_state (self));
diff --git a/libnm-glib/nm-vpn-plugin-ui-interface.h b/libnm-glib/nm-vpn-plugin-ui-interface.h
index 93c5659b..80a5b82e 100644
--- a/libnm-glib/nm-vpn-plugin-ui-interface.h
+++ b/libnm-glib/nm-vpn-plugin-ui-interface.h
@@ -52,6 +52,7 @@ NMVpnPluginUiInterface *nm_vpn_plugin_ui_factory (GError **error);
 #define NM_VPN_PLUGIN_UI_CAPABILITY_NONE     0x00
 #define NM_VPN_PLUGIN_UI_CAPABILITY_IMPORT   0x01
 #define NM_VPN_PLUGIN_UI_CAPABILITY_EXPORT   0x02
+#define NM_VPN_PLUGIN_UI_CAPABILITY_IPV6     0x04
 
 /* Short display name of the VPN plugin */
 #define NM_VPN_PLUGIN_UI_INTERFACE_NAME "name"
diff --git a/libnm-glib/nm-vpn-plugin-utils.c b/libnm-glib/nm-vpn-plugin-utils.c
index 8234a919..b9838df9 100644
--- a/libnm-glib/nm-vpn-plugin-utils.c
+++ b/libnm-glib/nm-vpn-plugin-utils.c
@@ -24,7 +24,9 @@
 #include <string.h>
 
 #include "nm-vpn-plugin-utils.h"
+#include "nm-vpn-plugin.h"
 #include "nm-setting-private.h"
+#include "nm-dbus-glib-types.h"
 
 #define DATA_KEY_TAG "DATA_KEY="
 #define DATA_VAL_TAG "DATA_VAL="
@@ -185,4 +187,3 @@ nm_vpn_plugin_utils_get_secret_flags (GHashTable *data,
 	g_free (flag_name);
 	return success;
 }
-
diff --git a/libnm-glib/nm-vpn-plugin.c b/libnm-glib/nm-vpn-plugin.c
index 23685384..dd4d7b3a 100644
--- a/libnm-glib/nm-vpn-plugin.c
+++ b/libnm-glib/nm-vpn-plugin.c
@@ -30,24 +30,32 @@
 #include "nm-dbus-glib-types.h"
 
 static gboolean impl_vpn_plugin_connect    (NMVPNPlugin *plugin,
-								    GHashTable *connection,
-								    GError **err);
+                                            GHashTable *connection,
+                                            GError **err);
 
 static gboolean impl_vpn_plugin_need_secrets (NMVPNPlugin *plugin,
-								    GHashTable *connection,
-								    char **service_name,
-								    GError **err);
+                                              GHashTable *connection,
+                                              char **service_name,
+                                              GError **err);
 
 static gboolean impl_vpn_plugin_disconnect (NMVPNPlugin *plugin,
-								    GError **err);
+                                            GError **err);
+
+static gboolean impl_vpn_plugin_set_config (NMVPNPlugin *plugin,
+                                            GHashTable *config,
+                                            GError **err);
 
 static gboolean impl_vpn_plugin_set_ip4_config (NMVPNPlugin *plugin,
-									   GHashTable *config,
-									   GError **err);
+                                                GHashTable *config,
+                                                GError **err);
+
+static gboolean impl_vpn_plugin_set_ip6_config (NMVPNPlugin *plugin,
+                                                GHashTable *config,
+                                                GError **err);
 
 static gboolean impl_vpn_plugin_set_failure (NMVPNPlugin *plugin,
-									char *reason,
-									GError **err);
+                                             char *reason,
+                                             GError **err);
 
 #include "nm-vpn-plugin-glue.h"
 
@@ -63,20 +71,26 @@ typedef struct {
 	DBusGConnection *connection;
 	char *dbus_service_name;
 
-	/* GObject-y stuff */
-	gboolean disposed;
-
 	/* Temporary stuff */
 	guint connect_timer;
 	guint quit_timer;
 	guint fail_stop_id;
+
+	gboolean got_config;
+	gboolean has_ip4, got_ip4;
+	gboolean has_ip6, got_ip6;
+
+	/* Config stuff copied from config to ip4config */
+	GValue banner, tundev, gateway, mtu;
 } NMVPNPluginPrivate;
 
 #define NM_VPN_PLUGIN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_VPN_PLUGIN, NMVPNPluginPrivate))
 
 enum {
 	STATE_CHANGED,
+	CONFIG,
 	IP4_CONFIG,
+	IP6_CONFIG,
 	LOGIN_BANNER,
 	FAILURE,
 	QUIT,
@@ -111,7 +125,7 @@ nm_vpn_plugin_error_quark (void)
 
 static void
 nm_vpn_plugin_set_connection (NMVPNPlugin *plugin,
-						DBusGConnection *connection)
+                              DBusGConnection *connection)
 {
 	NMVPNPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin);
 
@@ -146,7 +160,7 @@ nm_vpn_plugin_get_state (NMVPNPlugin *plugin)
 
 void
 nm_vpn_plugin_set_state (NMVPNPlugin *plugin,
-					NMVPNServiceState state)
+                         NMVPNServiceState state)
 {
 	NMVPNPluginPrivate *priv;
 
@@ -161,7 +175,7 @@ nm_vpn_plugin_set_state (NMVPNPlugin *plugin,
 
 void
 nm_vpn_plugin_set_login_banner (NMVPNPlugin *plugin,
-						  const char *banner)
+                                const char *banner)
 {
 	g_return_if_fail (NM_IS_VPN_PLUGIN (plugin));
 	g_return_if_fail (banner != NULL);
@@ -171,7 +185,7 @@ nm_vpn_plugin_set_login_banner (NMVPNPlugin *plugin,
 
 void
 nm_vpn_plugin_failure (NMVPNPlugin *plugin,
-				   NMVPNPluginFailure reason)
+                       NMVPNPluginFailure reason)
 {
 	g_return_if_fail (NM_IS_VPN_PLUGIN (plugin));
 
@@ -190,17 +204,17 @@ nm_vpn_plugin_disconnect (NMVPNPlugin *plugin, GError **err)
 	switch (state) {
 	case NM_VPN_SERVICE_STATE_STOPPING:
 		g_set_error (err,
-				   NM_VPN_PLUGIN_ERROR,
-				   NM_VPN_PLUGIN_ERROR_STOPPING_IN_PROGRESS,
-				   "%s",
-				   "Could not process the request because the VPN connection is already being stopped.");
+		             NM_VPN_PLUGIN_ERROR,
+		             NM_VPN_PLUGIN_ERROR_STOPPING_IN_PROGRESS,
+		             "%s",
+		             "Could not process the request because the VPN connection is already being stopped.");
 		break;
 	case NM_VPN_SERVICE_STATE_STOPPED:
 		g_set_error (err,
-				   NM_VPN_PLUGIN_ERROR,
-				   NM_VPN_PLUGIN_ERROR_ALREADY_STOPPED,
-				   "%s",
-				   "Could not process the request because no VPN connection was active.");
+		             NM_VPN_PLUGIN_ERROR,
+		             NM_VPN_PLUGIN_ERROR_ALREADY_STOPPED,
+		             "%s",
+		             "Could not process the request because no VPN connection was active.");
 		break;
 	case NM_VPN_SERVICE_STATE_STARTING:
 	case NM_VPN_SERVICE_STATE_STARTED:
@@ -264,8 +278,8 @@ fail_stop (gpointer data)
 
 static gboolean
 nm_vpn_plugin_connect (NMVPNPlugin *plugin,
-				   NMConnection *connection,
-				   GError **err)
+                       NMConnection *connection,
+                       GError **err)
 {
 	NMVPNPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin);
 	gboolean ret = FALSE;
@@ -277,24 +291,24 @@ nm_vpn_plugin_connect (NMVPNPlugin *plugin,
 	switch (state) {
 	case NM_VPN_SERVICE_STATE_STARTING:
 		g_set_error (err,
-				   NM_VPN_PLUGIN_ERROR,
-				   NM_VPN_PLUGIN_ERROR_STARTING_IN_PROGRESS,
-				   "%s",
-				   "Could not process the request because the VPN connection is already being started.");
+		             NM_VPN_PLUGIN_ERROR,
+		             NM_VPN_PLUGIN_ERROR_STARTING_IN_PROGRESS,
+		             "%s",
+		             "Could not process the request because the VPN connection is already being started.");
 		break;
 	case NM_VPN_SERVICE_STATE_STARTED:
 		g_set_error (err,
-				   NM_VPN_PLUGIN_ERROR,
-				   NM_VPN_PLUGIN_ERROR_ALREADY_STARTED,
-				   "%s",
-				   "Could not process the request because a VPN connection was already active.");
+		             NM_VPN_PLUGIN_ERROR,
+		             NM_VPN_PLUGIN_ERROR_ALREADY_STARTED,
+		             "%s",
+		             "Could not process the request because a VPN connection was already active.");
 		break;
 	case NM_VPN_SERVICE_STATE_STOPPING:
 		g_set_error (err,
-				   NM_VPN_PLUGIN_ERROR,
-				   NM_VPN_PLUGIN_ERROR_STOPPING_IN_PROGRESS,
-				   "%s",
-				   "Could not process the request because the VPN connection is being stopped.");
+		             NM_VPN_PLUGIN_ERROR,
+		             NM_VPN_PLUGIN_ERROR_STOPPING_IN_PROGRESS,
+		             "%s",
+		             "Could not process the request because the VPN connection is being stopped.");
 		break;
 	case NM_VPN_SERVICE_STATE_STOPPED:
 	case NM_VPN_SERVICE_STATE_INIT:
@@ -319,22 +333,124 @@ nm_vpn_plugin_connect (NMVPNPlugin *plugin,
 }
 
 void
+nm_vpn_plugin_set_config (NMVPNPlugin *plugin,
+                          GHashTable *config)
+{
+	NMVPNPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin);
+	GValue *val;
+
+	g_return_if_fail (NM_IS_VPN_PLUGIN (plugin));
+	g_return_if_fail (config != NULL);
+
+	priv->got_config = TRUE;
+
+	val = g_hash_table_lookup (config, NM_VPN_PLUGIN_CONFIG_HAS_IP4);
+	if (val && g_value_get_boolean (val))
+		priv->has_ip4 = TRUE;
+	val = g_hash_table_lookup (config, NM_VPN_PLUGIN_CONFIG_HAS_IP6);
+	if (val && g_value_get_boolean (val))
+		priv->has_ip6 = TRUE;
+
+	g_warn_if_fail (priv->has_ip4 || priv->has_ip6);
+
+	/* Record the items that need to also be inserted into the
+	 * ip4config, for compatibility with older daemons.
+	 */
+	val = g_hash_table_lookup (config, NM_VPN_PLUGIN_CONFIG_BANNER);
+	if (val) {
+		g_value_init (&priv->banner, G_VALUE_TYPE (val));
+		g_value_copy (val, &priv->banner);
+	}
+	val = g_hash_table_lookup (config, NM_VPN_PLUGIN_CONFIG_TUNDEV);
+	if (val) {
+		g_value_init (&priv->tundev, G_VALUE_TYPE (val));
+		g_value_copy (val, &priv->tundev);
+	}
+	val = g_hash_table_lookup (config, NM_VPN_PLUGIN_CONFIG_EXT_GATEWAY);
+	if (val) {
+		g_value_init (&priv->gateway, G_VALUE_TYPE (val));
+		g_value_copy (val, &priv->gateway);
+	}
+	val = g_hash_table_lookup (config, NM_VPN_PLUGIN_CONFIG_MTU);
+	if (val) {
+		g_value_init (&priv->mtu, G_VALUE_TYPE (val));
+		g_value_copy (val, &priv->mtu);
+	}
+
+	g_signal_emit (plugin, signals[CONFIG], 0, config);
+}
+
+void
 nm_vpn_plugin_set_ip4_config (NMVPNPlugin *plugin,
-						GHashTable *ip4_config)
+                              GHashTable *ip4_config)
 {
+	NMVPNPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin);
+	GHashTable *combined_config;
+	GHashTableIter iter;
+	gpointer key, value;
+
 	g_return_if_fail (NM_IS_VPN_PLUGIN (plugin));
 	g_return_if_fail (ip4_config != NULL);
 
-	g_signal_emit (plugin, signals[IP4_CONFIG], 0, ip4_config);
+	priv->got_ip4 = TRUE;
+
+	/* Old plugins won't send the "config" signal and thus can't send
+	 * NM_VPN_PLUGIN_CONFIG_HAS_IP4 either.  But since they don't support IPv6,
+	 * we can safely assume that, if we don't receive a "config" signal but do
+	 * receive an "ip4-config" signal, the old plugin supports IPv4.
+	 */
+	if (!priv->got_config)
+		priv->has_ip4 = TRUE;
+
+	/* Older NetworkManager daemons expect all config info to be in
+	 * the ip4 config, so they won't even notice the "config" signal
+	 * being emitted. So just copy all of that data into the ip4
+	 * config too.
+	 */
+	combined_config = g_hash_table_new (g_str_hash, g_str_equal);
+	g_hash_table_iter_init (&iter, ip4_config);
+	while (g_hash_table_iter_next (&iter, &key, &value))
+		g_hash_table_insert (combined_config, key, value);
+
+	if (G_VALUE_TYPE (&priv->banner) != G_TYPE_INVALID)
+		g_hash_table_insert (combined_config, NM_VPN_PLUGIN_IP4_CONFIG_BANNER, &priv->banner);
+	if (G_VALUE_TYPE (&priv->tundev) != G_TYPE_INVALID)
+		g_hash_table_insert (combined_config, NM_VPN_PLUGIN_IP4_CONFIG_TUNDEV, &priv->tundev);
+	if (G_VALUE_TYPE (&priv->gateway) != G_TYPE_INVALID)
+		g_hash_table_insert (combined_config, NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY, &priv->gateway);
+	if (G_VALUE_TYPE (&priv->mtu) != G_TYPE_INVALID)
+		g_hash_table_insert (combined_config, NM_VPN_PLUGIN_IP4_CONFIG_MTU, &priv->mtu);
+
+	g_signal_emit (plugin, signals[IP4_CONFIG], 0, combined_config);
+	g_hash_table_destroy (combined_config);
+
+	if (   priv->has_ip4 == priv->got_ip4
+	    && priv->has_ip6 == priv->got_ip6)
+		nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STARTED);
+}
 
-	nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STARTED);
+void
+nm_vpn_plugin_set_ip6_config (NMVPNPlugin *plugin,
+                              GHashTable *ip6_config)
+{
+	NMVPNPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin);
+
+	g_return_if_fail (NM_IS_VPN_PLUGIN (plugin));
+	g_return_if_fail (ip6_config != NULL);
+
+	priv->got_ip6 = TRUE;
+	g_signal_emit (plugin, signals[IP6_CONFIG], 0, ip6_config);
+
+	if (   priv->has_ip4 == priv->got_ip4
+	    && priv->has_ip6 == priv->got_ip6)
+		nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STARTED);
 }
 
 
 static gboolean
 impl_vpn_plugin_connect (NMVPNPlugin *plugin,
-					GHashTable *properties,
-					GError **error)
+                         GHashTable *properties,
+                         GError **error)
 {
 	NMConnection *connection;
 	gboolean success = FALSE;
@@ -410,15 +526,25 @@ out:
 
 static gboolean
 impl_vpn_plugin_disconnect (NMVPNPlugin *plugin,
-					   GError **err)
+                            GError **err)
 {
 	return nm_vpn_plugin_disconnect (plugin, err);
 }
 
 static gboolean
+impl_vpn_plugin_set_config (NMVPNPlugin *plugin,
+                            GHashTable *config,
+                            GError **err)
+{
+	nm_vpn_plugin_set_config (plugin, config);
+
+	return TRUE;
+}
+
+static gboolean
 impl_vpn_plugin_set_ip4_config (NMVPNPlugin *plugin,
-						  GHashTable *config,
-						  GError **err)
+                                GHashTable *config,
+                                GError **err)
 {
 	nm_vpn_plugin_set_ip4_config (plugin, config);
 
@@ -426,9 +552,19 @@ impl_vpn_plugin_set_ip4_config (NMVPNPlugin *plugin,
 }
 
 static gboolean
+impl_vpn_plugin_set_ip6_config (NMVPNPlugin *plugin,
+                                GHashTable *config,
+                                GError **err)
+{
+	nm_vpn_plugin_set_ip6_config (plugin, config);
+
+	return TRUE;
+}
+
+static gboolean
 impl_vpn_plugin_set_failure (NMVPNPlugin *plugin,
-					    char *reason,
-					    GError **err)
+                             char *reason,
+                             GError **err)
 {
 	nm_vpn_plugin_failure (plugin, NM_VPN_PLUGIN_FAILURE_BAD_IP_CONFIG);
 
@@ -461,7 +597,7 @@ setup_unix_signal_handler (void)
 
 static void
 one_plugin_destroyed (gpointer data,
-				  GObject *object)
+                      GObject *object)
 {
 	active_plugins = g_slist_remove (active_plugins, object);
 }
@@ -477,8 +613,8 @@ nm_vpn_plugin_init (NMVPNPlugin *plugin)
 
 static GObject *
 constructor (GType type,
-		   guint n_construct_params,
-		   GObjectConstructParam *construct_params)
+             guint n_construct_params,
+             GObjectConstructParam *construct_params)
 {
 	GObject *object;
 	NMVPNPlugin *plugin;
@@ -503,16 +639,16 @@ constructor (GType type,
 		goto err;
 
 	proxy = dbus_g_proxy_new_for_name (connection,
-								"org.freedesktop.DBus",
-								"/org/freedesktop/DBus",
-								"org.freedesktop.DBus");
+	                                   "org.freedesktop.DBus",
+	                                   "/org/freedesktop/DBus",
+	                                   "org.freedesktop.DBus");
 
 	if (!dbus_g_proxy_call (proxy, "RequestName", &err,
-					    G_TYPE_STRING, priv->dbus_service_name,
-					    G_TYPE_UINT, 0,
-					    G_TYPE_INVALID,
-					    G_TYPE_UINT, &request_name_result,
-					    G_TYPE_INVALID)) {
+	                        G_TYPE_STRING, priv->dbus_service_name,
+	                        G_TYPE_UINT, 0,
+	                        G_TYPE_INVALID,
+	                        G_TYPE_UINT, &request_name_result,
+	                        G_TYPE_INVALID)) {
 		g_object_unref (proxy);
 		goto err;
 	}
@@ -520,8 +656,8 @@ constructor (GType type,
 	g_object_unref (proxy);
 
 	dbus_g_connection_register_g_object (connection,
-								  NM_VPN_DBUS_PLUGIN_PATH,
-								  object);
+	                                     NM_VPN_DBUS_PLUGIN_PATH,
+	                                     object);
 
 	plugin = NM_VPN_PLUGIN (object);
 
@@ -544,7 +680,7 @@ constructor (GType type,
 
 static void
 set_property (GObject *object, guint prop_id,
-		    const GValue *value, GParamSpec *pspec)
+              const GValue *value, GParamSpec *pspec)
 {
 	NMVPNPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (object);
 
@@ -555,7 +691,7 @@ set_property (GObject *object, guint prop_id,
 		break;
 	case PROP_STATE:
 		nm_vpn_plugin_set_state (NM_VPN_PLUGIN (object),
-							(NMVPNServiceState) g_value_get_uint (value));
+		                         (NMVPNServiceState) g_value_get_uint (value));
 		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -590,15 +726,10 @@ dispose (GObject *object)
 	NMVPNServiceState state;
 	GError *err = NULL;
 
-	if (priv->disposed) {
-		G_OBJECT_CLASS (nm_vpn_plugin_parent_class)->dispose (object);
-		return;
-	}
-
-	priv->disposed = TRUE;
-
-	if (priv->fail_stop_id)
+	if (priv->fail_stop_id) {
 		g_source_remove (priv->fail_stop_id);
+		priv->fail_stop_id = 0;
+	}
 
 	state = nm_vpn_plugin_get_state (plugin);
 
@@ -623,6 +754,15 @@ finalize (GObject *object)
 	nm_vpn_plugin_set_connection (plugin, NULL);
 	g_free (priv->dbus_service_name);
 
+	if (G_IS_VALUE (&priv->banner))
+		g_value_unset (&priv->banner);
+	if (G_IS_VALUE (&priv->tundev))
+		g_value_unset (&priv->tundev);
+	if (G_IS_VALUE (&priv->gateway))
+		g_value_unset (&priv->gateway);
+	if (G_IS_VALUE (&priv->mtu))
+		g_value_unset (&priv->mtu);
+
 	G_OBJECT_CLASS (nm_vpn_plugin_parent_class)->finalize (object);
 }
 
@@ -692,7 +832,7 @@ nm_vpn_plugin_class_init (NMVPNPluginClass *plugin_class)
 	g_type_class_add_private (object_class, sizeof (NMVPNPluginPrivate));
 
 	dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (plugin_class),
-							   &dbus_glib_nm_vpn_plugin_object_info);
+	                                 &dbus_glib_nm_vpn_plugin_object_info);
 
 	/* virtual methods */
 	object_class->constructor  = constructor;
@@ -707,75 +847,95 @@ nm_vpn_plugin_class_init (NMVPNPluginClass *plugin_class)
 	g_object_class_install_property
 		(object_class, PROP_DBUS_SERVICE_NAME,
 		 g_param_spec_string (NM_VPN_PLUGIN_DBUS_SERVICE_NAME,
-						  "DBus service name",
-						  "DBus service name",
-						  NULL,
-						  G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+		                      "DBus service name",
+		                      "DBus service name",
+		                      NULL,
+		                      G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
 
 	g_object_class_install_property
 		(object_class, PROP_STATE,
 		 g_param_spec_uint (NM_VPN_PLUGIN_STATE,
-						"State",
-						"Current VPN service state",
-						NM_VPN_SERVICE_STATE_UNKNOWN,
-						NM_VPN_SERVICE_STATE_STOPPED,
-						NM_VPN_SERVICE_STATE_INIT,
-						G_PARAM_READWRITE));
+		                    "State",
+		                    "Current VPN service state",
+		                    NM_VPN_SERVICE_STATE_UNKNOWN,
+		                    NM_VPN_SERVICE_STATE_STOPPED,
+		                    NM_VPN_SERVICE_STATE_INIT,
+		                    G_PARAM_READWRITE));
 
 	/* signals */
 	signals[STATE_CHANGED] =
 		g_signal_new ("state-changed",
-				    G_OBJECT_CLASS_TYPE (object_class),
-				    G_SIGNAL_RUN_FIRST,
-				    G_STRUCT_OFFSET (NMVPNPluginClass, state_changed),
-				    NULL, NULL,
-				    g_cclosure_marshal_VOID__UINT,
-				    G_TYPE_NONE, 1,
-				    G_TYPE_UINT);
+		              G_OBJECT_CLASS_TYPE (object_class),
+		              G_SIGNAL_RUN_FIRST,
+		              G_STRUCT_OFFSET (NMVPNPluginClass, state_changed),
+		              NULL, NULL,
+		              g_cclosure_marshal_VOID__UINT,
+		              G_TYPE_NONE, 1,
+		              G_TYPE_UINT);
+
+	signals[CONFIG] =
+		g_signal_new ("config",
+		              G_OBJECT_CLASS_TYPE (object_class),
+		              G_SIGNAL_RUN_FIRST,
+		              G_STRUCT_OFFSET (NMVPNPluginClass, config),
+		              NULL, NULL,
+		              g_cclosure_marshal_VOID__BOXED,
+		              G_TYPE_NONE, 1,
+		              DBUS_TYPE_G_MAP_OF_VARIANT);
 
 	signals[IP4_CONFIG] =
 		g_signal_new ("ip4-config",
-				    G_OBJECT_CLASS_TYPE (object_class),
-				    G_SIGNAL_RUN_FIRST,
-				    G_STRUCT_OFFSET (NMVPNPluginClass, ip4_config),
-				    NULL, NULL,
-				    g_cclosure_marshal_VOID__BOXED,
-				    G_TYPE_NONE, 1,
-				    DBUS_TYPE_G_MAP_OF_VARIANT);
+		              G_OBJECT_CLASS_TYPE (object_class),
+		              G_SIGNAL_RUN_FIRST,
+		              G_STRUCT_OFFSET (NMVPNPluginClass, ip4_config),
+		              NULL, NULL,
+		              g_cclosure_marshal_VOID__BOXED,
+		              G_TYPE_NONE, 1,
+		              DBUS_TYPE_G_MAP_OF_VARIANT);
+
+	signals[IP6_CONFIG] =
+		g_signal_new ("ip6-config",
+		              G_OBJECT_CLASS_TYPE (object_class),
+		              G_SIGNAL_RUN_FIRST,
+		              G_STRUCT_OFFSET (NMVPNPluginClass, ip6_config),
+		              NULL, NULL,
+		              g_cclosure_marshal_VOID__BOXED,
+		              G_TYPE_NONE, 1,
+		              DBUS_TYPE_G_MAP_OF_VARIANT);
 
 	signals[LOGIN_BANNER] =
 		g_signal_new ("login-banner",
-				    G_OBJECT_CLASS_TYPE (object_class),
-				    G_SIGNAL_RUN_FIRST,
-				    G_STRUCT_OFFSET (NMVPNPluginClass, login_banner),
-				    NULL, NULL,
-				    g_cclosure_marshal_VOID__STRING,
-				    G_TYPE_NONE, 1,
-				    G_TYPE_STRING);
+		              G_OBJECT_CLASS_TYPE (object_class),
+		              G_SIGNAL_RUN_FIRST,
+		              G_STRUCT_OFFSET (NMVPNPluginClass, login_banner),
+		              NULL, NULL,
+		              g_cclosure_marshal_VOID__STRING,
+		              G_TYPE_NONE, 1,
+		              G_TYPE_STRING);
 
 	signals[FAILURE] =
 		g_signal_new ("failure",
-				    G_OBJECT_CLASS_TYPE (object_class),
-				    G_SIGNAL_RUN_FIRST,
-				    G_STRUCT_OFFSET (NMVPNPluginClass, failure),
-				    NULL, NULL,
-				    g_cclosure_marshal_VOID__UINT,
-				    G_TYPE_NONE, 1,
-				    G_TYPE_UINT);
+		              G_OBJECT_CLASS_TYPE (object_class),
+		              G_SIGNAL_RUN_FIRST,
+		              G_STRUCT_OFFSET (NMVPNPluginClass, failure),
+		              NULL, NULL,
+		              g_cclosure_marshal_VOID__UINT,
+		              G_TYPE_NONE, 1,
+		              G_TYPE_UINT);
 
 	signals[QUIT] =
 		g_signal_new ("quit",
-				    G_OBJECT_CLASS_TYPE (object_class),
-				    G_SIGNAL_RUN_FIRST,
-				    G_STRUCT_OFFSET (NMVPNPluginClass, quit),
-				    NULL, NULL,
-				    g_cclosure_marshal_VOID__VOID,
-				    G_TYPE_NONE, 0,
-				    G_TYPE_NONE);
+		              G_OBJECT_CLASS_TYPE (object_class),
+		              G_SIGNAL_RUN_FIRST,
+		              G_STRUCT_OFFSET (NMVPNPluginClass, quit),
+		              NULL, NULL,
+		              g_cclosure_marshal_VOID__VOID,
+		              G_TYPE_NONE, 0,
+		              G_TYPE_NONE);
 
 	dbus_g_error_domain_register (NM_VPN_PLUGIN_ERROR,
-							NULL,
-							NM_TYPE_VPN_PLUGIN_ERROR);
+	                              NULL,
+	                              NM_TYPE_VPN_PLUGIN_ERROR);
 
 	setup_unix_signal_handler ();
 }
diff --git a/libnm-glib/nm-vpn-plugin.h b/libnm-glib/nm-vpn-plugin.h
index 15cbf686..cdd55c15 100644
--- a/libnm-glib/nm-vpn-plugin.h
+++ b/libnm-glib/nm-vpn-plugin.h
@@ -64,40 +64,44 @@ typedef struct {
 	GObjectClass parent;
 
 	/* virtual methods */
-	gboolean (*connect)    (NMVPNPlugin   *plugin,
-					    NMConnection  *connection,
-					    GError       **err);
+	gboolean (*connect)      (NMVPNPlugin   *plugin,
+	                          NMConnection  *connection,
+	                          GError       **err);
 
 	gboolean (*need_secrets) (NMVPNPlugin *plugin,
-	                              NMConnection *connection,
-	                              char **setting_name,
-	                              GError **error);
+	                          NMConnection *connection,
+	                          char **setting_name,
+	                          GError **error);
 
-	gboolean (*disconnect) (NMVPNPlugin   *plugin,
-					    GError       **err);
+	gboolean (*disconnect)   (NMVPNPlugin   *plugin,
+	                          GError       **err);
 
 	/* Signals */
 	void (*state_changed)  (NMVPNPlugin *plugin,
-					    NMVPNServiceState state);
+	                        NMVPNServiceState state);
 
 	void (*ip4_config)     (NMVPNPlugin *plugin,
-					    GHashTable  *ip4_config);
+	                        GHashTable  *ip4_config);
 
 	void (*login_banner)   (NMVPNPlugin *plugin,
-					    const char *banner);
+	                        const char *banner);
 
 	void (*failure)        (NMVPNPlugin *plugin,
-					    NMVPNPluginFailure reason);
+	                        NMVPNPluginFailure reason);
 
 	void (*quit)           (NMVPNPlugin *plugin);
 
+	void (*config)         (NMVPNPlugin *plugin,
+	                        GHashTable  *config);
+
+	void (*ip6_config)     (NMVPNPlugin *plugin,
+	                        GHashTable  *config);
+
 	/* Padding for future expansion */
 	void (*_reserved1) (void);
 	void (*_reserved2) (void);
 	void (*_reserved3) (void);
 	void (*_reserved4) (void);
-	void (*_reserved5) (void);
-	void (*_reserved6) (void);
 } NMVPNPluginClass;
 
 GType  nm_vpn_plugin_get_type       (void);
@@ -107,19 +111,25 @@ GType  nm_vpn_plugin_error_get_type (void);
 DBusGConnection   *nm_vpn_plugin_get_connection (NMVPNPlugin *plugin);
 NMVPNServiceState  nm_vpn_plugin_get_state      (NMVPNPlugin *plugin);
 void               nm_vpn_plugin_set_state      (NMVPNPlugin *plugin,
-									    NMVPNServiceState state);
+                                                 NMVPNServiceState state);
 
 void               nm_vpn_plugin_set_login_banner (NMVPNPlugin *plugin,
-										 const char *banner);
+                                                   const char *banner);
 
 void               nm_vpn_plugin_failure        (NMVPNPlugin *plugin,
-									    NMVPNPluginFailure reason);
+                                                 NMVPNPluginFailure reason);
+
+void               nm_vpn_plugin_set_config     (NMVPNPlugin *plugin,
+                                                 GHashTable *config);
 
 void               nm_vpn_plugin_set_ip4_config (NMVPNPlugin *plugin,
-									    GHashTable *ip4_config);
+                                                 GHashTable *ip4_config);
+
+void               nm_vpn_plugin_set_ip6_config (NMVPNPlugin *plugin,
+                                                 GHashTable *ip6_config);
 
 gboolean           nm_vpn_plugin_disconnect     (NMVPNPlugin *plugin,
-									    GError **err);
+                                                 GError **err);
 
 G_END_DECLS
 
diff --git a/libnm-glib/nm-wimax-nsp.c b/libnm-glib/nm-wimax-nsp.c
index c3b222df..ce1048be 100644
--- a/libnm-glib/nm-wimax-nsp.c
+++ b/libnm-glib/nm-wimax-nsp.c
@@ -23,6 +23,8 @@
 #include <config.h>
 #include <string.h>
 
+#include "nm-glib-compat.h"
+
 #include <nm-connection.h>
 #include <nm-setting-connection.h>
 #include <nm-setting-wimax.h>
@@ -37,7 +39,6 @@ G_DEFINE_TYPE (NMWimaxNsp, nm_wimax_nsp, NM_TYPE_OBJECT)
 #define NM_WIMAX_NSP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_WIMAX_NSP, NMWimaxNspPrivate))
 
 typedef struct {
-	gboolean disposed;
 	DBusGProxy *proxy;
 
 	char *name;
@@ -217,14 +218,7 @@ dispose (GObject *object)
 {
 	NMWimaxNspPrivate *priv = NM_WIMAX_NSP_GET_PRIVATE (object);
 
-	if (priv->disposed) {
-		G_OBJECT_CLASS (nm_wimax_nsp_parent_class)->dispose (object);
-		return;
-	}
-
-	priv->disposed = TRUE;
-
-	g_object_unref (priv->proxy);
+	g_clear_object (&priv->proxy);
 
 	G_OBJECT_CLASS (nm_wimax_nsp_parent_class)->dispose (object);
 }
@@ -247,6 +241,8 @@ get_property (GObject *object,
 {
 	NMWimaxNsp *nsp = NM_WIMAX_NSP (object);
 
+	_nm_object_ensure_inited (NM_OBJECT (object));
+
 	switch (prop_id) {
 	case PROP_NAME:
 		g_value_set_string (value, nm_wimax_nsp_get_name (nsp));
diff --git a/libnm-glib/tests/Makefile.in b/libnm-glib/tests/Makefile.in
index ad4d1c44..a9840c03 100644
--- a/libnm-glib/tests/Makefile.in
+++ b/libnm-glib/tests/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -170,6 +170,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -265,6 +269,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -303,6 +310,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/libnm-util/Makefile.am b/libnm-util/Makefile.am
index 4d3afc82..76acd99f 100644
--- a/libnm-util/Makefile.am
+++ b/libnm-util/Makefile.am
@@ -16,6 +16,7 @@ libnm_util_include_HEADERS = 		\
 	nm-connection.h			\
 	nm-setting.h			\
 	nm-setting-8021x.h		\
+	nm-setting-adsl.h		\
 	nm-setting-bluetooth.h		\
 	nm-setting-bond.h		\
 	nm-setting-connection.h		\
@@ -49,6 +50,7 @@ libnm_util_la_csources = \
 	nm-param-spec-specialized.c	\
 	nm-setting.c			\
 	nm-setting-8021x.c		\
+	nm-setting-adsl.c		\
 	nm-setting-bluetooth.c		\
 	nm-setting-bond.c		\
 	nm-setting-connection.c		\
@@ -147,10 +149,11 @@ introspection_sources = $(libnm_util_include_HEADERS) $(libnm_util_la_csources)
 NetworkManager-1.0.gir: libnm-util.la
 NetworkManager_1_0_gir_INCLUDES = GObject-2.0 DBusGLib-1.0
 NetworkManager_1_0_gir_PACKAGES = gobject-2.0 dbus-glib-1
+NetworkManager_1_0_gir_EXPORT_PACKAGES = libnm-util
 NetworkManager_1_0_gir_CFLAGS = $(INCLUDES) -I$(top_srcdir)/libnm-util
 NetworkManager_1_0_gir_LIBS = libnm-util.la
 NetworkManager_1_0_gir_FILES = $(introspection_sources)
-NetworkManager_1_0_gir_SCANNERFLAGS = --warn-all --identifier-prefix=NM --symbol-prefix=nm_
+NetworkManager_1_0_gir_SCANNERFLAGS = --warn-all --identifier-prefix=NM --symbol-prefix=nm
 INTROSPECTION_GIRS += NetworkManager-1.0.gir
 
 girdir = $(datadir)/gir-1.0
diff --git a/libnm-util/Makefile.in b/libnm-util/Makefile.in
index e17da224..dcff0c62 100644
--- a/libnm-util/Makefile.in
+++ b/libnm-util/Makefile.in
@@ -64,7 +64,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -105,7 +105,7 @@ libnm_util_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3)
 am__libnm_util_la_SOURCES_DIST = crypto.c nm-connection.c \
 	nm-param-spec-specialized.c nm-setting.c nm-setting-8021x.c \
-	nm-setting-bluetooth.c nm-setting-bond.c \
+	nm-setting-adsl.c nm-setting-bluetooth.c nm-setting-bond.c \
 	nm-setting-connection.c nm-setting-infiniband.c \
 	nm-setting-ip4-config.c nm-setting-vlan.c \
 	nm-setting-ip6-config.c nm-setting-ppp.c nm-setting-pppoe.c \
@@ -118,6 +118,7 @@ am__libnm_util_la_SOURCES_DIST = crypto.c nm-connection.c \
 am__objects_1 = libnm_util_la-crypto.lo libnm_util_la-nm-connection.lo \
 	libnm_util_la-nm-param-spec-specialized.lo \
 	libnm_util_la-nm-setting.lo libnm_util_la-nm-setting-8021x.lo \
+	libnm_util_la-nm-setting-adsl.lo \
 	libnm_util_la-nm-setting-bluetooth.lo \
 	libnm_util_la-nm-setting-bond.lo \
 	libnm_util_la-nm-setting-connection.lo \
@@ -302,6 +303,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -397,6 +402,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -435,6 +443,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -464,6 +474,7 @@ libnm_util_include_HEADERS = \
 	nm-connection.h			\
 	nm-setting.h			\
 	nm-setting-8021x.h		\
+	nm-setting-adsl.h		\
 	nm-setting-bluetooth.h		\
 	nm-setting-bond.h		\
 	nm-setting-connection.h		\
@@ -497,6 +508,7 @@ libnm_util_la_csources = \
 	nm-param-spec-specialized.c	\
 	nm-setting.c			\
 	nm-setting-8021x.c		\
+	nm-setting-adsl.c		\
 	nm-setting-bluetooth.c		\
 	nm-setting-bond.c		\
 	nm-setting-connection.c		\
@@ -554,10 +566,11 @@ INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
 @HAVE_INTROSPECTION_TRUE@introspection_sources = $(libnm_util_include_HEADERS) $(libnm_util_la_csources) $(top_srcdir)/include/NetworkManager.h $(top_srcdir)/include/NetworkManagerVPN.h
 @HAVE_INTROSPECTION_TRUE@NetworkManager_1_0_gir_INCLUDES = GObject-2.0 DBusGLib-1.0
 @HAVE_INTROSPECTION_TRUE@NetworkManager_1_0_gir_PACKAGES = gobject-2.0 dbus-glib-1
+@HAVE_INTROSPECTION_TRUE@NetworkManager_1_0_gir_EXPORT_PACKAGES = libnm-util
 @HAVE_INTROSPECTION_TRUE@NetworkManager_1_0_gir_CFLAGS = $(INCLUDES) -I$(top_srcdir)/libnm-util
 @HAVE_INTROSPECTION_TRUE@NetworkManager_1_0_gir_LIBS = libnm-util.la
 @HAVE_INTROSPECTION_TRUE@NetworkManager_1_0_gir_FILES = $(introspection_sources)
-@HAVE_INTROSPECTION_TRUE@NetworkManager_1_0_gir_SCANNERFLAGS = --warn-all --identifier-prefix=NM --symbol-prefix=nm_
+@HAVE_INTROSPECTION_TRUE@NetworkManager_1_0_gir_SCANNERFLAGS = --warn-all --identifier-prefix=NM --symbol-prefix=nm
 @HAVE_INTROSPECTION_TRUE@girdir = $(datadir)/gir-1.0
 @HAVE_INTROSPECTION_TRUE@gir_DATA = $(INTROSPECTION_GIRS)
 @HAVE_INTROSPECTION_TRUE@typelibdir = $(libdir)/girepository-1.0
@@ -656,6 +669,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_util_la-nm-connection.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_util_la-nm-param-spec-specialized.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_util_la-nm-setting-8021x.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_util_la-nm-setting-adsl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_util_la-nm-setting-bluetooth.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_util_la-nm-setting-bond.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_util_la-nm-setting-cdma.Plo@am__quote@
@@ -748,6 +762,14 @@ libnm_util_la-nm-setting-8021x.lo: nm-setting-8021x.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_util_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnm_util_la-nm-setting-8021x.lo `test -f 'nm-setting-8021x.c' || echo '$(srcdir)/'`nm-setting-8021x.c
 
+libnm_util_la-nm-setting-adsl.lo: nm-setting-adsl.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_util_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnm_util_la-nm-setting-adsl.lo -MD -MP -MF $(DEPDIR)/libnm_util_la-nm-setting-adsl.Tpo -c -o libnm_util_la-nm-setting-adsl.lo `test -f 'nm-setting-adsl.c' || echo '$(srcdir)/'`nm-setting-adsl.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnm_util_la-nm-setting-adsl.Tpo $(DEPDIR)/libnm_util_la-nm-setting-adsl.Plo
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='nm-setting-adsl.c' object='libnm_util_la-nm-setting-adsl.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_util_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnm_util_la-nm-setting-adsl.lo `test -f 'nm-setting-adsl.c' || echo '$(srcdir)/'`nm-setting-adsl.c
+
 libnm_util_la-nm-setting-bluetooth.lo: nm-setting-bluetooth.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_util_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnm_util_la-nm-setting-bluetooth.lo -MD -MP -MF $(DEPDIR)/libnm_util_la-nm-setting-bluetooth.Tpo -c -o libnm_util_la-nm-setting-bluetooth.lo `test -f 'nm-setting-bluetooth.c' || echo '$(srcdir)/'`nm-setting-bluetooth.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnm_util_la-nm-setting-bluetooth.Tpo $(DEPDIR)/libnm_util_la-nm-setting-bluetooth.Plo
diff --git a/libnm-util/libnm-util.ver b/libnm-util/libnm-util.ver
index eb3f1f32..9eec05cf 100644
--- a/libnm-util/libnm-util.ver
+++ b/libnm-util/libnm-util.ver
@@ -15,6 +15,7 @@ global:
 	nm_connection_get_path;
 	nm_connection_get_setting;
 	nm_connection_get_setting_802_1x;
+	nm_connection_get_setting_adsl;
 	nm_connection_get_setting_bluetooth;
 	nm_connection_get_setting_bond;
 	nm_connection_get_setting_by_name;
@@ -171,6 +172,17 @@ global:
 	nm_setting_802_1x_set_phase2_client_cert;
 	nm_setting_802_1x_set_phase2_private_key;
 	nm_setting_802_1x_set_private_key;
+	nm_setting_adsl_error_get_type;
+	nm_setting_adsl_error_quark;
+	nm_setting_adsl_get_encapsulation;
+	nm_setting_adsl_get_password;
+	nm_setting_adsl_get_password_flags;
+	nm_setting_adsl_get_protocol;
+	nm_setting_adsl_get_type;
+	nm_setting_adsl_get_username;
+	nm_setting_adsl_get_vci;
+	nm_setting_adsl_get_vpi;
+	nm_setting_adsl_new;
 	nm_setting_bluetooth_error_get_type;
 	nm_setting_bluetooth_error_quark;
 	nm_setting_bluetooth_get_bdaddr;
@@ -435,6 +447,7 @@ global:
 	nm_setting_wireless_get_bssid;
 	nm_setting_wireless_get_channel;
 	nm_setting_wireless_get_cloned_mac_address;
+	nm_setting_wireless_get_hidden;
 	nm_setting_wireless_get_mac_address;
 	nm_setting_wireless_get_mac_address_blacklist;
 	nm_setting_wireless_get_mode;
diff --git a/libnm-util/nm-connection.c b/libnm-util/nm-connection.c
index 13099998..80a4996d 100644
--- a/libnm-util/nm-connection.c
+++ b/libnm-util/nm-connection.c
@@ -41,6 +41,7 @@
 #include "nm-setting-pppoe.h"
 #include "nm-setting-wimax.h"
 #include "nm-setting-wired.h"
+#include "nm-setting-adsl.h"
 #include "nm-setting-wireless.h"
 #include "nm-setting-wireless-security.h"
 #include "nm-setting-serial.h"
@@ -117,7 +118,7 @@ static guint signals[LAST_SIGNAL] = { 0 };
 
 static GHashTable *registered_settings = NULL;
 
-#define DEFAULT_MAP_SIZE 19
+#define DEFAULT_MAP_SIZE 20
 
 static struct SettingInfo {
 	const char *name;
@@ -259,6 +260,11 @@ register_default_settings (void)
 	                      NM_SETTING_PPPOE_ERROR,
 	                      3, TRUE);
 
+	register_one_setting (NM_SETTING_ADSL_SETTING_NAME,
+	                      NM_TYPE_SETTING_ADSL,
+	                      NM_SETTING_ADSL_ERROR,
+	                      3, TRUE);
+
 	register_one_setting (NM_SETTING_802_1X_SETTING_NAME,
 	                      NM_TYPE_SETTING_802_1X,
 	                      NM_SETTING_802_1X_ERROR,
@@ -1625,6 +1631,23 @@ nm_connection_get_setting_wired (NMConnection *connection)
 }
 
 /**
+ * nm_connection_get_setting_adsl:
+ * @connection: the #NMConnection
+ *
+ * A shortcut to return any #NMSettingAdsl the connection might contain.
+ *
+ * Returns: (transfer none): an #NMSettingAdsl if the connection contains one, otherwise NULL
+ **/
+NMSettingAdsl *
+nm_connection_get_setting_adsl (NMConnection *connection)
+{
+	g_return_val_if_fail (connection != NULL, NULL);
+	g_return_val_if_fail (NM_IS_CONNECTION (connection), NULL);
+
+	return (NMSettingAdsl *) nm_connection_get_setting (connection, NM_TYPE_SETTING_ADSL);
+}
+
+/**
  * nm_connection_get_setting_wireless:
  * @connection: the #NMConnection
  *
diff --git a/libnm-util/nm-connection.h b/libnm-util/nm-connection.h
index 6df74f57..ca29d157 100644
--- a/libnm-util/nm-connection.h
+++ b/libnm-util/nm-connection.h
@@ -46,6 +46,7 @@
 #include <nm-setting-vpn.h>
 #include <nm-setting-wimax.h>
 #include <nm-setting-wired.h>
+#include <nm-setting-adsl.h>
 #include <nm-setting-wireless.h>
 #include <nm-setting-wireless-security.h>
 #include <nm-setting-vlan.h>
@@ -199,6 +200,7 @@ NMSettingPPPOE *           nm_connection_get_setting_pppoe             (NMConnec
 NMSettingSerial *          nm_connection_get_setting_serial            (NMConnection *connection);
 NMSettingVPN *             nm_connection_get_setting_vpn               (NMConnection *connection);
 NMSettingWimax *           nm_connection_get_setting_wimax             (NMConnection *connection);
+NMSettingAdsl *            nm_connection_get_setting_adsl              (NMConnection *connection);
 NMSettingWired *           nm_connection_get_setting_wired             (NMConnection *connection);
 NMSettingWireless *        nm_connection_get_setting_wireless          (NMConnection *connection);
 NMSettingWirelessSecurity *nm_connection_get_setting_wireless_security (NMConnection *connection);
diff --git a/libnm-util/nm-setting-adsl.c b/libnm-util/nm-setting-adsl.c
new file mode 100644
index 00000000..9e31c423
--- /dev/null
+++ b/libnm-util/nm-setting-adsl.c
@@ -0,0 +1,461 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+
+/*
+ * Dan Williams <dcbw@redhat.com>
+ * Hicham HAOUARI <hicham.haouari@gmail.com>
+ * Pantelis Koukousoulas <pktoss@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * (C) Copyright 2007 - 2008 Red Hat, Inc.
+ */
+
+#include "nm-setting-adsl.h"
+#include "nm-setting-ppp.h"
+#include "nm-setting-private.h"
+#include "nm-utils.h"
+#include <string.h>
+
+/**
+ * SECTION:nm-setting-adsl
+ * @short_description: Describes ADSL-based properties
+ * @include: nm-setting-adsl.h
+ *
+ * The #NMSettingAdsl object is a #NMSetting subclass that describes
+ * properties of ADSL connections.
+ */
+
+/**
+ * nm_setting_adsl_error_quark:
+ *
+ * Registers an error quark for #NMSettingAdsl if necessary.
+ *
+ * Returns: the error quark used for #NMSettingAdsl errors.
+ **/
+GQuark
+nm_setting_adsl_error_quark (void)
+{
+	static GQuark quark;
+
+	if (G_UNLIKELY (!quark))
+		quark = g_quark_from_static_string ("nm-setting-adsl-error-quark");
+	return quark;
+}
+
+G_DEFINE_TYPE (NMSettingAdsl, nm_setting_adsl, NM_TYPE_SETTING)
+
+#define NM_SETTING_ADSL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_ADSL, NMSettingAdslPrivate))
+
+typedef struct {
+	char *  username;
+	char *  password;
+	NMSettingSecretFlags password_flags;
+	char *  protocol;
+	char *  encapsulation;
+	guint32 vpi;
+	guint32 vci;
+} NMSettingAdslPrivate;
+
+enum {
+	PROP_0,
+	PROP_USERNAME,
+	PROP_PASSWORD,
+	PROP_PASSWORD_FLAGS,
+	PROP_PROTOCOL,
+	PROP_ENCAPSULATION,
+	PROP_VPI,
+	PROP_VCI,
+
+	LAST_PROP
+};
+
+/**
+ * nm_setting_adsl_new:
+ *
+ * Creates a new #NMSettingAdsl object with default values.
+ *
+ * Returns: the new empty #NMSettingAdsl object
+ **/
+NMSetting *
+nm_setting_adsl_new (void)
+{
+	return (NMSetting *) g_object_new (NM_TYPE_SETTING_ADSL, NULL);
+}
+
+/**
+ * nm_setting_adsl_get_username:
+ * @setting: the #NMSettingAdsl
+ *
+ * Returns: the #NMSettingAdsl:username property of the setting
+ **/
+const char *
+nm_setting_adsl_get_username (NMSettingAdsl *setting)
+{
+	g_return_val_if_fail (NM_IS_SETTING_ADSL (setting), NULL);
+
+	return NM_SETTING_ADSL_GET_PRIVATE (setting)->username;
+}
+
+/**
+ * nm_setting_adsl_get_password:
+ * @setting: the #NMSettingAdsl
+ *
+ * Returns: the #NMSettingAdsl:password property of the setting
+ **/
+const char *
+nm_setting_adsl_get_password (NMSettingAdsl *setting)
+{
+	g_return_val_if_fail (NM_IS_SETTING_ADSL (setting), NULL);
+
+	return NM_SETTING_ADSL_GET_PRIVATE (setting)->password;
+}
+
+/**
+ * nm_setting_adsl_get_password_flags:
+ * @setting: the #NMSettingAdsl
+ *
+ * Returns: the #NMSettingSecretFlags pertaining to the #NMSettingAdsl:password
+ **/
+NMSettingSecretFlags
+nm_setting_adsl_get_password_flags (NMSettingAdsl *setting)
+{
+	g_return_val_if_fail (NM_IS_SETTING_ADSL (setting), NM_SETTING_SECRET_FLAG_NONE);
+
+	return NM_SETTING_ADSL_GET_PRIVATE (setting)->password_flags;
+}
+
+/**
+ * nm_setting_adsl_get_protocol:
+ * @setting: the #NMSettingAdsl
+ *
+ * Returns: the #NMSettingAdsl:protocol property of the setting
+ **/
+const char *
+nm_setting_adsl_get_protocol (NMSettingAdsl *setting)
+{
+	g_return_val_if_fail (NM_IS_SETTING_ADSL (setting), NULL);
+
+	return NM_SETTING_ADSL_GET_PRIVATE (setting)->protocol;
+}
+
+/**
+ * nm_setting_adsl_get_encapsulation:
+ * @setting: the #NMSettingAdsl
+ *
+ * Returns: the #NMSettingAdsl:encapsulation property of the setting
+ **/
+const char *
+nm_setting_adsl_get_encapsulation (NMSettingAdsl *setting)
+{
+	g_return_val_if_fail (NM_IS_SETTING_ADSL (setting), NULL);
+
+	return NM_SETTING_ADSL_GET_PRIVATE (setting)->encapsulation;
+}
+
+/**
+ * nm_setting_adsl_get_vpi:
+ * @setting: the #NMSettingAdsl
+ *
+ * Returns: the #NMSettingAdsl:vpi property of the setting
+ **/
+guint32
+nm_setting_adsl_get_vpi (NMSettingAdsl *setting)
+{
+	g_return_val_if_fail (NM_IS_SETTING_ADSL (setting), 0);
+
+	return NM_SETTING_ADSL_GET_PRIVATE (setting)->vpi;
+}
+
+/**
+ * nm_setting_adsl_get_vci:
+ * @setting: the #NMSettingAdsl
+ *
+ * Returns: the #NMSettingAdsl:vci property of the setting
+ **/
+guint32
+nm_setting_adsl_get_vci (NMSettingAdsl *setting)
+{
+	g_return_val_if_fail (NM_IS_SETTING_ADSL (setting), 0);
+
+	return NM_SETTING_ADSL_GET_PRIVATE (setting)->vci;
+}
+
+static gboolean
+verify (NMSetting *setting, GSList *all_settings, GError **error)
+{
+	NMSettingAdslPrivate *priv = NM_SETTING_ADSL_GET_PRIVATE (setting);
+
+	if (!priv->username) {
+		g_set_error (error,
+		             NM_SETTING_ADSL_ERROR,
+		             NM_SETTING_ADSL_ERROR_MISSING_PROPERTY,
+		             NM_SETTING_ADSL_USERNAME);
+		return FALSE;
+	} else if (!strlen (priv->username)) {
+		g_set_error (error,
+		             NM_SETTING_ADSL_ERROR,
+		             NM_SETTING_ADSL_ERROR_INVALID_PROPERTY,
+		             NM_SETTING_ADSL_USERNAME);
+		return FALSE;
+	}
+
+	if (priv->password && !strlen (priv->password)) {
+		g_set_error (error,
+		             NM_SETTING_ADSL_ERROR,
+		             NM_SETTING_ADSL_ERROR_INVALID_PROPERTY,
+		             NM_SETTING_ADSL_PASSWORD);
+		return FALSE;
+	}
+
+	if (strcmp (priv->protocol, NM_SETTING_ADSL_PROTOCOL_PPPOA) &&
+		strcmp (priv->protocol, NM_SETTING_ADSL_PROTOCOL_PPPOE) &&
+		strcmp (priv->protocol, NM_SETTING_ADSL_PROTOCOL_IPOATM)) {
+		g_set_error (error,
+		             NM_SETTING_ADSL_ERROR,
+		             NM_SETTING_ADSL_ERROR_INVALID_PROPERTY,
+		             NM_SETTING_ADSL_PROTOCOL);
+		return FALSE;
+	}
+
+	if (strcmp (priv->encapsulation, NM_SETTING_ADSL_ENCAPSULATION_VCMUX) &&
+	    strcmp (priv->encapsulation, NM_SETTING_ADSL_ENCAPSULATION_LLC) ) {
+		g_set_error (error,
+		             NM_SETTING_ADSL_ERROR,
+		             NM_SETTING_ADSL_ERROR_INVALID_PROPERTY,
+		             NM_SETTING_ADSL_ENCAPSULATION);
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+static GPtrArray *
+need_secrets (NMSetting *setting)
+{
+	NMSettingAdslPrivate *priv = NM_SETTING_ADSL_GET_PRIVATE (setting);
+	GPtrArray *secrets = NULL;
+
+	if (priv->password)
+		return NULL;
+
+	if (!(priv->password_flags & NM_SETTING_SECRET_FLAG_NOT_REQUIRED)) {
+		secrets = g_ptr_array_sized_new (1);
+		g_ptr_array_add (secrets, NM_SETTING_ADSL_PASSWORD);
+	}
+
+	return secrets;
+}
+
+static void
+nm_setting_adsl_init (NMSettingAdsl *setting)
+{
+	g_object_set (setting, NM_SETTING_NAME, NM_SETTING_ADSL_SETTING_NAME, NULL);
+}
+
+static void
+finalize (GObject *object)
+{
+	NMSettingAdslPrivate *priv = NM_SETTING_ADSL_GET_PRIVATE (object);
+
+	g_free (priv->username);
+	g_free (priv->password);
+	g_free (priv->protocol);
+	g_free (priv->encapsulation);
+
+	G_OBJECT_CLASS (nm_setting_adsl_parent_class)->finalize (object);
+}
+
+static void
+set_property (GObject *object, guint prop_id,
+		    const GValue *value, GParamSpec *pspec)
+{
+	NMSettingAdslPrivate *priv = NM_SETTING_ADSL_GET_PRIVATE (object);
+
+	switch (prop_id) {
+	case PROP_USERNAME:
+		g_free (priv->username);
+		priv->username = g_value_dup_string (value);
+		break;
+	case PROP_PASSWORD:
+		g_free (priv->password);
+		priv->password = g_value_dup_string (value);
+		break;
+	case PROP_PASSWORD_FLAGS:
+		priv->password_flags = g_value_get_uint (value);
+		break;
+	case PROP_PROTOCOL:
+		g_free (priv->protocol);
+		priv->protocol = g_ascii_strdown (g_value_get_string (value), -1);
+		break;
+	case PROP_ENCAPSULATION:
+		g_free (priv->encapsulation);
+		priv->encapsulation = g_ascii_strdown (g_value_get_string (value), -1);
+		break;
+	case PROP_VPI:
+		priv->vpi = g_value_get_uint (value);
+		break;
+	case PROP_VCI:
+		priv->vci = g_value_get_uint (value);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+get_property (GObject *object, guint prop_id,
+		    GValue *value, GParamSpec *pspec)
+{
+	NMSettingAdsl *setting = NM_SETTING_ADSL (object);
+
+	switch (prop_id) {
+	case PROP_USERNAME:
+		g_value_set_string (value, nm_setting_adsl_get_username (setting));
+		break;
+	case PROP_PASSWORD:
+		g_value_set_string (value, nm_setting_adsl_get_password (setting));
+		break;
+	case PROP_PASSWORD_FLAGS:
+		g_value_set_uint (value, nm_setting_adsl_get_password_flags (setting));
+		break;
+	case PROP_PROTOCOL:
+		g_value_set_string (value, nm_setting_adsl_get_protocol (setting));
+		break;
+	case PROP_ENCAPSULATION:
+		g_value_set_string (value, nm_setting_adsl_get_encapsulation (setting));
+		break;
+	case PROP_VPI:
+		g_value_set_uint (value, nm_setting_adsl_get_vpi (setting));
+		break;
+	case PROP_VCI:
+		g_value_set_uint (value, nm_setting_adsl_get_vci (setting));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+nm_setting_adsl_class_init (NMSettingAdslClass *setting_class)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (setting_class);
+	NMSettingClass *parent_class = NM_SETTING_CLASS (setting_class);
+
+	g_type_class_add_private (setting_class, sizeof (NMSettingAdslPrivate));
+
+	/* virtual methods */
+	object_class->set_property = set_property;
+	object_class->get_property = get_property;
+	object_class->finalize     = finalize;
+	parent_class->verify       = verify;
+	parent_class->need_secrets = need_secrets;
+
+	/* Properties */
+
+	/**
+	 * NMSettingAdsl:username:
+	 *
+	 * Username used to authenticate with the ADSL service.
+	 **/
+	g_object_class_install_property
+		(object_class, PROP_USERNAME,
+		 g_param_spec_string (NM_SETTING_ADSL_USERNAME,
+						  "Username",
+						  "Username used to authenticate with the pppoa service.",
+						  NULL,
+						  G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));
+
+	/**
+	 * NMSettingADSL:password:
+	 *
+	 * Password used to authenticate with the ADSL service.
+	 **/
+	g_object_class_install_property
+		(object_class, PROP_PASSWORD,
+		 g_param_spec_string (NM_SETTING_ADSL_PASSWORD,
+						  "Password",
+						  "Password used to authenticate with the pppoa service.",
+						  NULL,
+						  G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE | NM_SETTING_PARAM_SECRET));
+
+	/**
+	 * NMSettingAdsl:password-flags:
+	 *
+	 * Flags indicating how to handle #NMSettingAdsl:password:.
+	 **/
+	g_object_class_install_property (object_class, PROP_PASSWORD_FLAGS,
+		 g_param_spec_uint (NM_SETTING_ADSL_PASSWORD_FLAGS,
+		                    "Password Flags",
+		                    "Flags indicating how to handle the ADSL password.",
+		                    NM_SETTING_SECRET_FLAG_NONE,
+		                    NM_SETTING_SECRET_FLAGS_ALL,
+		                    NM_SETTING_SECRET_FLAG_NONE,
+		                    G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));
+
+	/**
+	 * NMSettingAdsl:protocol:
+	 *
+	 * ADSL connection protocol, can be pppoa, pppoe or ipoatm.
+	 **/
+	g_object_class_install_property
+		(object_class, PROP_PROTOCOL,
+		 g_param_spec_string (NM_SETTING_ADSL_PROTOCOL,
+						  "Protocol",
+						  "ADSL connection protocol.",
+						  NULL,
+						  G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));
+
+	/**
+	 * NMSettingAdsl:encapsulation:
+	 *
+	 * ADSL connection encapsulation, can be vcmux or llc.
+	 **/
+	g_object_class_install_property
+		(object_class, PROP_ENCAPSULATION,
+		 g_param_spec_string (NM_SETTING_ADSL_ENCAPSULATION,
+						  "Encapsulation",
+						  "Encapsulation of ADSL connection",
+						  NULL,
+						  G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));
+
+	/**
+	 * NMSettingAdsl:vpi:
+	 *
+	 * ADSL connection vpi.
+	 **/
+	g_object_class_install_property
+		(object_class, PROP_VPI,
+		 g_param_spec_uint (NM_SETTING_ADSL_VPI,
+						  "VPI",
+						  "VPI of ADSL connection",
+						  0, 65536, 0,
+						  G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));
+
+	/**
+	 * NMSettingAdsl:vci:
+	 *
+	 * ADSL connection vci.
+	 **/
+	g_object_class_install_property
+		(object_class, PROP_VCI,
+		 g_param_spec_uint (NM_SETTING_ADSL_VCI,
+						  "VCI",
+						  "VCI of ADSL connection",
+						  0, 65536, 0,
+						  G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));
+}
diff --git a/libnm-util/nm-setting-adsl.h b/libnm-util/nm-setting-adsl.h
new file mode 100644
index 00000000..f233c7ed
--- /dev/null
+++ b/libnm-util/nm-setting-adsl.h
@@ -0,0 +1,100 @@
+/* -*- mode: c; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+
+/*
+ * Dan Williams <dcbw@redhat.com>
+ * Hicham HAOUARI <hicham.haouari@gmail.com>
+ * Pantelis Koukousoulas <pantelis@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * (C) Copyright 2007 - 2008 Red Hat, Inc.
+ */
+
+#ifndef NM_SETTING_ADSL_H
+#define NM_SETTING_ADSL_H
+
+#include <nm-setting.h>
+
+G_BEGIN_DECLS
+
+#define NM_TYPE_SETTING_ADSL            (nm_setting_adsl_get_type ())
+#define NM_SETTING_ADSL(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_SETTING_ADSL, NMSettingAdsl))
+#define NM_SETTING_ADSL_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_SETTING_ADSL, NMSettingAdslClass))
+#define NM_IS_SETTING_ADSL(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_SETTING_ADSL))
+#define NM_IS_SETTING_ADSL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NM_TYPE_SETTING_ADSL))
+#define NM_SETTING_ADSL_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_SETTING_ADSL, NMSettingAdslClass))
+
+#define NM_SETTING_ADSL_SETTING_NAME "adsl"
+
+/**
+ * NMSettingAdslError:
+ * @NM_SETTING_ADSL_ERROR_UNKNOWN: unknown or unclassified error
+ * @NM_SETTING_ADSL_ERROR_INVALID_PROPERTY: the property was invalid
+ * @NM_SETTING_ADSL_ERROR_MISSING_PROPERTY: the property was missing and is
+ * required
+ */
+typedef enum {
+	NM_SETTING_ADSL_ERROR_UNKNOWN = 0,              /*< nick=UnknownError >*/
+	NM_SETTING_ADSL_ERROR_INVALID_PROPERTY,         /*< nick=InvalidProperty >*/
+	NM_SETTING_ADSL_ERROR_MISSING_PROPERTY          /*< nick=MissingProperty >*/
+} NMSettingAdslError;
+
+#define NM_SETTING_ADSL_ERROR nm_setting_adsl_error_quark ()
+GQuark nm_setting_adsl_error_quark (void);
+
+#define NM_SETTING_ADSL_USERNAME            "username"
+#define NM_SETTING_ADSL_PASSWORD            "password"
+#define NM_SETTING_ADSL_PASSWORD_FLAGS      "password-flags"
+#define NM_SETTING_ADSL_PROTOCOL            "protocol"
+#define NM_SETTING_ADSL_ENCAPSULATION       "encapsulation"
+#define NM_SETTING_ADSL_VPI                 "vpi"
+#define NM_SETTING_ADSL_VCI                 "vci"
+
+#define NM_SETTING_ADSL_PROTOCOL_PPPOA      "pppoa"
+#define NM_SETTING_ADSL_PROTOCOL_PPPOE      "pppoe"
+#define NM_SETTING_ADSL_PROTOCOL_IPOATM     "ipoatm"
+
+#define NM_SETTING_ADSL_ENCAPSULATION_VCMUX "vcmux"
+#define NM_SETTING_ADSL_ENCAPSULATION_LLC   "llc"
+
+typedef struct {
+	NMSetting parent;
+} NMSettingAdsl;
+
+typedef struct {
+	NMSettingClass parent;
+
+	/* Padding for future expansion */
+	void (*_reserved1) (void);
+	void (*_reserved2) (void);
+	void (*_reserved3) (void);
+	void (*_reserved4) (void);
+} NMSettingAdslClass;
+
+GType nm_setting_adsl_get_type (void);
+
+NMSetting  *nm_setting_adsl_new               (void);
+const char *nm_setting_adsl_get_username      (NMSettingAdsl *setting);
+const char *nm_setting_adsl_get_password      (NMSettingAdsl *setting);
+const char *nm_setting_adsl_get_protocol      (NMSettingAdsl *setting);
+const char *nm_setting_adsl_get_encapsulation (NMSettingAdsl *setting);
+guint32     nm_setting_adsl_get_vpi           (NMSettingAdsl *setting);
+guint32     nm_setting_adsl_get_vci           (NMSettingAdsl *setting);
+NMSettingSecretFlags nm_setting_adsl_get_password_flags (NMSettingAdsl *setting);
+
+G_END_DECLS
+
+#endif /* NM_SETTING_ADSL_H */
diff --git a/libnm-util/nm-setting-bluetooth.c b/libnm-util/nm-setting-bluetooth.c
index 6a2fed74..52f0b81e 100644
--- a/libnm-util/nm-setting-bluetooth.c
+++ b/libnm-util/nm-setting-bluetooth.c
@@ -104,7 +104,7 @@ NMSetting *nm_setting_bluetooth_new (void)
 const char *
 nm_setting_bluetooth_get_connection_type (NMSettingBluetooth *setting)
 {
-	g_return_val_if_fail (NM_IS_SETTING_BLUETOOTH (setting), 0);
+	g_return_val_if_fail (NM_IS_SETTING_BLUETOOTH (setting), NULL);
 
 	return NM_SETTING_BLUETOOTH_GET_PRIVATE (setting)->type;
 }
diff --git a/libnm-util/nm-setting-bond.c b/libnm-util/nm-setting-bond.c
index 9f9f4389..b7994f4a 100644
--- a/libnm-util/nm-setting-bond.c
+++ b/libnm-util/nm-setting-bond.c
@@ -103,7 +103,7 @@ nm_setting_bond_new (void)
 }
 
 /**
- * nm_setting_bond_get_interface_name
+ * nm_setting_bond_get_interface_name:
  * @setting: the #NMSettingBond
  *
  * Returns: the #NMSettingBond:interface-name property of the setting
@@ -111,7 +111,7 @@ nm_setting_bond_new (void)
 const char *
 nm_setting_bond_get_interface_name (NMSettingBond *setting)
 {
-	g_return_val_if_fail (NM_IS_SETTING_BOND (setting), 0);
+	g_return_val_if_fail (NM_IS_SETTING_BOND (setting), NULL);
 
 	return NM_SETTING_BOND_GET_PRIVATE (setting)->interface_name;
 }
@@ -288,7 +288,7 @@ nm_setting_bond_remove_option (NMSettingBond *setting,
  *
  * Returns a list of valid bond options.
  *
- * Returns: a NULL-terminated array of strings of valid bond options.
+ * Returns: (transfer none): a NULL-terminated array of strings of valid bond options.
  **/
 const char **
 nm_setting_bond_get_valid_options  (NMSettingBond *setting)
@@ -402,10 +402,10 @@ verify (NMSetting *setting, GSList *all_settings, GError **error)
 		    || !value[0]
 		    || (strlen (value) > 200)
 		    || strchr (value, ' ')) {
-			g_set_error (error,
-			             NM_SETTING_BOND_ERROR,
-			             NM_SETTING_BOND_ERROR_INVALID_OPTION,
-			             key);
+			g_set_error_literal (error,
+			                     NM_SETTING_BOND_ERROR,
+			                     NM_SETTING_BOND_ERROR_INVALID_OPTION,
+			                     key);
 			return FALSE;
 		}
 	}
diff --git a/libnm-util/nm-setting-ip6-config.c b/libnm-util/nm-setting-ip6-config.c
index 45e3e635..67c101dc 100644
--- a/libnm-util/nm-setting-ip6-config.c
+++ b/libnm-util/nm-setting-ip6-config.c
@@ -149,7 +149,7 @@ nm_setting_ip6_config_get_dns (NMSettingIP6Config *setting, guint32 i)
 	NMSettingIP6ConfigPrivate *priv;
 	
 
-	g_return_val_if_fail (NM_IS_SETTING_IP6_CONFIG (setting), 0);
+	g_return_val_if_fail (NM_IS_SETTING_IP6_CONFIG (setting), NULL);
 
 	priv = NM_SETTING_IP6_CONFIG_GET_PRIVATE (setting);
 	g_return_val_if_fail (i <= g_slist_length (priv->dns), NULL);
@@ -631,7 +631,7 @@ nm_setting_ip6_config_get_may_fail (NMSettingIP6Config *setting)
 NMSettingIP6ConfigPrivacy
 nm_setting_ip6_config_get_ip6_privacy (NMSettingIP6Config *setting)
 {
-	g_return_val_if_fail (NM_IS_SETTING_IP6_CONFIG (setting), FALSE);
+	g_return_val_if_fail (NM_IS_SETTING_IP6_CONFIG (setting), NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN);
 
 	return NM_SETTING_IP6_CONFIG_GET_PRIVATE (setting)->ip6_privacy;
 }
@@ -1210,8 +1210,8 @@ nm_ip6_address_compare (NMIP6Address *address, NMIP6Address *other)
 const struct in6_addr *
 nm_ip6_address_get_address (NMIP6Address *address)
 {
-	g_return_val_if_fail (address != NULL, 0);
-	g_return_val_if_fail (address->refcount > 0, 0);
+	g_return_val_if_fail (address != NULL, NULL);
+	g_return_val_if_fail (address->refcount > 0, NULL);
 
 	return &address->address;
 }
@@ -1279,8 +1279,8 @@ nm_ip6_address_set_prefix (NMIP6Address *address, guint32 prefix)
 const struct in6_addr *
 nm_ip6_address_get_gateway (NMIP6Address *address)
 {
-	g_return_val_if_fail (address != NULL, 0);
-	g_return_val_if_fail (address->refcount > 0, 0);
+	g_return_val_if_fail (address != NULL, NULL);
+	g_return_val_if_fail (address->refcount > 0, NULL);
 
 	return &address->gateway;
 }
@@ -1427,8 +1427,8 @@ nm_ip6_route_compare (NMIP6Route *route, NMIP6Route *other)
 const struct in6_addr *
 nm_ip6_route_get_dest (NMIP6Route *route)
 {
-	g_return_val_if_fail (route != NULL, 0);
-	g_return_val_if_fail (route->refcount > 0, 0);
+	g_return_val_if_fail (route != NULL, NULL);
+	g_return_val_if_fail (route->refcount > 0, NULL);
 
 	return &route->dest;
 }
@@ -1496,8 +1496,8 @@ nm_ip6_route_set_prefix (NMIP6Route *route, guint32 prefix)
 const struct in6_addr *
 nm_ip6_route_get_next_hop (NMIP6Route *route)
 {
-	g_return_val_if_fail (route != NULL, 0);
-	g_return_val_if_fail (route->refcount > 0, 0);
+	g_return_val_if_fail (route != NULL, NULL);
+	g_return_val_if_fail (route->refcount > 0, NULL);
 
 	return &route->next_hop;
 }
diff --git a/libnm-util/nm-setting-ppp.c b/libnm-util/nm-setting-ppp.c
index 6b1fd5ac..ee9b5f59 100644
--- a/libnm-util/nm-setting-ppp.c
+++ b/libnm-util/nm-setting-ppp.c
@@ -117,7 +117,7 @@ nm_setting_ppp_new (void)
 }
 
 /**
- * nm_setting_wired_get_noauth:
+ * nm_setting_ppp_get_noauth:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:noauth property of the setting
@@ -131,7 +131,7 @@ nm_setting_ppp_get_noauth (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_refuse_eap:
+ * nm_setting_ppp_get_refuse_eap:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:refuse-eap property of the setting
@@ -145,7 +145,7 @@ nm_setting_ppp_get_refuse_eap (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_refuse_pap:
+ * nm_setting_ppp_get_refuse_pap:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:refuse-pap property of the setting
@@ -159,7 +159,7 @@ nm_setting_ppp_get_refuse_pap (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_refuse_chap:
+ * nm_setting_ppp_get_refuse_chap:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:refuse-chap property of the setting
@@ -173,7 +173,7 @@ nm_setting_ppp_get_refuse_chap (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_refuse_mschap:
+ * nm_setting_ppp_get_refuse_mschap:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:refuse-mschap property of the setting
@@ -187,7 +187,7 @@ nm_setting_ppp_get_refuse_mschap (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_refuse_mschapv2:
+ * nm_setting_ppp_get_refuse_mschapv2:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:refuse-mschapv2 property of the setting
@@ -201,7 +201,7 @@ nm_setting_ppp_get_refuse_mschapv2 (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_nobsdcomp:
+ * nm_setting_ppp_get_nobsdcomp:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:nobsdcomp property of the setting
@@ -215,7 +215,7 @@ nm_setting_ppp_get_nobsdcomp (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_nodeflate:
+ * nm_setting_ppp_get_nodeflate:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:nodeflate property of the setting
@@ -229,7 +229,7 @@ nm_setting_ppp_get_nodeflate (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_no_vj_comp:
+ * nm_setting_ppp_get_no_vj_comp:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:no-vj-comp property of the setting
@@ -243,7 +243,7 @@ nm_setting_ppp_get_no_vj_comp (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_require_mppe:
+ * nm_setting_ppp_get_require_mppe:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:require-mppe property of the setting
@@ -257,7 +257,7 @@ nm_setting_ppp_get_require_mppe (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_require_mppe_128:
+ * nm_setting_ppp_get_require_mppe_128:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:require-mppe-128 property of the setting
@@ -271,7 +271,7 @@ nm_setting_ppp_get_require_mppe_128 (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_mppe_stateful:
+ * nm_setting_ppp_get_mppe_stateful:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:mppe-stateful property of the setting
@@ -285,7 +285,7 @@ nm_setting_ppp_get_mppe_stateful (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_crtscts:
+ * nm_setting_ppp_get_crtscts:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:crtscts property of the setting
@@ -299,7 +299,7 @@ nm_setting_ppp_get_crtscts (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_baud:
+ * nm_setting_ppp_get_baud:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:baud property of the setting
@@ -313,7 +313,7 @@ nm_setting_ppp_get_baud (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_mru:
+ * nm_setting_ppp_get_mru:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:mru property of the setting
@@ -327,7 +327,7 @@ nm_setting_ppp_get_mru (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_mtu:
+ * nm_setting_ppp_get_mtu:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:mtu property of the setting
@@ -341,7 +341,7 @@ nm_setting_ppp_get_mtu (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_lcp_echo_failure:
+ * nm_setting_ppp_get_lcp_echo_failure:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:lcp-echo-failure property of the setting
@@ -355,7 +355,7 @@ nm_setting_ppp_get_lcp_echo_failure (NMSettingPPP *setting)
 }
 
 /**
- * nm_setting_wired_get_lcp_echo_interval:
+ * nm_setting_ppp_get_lcp_echo_interval:
  * @setting: the #NMSettingPPP
  *
  * Returns: the #NMSettingPPP:lcp-echo-interval property of the setting
diff --git a/libnm-util/nm-setting-pppoe.c b/libnm-util/nm-setting-pppoe.c
index e25c0926..62c42f01 100644
--- a/libnm-util/nm-setting-pppoe.c
+++ b/libnm-util/nm-setting-pppoe.c
@@ -105,7 +105,7 @@ nm_setting_pppoe_get_service  (NMSettingPPPOE *setting)
 }
 
 /**
- * nm_setting_pppoe_get_service:
+ * nm_setting_pppoe_get_username:
  * @setting: the #NMSettingPPPOE
  *
  * Returns: the #NMSettingPPPOE:username property of the setting
@@ -119,7 +119,7 @@ nm_setting_pppoe_get_username (NMSettingPPPOE *setting)
 }
 
 /**
- * nm_setting_pppoe_get_service:
+ * nm_setting_pppoe_get_password:
  * @setting: the #NMSettingPPPOE
  *
  * Returns: the #NMSettingPPPOE:password property of the setting
diff --git a/libnm-util/nm-setting-vlan.c b/libnm-util/nm-setting-vlan.c
index 71760dca..b65b6197 100644
--- a/libnm-util/nm-setting-vlan.c
+++ b/libnm-util/nm-setting-vlan.c
@@ -88,6 +88,7 @@ typedef struct {
 
 /**
  * nm_setting_vlan_new:
+ *
  * Creates a new #NMSettingVlan object with default values.
  *
  * Returns: (transfer full): the new empty #NMSettingVlan object
@@ -220,7 +221,7 @@ set_map (NMSettingVlan *self, NMVlanPriorityMap map, GSList *list)
 }
 
 /**
- * nm_setting_vlan_add_priority_str
+ * nm_setting_vlan_add_priority_str:
  * @setting: the #NMSettingVlan
  * @map: the type of priority map
  * @str: the string which contains a priority map, like "3:7"
@@ -460,7 +461,7 @@ verify (NMSetting *setting, GSList *all_settings, GError **error)
 		return FALSE;
 	}
 
-	if (priv->flags & !(NM_VLAN_FLAG_REORDER_HEADERS |
+	if (priv->flags & ~(NM_VLAN_FLAG_REORDER_HEADERS |
 	                    NM_VLAN_FLAG_GVRP |
 	                    NM_VLAN_FLAG_LOOSE_BINDING)) {
 		g_set_error (error,
diff --git a/libnm-util/nm-setting-wireless-security.c b/libnm-util/nm-setting-wireless-security.c
index 98473120..336773c8 100644
--- a/libnm-util/nm-setting-wireless-security.c
+++ b/libnm-util/nm-setting-wireless-security.c
@@ -59,7 +59,7 @@
  **/
 
 /**
- * nm_setting_wired_error_quark:
+ * nm_setting_wireless_security_error_quark:
  *
  * Registers an error quark for #NMSettingWired if necessary.
  *
diff --git a/libnm-util/nm-setting-wireless.c b/libnm-util/nm-setting-wireless.c
index 31882516..f9ed3108 100644
--- a/libnm-util/nm-setting-wireless.c
+++ b/libnm-util/nm-setting-wireless.c
@@ -19,7 +19,7 @@
  * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  * Boston, MA 02110-1301 USA.
  *
- * (C) Copyright 2007 - 2011 Red Hat, Inc.
+ * (C) Copyright 2007 - 2012 Red Hat, Inc.
  * (C) Copyright 2007 - 2008 Novell, Inc.
  */
 
@@ -80,6 +80,7 @@ typedef struct {
 	guint32 mtu;
 	GSList *seen_bssids;
 	char *security;
+	gboolean hidden;
 } NMSettingWirelessPrivate;
 
 enum {
@@ -97,6 +98,7 @@ enum {
 	PROP_MTU,
 	PROP_SEEN_BSSIDS,
 	PROP_SEC,
+	PROP_HIDDEN,
 
 	LAST_PROP
 };
@@ -482,6 +484,20 @@ nm_setting_wireless_get_security (NMSettingWireless *setting)
 }
 
 /**
+ * nm_setting_wireless_get_hidden:
+ * @setting: the #NMSettingWireless
+ *
+ * Returns: the #NMSettingWireless:hidden property of the setting
+ **/
+gboolean
+nm_setting_wireless_get_hidden (NMSettingWireless *setting)
+{
+	g_return_val_if_fail (NM_IS_SETTING_WIRELESS (setting), FALSE);
+
+	return NM_SETTING_WIRELESS_GET_PRIVATE (setting)->hidden;
+}
+
+/**
  * nm_setting_wireless_add_seen_bssid:
  * @setting: the #NMSettingWireless
  * @bssid: the new BSSID to add to the list
@@ -770,6 +786,9 @@ set_property (GObject *object, guint prop_id,
 		g_free (priv->security);
 		priv->security = g_value_dup_string (value);
 		break;
+	case PROP_HIDDEN:
+		priv->hidden = g_value_get_boolean (value);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -822,6 +841,9 @@ get_property (GObject *object, guint prop_id,
 	case PROP_SEC:
 		g_value_set_string (value, nm_setting_wireless_get_security (setting));
 		break;
+	case PROP_HIDDEN:
+		g_value_set_boolean (value, nm_setting_wireless_get_hidden (setting));
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -1082,4 +1104,27 @@ nm_setting_wireless_class_init (NMSettingWirelessClass *setting_class)
 						  NM_SETTING_WIRELESS_SECURITY_SETTING_NAME " setting.",
 						  NULL,
 						  G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));
+
+	/**
+	 * NMSettingWireless:hidden:
+	 *
+	 * If %TRUE, indicates this network is a non-broadcasting network that
+	 * hides its SSID.  In this case various workarounds may take place, such
+	 * as probe-scanning the SSID for more reliable network discovery.  However,
+	 * these workarounds expose inherent insecurities with hidden SSID networks,
+	 * and thus hidden SSID networks should be used with caution.
+	 **/
+	g_object_class_install_property
+		(object_class, PROP_HIDDEN,
+		 g_param_spec_boolean (NM_SETTING_WIRELESS_HIDDEN,
+		                       "Hidden",
+		                       "If TRUE, indicates this network is a non-broadcasting "
+		                       "network that hides its SSID.  In this case various "
+		                       "workarounds may take place, such as probe-scanning "
+		                       "the SSID for more reliable network discovery.  "
+		                       "However, these workarounds expose inherent "
+		                       "insecurities with hidden SSID networks, and thus "
+		                       "hidden SSID networks should be used with caution.",
+		                       FALSE,
+		                       G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));
 }
diff --git a/libnm-util/nm-setting-wireless.h b/libnm-util/nm-setting-wireless.h
index 3182f419..abbf231a 100644
--- a/libnm-util/nm-setting-wireless.h
+++ b/libnm-util/nm-setting-wireless.h
@@ -76,6 +76,7 @@ GQuark nm_setting_wireless_error_quark (void);
 #define NM_SETTING_WIRELESS_MTU         "mtu"
 #define NM_SETTING_WIRELESS_SEEN_BSSIDS "seen-bssids"
 #define NM_SETTING_WIRELESS_SEC         "security"
+#define NM_SETTING_WIRELESS_HIDDEN      "hidden"
 
 /**
  * NM_SETTING_WIRELESS_MODE_ADHOC:
@@ -85,7 +86,7 @@ GQuark nm_setting_wireless_error_quark (void);
 #define NM_SETTING_WIRELESS_MODE_ADHOC  "adhoc"
 
 /**
- * NM_SETTING_WIRELESS_MODE_INFRA
+ * NM_SETTING_WIRELESS_MODE_INFRA:
  *
  * Indicates infrastructure mode where an access point is expected to be present
  * for this connection.
@@ -122,6 +123,7 @@ const GByteArray *nm_setting_wireless_get_cloned_mac_address (NMSettingWireless
 const GSList     *nm_setting_wireless_get_mac_address_blacklist (NMSettingWireless *setting);
 guint32           nm_setting_wireless_get_mtu                (NMSettingWireless *setting);
 const char       *nm_setting_wireless_get_security           (NMSettingWireless *setting);
+gboolean          nm_setting_wireless_get_hidden             (NMSettingWireless *setting);
 
 gboolean          nm_setting_wireless_add_seen_bssid         (NMSettingWireless *setting,
 															  const char *bssid);
diff --git a/libnm-util/nm-utils-enum-types.c b/libnm-util/nm-utils-enum-types.c
index dcf51dee..332eb98b 100644
--- a/libnm-util/nm-utils-enum-types.c
+++ b/libnm-util/nm-utils-enum-types.c
@@ -8,6 +8,7 @@
 #include "nm-connection.h" 
 #include "nm-setting.h" 
 #include "nm-setting-8021x.h" 
+#include "nm-setting-adsl.h" 
 #include "nm-setting-bluetooth.h" 
 #include "nm-setting-bond.h" 
 #include "nm-setting-connection.h" 
@@ -216,6 +217,26 @@ nm_setting_802_1x_error_get_type (void)
   return g_define_type_id__volatile;
 }
 GType
+nm_setting_adsl_error_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+
+  if (g_once_init_enter (&g_define_type_id__volatile))
+    {
+      static const GEnumValue values[] = {
+        { NM_SETTING_ADSL_ERROR_UNKNOWN, "NM_SETTING_ADSL_ERROR_UNKNOWN", "UnknownError" },
+        { NM_SETTING_ADSL_ERROR_INVALID_PROPERTY, "NM_SETTING_ADSL_ERROR_INVALID_PROPERTY", "InvalidProperty" },
+        { NM_SETTING_ADSL_ERROR_MISSING_PROPERTY, "NM_SETTING_ADSL_ERROR_MISSING_PROPERTY", "MissingProperty" },
+        { 0, NULL, NULL }
+      };
+      GType g_define_type_id =
+        g_enum_register_static (g_intern_static_string ("NMSettingAdslError"), values);
+      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+    }
+
+  return g_define_type_id__volatile;
+}
+GType
 nm_setting_bluetooth_error_get_type (void)
 {
   static volatile gsize g_define_type_id__volatile = 0;
diff --git a/libnm-util/nm-utils-enum-types.h b/libnm-util/nm-utils-enum-types.h
index d3bcf049..d88fda24 100644
--- a/libnm-util/nm-utils-enum-types.h
+++ b/libnm-util/nm-utils-enum-types.h
@@ -27,6 +27,8 @@ GType nm_setting_802_1x_ck_scheme_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_SETTING_802_1X_CK_SCHEME (nm_setting_802_1x_ck_scheme_get_type ())
 GType nm_setting_802_1x_error_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_SETTING_802_1X_ERROR (nm_setting_802_1x_error_get_type ())
+GType nm_setting_adsl_error_get_type (void) G_GNUC_CONST;
+#define NM_TYPE_SETTING_ADSL_ERROR (nm_setting_adsl_error_get_type ())
 GType nm_setting_bluetooth_error_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_SETTING_BLUETOOTH_ERROR (nm_setting_bluetooth_error_get_type ())
 GType nm_setting_bond_error_get_type (void) G_GNUC_CONST;
diff --git a/libnm-util/nm-utils.c b/libnm-util/nm-utils.c
index a8806206..f76d0e10 100644
--- a/libnm-util/nm-utils.c
+++ b/libnm-util/nm-utils.c
@@ -1889,7 +1889,7 @@ nm_utils_ip6_routes_to_gvalue (GSList *list, GValue *value)
 /* FIXME: the Posix namespace does not exist, and thus neither does
    the in6_addr struct. Marking (skip) for now */
 /**
- * nm_utils_ip6_dns_from_gvalue: (skip):
+ * nm_utils_ip6_dns_from_gvalue: (skip)
  * @value: a #GValue
  *
  * Converts a #GValue containing a #GPtrArray of IP6 DNS, represented as
@@ -1925,7 +1925,7 @@ nm_utils_ip6_dns_from_gvalue (const GValue *value)
 }
 
 /**
- * nm_utils_ip6_dns_to_gvalue: (skip):
+ * nm_utils_ip6_dns_to_gvalue: (skip)
  * @list: a list of #NMIP6Route objects
  * @value: a pointer to a #GValue into which to place the converted DNS server
  * addresses, which should be unset by the caller (when no longer needed) with
diff --git a/libnm-util/tests/Makefile.in b/libnm-util/tests/Makefile.in
index 10a1e20f..fb60d5f4 100644
--- a/libnm-util/tests/Makefile.in
+++ b/libnm-util/tests/Makefile.in
@@ -50,7 +50,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -232,6 +232,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -327,6 +331,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -365,6 +372,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/libnm-util/tests/certs/Makefile.in b/libnm-util/tests/certs/Makefile.in
index 17289f48..4f0bab76 100644
--- a/libnm-util/tests/certs/Makefile.in
+++ b/libnm-util/tests/certs/Makefile.in
@@ -55,7 +55,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -143,6 +143,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -238,6 +242,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -276,6 +283,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/libnm-util/tests/test-general.c b/libnm-util/tests/test-general.c
index 1eed8887..2acb31b3 100644
--- a/libnm-util/tests/test-general.c
+++ b/libnm-util/tests/test-general.c
@@ -783,7 +783,7 @@ new_test_connection (void)
 	NMConnection *connection;
 	NMSetting *setting;
 	char *uuid;
-	gulong timestamp = time (NULL);
+	guint64 timestamp = time (NULL);
 
 	connection = nm_connection_new ();
 
diff --git a/m4/intltool.m4 b/m4/intltool.m4
index 839e8553..33353eda 100644
--- a/m4/intltool.m4
+++ b/m4/intltool.m4
@@ -23,7 +23,7 @@
 ## the same distribution terms that you use for the rest of that program.
 
 dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
-# serial 40 IT_PROG_INTLTOOL
+# serial 42 IT_PROG_INTLTOOL
 AC_DEFUN([IT_PROG_INTLTOOL], [
 AC_PREREQ([2.50])dnl
 AC_REQUIRE([AM_NLS])dnl
@@ -36,13 +36,11 @@ case "$am__api_version" in
     ;;
 esac
 
+INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3`
+INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
 if test -n "$1"; then
     AC_MSG_CHECKING([for intltool >= $1])
-
-    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
-    INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3`
-    [INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
-    ]
     AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
     test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
 	AC_MSG_ERROR([Your intltool is too old.  You need intltool $1 or later.])
@@ -55,25 +53,48 @@ if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT";
     AC_MSG_ERROR([The intltool scripts were not found. Please install intltool.])
 fi
 
-  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< [$]@'
-     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< [$]@' 
-      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
-    INTLTOOL_SERVICE_RULE='%.service: %.service.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
-   INTLTOOL_POLICY_RULE='%.policy:    %.policy.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+if test -z "$AM_DEFAULT_VERBOSITY"; then
+  AM_DEFAULT_VERBOSITY=1
+fi
+AC_SUBST([AM_DEFAULT_VERBOSITY])
+
+INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))'
+INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))'
+INTLTOOL__v_MERGE_0='@echo "  ITMRG " [$]@;'
+AC_SUBST(INTLTOOL_V_MERGE)
+AC_SUBST(INTLTOOL__v_MERGE_)
+AC_SUBST(INTLTOOL__v_MERGE_0)
+
+INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))'
+intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))'
+intltool__v_merge_options_0='-q'
+AC_SUBST(INTLTOOL_V_MERGE_OPTIONS)
+AC_SUBST(intltool__v_merge_options_)
+AC_SUBST(intltool__v_merge_options_0)
+
+  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -p $(top_srcdir)/po $< [$]@'
+     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge 5000; then
+      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u --no-translations $< [$]@'
+else
+      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)_it_tmp_dir=tmp.intltool.[$][$]RANDOM && mkdir [$][$]_it_tmp_dir && LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u [$][$]_it_tmp_dir $< [$]@ && rmdir [$][$]_it_tmp_dir'
+fi
+      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_SERVICE_RULE='%.service: %.service.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+   INTLTOOL_POLICY_RULE='%.policy:    %.policy.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
 
 _IT_SUBST(INTLTOOL_DESKTOP_RULE)
 _IT_SUBST(INTLTOOL_DIRECTORY_RULE)
@@ -119,7 +140,7 @@ $INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1
 if test $? -ne 0; then
    AC_MSG_ERROR([perl 5.8.1 is required for intltool])
 else
-   IT_PERL_VERSION="`$INTLTOOL_PERL -e \"printf '%vd', $^V\"`"
+   IT_PERL_VERSION=`$INTLTOOL_PERL -e "printf '%vd', $^V"`
    AC_MSG_RESULT([$IT_PERL_VERSION])
 fi
 if test "x$2" != "xno-xml"; then
diff --git a/m4/vapigen.m4 b/m4/vapigen.m4
new file mode 100644
index 00000000..48051078
--- /dev/null
+++ b/m4/vapigen.m4
@@ -0,0 +1,88 @@
+dnl vala.m4
+dnl
+dnl Copyright 2012 Evan Nemerson
+dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Lesser General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2.1 of the License, or (at your option) any later version.
+dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+dnl Lesser General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU Lesser General Public
+dnl License along with this library; if not, write to the Free Software
+dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+
+# VAPIGEN_CHECK([VERSION], [API_VERSION], [FOUND-INTROSPECTION])
+# --------------------------------------
+# Check that vapigen existence and version
+#
+# See http://live.gnome.org/Vala/UpstreamGuide for detailed documentation
+AC_DEFUN([VAPIGEN_CHECK],
+[
+  AC_BEFORE([GOBJECT_INTROSPECTION_CHECK],[$0])
+  AC_BEFORE([GOBJECT_INTROSPECTION_REQUIRE],[$0])
+
+  AC_ARG_ENABLE([vala],
+    AS_HELP_STRING([--enable-vala[=@<:@no/auto/yes@:>@]],
+      [build Vala bindings [[default=auto]]]),,
+      [enable_vala=auto])
+
+  AS_CASE([$enable_vala], [no], [],
+      [yes], [
+        AS_IF([test "x$3" != "xyes" -a "x$found_introspection" != "xyes"], [
+            AC_MSG_ERROR([Vala bindings require GObject Introspection])
+          ])
+      ], [auto], [
+        AS_IF([test "x$3" != "xyes" -a "x$found_introspection" != "xyes"], [
+            enable_vala=no
+          ])
+      ], [
+        AC_MSG_ERROR([Invalid argument passed to --enable-vala, should be one of @<:@no/auto/yes@:>@])
+      ])
+
+  AS_IF([test "x$2" = "x"], [
+      vapigen_pkg_name=vapigen
+    ], [
+      vapigen_pkg_name=vapigen-$2
+    ])
+  AS_IF([test "x$1" = "x"], [
+      vapigen_pkg="$vapigen_pkg_name"
+    ], [
+      vapigen_pkg="$vapigen_pkg_name >= $1"
+    ])
+
+  PKG_PROG_PKG_CONFIG
+
+  PKG_CHECK_EXISTS([$vapigen_pkg], [
+      AS_IF([test "$enable_vala" = "auto"], [
+          enable_vala=yes
+        ])
+    ], [
+      AS_CASE([$enable_vala], [yes], [
+          AC_MSG_ERROR([$vapigen_pkg not found])
+        ], [auto], [
+          enable_vala=no
+        ])
+    ])
+
+  AS_CASE([$enable_vala],
+    [yes], [
+      VAPIGEN=`$PKG_CONFIG --variable=vapigen vapigen`
+      VAPIGEN_MAKEFILE=`$PKG_CONFIG --variable=datadir vapigen`/vala/Makefile.vapigen
+      AS_IF([test "x$2" = "x"], [
+          VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir vapigen`
+        ], [
+          VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir_versioned vapigen`
+        ])
+    ])
+
+  AC_SUBST([VAPIGEN])
+  AC_SUBST([VAPIGEN_VAPIDIR])
+  AC_SUBST([VAPIGEN_MAKEFILE])
+
+  AM_CONDITIONAL(ENABLE_VAPIGEN, test "x$enable_vala" = "xyes")
+])
diff --git a/man/Makefile.in b/man/Makefile.in
index 89bb3c89..bf3f5217 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -50,7 +50,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -167,6 +167,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -262,6 +266,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -300,6 +307,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/man/nmcli.1 b/man/nmcli.1
index 03ed664c..bd84edb7 100644
--- a/man/nmcli.1
+++ b/man/nmcli.1
@@ -20,12 +20,12 @@
 .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
 .\" USA.
 .\"
-.\" Copyright (C) 2010 - 2011 Red Hat, Inc.
+.\" Copyright (C) 2010 - 2012 Red Hat, Inc.
 .\"
-.TH NMCLI "1" "6 September 2011"
+.TH NMCLI "1" "29 May 2012"
 
 .SH NAME
-nmcli \- command-line tool for controlling NetworkManager
+nmcli \(en command\(hyline tool for controlling NetworkManager
 .SH SYNOPSIS
 .ad l
 .B nmcli
@@ -57,26 +57,26 @@ nmcli \- command-line tool for controlling NetworkManager
 
 .SH DESCRIPTION
 .B nmcli
-is a command-line tool for controlling NetworkManager and getting its status.
-It is not meant as a replacement of \fInm-applet\fP or other similar clients.
-Rather it's a complementary utility to these programs.
-The main \fInmcli\fP's usage is on servers, headless machines or just for
-power users who prefer the command line.
+is a command\(hyline tool for controlling NetworkManager and reporting on its status.
+It is not meant as a full replacement for \fInm\(hyapplet\fP or other similar clients
+but as a complementary utility to those programs.
+The main usage for \fInmcli\fP is on servers, headless machines or for power users
+who prefer the command line.
 .P
-The use cases comprise:
+Typical applications include:
 .IP \(em 4
 Initscripts: ifup/ifdown can utilize NetworkManager via \fInmcli\fP instead of
 having to manage connections itself and possibly interfere with NetworkManager.
 .IP \(em 4
 Servers, headless machines: No GUI is available; then \fInmcli\fP can be used
 to activate/deactivate connections.  However, if a connection requires a secret
-to activate and if that secret is not stored at the system level, \fInmcli\fP
-will not be able to activate it; it is currently unable to supply the needed
-secrets to NetworkManager.
+in order to activate and if that secret is not stored at the system level,
+\fInmcli\fP will not be able to activate it; it is currently unable to supply
+the secrets to NetworkManager.
 .IP \(em 4
-User sessions: \fInmcli\fP can be used activate/deactivate connections from the
-command line, but a full NetworkManager client (like \fInm-applet\fP) is used
-for supplying secrets not stored at the system level.  Keyring dialogs and
+User sessions: \fInmcli\fP can be used to activate/deactivate connections from
+the command line, but a client with a secret agent (like \fInm\(hyapplet\fP) is needed
+for supplying secrets not stored at the system level. Keyring dialogs and
 password prompts may appear if this happens.
 .SS \fIOPTIONS\fP
 .TP
@@ -85,12 +85,12 @@ Output is terse.  This mode is designed and suitable for computer (script)
 processing.
 .TP
 .B \-p, \-\-pretty
-Output is pretty.  This causes \fInmcli\fP to produce easy readable outputs
+Output is pretty. This causes \fInmcli\fP to produce easily readable outputs
 for humans, i.e. values are aligned, headers are printed, etc.
 .TP
 .B \-m, \-\-mode tabular | multiline
 Switch between \fItabular\fP and \fImultiline\fP output.
-If omitted, default is \fItabular\fP for most commands.  For the commands
+If omitted, default is \fItabular\fP for most commands. For the commands
 producing more structured information, that cannot be displayed on a single
 line, default is \fImultiline\fP. Currenly, they are:
 .br
@@ -98,21 +98,21 @@ line, default is \fImultiline\fP. Currenly, they are:
   'nmcli con list id|uuid <name>'
   'nmcli dev list'
 .fi
-\fItabular\fP   - Output is a table where each line describes a single entry.
+\fItabular\fP   \(en Output is a table where each line describes a single entry.
 Columns define particular properties of the entry.
 .br
-\fImultiline\fP - Each entry comprises more lines, each property on its own line.
-The values are prefixed with the property name.
+\fImultiline\fP \(en Each entry comprises multiple lines, each property on its own
+line. The values are prefixed with the property name.
 .TP
 .B \-f, \-\-fields <field1,field2,...> | all | common
 This option is used to specify what fields (column names) should be printed.
 Valid field names differ for specific commands. List available fields by
-providing an invalid value to the \fI--fields\fP option.
+providing an invalid value to the \fI\-\-fields\fP option.
 .br
 \fIall\fP is used to print all valid field values of the command.
 \fIcommon\fP is used to print common field values of the command.
 If omitted, default is \fIcommon\fP.
-The option is mandatory when \fI--terse\fP is used.  In this case, generic
+The option is mandatory when \fI\-\-terse\fP is used.  In this case, generic
 values \fIall\fP and \fIcommon\fP cannot be used.  (This is to maintain
 compatibility when new fields are added in the future).
 .TP
@@ -133,28 +133,41 @@ NetworkManager
 .br
 Use this object to inquire and change state of NetworkManager.
 .TP
-.SS \fICOMMAND\fP := { status | enable | sleep | wifi | wwan }
+.SS \fICOMMAND\fP := { status | permissions | enable | sleep | wifi | wwan | wimax }
 .sp
 .RS
 .TP
 .B status
 .br
-Show overall status of NetworkManager.  This is the default action, when no
+Show overall status of NetworkManager. This is the default action, when no
 command is provided to \fInm\fP object.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 No simple reference.
 .fi
 .TP
+.B permissions
+.br
+Show the permissions a caller has for various authenticated operations that
+NetworkManager provides, like enable/disable networking, changing Wi\(hyFi, WWAN,
+and WiMAX state, modifying connections, etc.
+.br
+.nf
+\fBReference to D\(hyBus:\fP
+interface: org.freedesktop.NetworkManager
+method:    GetPermissions
+arguments: none
+.fi
+.TP
 .B enable [true|false]
 .br
-Get networking-enabled status or enable/disable networking by NetworkManager.
+Get networking\(hyenabled status or enable/disable networking by NetworkManager.
 All interfaces managed by NetworkManager are deactivated when networking has
 been disabled.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 interface: org.freedesktop.NetworkManager
 method:    Enable
 arguments: TRUE or FALSE
@@ -162,13 +175,14 @@ arguments: TRUE or FALSE
 .TP
 .B sleep [true|false]
 .br
-Get sleep status or put to sleep/awake NetworkManager.  All interfaces managed by NetworkManager
-are deactivated when it falls asleep.  This command is not meant for user to enable/disable
-networking, use \fIenable\fP for that.  D-Bus \fISleep\fP method is designed
-to put NetworkManager to sleep or awake for suspending/resuming computer.
+Get sleep status or put to sleep/awake NetworkManager. All interfaces managed
+by NetworkManager are deactivated when it falls asleep. This command is not
+meant for user to enable/disable networking, use \fIenable\fP for that. D\(hyBus
+\fISleep\fP method is designed to put NetworkManager to sleep or awake for
+suspending/resuming the computer.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 interface: org.freedesktop.NetworkManager
 method:    Sleep
 arguments: TRUE or FALSE
@@ -176,21 +190,33 @@ arguments: TRUE or FALSE
 .TP
 .B wifi [on|off]
 .br
-Inquire or set status of WiFi in NetworkManager.  Without any further argument,
-WiFi status is printed; \fIon\fP enables WiFi; \fIoff\fP disables WiFi.
+Inquire or set status of Wi\(hyFi in NetworkManager. If no arguments are supplied,
+Wi\(hyFi status is printed; \fIon\fP enables Wi\(hyFi; \fIoff\fP disables Wi\(hyFi.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 No simple reference.
 .fi
 .TP
 .B wwan [on|off]
 .br
-Inquire or set status of WWAN in NetworkManager.  Without any further argument,
+Inquire or set status of WWAN in NetworkManager. If no arguments are supplied,
 WWAN status is printed; \fIon\fP enables WWAN; \fIoff\fP disables WWAN.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
+No simple reference.
+.fi
+.TP
+.B wimax [on|off]
+.br
+Inquire or set status of WiMAX in NetworkManager. If no arguments are supplied,
+WiMAX status is printed; \fIon\fP enables WiMAX; \fIoff\fP disables WiMAX.
+.br
+Note: WiMAX support is a compile\(hytime decision, so it may be unavailable on some
+installations.
+.nf
+\fBReference to D\(hyBus:\fP
 No simple reference.
 .fi
 .RE
@@ -213,7 +239,7 @@ name or \fIuuid\fP with connection's UUID shall be specified.  When no command
 is given to the \fIcon\fP object, the default action is 'nmcli con list'.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 No simple reference.
 .fi
 .TP
@@ -222,26 +248,41 @@ No simple reference.
 Print status of active connections.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 No simple reference.
 .fi
 .TP
-.B up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [\-\-nowait] [\-\-timeout <timeout>]
+.B up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [nsp <name>] [\-\-nowait] [\-\-timeout <timeout>]
 .br
 Activate a connection.  The connection is identified by its name using \fIid\fP
-or UUID using \fIuuid\fP.  For requiring particular device to activate
-the connection on, \fIiface\fP option with interface name should be given.
-\fIap\fP option can further concretize what AP should be used in case of WiFi
-connection.  \fI\-\-nowait\fP option causes \fInmcli\fP to exit immediately and
-not to wait for command completion.  \fI\-\-timeout\fP option provides a means
-to specify how long to wait for operation completion.
+or UUID using \fIuuid\fP. When requiring a particular device to activate the
+connection on, the \fIiface\fP option with interface name should be given. In
+case of a VPN connection, the \fIiface\fP option specify the device of the base
+connection. The \fIap\fP option specify what particular AP should be used in case
+of a Wi\(hyFi connection.
+.RS
+.PP
+Available options are:
+.IP \fIiface\fP 13
+\(en interface that will be used for activation
+.IP \fIap\fP 13
+\(en BSSID of the AP which the command should connect to (for Wi\(hyFi connections)
+.IP \fInsp\fP 13
+\(en NSP (Network Service Provider) which the command should connect to (for WiMAX connections)
+.IP \fI\-\-nowait\fP 13
+\(en exit immediately without waiting for command completion
+.IP \fI\-\-timeout\fP 13
+\(en how long to wait for command completion (default is 90 s)
+.PP
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 interface: org.freedesktop.NetworkManager
 method:    ActivateConnection
 arguments: according to arguments
 .fi
+.RE
+
 .TP
 .B down id <id> | uuid <id>
 .br
@@ -250,7 +291,7 @@ The connection is identified by its name using \fIid\fP
 or UUID using \fIuuid\fP.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 interface: org.freedesktop.NetworkManager
 method:    DeactivateConnection
 arguments: according to arguments
@@ -258,11 +299,11 @@ arguments: according to arguments
 .TP
 .B delete id <id> | uuid <id>
 .br
-Delete a configured connection.  The connection to delete is specified with
+Delete a configured connection. The connection to delete is specified with
 \fIid\fP (connection name) or \fIuuid\fP (connection UUID).
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 interface: org.freedesktop.NetworkManager.Settings.Connection
 method:    Delete
 arguments: none
@@ -285,64 +326,108 @@ Print status of devices.  This is the default action, when no command
 is specified to \fIdev\fP object.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 No simple reference.
 .fi
 .TP
 .B list [iface <iface>]
 .br
 Get detailed information about devices.  Without an argument, all devices are
-examined.  To get information for a specific device, \fIiface\fP argument
+examined. To get information for a specific device, the \fIiface\fP argument
 with the interface name should be provided.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 No simple reference.
 .fi
 .TP
 .B disconnect iface <iface> [\-\-nowait] [\-\-timeout <timeout>]
 .br
 Disconnect a device and prevent the device from automatically activating further
-connections without user/manual intervention.  \fI\-\-nowait\fP option causes
-\fInmcli\fP to exit immediately and not to wait for command completion.
-\fI\-\-timeout\fP option provides a means to specify how long to wait for
-operation completion.
+connections without user/manual intervention.
+.RS
+.PP
+Available options are:
+.IP \fI\-\-nowait\fP 13
+\(en exit immediately without waiting for command completion
+.IP \fI\-\-timeout\fP 13
+\(en how long to wait for command completion (default is 10 s)
+.PP
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 interface: org.freedesktop.NetworkManager.Device
 method:    Disconnect
 arguments: none
 .fi
+.RE
 .TP
 .B wifi [list [iface <iface>] [bssid <BSSID>]]
 .br
-List available WiFi access points.  \fIiface\fP and \fIbssid\fP options
-can be used to get just APs for particular interface or specific AP,
+List available Wi\(hyFi access points. The \fIiface\fP and \fIbssid\fP options
+can be used to list APs for a particular interface or with a specific BSSID,
 respectively.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 No simple reference.
 .fi
+.TP
+.B wifi connect <(B)SSID> [password <password>] [wep\-key\-type key|phrase] [iface <iface>] [bssid <BSSID>] [name <name>] [\-\-private] [\-\-nowait] [\-\-timeout <timeout>]
+.br
+Connect to a Wi\(hyFi network specified by SSID or BSSID. The command creates a new
+connection and then activates it on a device. This is a command\(hyline counterpart
+of clicking an SSID in a GUI client. The command always creates a new connection
+and thus it is mainly useful for connecting to new Wi\(hyFi networks. If a connection
+for the network already exists, it's better to connect through it using
+\fInmcli con up id <name>\fP. Note that only open, WEP and WPA\(hyPSK networks are
+supported at the moment. It is also supposed that IP configuration is obtained via
+DHCP.
+.RS
+.PP
+Available options are:
+.IP \fIpassword\fP 13
+\(en password for secured networks (WEP or WPA)
+.IP \fIwep\-key\-type\fP 13
+\(en type of WEP secret, either \fIkey\fP for ASCII/HEX key or \fIphrase\fP for passphrase
+.IP \fIiface\fP 13
+\(en interface that will be used for activation
+.IP \fIbssid\fP 13
+\(en if specified, the created connection will be restricted just for the BSSID
+.IP \fIname\fP 13
+\(en if specified, the connection will use the name (else NM creates a name itself)
+.IP \fI\-\-private\fP 13
+\(en the connection will only be visible to the user who created it (else the connection is system\(hywide)
+.IP \fI\-\-nowait\fP 13
+\(en exit immediately without waiting for command completion
+.IP \fI\-\-timeout\fP 13
+\(en how long to wait for command completion (default is 90 s)
+.PP
+.br
+.nf
+\fBReference to D\(hyBus:\fP
+interface: org.freedesktop.NetworkManager
+method:    AddAndActivateConnection
+arguments: according to arguments
+.fi
 .RE
 
 .SH ENVIRONMENT VARIABLES
 \fInmcli\fP's behavior is affected by the following environment variables.
 .IP "LC_ALL" 13
-If set to a non-empty string value, override the values of all the other
+If set to a non\(hyempty string value, it overrides the values of all the other
 internationalization variables.
 .IP "LC_MESSAGES" 13
-Determines the locale to be used for internationalised messages.
+Determines the locale to be used for internationalized messages.
 .IP "LANG" 13
 Provides a default value for the internationalization variables that are unset
 or null.
 
 .RE
-Notes about localization:
+Internationalization notes:
 .br
 Be aware that \fInmcli\fP is localized and that's why the output depends on
-your environment. It's important to realize that especially when you parse the
+your environment. This is important to realize especially when you parse the
 output.
 .br
 Call \fInmcli\fP as \fBLC_ALL=C nmcli\fP to be sure the locale is
@@ -354,9 +439,10 @@ uses for messages.  The "C" locale is used if none of these variables are set,
 and this locale uses English messages.
 
 .SH EXIT STATUS
-\fInmcli\fP exits with status 0 if it succeeds, a value greater than 0 is returned if errors occur.
+\fInmcli\fP exits with status 0 if it succeeds, a value greater than 0 is
+returned if an error occurs.
 .IP "0" 4
-Success - indicates the operation succeeded
+Success \(en indicates the operation succeeded
 .IP "1" 4
 Unknown or unspecified error
 .IP "2" 4
@@ -370,9 +456,70 @@ Connection deactivation failed
 .IP "6" 4
 Disconnecting device failed
 
+.SH EXAMPLES
+.IP "\fB\f(CWnmcli \-t \-f RUNNING nm\fP\fP"
+.IP
+tells you whether NetworkManager is running or not.
+
+.IP "\fB\f(CWnmcli \-t \-f STATE nm\fP\fP"
+.IP
+shows the overall status of NetworkManager.
+
+.IP "\fB\f(CWnmcli nm wifi off\fP\fP"
+.IP
+switches Wi\(hyFi off.
+
+.IP "\fB\f(CWnmcli \-p con list\fP\fP"
+.IP
+lists all connections NetworkManager has.
+
+.IP "\fB\f(CWnmcli \-f name,autoconnect con list\fP\fP"
+.IP
+lists all connections' names and their autoconnect settings.
+
+.IP "\fB\f(CWnmcli con list id \(dq\&My wired connection\(dq\&\fP\fP"
+.IP
+lists all details of the connection with "My wired connection" name.
+
+.IP "\fB\f(CWnmcli \-p con up id \(dq\&My wired connection\(dq\& iface eth0\fP\fP"
+.IP
+activates the connection with name "My wired connection" on interface eth0.
+The \-p option makes nmcli show progress of the activation.
+
+.IP "\fB\f(CWnmcli con up uuid 6b028a27\-6dc9\-4411\-9886\-e9ad1dd43761 ap 00:3A:98:7C:42:D3\fP\fP"
+.IP
+connects the Wi\(hyFi connection with UUID 6b028a27\-6dc9\-4411\-9886\-e9ad1dd43761 to the AP
+with BSSID 00:3A:98:7C:42:D3.
+
+.IP "\fB\f(CWnmcli dev status\fP\fP"
+.IP
+shows the status for all devices.
+
+.IP "\fB\f(CWnmcli dev disconnect iface em2\fP\fP"
+.IP
+disconnects a connection on interface em2 and marks the device as unavailable for
+auto\(hyconnecting. That's why no connection will automatically be activated on the
+device until the device's "autoconnect" is set to TRUE or user manually activates
+a connection.
+
+.IP "\fB\f(CWnmcli \-f GENERAL,WIFI\-PROPERTIES dev list iface wlan0\fP\fP"
+.IP
+lists details for wlan0 interface; only GENERAL and WIFI\-PROPERTIES sections will be shown.
+
+.IP "\fB\f(CWnmcli dev wifi\fP\fP"
+.IP
+lists available Wi\(hyFi access points known to NetworkManager.
+
+.IP "\fB\f(CWnmcli dev wifi con \(dq\&Cafe Hotspot 1\(dq\& password caffeine name \(dq\&My cafe\(dq\&\fP\fP"
+.IP
+creates a new connection named "My cafe" and then connects it to "Cafe Hotspot 1" SSID
+using "caffeine" password. This is mainly useful when connecting to "Cafe Hotspot 1" for
+the first time. Next time, it is better to use 'nmcli con up id "My cafe"' so that the
+existing connection profile can be used and no additional is created.
+
 .SH BUGS
-There are probably some.  If you find a bug, please report to
-https://bugzilla.gnome.org/ \- product \fINetworkManager\fP.
+There are probably some bugs.  If you find a bug, please report it to
+https://bugzilla.gnome.org/ \(em product \fINetworkManager\fP.
 
 .SH SEE ALSO
 .BR nm\-tool (1),
diff --git a/man/nmcli.1.in b/man/nmcli.1.in
index 03ed664c..bd84edb7 100644
--- a/man/nmcli.1.in
+++ b/man/nmcli.1.in
@@ -20,12 +20,12 @@
 .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
 .\" USA.
 .\"
-.\" Copyright (C) 2010 - 2011 Red Hat, Inc.
+.\" Copyright (C) 2010 - 2012 Red Hat, Inc.
 .\"
-.TH NMCLI "1" "6 September 2011"
+.TH NMCLI "1" "29 May 2012"
 
 .SH NAME
-nmcli \- command-line tool for controlling NetworkManager
+nmcli \(en command\(hyline tool for controlling NetworkManager
 .SH SYNOPSIS
 .ad l
 .B nmcli
@@ -57,26 +57,26 @@ nmcli \- command-line tool for controlling NetworkManager
 
 .SH DESCRIPTION
 .B nmcli
-is a command-line tool for controlling NetworkManager and getting its status.
-It is not meant as a replacement of \fInm-applet\fP or other similar clients.
-Rather it's a complementary utility to these programs.
-The main \fInmcli\fP's usage is on servers, headless machines or just for
-power users who prefer the command line.
+is a command\(hyline tool for controlling NetworkManager and reporting on its status.
+It is not meant as a full replacement for \fInm\(hyapplet\fP or other similar clients
+but as a complementary utility to those programs.
+The main usage for \fInmcli\fP is on servers, headless machines or for power users
+who prefer the command line.
 .P
-The use cases comprise:
+Typical applications include:
 .IP \(em 4
 Initscripts: ifup/ifdown can utilize NetworkManager via \fInmcli\fP instead of
 having to manage connections itself and possibly interfere with NetworkManager.
 .IP \(em 4
 Servers, headless machines: No GUI is available; then \fInmcli\fP can be used
 to activate/deactivate connections.  However, if a connection requires a secret
-to activate and if that secret is not stored at the system level, \fInmcli\fP
-will not be able to activate it; it is currently unable to supply the needed
-secrets to NetworkManager.
+in order to activate and if that secret is not stored at the system level,
+\fInmcli\fP will not be able to activate it; it is currently unable to supply
+the secrets to NetworkManager.
 .IP \(em 4
-User sessions: \fInmcli\fP can be used activate/deactivate connections from the
-command line, but a full NetworkManager client (like \fInm-applet\fP) is used
-for supplying secrets not stored at the system level.  Keyring dialogs and
+User sessions: \fInmcli\fP can be used to activate/deactivate connections from
+the command line, but a client with a secret agent (like \fInm\(hyapplet\fP) is needed
+for supplying secrets not stored at the system level. Keyring dialogs and
 password prompts may appear if this happens.
 .SS \fIOPTIONS\fP
 .TP
@@ -85,12 +85,12 @@ Output is terse.  This mode is designed and suitable for computer (script)
 processing.
 .TP
 .B \-p, \-\-pretty
-Output is pretty.  This causes \fInmcli\fP to produce easy readable outputs
+Output is pretty. This causes \fInmcli\fP to produce easily readable outputs
 for humans, i.e. values are aligned, headers are printed, etc.
 .TP
 .B \-m, \-\-mode tabular | multiline
 Switch between \fItabular\fP and \fImultiline\fP output.
-If omitted, default is \fItabular\fP for most commands.  For the commands
+If omitted, default is \fItabular\fP for most commands. For the commands
 producing more structured information, that cannot be displayed on a single
 line, default is \fImultiline\fP. Currenly, they are:
 .br
@@ -98,21 +98,21 @@ line, default is \fImultiline\fP. Currenly, they are:
   'nmcli con list id|uuid <name>'
   'nmcli dev list'
 .fi
-\fItabular\fP   - Output is a table where each line describes a single entry.
+\fItabular\fP   \(en Output is a table where each line describes a single entry.
 Columns define particular properties of the entry.
 .br
-\fImultiline\fP - Each entry comprises more lines, each property on its own line.
-The values are prefixed with the property name.
+\fImultiline\fP \(en Each entry comprises multiple lines, each property on its own
+line. The values are prefixed with the property name.
 .TP
 .B \-f, \-\-fields <field1,field2,...> | all | common
 This option is used to specify what fields (column names) should be printed.
 Valid field names differ for specific commands. List available fields by
-providing an invalid value to the \fI--fields\fP option.
+providing an invalid value to the \fI\-\-fields\fP option.
 .br
 \fIall\fP is used to print all valid field values of the command.
 \fIcommon\fP is used to print common field values of the command.
 If omitted, default is \fIcommon\fP.
-The option is mandatory when \fI--terse\fP is used.  In this case, generic
+The option is mandatory when \fI\-\-terse\fP is used.  In this case, generic
 values \fIall\fP and \fIcommon\fP cannot be used.  (This is to maintain
 compatibility when new fields are added in the future).
 .TP
@@ -133,28 +133,41 @@ NetworkManager
 .br
 Use this object to inquire and change state of NetworkManager.
 .TP
-.SS \fICOMMAND\fP := { status | enable | sleep | wifi | wwan }
+.SS \fICOMMAND\fP := { status | permissions | enable | sleep | wifi | wwan | wimax }
 .sp
 .RS
 .TP
 .B status
 .br
-Show overall status of NetworkManager.  This is the default action, when no
+Show overall status of NetworkManager. This is the default action, when no
 command is provided to \fInm\fP object.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 No simple reference.
 .fi
 .TP
+.B permissions
+.br
+Show the permissions a caller has for various authenticated operations that
+NetworkManager provides, like enable/disable networking, changing Wi\(hyFi, WWAN,
+and WiMAX state, modifying connections, etc.
+.br
+.nf
+\fBReference to D\(hyBus:\fP
+interface: org.freedesktop.NetworkManager
+method:    GetPermissions
+arguments: none
+.fi
+.TP
 .B enable [true|false]
 .br
-Get networking-enabled status or enable/disable networking by NetworkManager.
+Get networking\(hyenabled status or enable/disable networking by NetworkManager.
 All interfaces managed by NetworkManager are deactivated when networking has
 been disabled.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 interface: org.freedesktop.NetworkManager
 method:    Enable
 arguments: TRUE or FALSE
@@ -162,13 +175,14 @@ arguments: TRUE or FALSE
 .TP
 .B sleep [true|false]
 .br
-Get sleep status or put to sleep/awake NetworkManager.  All interfaces managed by NetworkManager
-are deactivated when it falls asleep.  This command is not meant for user to enable/disable
-networking, use \fIenable\fP for that.  D-Bus \fISleep\fP method is designed
-to put NetworkManager to sleep or awake for suspending/resuming computer.
+Get sleep status or put to sleep/awake NetworkManager. All interfaces managed
+by NetworkManager are deactivated when it falls asleep. This command is not
+meant for user to enable/disable networking, use \fIenable\fP for that. D\(hyBus
+\fISleep\fP method is designed to put NetworkManager to sleep or awake for
+suspending/resuming the computer.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 interface: org.freedesktop.NetworkManager
 method:    Sleep
 arguments: TRUE or FALSE
@@ -176,21 +190,33 @@ arguments: TRUE or FALSE
 .TP
 .B wifi [on|off]
 .br
-Inquire or set status of WiFi in NetworkManager.  Without any further argument,
-WiFi status is printed; \fIon\fP enables WiFi; \fIoff\fP disables WiFi.
+Inquire or set status of Wi\(hyFi in NetworkManager. If no arguments are supplied,
+Wi\(hyFi status is printed; \fIon\fP enables Wi\(hyFi; \fIoff\fP disables Wi\(hyFi.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 No simple reference.
 .fi
 .TP
 .B wwan [on|off]
 .br
-Inquire or set status of WWAN in NetworkManager.  Without any further argument,
+Inquire or set status of WWAN in NetworkManager. If no arguments are supplied,
 WWAN status is printed; \fIon\fP enables WWAN; \fIoff\fP disables WWAN.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
+No simple reference.
+.fi
+.TP
+.B wimax [on|off]
+.br
+Inquire or set status of WiMAX in NetworkManager. If no arguments are supplied,
+WiMAX status is printed; \fIon\fP enables WiMAX; \fIoff\fP disables WiMAX.
+.br
+Note: WiMAX support is a compile\(hytime decision, so it may be unavailable on some
+installations.
+.nf
+\fBReference to D\(hyBus:\fP
 No simple reference.
 .fi
 .RE
@@ -213,7 +239,7 @@ name or \fIuuid\fP with connection's UUID shall be specified.  When no command
 is given to the \fIcon\fP object, the default action is 'nmcli con list'.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 No simple reference.
 .fi
 .TP
@@ -222,26 +248,41 @@ No simple reference.
 Print status of active connections.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 No simple reference.
 .fi
 .TP
-.B up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [\-\-nowait] [\-\-timeout <timeout>]
+.B up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [nsp <name>] [\-\-nowait] [\-\-timeout <timeout>]
 .br
 Activate a connection.  The connection is identified by its name using \fIid\fP
-or UUID using \fIuuid\fP.  For requiring particular device to activate
-the connection on, \fIiface\fP option with interface name should be given.
-\fIap\fP option can further concretize what AP should be used in case of WiFi
-connection.  \fI\-\-nowait\fP option causes \fInmcli\fP to exit immediately and
-not to wait for command completion.  \fI\-\-timeout\fP option provides a means
-to specify how long to wait for operation completion.
+or UUID using \fIuuid\fP. When requiring a particular device to activate the
+connection on, the \fIiface\fP option with interface name should be given. In
+case of a VPN connection, the \fIiface\fP option specify the device of the base
+connection. The \fIap\fP option specify what particular AP should be used in case
+of a Wi\(hyFi connection.
+.RS
+.PP
+Available options are:
+.IP \fIiface\fP 13
+\(en interface that will be used for activation
+.IP \fIap\fP 13
+\(en BSSID of the AP which the command should connect to (for Wi\(hyFi connections)
+.IP \fInsp\fP 13
+\(en NSP (Network Service Provider) which the command should connect to (for WiMAX connections)
+.IP \fI\-\-nowait\fP 13
+\(en exit immediately without waiting for command completion
+.IP \fI\-\-timeout\fP 13
+\(en how long to wait for command completion (default is 90 s)
+.PP
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 interface: org.freedesktop.NetworkManager
 method:    ActivateConnection
 arguments: according to arguments
 .fi
+.RE
+
 .TP
 .B down id <id> | uuid <id>
 .br
@@ -250,7 +291,7 @@ The connection is identified by its name using \fIid\fP
 or UUID using \fIuuid\fP.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 interface: org.freedesktop.NetworkManager
 method:    DeactivateConnection
 arguments: according to arguments
@@ -258,11 +299,11 @@ arguments: according to arguments
 .TP
 .B delete id <id> | uuid <id>
 .br
-Delete a configured connection.  The connection to delete is specified with
+Delete a configured connection. The connection to delete is specified with
 \fIid\fP (connection name) or \fIuuid\fP (connection UUID).
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 interface: org.freedesktop.NetworkManager.Settings.Connection
 method:    Delete
 arguments: none
@@ -285,64 +326,108 @@ Print status of devices.  This is the default action, when no command
 is specified to \fIdev\fP object.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 No simple reference.
 .fi
 .TP
 .B list [iface <iface>]
 .br
 Get detailed information about devices.  Without an argument, all devices are
-examined.  To get information for a specific device, \fIiface\fP argument
+examined. To get information for a specific device, the \fIiface\fP argument
 with the interface name should be provided.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 No simple reference.
 .fi
 .TP
 .B disconnect iface <iface> [\-\-nowait] [\-\-timeout <timeout>]
 .br
 Disconnect a device and prevent the device from automatically activating further
-connections without user/manual intervention.  \fI\-\-nowait\fP option causes
-\fInmcli\fP to exit immediately and not to wait for command completion.
-\fI\-\-timeout\fP option provides a means to specify how long to wait for
-operation completion.
+connections without user/manual intervention.
+.RS
+.PP
+Available options are:
+.IP \fI\-\-nowait\fP 13
+\(en exit immediately without waiting for command completion
+.IP \fI\-\-timeout\fP 13
+\(en how long to wait for command completion (default is 10 s)
+.PP
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 interface: org.freedesktop.NetworkManager.Device
 method:    Disconnect
 arguments: none
 .fi
+.RE
 .TP
 .B wifi [list [iface <iface>] [bssid <BSSID>]]
 .br
-List available WiFi access points.  \fIiface\fP and \fIbssid\fP options
-can be used to get just APs for particular interface or specific AP,
+List available Wi\(hyFi access points. The \fIiface\fP and \fIbssid\fP options
+can be used to list APs for a particular interface or with a specific BSSID,
 respectively.
 .br
 .nf
-\fBReference to D-Bus:\fP
+\fBReference to D\(hyBus:\fP
 No simple reference.
 .fi
+.TP
+.B wifi connect <(B)SSID> [password <password>] [wep\-key\-type key|phrase] [iface <iface>] [bssid <BSSID>] [name <name>] [\-\-private] [\-\-nowait] [\-\-timeout <timeout>]
+.br
+Connect to a Wi\(hyFi network specified by SSID or BSSID. The command creates a new
+connection and then activates it on a device. This is a command\(hyline counterpart
+of clicking an SSID in a GUI client. The command always creates a new connection
+and thus it is mainly useful for connecting to new Wi\(hyFi networks. If a connection
+for the network already exists, it's better to connect through it using
+\fInmcli con up id <name>\fP. Note that only open, WEP and WPA\(hyPSK networks are
+supported at the moment. It is also supposed that IP configuration is obtained via
+DHCP.
+.RS
+.PP
+Available options are:
+.IP \fIpassword\fP 13
+\(en password for secured networks (WEP or WPA)
+.IP \fIwep\-key\-type\fP 13
+\(en type of WEP secret, either \fIkey\fP for ASCII/HEX key or \fIphrase\fP for passphrase
+.IP \fIiface\fP 13
+\(en interface that will be used for activation
+.IP \fIbssid\fP 13
+\(en if specified, the created connection will be restricted just for the BSSID
+.IP \fIname\fP 13
+\(en if specified, the connection will use the name (else NM creates a name itself)
+.IP \fI\-\-private\fP 13
+\(en the connection will only be visible to the user who created it (else the connection is system\(hywide)
+.IP \fI\-\-nowait\fP 13
+\(en exit immediately without waiting for command completion
+.IP \fI\-\-timeout\fP 13
+\(en how long to wait for command completion (default is 90 s)
+.PP
+.br
+.nf
+\fBReference to D\(hyBus:\fP
+interface: org.freedesktop.NetworkManager
+method:    AddAndActivateConnection
+arguments: according to arguments
+.fi
 .RE
 
 .SH ENVIRONMENT VARIABLES
 \fInmcli\fP's behavior is affected by the following environment variables.
 .IP "LC_ALL" 13
-If set to a non-empty string value, override the values of all the other
+If set to a non\(hyempty string value, it overrides the values of all the other
 internationalization variables.
 .IP "LC_MESSAGES" 13
-Determines the locale to be used for internationalised messages.
+Determines the locale to be used for internationalized messages.
 .IP "LANG" 13
 Provides a default value for the internationalization variables that are unset
 or null.
 
 .RE
-Notes about localization:
+Internationalization notes:
 .br
 Be aware that \fInmcli\fP is localized and that's why the output depends on
-your environment. It's important to realize that especially when you parse the
+your environment. This is important to realize especially when you parse the
 output.
 .br
 Call \fInmcli\fP as \fBLC_ALL=C nmcli\fP to be sure the locale is
@@ -354,9 +439,10 @@ uses for messages.  The "C" locale is used if none of these variables are set,
 and this locale uses English messages.
 
 .SH EXIT STATUS
-\fInmcli\fP exits with status 0 if it succeeds, a value greater than 0 is returned if errors occur.
+\fInmcli\fP exits with status 0 if it succeeds, a value greater than 0 is
+returned if an error occurs.
 .IP "0" 4
-Success - indicates the operation succeeded
+Success \(en indicates the operation succeeded
 .IP "1" 4
 Unknown or unspecified error
 .IP "2" 4
@@ -370,9 +456,70 @@ Connection deactivation failed
 .IP "6" 4
 Disconnecting device failed
 
+.SH EXAMPLES
+.IP "\fB\f(CWnmcli \-t \-f RUNNING nm\fP\fP"
+.IP
+tells you whether NetworkManager is running or not.
+
+.IP "\fB\f(CWnmcli \-t \-f STATE nm\fP\fP"
+.IP
+shows the overall status of NetworkManager.
+
+.IP "\fB\f(CWnmcli nm wifi off\fP\fP"
+.IP
+switches Wi\(hyFi off.
+
+.IP "\fB\f(CWnmcli \-p con list\fP\fP"
+.IP
+lists all connections NetworkManager has.
+
+.IP "\fB\f(CWnmcli \-f name,autoconnect con list\fP\fP"
+.IP
+lists all connections' names and their autoconnect settings.
+
+.IP "\fB\f(CWnmcli con list id \(dq\&My wired connection\(dq\&\fP\fP"
+.IP
+lists all details of the connection with "My wired connection" name.
+
+.IP "\fB\f(CWnmcli \-p con up id \(dq\&My wired connection\(dq\& iface eth0\fP\fP"
+.IP
+activates the connection with name "My wired connection" on interface eth0.
+The \-p option makes nmcli show progress of the activation.
+
+.IP "\fB\f(CWnmcli con up uuid 6b028a27\-6dc9\-4411\-9886\-e9ad1dd43761 ap 00:3A:98:7C:42:D3\fP\fP"
+.IP
+connects the Wi\(hyFi connection with UUID 6b028a27\-6dc9\-4411\-9886\-e9ad1dd43761 to the AP
+with BSSID 00:3A:98:7C:42:D3.
+
+.IP "\fB\f(CWnmcli dev status\fP\fP"
+.IP
+shows the status for all devices.
+
+.IP "\fB\f(CWnmcli dev disconnect iface em2\fP\fP"
+.IP
+disconnects a connection on interface em2 and marks the device as unavailable for
+auto\(hyconnecting. That's why no connection will automatically be activated on the
+device until the device's "autoconnect" is set to TRUE or user manually activates
+a connection.
+
+.IP "\fB\f(CWnmcli \-f GENERAL,WIFI\-PROPERTIES dev list iface wlan0\fP\fP"
+.IP
+lists details for wlan0 interface; only GENERAL and WIFI\-PROPERTIES sections will be shown.
+
+.IP "\fB\f(CWnmcli dev wifi\fP\fP"
+.IP
+lists available Wi\(hyFi access points known to NetworkManager.
+
+.IP "\fB\f(CWnmcli dev wifi con \(dq\&Cafe Hotspot 1\(dq\& password caffeine name \(dq\&My cafe\(dq\&\fP\fP"
+.IP
+creates a new connection named "My cafe" and then connects it to "Cafe Hotspot 1" SSID
+using "caffeine" password. This is mainly useful when connecting to "Cafe Hotspot 1" for
+the first time. Next time, it is better to use 'nmcli con up id "My cafe"' so that the
+existing connection profile can be used and no additional is created.
+
 .SH BUGS
-There are probably some.  If you find a bug, please report to
-https://bugzilla.gnome.org/ \- product \fINetworkManager\fP.
+There are probably some bugs.  If you find a bug, please report it to
+https://bugzilla.gnome.org/ \(em product \fINetworkManager\fP.
 
 .SH SEE ALSO
 .BR nm\-tool (1),
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
index cc8a2227..06a8cfe9 100644
--- a/po/Makefile.in.in
+++ b/po/Makefile.in.in
@@ -49,8 +49,8 @@ MSGFMT = @MSGFMT@
 XGETTEXT = @XGETTEXT@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
 INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
-MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
-GENPOT   = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
+MSGMERGE = INTLTOOL_EXTRACT="$(INTLTOOL_EXTRACT)" XGETTEXT="$(XGETTEXT)" srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
+GENPOT   = INTLTOOL_EXTRACT="$(INTLTOOL_EXTRACT)" XGETTEXT="$(XGETTEXT)" srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
 
 ALL_LINGUAS = @ALL_LINGUAS@
 
@@ -73,15 +73,20 @@ CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$l
 .SUFFIXES:
 .SUFFIXES: .po .pox .gmo .mo .msg .cat
 
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+INTLTOOL_V_MSGFMT = $(INTLTOOL__v_MSGFMT_$(V))
+INTLTOOL__v_MSGFMT_= $(INTLTOOL__v_MSGFMT_$(AM_DEFAULT_VERBOSITY))
+INTLTOOL__v_MSGFMT_0 = @echo "  MSGFMT" $@;
+
 .po.pox:
 	$(MAKE) $(GETTEXT_PACKAGE).pot
 	$(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox
 
 .po.mo:
-	$(MSGFMT) -o $@ $<
+	$(INTLTOOL_V_MSGFMT)$(MSGFMT) -o $@ $<
 
 .po.gmo:
-	file=`echo $* | sed 's,.*/,,'`.gmo \
+	$(INTLTOOL_V_MSGFMT)file=`echo $* | sed 's,.*/,,'`.gmo \
 	  && rm -f $$file && $(GMSGFMT) -o $$file $<
 
 .po.cat:
diff --git a/po/POTFILES.in b/po/POTFILES.in
index bfc65ac2..cce778fb 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -22,6 +22,7 @@ src/logging/nm-logging.c
 src/modem-manager/nm-modem-cdma.c
 src/modem-manager/nm-modem-gsm.c
 src/nm-device-bond.c
+src/nm-device-adsl.c
 src/nm-device-bt.c
 src/nm-device-ethernet.c
 src/nm-device-infiniband.c
diff --git a/po/de.po b/po/de.po
index 0aa41eea..18248740 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,460 +8,847 @@
 # Andre Klapper <ak-47@gmx.net>, 2007.
 # Hauke Mehrtens <hauke@hauke-m.de>, 2008.
 # Daniel Schury <Daniel.Schury@physik.uni-giessen.de>, 2010.
-# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2009, 2010, 2011.
+# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2009, 2010, 2011, 2012.
+# Daniel Winzen <d@winzen4.de>, 2012.
+# Mario Blättermann <mario.blaettermann@gmail.com>, 2012.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: NetworkManager HEAD\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
 "product=NetworkManager&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2011-08-20 15:25+0000\n"
-"PO-Revision-Date: 2011-08-31 13:16+0100\n"
-"Last-Translator: Christian Kirbach <Christian.Kirbach@googlemail.com>\n"
+"POT-Creation-Date: 2012-05-17 03:25+0000\n"
+"PO-Revision-Date: 2012-05-12 20:02+0100\n"
+"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
 "Language-Team: Deutsch <gnome-de@gnome.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../cli/src/connections.c:64 ../cli/src/connections.c:78
-#: ../cli/src/devices.c:101 ../cli/src/devices.c:114 ../cli/src/devices.c:124
-#: ../cli/src/devices.c:134 ../cli/src/devices.c:148 ../cli/src/devices.c:162
-#: ../cli/src/devices.c:173 ../cli/src/devices.c:184 ../cli/src/devices.c:193
-#: ../cli/src/devices.c:202 ../cli/src/devices.c:224
-msgid "NAME"
-msgstr "NAME"
+#: ../cli/src/common.c:32 ../cli/src/common.c:44 ../cli/src/common.c:52
+#: ../cli/src/common.c:63 ../cli/src/connections.c:125
+#: ../cli/src/connections.c:159
+msgid "GROUP"
+msgstr "GRUPPE"
 
 #. 0
-#: ../cli/src/connections.c:65 ../cli/src/connections.c:79
-msgid "UUID"
-msgstr "UUID"
+#: ../cli/src/common.c:33 ../cli/src/common.c:53
+msgid "ADDRESS"
+msgstr "ADRESSE"
 
 #. 1
-#: ../cli/src/connections.c:66
-msgid "DEVICES"
-msgstr "GERÄTE"
+#: ../cli/src/common.c:34 ../cli/src/common.c:54
+msgid "ROUTE"
+msgstr "ROUTE"
 
 #. 2
-#: ../cli/src/connections.c:67
-msgid "DEFAULT"
-msgstr "VORGABE"
+#: ../cli/src/common.c:35 ../cli/src/common.c:55
+msgid "DNS"
+msgstr "DNS"
 
 #. 3
-#: ../cli/src/connections.c:68
-msgid "SPEC-OBJECT"
-msgstr "SPEC-OBJECT"
+#: ../cli/src/common.c:36 ../cli/src/common.c:56
+msgid "DOMAIN"
+msgstr "DOMAIN"
 
 #. 4
-#: ../cli/src/connections.c:69
-msgid "VPN"
-msgstr "VPN"
+#: ../cli/src/common.c:37
+msgid "WINS"
+msgstr "WINS"
 
-#. 5
-#. 6
-#. 2
-#. 11
-#. 5
-#: ../cli/src/connections.c:70 ../cli/src/connections.c:85
-#: ../cli/src/devices.c:69 ../cli/src/devices.c:214 ../cli/src/devices.c:230
-msgid "DBUS-PATH"
-msgstr "DBUS-PFAD"
+#. 0
+#: ../cli/src/common.c:45 ../cli/src/common.c:64
+msgid "OPTION"
+msgstr "OPTION"
+
+#: ../cli/src/common.c:366
+msgid "unmanaged"
+msgstr "nicht verwaltet"
+
+#: ../cli/src/common.c:368
+msgid "unavailable"
+msgstr "nicht verfügbar"
+
+#: ../cli/src/common.c:370 ../cli/src/network-manager.c:120
+msgid "disconnected"
+msgstr "nicht verbunden"
+
+#: ../cli/src/common.c:372
+msgid "connecting (prepare)"
+msgstr "wird verbunden (wird vorbereitet)"
+
+#: ../cli/src/common.c:374
+msgid "connecting (configuring)"
+msgstr "wird verbunden (wird eingerichtet)"
+
+#: ../cli/src/common.c:376
+msgid "connecting (need authentication)"
+msgstr "wird verbunden (Legitimierung wird benötigt)"
+
+#: ../cli/src/common.c:378
+msgid "connecting (getting IP configuration)"
+msgstr "wird verbunden (IP-Einstellungen werden ermittelt)"
+
+#: ../cli/src/common.c:380
+msgid "connecting (checking IP connectivity)"
+msgstr "wird verbunden (IP-Funktionalität wird geprüft)"
+
+#: ../cli/src/common.c:382
+msgid "connecting (starting secondary connections)"
+msgstr "wird verbunden (Zweitverbindungen werden gestartet)"
+
+#: ../cli/src/common.c:384 ../cli/src/network-manager.c:116
+msgid "connected"
+msgstr "verbunden"
+
+#: ../cli/src/common.c:386 ../cli/src/connections.c:621
+msgid "deactivating"
+msgstr "wird deaktiviert"
+
+#: ../cli/src/common.c:388
+msgid "connection failed"
+msgstr "Verbindung gescheitert"
+
+#: ../cli/src/common.c:390 ../cli/src/connections.c:624
+#: ../cli/src/connections.c:647 ../cli/src/connections.c:1333
+#: ../cli/src/devices.c:612 ../cli/src/network-manager.c:123
+#: ../cli/src/network-manager.c:185 ../cli/src/network-manager.c:188
+#: ../cli/src/network-manager.c:197 ../cli/src/network-manager.c:257
+#: ../cli/src/network-manager.c:273 ../cli/src/network-manager.c:431
+#: ../cli/src/network-manager.c:486 ../cli/src/network-manager.c:524
+#: ../cli/src/network-manager.c:563 ../cli/src/settings.c:563
+#: ../cli/src/settings.c:591 ../cli/src/utils.c:531 ../src/main.c:458
+#: ../src/main.c:477
+msgid "unknown"
+msgstr "unbekannt"
+
+#: ../cli/src/common.c:399
+msgid "No reason given"
+msgstr "Kein Grund angegeben"
+
+#: ../cli/src/common.c:402
+msgid "Unknown error"
+msgstr "Unbekannter Fehler"
+
+#: ../cli/src/common.c:405
+msgid "Device is now managed"
+msgstr "Gerät wird nun verwaltet"
+
+#: ../cli/src/common.c:408
+msgid "Device is now unmanaged"
+msgstr "Gerät wird nun nicht mehr verwaltet"
+
+#: ../cli/src/common.c:411
+msgid "The device could not be readied for configuration"
+msgstr "Das Gerät konnte nicht für die Konfiguration vorbereitet werden"
+
+#: ../cli/src/common.c:414
+msgid ""
+"IP configuration could not be reserved (no available address, timeout, etc)"
+msgstr ""
+"IP-Konfiguration konnte nicht bezogen werden (Adresse nicht verfügbar, "
+"Zeitüberschreitung usw.)"
+
+#: ../cli/src/common.c:417
+msgid "The IP configuration is no longer valid"
+msgstr "Die IP-Konfiguration ist nicht mehr gültig"
+
+#: ../cli/src/common.c:420
+msgid "Secrets were required, but not provided"
+msgstr "Geheimdaten waren erforderlich, wurden aber nicht angegeben"
+
+#: ../cli/src/common.c:423
+msgid "802.1X supplicant disconnected"
+msgstr "802.1X-Supplicant getrennt"
+
+#: ../cli/src/common.c:426
+msgid "802.1X supplicant configuration failed"
+msgstr "Einrichtung des 802.1X-Supplicant fehlgeschlagen"
+
+#: ../cli/src/common.c:429
+msgid "802.1X supplicant failed"
+msgstr "802.1X-Supplicant fehlgeschlagen"
+
+#: ../cli/src/common.c:432
+msgid "802.1X supplicant took too long to authenticate"
+msgstr "802.1X-Supplicant brauchte zu lange für die Legitimierung"
+
+#: ../cli/src/common.c:435
+msgid "PPP service failed to start"
+msgstr "PPP-Dienst konnte nicht gestartet werden"
+
+#: ../cli/src/common.c:438
+msgid "PPP service disconnected"
+msgstr "PPP-Dienst getrennt"
+
+#: ../cli/src/common.c:441
+msgid "PPP failed"
+msgstr "PPP fehlgeschlagen"
+
+#: ../cli/src/common.c:444
+msgid "DHCP client failed to start"
+msgstr "DHCP-Client konnte nicht gestartet werden"
+
+#: ../cli/src/common.c:447
+msgid "DHCP client error"
+msgstr "DHCP-Client-Fehler"
+
+#: ../cli/src/common.c:450
+msgid "DHCP client failed"
+msgstr "DHCP-Client fehlgeschlagen"
+
+#: ../cli/src/common.c:453
+msgid "Shared connection service failed to start"
+msgstr ""
+"Dienst für gemeinsam verwendete Verbindung konnte nicht gestartet werden"
+
+#: ../cli/src/common.c:456
+msgid "Shared connection service failed"
+msgstr "Dienst für gemeinsam verwendete Verbindung fehlgeschlagen"
+
+#: ../cli/src/common.c:459
+msgid "AutoIP service failed to start"
+msgstr "Start des AutoIP-Diensts fehlgeschlagen"
+
+#: ../cli/src/common.c:462
+msgid "AutoIP service error"
+msgstr "Fehler des AutoIP-Diensts"
+
+#: ../cli/src/common.c:465
+msgid "AutoIP service failed"
+msgstr "AutoIP-Dienst fehlgeschlagen"
+
+#: ../cli/src/common.c:468
+msgid "The line is busy"
+msgstr "Die Leitung ist besetzt"
+
+#: ../cli/src/common.c:471
+msgid "No dial tone"
+msgstr "Kein Freizeichen"
+
+#: ../cli/src/common.c:474
+msgid "No carrier could be established"
+msgstr "Es konnte kein Trägersignal aufgebaut werden"
+
+#: ../cli/src/common.c:477
+msgid "The dialing request timed out"
+msgstr "Der Einwahlvorgang benötigte zu viel Zeit"
+
+#: ../cli/src/common.c:480
+msgid "The dialing attempt failed"
+msgstr "Der Einwahlversuch ist fehlgeschlagen"
+
+#: ../cli/src/common.c:483
+msgid "Modem initialization failed"
+msgstr "Modeminitialisierung fehlgeschlagen"
+
+#: ../cli/src/common.c:486
+msgid "Failed to select the specified APN"
+msgstr "Angegebener APN konnte nicht ausgewählt werden"
+
+#: ../cli/src/common.c:489
+msgid "Not searching for networks"
+msgstr "Es wird nicht nach Netzwerken gesucht"
+
+#: ../cli/src/common.c:492
+msgid "Network registration denied"
+msgstr "Netzwerkanmeldung abgelehnt"
+
+#: ../cli/src/common.c:495
+msgid "Network registration timed out"
+msgstr "Netzwerkanmeldung benötigte zu viel Zeit"
+
+#: ../cli/src/common.c:498
+msgid "Failed to register with the requested network"
+msgstr "Anmeldung an dem angeforderten Netzwerk fehlgeschlagen"
+
+#: ../cli/src/common.c:501
+msgid "PIN check failed"
+msgstr "PIN-Überprüfung fehlgeschlagen"
+
+#: ../cli/src/common.c:504
+msgid "Necessary firmware for the device may be missing"
+msgstr "Notwendige Firmware des Geräts fehlt möglicherweise"
+
+#: ../cli/src/common.c:507
+msgid "The device was removed"
+msgstr "Das Gerät wurde entfernt"
+
+#: ../cli/src/common.c:510
+msgid "NetworkManager went to sleep"
+msgstr "NetworkManager ging in den Schlafmodus"
+
+#: ../cli/src/common.c:513
+msgid "The device's active connection disappeared"
+msgstr "Die aktive Verbindung des Geräts verschwand"
+
+#: ../cli/src/common.c:516
+msgid "Device disconnected by user or client"
+msgstr "Das Gerät wurde durch den Benutzer oder Client getrennt"
+
+#: ../cli/src/common.c:519
+msgid "Carrier/link changed"
+msgstr "Trägersignal/Verbindung geändert"
+
+#: ../cli/src/common.c:522
+msgid "The device's existing connection was assumed"
+msgstr "Die bestehende Verbindung des Geräts wurde angenommen"
+
+#: ../cli/src/common.c:525
+msgid "The supplicant is now available"
+msgstr "Der Supplicant ist nun verfügbar"
+
+#: ../cli/src/common.c:528
+msgid "The modem could not be found"
+msgstr "Das Modem wurde nicht gefunden"
+
+#: ../cli/src/common.c:531
+msgid "The Bluetooth connection failed or timed out"
+msgstr ""
+"Die Bluetooth-Verbindung ist fehlgeschlagen oder benötigte zu viel Zeit"
+
+#: ../cli/src/common.c:534
+msgid "GSM Modem's SIM card not inserted"
+msgstr "SIM-Karte des GSM-Modems ist nicht eingesteckt"
+
+#: ../cli/src/common.c:537
+msgid "GSM Modem's SIM PIN required"
+msgstr "PIN der SIM-Karte des GSM-Modems erforderlich"
+
+#: ../cli/src/common.c:540
+msgid "GSM Modem's SIM PUK required"
+msgstr "PUK der SIM-Karte des GSM-Modems erforderlich"
+
+#: ../cli/src/common.c:543
+msgid "GSM Modem's SIM wrong"
+msgstr "SIM-Karte des GSM-Modems ist falsch"
+
+#: ../cli/src/common.c:546
+msgid "InfiniBand device does not support connected mode"
+msgstr "Das InfiniBand-Gerät unterstützt keinen »Connected«-Modus"
+
+#: ../cli/src/common.c:549
+msgid "A dependency of the connection failed"
+msgstr "Eine Abhängigkeit der Verbindung ist gescheitert"
+
+#: ../cli/src/common.c:551 ../cli/src/devices.c:267 ../cli/src/devices.c:283
+#: ../cli/src/devices.c:403 ../cli/src/devices.c:447
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#. 0
+#. used only for 'GENERAL' group listing
+#: ../cli/src/connections.c:58 ../cli/src/connections.c:126
+#: ../cli/src/devices.c:103 ../cli/src/devices.c:124 ../cli/src/devices.c:134
+#: ../cli/src/devices.c:144 ../cli/src/devices.c:158 ../cli/src/devices.c:172
+#: ../cli/src/devices.c:194
+msgid "NAME"
+msgstr "NAME"
+
+#. 0
+#. 1
+#: ../cli/src/connections.c:59 ../cli/src/connections.c:127
+msgid "UUID"
+msgstr "UUID"
 
 #. 1
 #. 0
 #. 1
 #. 2
-#: ../cli/src/connections.c:80 ../cli/src/devices.c:67
-#: ../cli/src/devices.c:103 ../cli/src/devices.c:227
+#: ../cli/src/connections.c:60 ../cli/src/connections.c:160
+#: ../cli/src/devices.c:69 ../cli/src/devices.c:105 ../cli/src/devices.c:197
 msgid "TYPE"
 msgstr "TYP"
 
 #. 2
-#: ../cli/src/connections.c:81
+#: ../cli/src/connections.c:61
 msgid "TIMESTAMP"
 msgstr "ZEITSTEMPEL"
 
 #. 3
-#: ../cli/src/connections.c:82
+#: ../cli/src/connections.c:62
 msgid "TIMESTAMP-REAL"
 msgstr "ZEITSTEMPEL-ECHT"
 
 #. 4
-#: ../cli/src/connections.c:83
+#: ../cli/src/connections.c:63
 msgid "AUTOCONNECT"
 msgstr "AUTO-VERBINDEN"
 
 #. 5
-#: ../cli/src/connections.c:84
+#: ../cli/src/connections.c:64
 msgid "READONLY"
 msgstr "NUR-LESEN"
 
-#: ../cli/src/connections.c:167
+#. 6
+#. 8
+#. 2
+#. 11
+#. 5
+#: ../cli/src/connections.c:65 ../cli/src/connections.c:134
+#: ../cli/src/devices.c:71 ../cli/src/devices.c:184 ../cli/src/devices.c:200
+msgid "DBUS-PATH"
+msgstr "DBUS-PFAD"
+
+#. 2
+#: ../cli/src/connections.c:128
+msgid "DEVICES"
+msgstr "GERÄTE"
+
+#. 3
+#. 1
+#. 6
+#. 1
+#: ../cli/src/connections.c:129 ../cli/src/devices.c:70
+#: ../cli/src/devices.c:110 ../cli/src/network-manager.c:39
+msgid "STATE"
+msgstr "STATUS"
+
+#. 4
+#: ../cli/src/connections.c:130
+msgid "DEFAULT"
+msgstr "VORGABE"
+
+#. 5
+#: ../cli/src/connections.c:131
+msgid "DEFAULT6"
+msgstr "STANDARD6"
+
+#. 6
+#: ../cli/src/connections.c:132
+msgid "SPEC-OBJECT"
+msgstr "SPEC-OBJECT"
+
+#. 7
+#. 1
+#: ../cli/src/connections.c:133 ../cli/src/connections.c:147
+msgid "VPN"
+msgstr "VPN"
+
+#. 9
+#: ../cli/src/connections.c:135
+msgid "CON-PATH"
+msgstr "CON-PFAD"
+
+#. 10
+#: ../cli/src/connections.c:136
+msgid "ZONE"
+msgstr "ZONE"
+
+#. 11
+#: ../cli/src/connections.c:137
+msgid "MASTER-PATH"
+msgstr "MASTER-PFAD"
+
+#: ../cli/src/connections.c:145 ../cli/src/devices.c:80
+msgid "GENERAL"
+msgstr "ALLGEMEIN"
+
+#. 0
+#: ../cli/src/connections.c:146
+msgid "IP"
+msgstr "IP"
+
+#. 1
+#: ../cli/src/connections.c:161
+msgid "USERNAME"
+msgstr "BENUTZERNAME"
+
+#. 2
+#: ../cli/src/connections.c:162
+msgid "GATEWAY"
+msgstr "GATEWAY"
+
+#. 3
+#: ../cli/src/connections.c:163
+msgid "BANNER"
+msgstr "BANNER"
+
+#. 4
+#: ../cli/src/connections.c:164
+msgid "VPN-STATE"
+msgstr "VPN-STATUS"
+
+#. 5
+#: ../cli/src/connections.c:165
+msgid "CFG"
+msgstr "CFG"
+
+#: ../cli/src/connections.c:187
 #, c-format
 msgid ""
 "Usage: nmcli con { COMMAND | help }\n"
-"  COMMAND := { list | status | up | down }\n"
+"  COMMAND := { list | status | up | down | delete }\n"
 "\n"
 "  list [id <id> | uuid <id>]\n"
-"  status\n"
-"  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [nsp <name>] [--"
+"  status [id <id> | uuid <id> | path <path>]\n"
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [nsp <name>] [--"
 "nowait] [--timeout <timeout>]\n"
-"  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout "
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [--nowait] [--timeout "
 "<timeout>]\n"
 "  down id <id> | uuid <id>\n"
+"  delete id <id> | uuid <id>\n"
 msgstr ""
 "Aufruf: nmcli con { BEFEHL | help }\n"
-"  BEFEHL := { list | status | up | down }\n"
+"  BEFEHL := { list | status | up | down | delete }\n"
 "\n"
 "  list [id <Kennung> | uuid <Kennung>]\n"
-"  status\n"
-"  up id <Kennung> | uuid <Kennung> [iface <Schnittstelle>] [ap <hwaddr>] "
-"[nsp <Name>] [--nowait] [--timeout <timeout>]\n"
-"  up id <Kennung> | uuid <Kennung> [iface <Schnittstelle>] [ap <hwaddr>] [--"
+"  status [id <Kennung> | uuid <Kennung> | path <Pfad>]\n"
+"  up id <Kennung> | uuid <Kennung> [iface <Schnittstelle>] [ap <BSSID>] [nsp "
+"<Name>] [--nowait] [--timeout <timeout>]\n"
+"  up id <Kennung> | uuid <Kennung> [iface <Schnittstelle>] [ap <BSSID>] [--"
 "nowait] [--timeout <timeout>]\n"
 "  down id <Kennung> | uuid <Kennung>\n"
+"  delete id <Kennung> | uuid <Kennung>\n"
 
-#: ../cli/src/connections.c:220 ../cli/src/connections.c:544
+#: ../cli/src/connections.c:246 ../cli/src/connections.c:597
 #, c-format
 msgid "Error: 'con list': %s"
 msgstr "Fehler: »Verb. Liste«: %s"
 
-#: ../cli/src/connections.c:222 ../cli/src/connections.c:546
+#: ../cli/src/connections.c:248 ../cli/src/connections.c:599
 #, c-format
 msgid "Error: 'con list': %s; allowed fields: %s"
 msgstr "Fehler: »Verb. Liste«: %s; erlaubte Felder: %s"
 
-#: ../cli/src/connections.c:230
+#: ../cli/src/connections.c:256
 msgid "Connection details"
 msgstr "Verbindungsinformationen"
 
-#: ../cli/src/connections.c:419
+#: ../cli/src/connections.c:472
 msgid "never"
 msgstr "nie"
 
 #. "CAPABILITIES"
 #. Print header
 #. "WIFI-PROPERTIES"
-#: ../cli/src/connections.c:420 ../cli/src/connections.c:421
-#: ../cli/src/connections.c:599 ../cli/src/connections.c:601
-#: ../cli/src/devices.c:509 ../cli/src/devices.c:562 ../cli/src/devices.c:687
-#: ../cli/src/devices.c:713 ../cli/src/devices.c:714 ../cli/src/devices.c:715
-#: ../cli/src/devices.c:716 ../cli/src/devices.c:717 ../cli/src/settings.c:520
-#: ../cli/src/settings.c:563 ../cli/src/settings.c:663
-#: ../cli/src/settings.c:937 ../cli/src/settings.c:938
-#: ../cli/src/settings.c:940 ../cli/src/settings.c:942
-#: ../cli/src/settings.c:1067 ../cli/src/settings.c:1068
-#: ../cli/src/settings.c:1069 ../cli/src/settings.c:1148
-#: ../cli/src/settings.c:1149 ../cli/src/settings.c:1150
-#: ../cli/src/settings.c:1151 ../cli/src/settings.c:1152
-#: ../cli/src/settings.c:1153 ../cli/src/settings.c:1154
-#: ../cli/src/settings.c:1155 ../cli/src/settings.c:1156
-#: ../cli/src/settings.c:1157 ../cli/src/settings.c:1158
-#: ../cli/src/settings.c:1159 ../cli/src/settings.c:1160
-#: ../cli/src/settings.c:1235
+#: ../cli/src/connections.c:473 ../cli/src/connections.c:474
+#: ../cli/src/connections.c:711 ../cli/src/connections.c:712
+#: ../cli/src/connections.c:714 ../cli/src/devices.c:411
+#: ../cli/src/devices.c:464 ../cli/src/devices.c:578 ../cli/src/devices.c:579
+#: ../cli/src/devices.c:611 ../cli/src/devices.c:637 ../cli/src/devices.c:638
+#: ../cli/src/devices.c:639 ../cli/src/devices.c:640 ../cli/src/devices.c:641
+#: ../cli/src/network-manager.c:267 ../cli/src/settings.c:657
+#: ../cli/src/settings.c:727 ../cli/src/settings.c:847
+#: ../cli/src/settings.c:1129 ../cli/src/settings.c:1130
+#: ../cli/src/settings.c:1132 ../cli/src/settings.c:1134
+#: ../cli/src/settings.c:1135 ../cli/src/settings.c:1263
+#: ../cli/src/settings.c:1264 ../cli/src/settings.c:1265
+#: ../cli/src/settings.c:1266 ../cli/src/settings.c:1341
+#: ../cli/src/settings.c:1342 ../cli/src/settings.c:1343
+#: ../cli/src/settings.c:1344 ../cli/src/settings.c:1345
+#: ../cli/src/settings.c:1346 ../cli/src/settings.c:1347
+#: ../cli/src/settings.c:1348 ../cli/src/settings.c:1349
+#: ../cli/src/settings.c:1350 ../cli/src/settings.c:1351
+#: ../cli/src/settings.c:1352 ../cli/src/settings.c:1353
+#: ../cli/src/settings.c:1424
 msgid "yes"
 msgstr "ja"
 
-#: ../cli/src/connections.c:420 ../cli/src/connections.c:421
-#: ../cli/src/connections.c:599 ../cli/src/connections.c:601
-#: ../cli/src/devices.c:509 ../cli/src/devices.c:562 ../cli/src/devices.c:687
-#: ../cli/src/devices.c:713 ../cli/src/devices.c:714 ../cli/src/devices.c:715
-#: ../cli/src/devices.c:716 ../cli/src/devices.c:717 ../cli/src/settings.c:520
-#: ../cli/src/settings.c:522 ../cli/src/settings.c:563
-#: ../cli/src/settings.c:663 ../cli/src/settings.c:937
-#: ../cli/src/settings.c:938 ../cli/src/settings.c:940
-#: ../cli/src/settings.c:942 ../cli/src/settings.c:1067
-#: ../cli/src/settings.c:1068 ../cli/src/settings.c:1069
-#: ../cli/src/settings.c:1148 ../cli/src/settings.c:1149
-#: ../cli/src/settings.c:1150 ../cli/src/settings.c:1151
-#: ../cli/src/settings.c:1152 ../cli/src/settings.c:1153
-#: ../cli/src/settings.c:1154 ../cli/src/settings.c:1155
-#: ../cli/src/settings.c:1156 ../cli/src/settings.c:1157
-#: ../cli/src/settings.c:1158 ../cli/src/settings.c:1159
-#: ../cli/src/settings.c:1160 ../cli/src/settings.c:1235
+#: ../cli/src/connections.c:473 ../cli/src/connections.c:474
+#: ../cli/src/connections.c:711 ../cli/src/connections.c:712
+#: ../cli/src/connections.c:714 ../cli/src/devices.c:411
+#: ../cli/src/devices.c:464 ../cli/src/devices.c:578 ../cli/src/devices.c:579
+#: ../cli/src/devices.c:611 ../cli/src/devices.c:637 ../cli/src/devices.c:638
+#: ../cli/src/devices.c:639 ../cli/src/devices.c:640 ../cli/src/devices.c:641
+#: ../cli/src/network-manager.c:269 ../cli/src/settings.c:657
+#: ../cli/src/settings.c:659 ../cli/src/settings.c:727
+#: ../cli/src/settings.c:847 ../cli/src/settings.c:1129
+#: ../cli/src/settings.c:1130 ../cli/src/settings.c:1132
+#: ../cli/src/settings.c:1134 ../cli/src/settings.c:1135
+#: ../cli/src/settings.c:1263 ../cli/src/settings.c:1264
+#: ../cli/src/settings.c:1265 ../cli/src/settings.c:1266
+#: ../cli/src/settings.c:1341 ../cli/src/settings.c:1342
+#: ../cli/src/settings.c:1343 ../cli/src/settings.c:1344
+#: ../cli/src/settings.c:1345 ../cli/src/settings.c:1346
+#: ../cli/src/settings.c:1347 ../cli/src/settings.c:1348
+#: ../cli/src/settings.c:1349 ../cli/src/settings.c:1350
+#: ../cli/src/settings.c:1351 ../cli/src/settings.c:1352
+#: ../cli/src/settings.c:1353 ../cli/src/settings.c:1424
 msgid "no"
 msgstr "nein"
 
-#: ../cli/src/connections.c:495
+#: ../cli/src/connections.c:548
 msgid "Connection list"
 msgstr "Verbindungsliste"
 
-#: ../cli/src/connections.c:508 ../cli/src/connections.c:1368
-#: ../cli/src/connections.c:1383 ../cli/src/connections.c:1392
-#: ../cli/src/connections.c:1402 ../cli/src/connections.c:1414
-#: ../cli/src/connections.c:1509 ../cli/src/devices.c:1190
-#: ../cli/src/devices.c:1200 ../cli/src/devices.c:1314
-#: ../cli/src/devices.c:1321 ../cli/src/devices.c:1534
-#: ../cli/src/devices.c:1541
+#: ../cli/src/connections.c:561 ../cli/src/connections.c:1094
+#: ../cli/src/connections.c:1630 ../cli/src/connections.c:1645
+#: ../cli/src/connections.c:1654 ../cli/src/connections.c:1664
+#: ../cli/src/connections.c:1676 ../cli/src/connections.c:1784
+#: ../cli/src/connections.c:1886 ../cli/src/devices.c:1031
+#: ../cli/src/devices.c:1041 ../cli/src/devices.c:1159
+#: ../cli/src/devices.c:1167 ../cli/src/devices.c:1531
+#: ../cli/src/devices.c:1538 ../cli/src/devices.c:1552
+#: ../cli/src/devices.c:1559 ../cli/src/devices.c:1576
+#: ../cli/src/devices.c:1587 ../cli/src/devices.c:1808
+#: ../cli/src/devices.c:1815
 #, c-format
 msgid "Error: %s argument is missing."
 msgstr "Fehler: Argument %s fehlt."
 
-#: ../cli/src/connections.c:521
+#: ../cli/src/connections.c:574
 #, c-format
 msgid "Error: %s - no such connection."
 msgstr "Fehler: Verbindung %s existiert nicht."
 
-#: ../cli/src/connections.c:527 ../cli/src/connections.c:1427
-#: ../cli/src/connections.c:1526 ../cli/src/devices.c:987
-#: ../cli/src/devices.c:1067 ../cli/src/devices.c:1214
-#: ../cli/src/devices.c:1327 ../cli/src/devices.c:1547
+#: ../cli/src/connections.c:580 ../cli/src/connections.c:1689
+#: ../cli/src/connections.c:1801 ../cli/src/connections.c:1893
+#: ../cli/src/devices.c:815 ../cli/src/devices.c:895 ../cli/src/devices.c:1055
+#: ../cli/src/devices.c:1173 ../cli/src/devices.c:1600
+#: ../cli/src/devices.c:1821
 #, c-format
 msgid "Unknown parameter: %s\n"
 msgstr "Unbekannter Parameter: %s\n"
 
-#: ../cli/src/connections.c:536
+#: ../cli/src/connections.c:589
 #, c-format
 msgid "Error: no valid parameter specified."
 msgstr "Fehler: Es wurde kein gültiger Parameter angegeben."
 
-#: ../cli/src/connections.c:551 ../cli/src/connections.c:1617
-#: ../cli/src/devices.c:1755 ../cli/src/network-manager.c:463
+#: ../cli/src/connections.c:604 ../cli/src/connections.c:1986
+#: ../cli/src/devices.c:2029 ../cli/src/network-manager.c:596
 #, c-format
 msgid "Error: %s."
 msgstr "Fehler: %s."
 
+#: ../cli/src/connections.c:617
+msgid "activating"
+msgstr "wird aktiviert"
+
+#: ../cli/src/connections.c:619
+msgid "activated"
+msgstr "aktiviert"
+
+#: ../cli/src/connections.c:633
+msgid "VPN connecting (prepare)"
+msgstr "VPN wird verbunden (wird vorbereitet)"
+
+#: ../cli/src/connections.c:635
+msgid "VPN connecting (need authentication)"
+msgstr "VPN wird verbunden (Legitimierung wird benötigt)"
+
+#: ../cli/src/connections.c:637
+msgid "VPN connecting"
+msgstr "VPN wird verbunden"
+
 #: ../cli/src/connections.c:639
+msgid "VPN connecting (getting IP configuration)"
+msgstr "VPN wird verbunden (IP-Einstellungen werden ermittelt)"
+
+#: ../cli/src/connections.c:641
+msgid "VPN connected"
+msgstr "VPN verbunden"
+
+#: ../cli/src/connections.c:643
+msgid "VPN connection failed"
+msgstr "VPN-Verbindung gescheitert"
+
+#: ../cli/src/connections.c:645
+msgid "VPN disconnected"
+msgstr "VPN getrennt"
+
+#: ../cli/src/connections.c:898 ../cli/src/connections.c:1122
 #, c-format
 msgid "Error: 'con status': %s"
 msgstr "Fehler: »Verb. Status«: %s"
 
-#: ../cli/src/connections.c:641
+#: ../cli/src/connections.c:900 ../cli/src/connections.c:1124
 #, c-format
 msgid "Error: 'con status': %s; allowed fields: %s"
 msgstr "Fehler: »Verb. Status«: %s; erlaubte Felder: %s"
 
-#: ../cli/src/connections.c:649 ../cli/src/connections.c:1442
-#: ../cli/src/connections.c:1541 ../cli/src/devices.c:1014
-#: ../cli/src/devices.c:1076 ../cli/src/devices.c:1229
-#: ../cli/src/devices.c:1357 ../cli/src/devices.c:1576
+#: ../cli/src/connections.c:908
+msgid "Active connection details"
+msgstr "Einzelheiten zur aktiven Verbindung"
+
+#: ../cli/src/connections.c:1044 ../cli/src/connections.c:1704
+#: ../cli/src/connections.c:1816 ../cli/src/connections.c:1907
+#: ../cli/src/devices.c:842 ../cli/src/devices.c:904 ../cli/src/devices.c:1070
+#: ../cli/src/devices.c:1203 ../cli/src/devices.c:1622
+#: ../cli/src/devices.c:1850 ../cli/src/network-manager.c:311
 #, c-format
 msgid "Error: Can't find out if NetworkManager is running: %s."
 msgstr ""
 "Fehler: Es kann nicht erkannt werden, ob NetworkManager ausgeführt wird: %s."
 
-#: ../cli/src/connections.c:653 ../cli/src/connections.c:1446
-#: ../cli/src/connections.c:1545 ../cli/src/devices.c:1018
-#: ../cli/src/devices.c:1080 ../cli/src/devices.c:1233
-#: ../cli/src/devices.c:1361 ../cli/src/devices.c:1580
+#: ../cli/src/connections.c:1048 ../cli/src/connections.c:1708
+#: ../cli/src/connections.c:1820 ../cli/src/connections.c:1911
+#: ../cli/src/devices.c:846 ../cli/src/devices.c:908 ../cli/src/devices.c:1074
+#: ../cli/src/devices.c:1207 ../cli/src/devices.c:1626
+#: ../cli/src/devices.c:1854 ../cli/src/network-manager.c:315
 #, c-format
 msgid "Error: NetworkManager is not running."
 msgstr "Fehler: NetworkManager wird nicht ausgeführt"
 
-#: ../cli/src/connections.c:661
+#: ../cli/src/connections.c:1080
 msgid "Active connections"
 msgstr "Aktive Verbindungen"
 
-#: ../cli/src/connections.c:1085
+#: ../cli/src/connections.c:1105
+#, c-format
+msgid "Error: '%s' is not an active connection."
+msgstr "Fehler: »%s« ist keine aktive Verbindung."
+
+#: ../cli/src/connections.c:1110
+#, c-format
+msgid "Error: unknown parameter: %s"
+msgstr "Fehler: unbekannter Parameter: %s"
+
+#: ../cli/src/connections.c:1217
 #, c-format
 msgid "no active connection on device '%s'"
 msgstr "Keine aktive Verbindung auf Gerät »%s«"
 
-#: ../cli/src/connections.c:1093
+#: ../cli/src/connections.c:1225
 #, c-format
 msgid "no active connection or device"
 msgstr "Keine aktive Verbindung oder Gerät"
 
-#: ../cli/src/connections.c:1164
+#: ../cli/src/connections.c:1296
 #, c-format
 msgid "device '%s' not compatible with connection '%s'"
 msgstr "Gerät »%s« ist nicht mit der Verbindung »%s« kompatibel"
 
-#: ../cli/src/connections.c:1166
+#: ../cli/src/connections.c:1298
 #, c-format
 msgid "no device found for connection '%s'"
 msgstr "Für die Verbindung »%s« wurde kein Gerät gefunden"
 
-#: ../cli/src/connections.c:1177
-msgid "activating"
-msgstr "wird aktiviert"
-
-#: ../cli/src/connections.c:1179
-msgid "activated"
-msgstr "aktiviert"
-
-#: ../cli/src/connections.c:1181 ../cli/src/devices.c:304
-msgid "deactivating"
-msgstr "wird deaktiviert"
-
-#: ../cli/src/connections.c:1184 ../cli/src/connections.c:1207
-#: ../cli/src/connections.c:1240 ../cli/src/devices.c:308
-#: ../cli/src/devices.c:688 ../cli/src/network-manager.c:118
-#: ../cli/src/network-manager.c:180 ../cli/src/network-manager.c:183
-#: ../cli/src/network-manager.c:192 ../cli/src/network-manager.c:298
-#: ../cli/src/network-manager.c:353 ../cli/src/network-manager.c:391
-#: ../cli/src/network-manager.c:430 ../cli/src/settings.c:485
-#: ../cli/src/utils.c:396
-msgid "unknown"
-msgstr "unbekannt"
-
-#: ../cli/src/connections.c:1193
-msgid "VPN connecting (prepare)"
-msgstr "VPN wird verbunden (wird vorbereitet)"
-
-#: ../cli/src/connections.c:1195
-msgid "VPN connecting (need authentication)"
-msgstr "VPN wird verbunden (Legitimierung wird benötigt)"
-
-#: ../cli/src/connections.c:1197
-msgid "VPN connecting"
-msgstr "VPN wird verbunden"
-
-#: ../cli/src/connections.c:1199
-msgid "VPN connecting (getting IP configuration)"
-msgstr "VPN wird verbunden (IP-Einstellungen werden ermittelt)"
-
-#: ../cli/src/connections.c:1201
-msgid "VPN connected"
-msgstr "VPN verbunden"
-
-#: ../cli/src/connections.c:1203
-msgid "VPN connection failed"
-msgstr "VPN-Verbindung gescheitert"
-
-#: ../cli/src/connections.c:1205
-msgid "VPN disconnected"
-msgstr "VPN getrennt"
-
-#: ../cli/src/connections.c:1216
+#: ../cli/src/connections.c:1309
 msgid "unknown reason"
 msgstr "unbekannter Grund"
 
-#: ../cli/src/connections.c:1218
+#: ../cli/src/connections.c:1311
 msgid "none"
 msgstr "kein"
 
-#: ../cli/src/connections.c:1220
+#: ../cli/src/connections.c:1313
 msgid "the user was disconnected"
 msgstr "Der Benutzer wurde getrennt"
 
-#: ../cli/src/connections.c:1222
+#: ../cli/src/connections.c:1315
 msgid "the base network connection was interrupted"
 msgstr "Die Basisverbindung wurde unterbrochen"
 
-#: ../cli/src/connections.c:1224
+#: ../cli/src/connections.c:1317
 msgid "the VPN service stopped unexpectedly"
 msgstr "Der VPN-Dienst wurde unerwartet gestoppt"
 
-#: ../cli/src/connections.c:1226
+#: ../cli/src/connections.c:1319
 msgid "the VPN service returned invalid configuration"
 msgstr "Der VPN-Dienst gab ungültige Einstellungen zurück"
 
-#: ../cli/src/connections.c:1228
+#: ../cli/src/connections.c:1321
 msgid "the connection attempt timed out"
 msgstr "Der Verbindungsversuch benötigte zu viel Zeit"
 
-#: ../cli/src/connections.c:1230
+#: ../cli/src/connections.c:1323
 msgid "the VPN service did not start in time"
 msgstr "Der VPN-Dienst wurde nicht rechtzeitig gestartet"
 
-#: ../cli/src/connections.c:1232
+#: ../cli/src/connections.c:1325
 msgid "the VPN service failed to start"
 msgstr "Der VPN-Dienst konnte nicht gestartet werden"
 
-#: ../cli/src/connections.c:1234
+#: ../cli/src/connections.c:1327
 msgid "no valid VPN secrets"
 msgstr "Keine gültigen VPN-Schlüssel"
 
-#: ../cli/src/connections.c:1236
+#: ../cli/src/connections.c:1329
 msgid "invalid VPN secrets"
 msgstr "Ungültige VPN-Schlüssel"
 
-#: ../cli/src/connections.c:1238
+#: ../cli/src/connections.c:1331
 msgid "the connection was removed"
 msgstr "Die Verbindung wurde entfernt"
 
-#: ../cli/src/connections.c:1252
-#, c-format
-msgid "state: %s\n"
-msgstr "Status: %s\n"
-
-#: ../cli/src/connections.c:1255 ../cli/src/connections.c:1281
+#: ../cli/src/connections.c:1348 ../cli/src/connections.c:1553
 #, c-format
-msgid "Connection activated\n"
-msgstr "Verbindung aktiviert\n"
+msgid "Connection successfully activated (D-Bus active path: %s)\n"
+msgstr "Verbindung wurde erfolgreich aktiviert (aktiver D-Bus-Pfad: %s)\n"
 
-#: ../cli/src/connections.c:1258
+#. Active connection failed and dissapeared, quit.
+#: ../cli/src/connections.c:1353 ../cli/src/connections.c:1454
 #, c-format
 msgid "Error: Connection activation failed."
 msgstr "Fehler: Aktivierung der Verbindung ist gescheitert."
 
-#: ../cli/src/connections.c:1277
+#: ../cli/src/connections.c:1378
 #, c-format
-msgid "state: %s (%d)\n"
-msgstr "Status: %s (%d)\n"
+msgid "VPN connection successfully activated (D-Bus active path: %s)\n"
+msgstr "VPN-Verbindung wurde erfolgreich aktiviert (aktiver D-Bus-Pfad: %s)\n"
 
-#: ../cli/src/connections.c:1287
+#: ../cli/src/connections.c:1386
 #, c-format
 msgid "Error: Connection activation failed: %s."
 msgstr "Fehler: Aktivierung der Verbindung ist gescheitert: %s."
 
-#: ../cli/src/connections.c:1304 ../cli/src/devices.c:1136
+#: ../cli/src/connections.c:1483 ../cli/src/devices.c:964
 #, c-format
 msgid "Error: Timeout %d sec expired."
 msgstr "Fehler: Zeitbeschränkung von %d Sekunden ist abgelaufen."
 
-#: ../cli/src/connections.c:1317
+#: ../cli/src/connections.c:1544
 #, c-format
 msgid "Error: Connection activation failed: %s"
 msgstr "Fehler: Aktivierung der Verbindung ist gescheitert: %s"
 
-#: ../cli/src/connections.c:1323
-#, c-format
-msgid "Active connection state: %s\n"
-msgstr "Status der aktiven Verbindung: %s\n"
-
-#: ../cli/src/connections.c:1324
-#, c-format
-msgid "Active connection path: %s\n"
-msgstr "Pfad der aktiven Verbindung: %s\n"
-
-#: ../cli/src/connections.c:1376 ../cli/src/connections.c:1517
+#: ../cli/src/connections.c:1638 ../cli/src/connections.c:1792
+#: ../cli/src/connections.c:1920
 #, c-format
 msgid "Error: Unknown connection: %s."
 msgstr "Fehler: Unbekannte Verbindung: %s."
 
-#: ../cli/src/connections.c:1422 ../cli/src/devices.c:1208
+#: ../cli/src/connections.c:1684 ../cli/src/devices.c:1049
+#: ../cli/src/devices.c:1595
 #, c-format
 msgid "Error: timeout value '%s' is not valid."
 msgstr "Fehler: Der Wert »%s« ist keine gültige Zeitangabe."
 
-#: ../cli/src/connections.c:1435 ../cli/src/connections.c:1534
+#: ../cli/src/connections.c:1697 ../cli/src/connections.c:1809
+#: ../cli/src/connections.c:1900
 #, c-format
 msgid "Error: id or uuid has to be specified."
 msgstr "Fehler: id oder uuid müssen angegeben werden."
 
-#: ../cli/src/connections.c:1463
+#: ../cli/src/connections.c:1729
 #, c-format
 msgid "Error: No suitable device found: %s."
 msgstr "Fehler: Es wurde kein passendes Gerät gefunden: %s."
 
-#: ../cli/src/connections.c:1465
+#: ../cli/src/connections.c:1731
 #, c-format
 msgid "Error: No suitable device found."
 msgstr "Fehler: Es wurde kein passendes Gerät gefunden."
 
-#: ../cli/src/connections.c:1570
+#: ../cli/src/connections.c:1845
 #, c-format
 msgid "Warning: Connection not active\n"
 msgstr "Warnung: Verbindung ist nicht aktiv\n"
 
-#: ../cli/src/connections.c:1608
+#: ../cli/src/connections.c:1859
+#, c-format
+msgid "Error: Connection deletion failed: %s"
+msgstr "Fehler: Löschen der Verbindung fehlgeschlagen: %s"
+
+#: ../cli/src/connections.c:1977
 #, c-format
 msgid "Error: 'con' command '%s' is not valid."
 msgstr "Fehler: Der »con«-Befehl »%s« ist ungültig."
 
-#: ../cli/src/connections.c:1673
+#: ../cli/src/connections.c:2045
 #, c-format
 msgid "Error: could not connect to D-Bus."
 msgstr "Fehler: Verbindung zu D-Bus konnte nicht hergestellt werden."
 
-#: ../cli/src/connections.c:1680
+#: ../cli/src/connections.c:2053
 #, c-format
 msgid "Error: Could not get system settings."
 msgstr "Fehler: Systemeinstellungen konnten nicht ermittelt werden."
 
-#: ../cli/src/connections.c:1690
+#: ../cli/src/connections.c:2063
 #, c-format
 msgid "Error: Can't obtain connections: settings service is not running."
 msgstr ""
@@ -471,222 +858,230 @@ msgstr ""
 #. 0
 #. 9
 #. 3
-#: ../cli/src/devices.c:66 ../cli/src/devices.c:102 ../cli/src/devices.c:212
-#: ../cli/src/devices.c:228
+#: ../cli/src/devices.c:68 ../cli/src/devices.c:104 ../cli/src/devices.c:182
+#: ../cli/src/devices.c:198
 msgid "DEVICE"
 msgstr "GERÄT"
 
-#. 1
-#. 4
-#. 1
-#: ../cli/src/devices.c:68 ../cli/src/devices.c:106
-#: ../cli/src/network-manager.c:39
-msgid "STATE"
-msgstr "STATUS"
-
-#: ../cli/src/devices.c:78
-msgid "GENERAL"
-msgstr "ALLGEMEIN"
-
 #. 0
-#: ../cli/src/devices.c:79
+#: ../cli/src/devices.c:81
 msgid "CAPABILITIES"
 msgstr "RESSOURCEN"
 
 #. 1
-#: ../cli/src/devices.c:80
+#: ../cli/src/devices.c:82
 msgid "WIFI-PROPERTIES"
 msgstr "WLAN-EIGENSCHAFTEN"
 
 #. 2
-#: ../cli/src/devices.c:81
+#: ../cli/src/devices.c:83
 msgid "AP"
 msgstr "AP"
 
 #. 3
-#: ../cli/src/devices.c:82
+#: ../cli/src/devices.c:84
 msgid "WIRED-PROPERTIES"
 msgstr "KABEL-EIGENSCHAFTEN"
 
 #. 4
-#: ../cli/src/devices.c:83
+#: ../cli/src/devices.c:85
 msgid "WIMAX-PROPERTIES"
 msgstr "WIMAX-EIGENSCHAFTEN"
 
 #. 5
 #. 0
-#: ../cli/src/devices.c:84 ../cli/src/devices.c:225
+#: ../cli/src/devices.c:86 ../cli/src/devices.c:195
 msgid "NSP"
 msgstr "NSP"
 
 #. 6
-#: ../cli/src/devices.c:85
-msgid "IP4-SETTINGS"
-msgstr "IP4-EINSTELLUNGEN"
+#: ../cli/src/devices.c:87
+msgid "IP4"
+msgstr "IP4"
 
 #. 7
-#: ../cli/src/devices.c:86
-msgid "IP4-DNS"
-msgstr "IP4-DNS"
+#: ../cli/src/devices.c:88
+msgid "DHCP4"
+msgstr "DHCP4"
 
 #. 8
-#: ../cli/src/devices.c:87
-msgid "IP6-SETTINGS"
-msgstr "IP6-EINSTELLUNGEN"
+#: ../cli/src/devices.c:89
+msgid "IP6"
+msgstr "IP6"
 
 #. 9
-#: ../cli/src/devices.c:88
-msgid "IP6-DNS"
-msgstr "IP6-DNS"
+#: ../cli/src/devices.c:90
+msgid "DHCP6"
+msgstr "DHCP6"
 
 #. 2
-#: ../cli/src/devices.c:104
+#: ../cli/src/devices.c:106
+msgid "VENDOR"
+msgstr "HERSTELLER"
+
+#. 3
+#: ../cli/src/devices.c:107
+msgid "PRODUCT"
+msgstr "PRODUKT"
+
+#. 4
+#: ../cli/src/devices.c:108
 msgid "DRIVER"
 msgstr "TREIBER"
 
-#. 3
-#: ../cli/src/devices.c:105
+#. 5
+#: ../cli/src/devices.c:109
 msgid "HWADDR"
 msgstr "HWADDR"
 
-#. 0
+#. 7
+#: ../cli/src/devices.c:111
+msgid "REASON"
+msgstr "GRUND"
+
+#. 8
+#: ../cli/src/devices.c:112
+msgid "UDI"
+msgstr "UDI"
+
+#. 9
+#: ../cli/src/devices.c:113
+msgid "IP-IFACE"
+msgstr "IP-IFACE"
+
+#. 10
+#: ../cli/src/devices.c:114
+msgid "NM-MANAGED"
+msgstr "NM-VERWALTET"
+
+#. 11
 #: ../cli/src/devices.c:115
+msgid "FIRMWARE-MISSING"
+msgstr "FIRMWARE-FEHLT"
+
+#. 12
+#: ../cli/src/devices.c:116
+msgid "CONNECTION"
+msgstr "VERBINDUNG"
+
+#. 0
+#: ../cli/src/devices.c:125
 msgid "CARRIER-DETECT"
 msgstr "TRÄGERFREQUENZERKENNUNG"
 
 #. 1
-#: ../cli/src/devices.c:116
+#: ../cli/src/devices.c:126
 msgid "SPEED"
 msgstr "GESCHWINDIGKEIT"
 
 #. 0
-#: ../cli/src/devices.c:125
+#: ../cli/src/devices.c:135
 msgid "CARRIER"
 msgstr "TRÄGERFREQUENZ"
 
 #. 0
-#: ../cli/src/devices.c:135
+#: ../cli/src/devices.c:145
 msgid "WEP"
 msgstr "WEP"
 
 #. 1
-#: ../cli/src/devices.c:136
+#: ../cli/src/devices.c:146
 msgid "WPA"
 msgstr "WPA"
 
 #. 2
-#: ../cli/src/devices.c:137
+#: ../cli/src/devices.c:147
 msgid "WPA2"
 msgstr "WPA2"
 
 #. 3
-#: ../cli/src/devices.c:138
+#: ../cli/src/devices.c:148
 msgid "TKIP"
 msgstr "TKIP"
 
 #. 4
-#: ../cli/src/devices.c:139
+#: ../cli/src/devices.c:149
 msgid "CCMP"
 msgstr "CCMP"
 
 #. 0
-#: ../cli/src/devices.c:149
+#: ../cli/src/devices.c:159
 msgid "CTR-FREQ"
 msgstr "CTR-FREQUENZ"
 
 #. 1
-#: ../cli/src/devices.c:150
+#: ../cli/src/devices.c:160
 msgid "RSSI"
 msgstr "RSSI"
 
 #. 2
-#: ../cli/src/devices.c:151
+#: ../cli/src/devices.c:161
 msgid "CINR"
 msgstr "CINR"
 
 #. 3
-#: ../cli/src/devices.c:152
+#: ../cli/src/devices.c:162
 msgid "TX-POW"
 msgstr "TX-POW"
 
 #. 4
-#: ../cli/src/devices.c:153
+#: ../cli/src/devices.c:163
 msgid "BSID"
 msgstr "BSID"
 
 #. 0
-#: ../cli/src/devices.c:163 ../cli/src/devices.c:174
-msgid "ADDRESS"
-msgstr "ADRESSE"
-
-#. 1
-#: ../cli/src/devices.c:164 ../cli/src/devices.c:175
-msgid "PREFIX"
-msgstr "PRÄFIX"
-
-#. 2
-#: ../cli/src/devices.c:165 ../cli/src/devices.c:176
-msgid "GATEWAY"
-msgstr "GATEWAY"
-
-#. 0
-#: ../cli/src/devices.c:185 ../cli/src/devices.c:194
-msgid "DNS"
-msgstr "DNS"
-
-#. 0
-#: ../cli/src/devices.c:203
+#: ../cli/src/devices.c:173
 msgid "SSID"
 msgstr "SSID"
 
 #. 1
-#: ../cli/src/devices.c:204
+#: ../cli/src/devices.c:174
 msgid "BSSID"
 msgstr "BSSID"
 
 #. 2
-#: ../cli/src/devices.c:205
+#: ../cli/src/devices.c:175
 msgid "MODE"
 msgstr "MODUS"
 
 #. 3
-#: ../cli/src/devices.c:206
+#: ../cli/src/devices.c:176
 msgid "FREQ"
 msgstr "FREQUENZ"
 
 #. 4
-#: ../cli/src/devices.c:207
+#: ../cli/src/devices.c:177
 msgid "RATE"
 msgstr "RATE"
 
 #. 5
 #. 1
-#: ../cli/src/devices.c:208 ../cli/src/devices.c:226
+#: ../cli/src/devices.c:178 ../cli/src/devices.c:196
 msgid "SIGNAL"
 msgstr "SIGNAL"
 
 #. 6
-#: ../cli/src/devices.c:209
+#: ../cli/src/devices.c:179
 msgid "SECURITY"
 msgstr "SICHERHEIT"
 
 #. 7
-#: ../cli/src/devices.c:210
+#: ../cli/src/devices.c:180
 msgid "WPA-FLAGS"
 msgstr "WPA-SCHALTER"
 
 #. 8
-#: ../cli/src/devices.c:211
+#: ../cli/src/devices.c:181
 msgid "RSN-FLAGS"
 msgstr "RSN-SCHALTER"
 
 #. 10
 #. 4
-#: ../cli/src/devices.c:213 ../cli/src/devices.c:229
+#: ../cli/src/devices.c:183 ../cli/src/devices.c:199
 msgid "ACTIVE"
 msgstr "AKTIV"
 
-#: ../cli/src/devices.c:256
+#: ../cli/src/devices.c:218
 #, c-format
 msgid ""
 "Usage: nmcli dev { COMMAND | help }\n"
@@ -698,7 +1093,10 @@ msgid ""
 "  status\n"
 "  list [iface <iface>]\n"
 "  disconnect iface <iface> [--nowait] [--timeout <timeout>]\n"
-"  wifi [list [iface <iface>] [hwaddr <hwaddr>]]\n"
+"  wifi [list [iface <iface>] [bssid <BSSID>]]\n"
+"  wifi connect <(B)SSID> [password <password>] [wep-key-type key|phrase] "
+"[iface <iface>] [bssid <BSSID>] [name <name>]\n"
+"               [--private] [--nowait] [--timeout <timeout>]\n"
 "  wimax [list [iface <iface>] [nsp <name>]]\n"
 "\n"
 msgstr ""
@@ -711,262 +1109,290 @@ msgstr ""
 "  status\n"
 "  list [iface <Schnittstelle>]\n"
 "  disconnect iface <Schnittstelle> [--nowait] [--timeout <timeout>]\n"
-"  wifi [list [iface <Schnittstelle>] [hwaddr <hwaddr>]]\n"
+"  wifi [list [iface <Schnittstelle>] [bssid <BSSID>]]\n"
+"  wifi connect <(B)SSID> [password <Passwort>] [wep-key-type key|phrase] "
+"[iface <Schnittstelle>] [bssid <BSSID>] [name <Name>]\n"
+"               [--private] [--nowait] [--timeout <timeout>]\n"
 "  wimax [list [iface <Schnittstelle>] [nsp <Name>]]\n"
 "\n"
 
-#: ../cli/src/devices.c:284
-msgid "unmanaged"
-msgstr "nicht verwaltet"
-
-#: ../cli/src/devices.c:286
-msgid "unavailable"
-msgstr "nicht verfügbar"
-
-#: ../cli/src/devices.c:288 ../cli/src/network-manager.c:115
-msgid "disconnected"
-msgstr "nicht verbunden"
-
-#: ../cli/src/devices.c:290
-msgid "connecting (prepare)"
-msgstr "wird verbunden (wird vorbereitet)"
-
-#: ../cli/src/devices.c:292
-msgid "connecting (configuring)"
-msgstr "wird verbunden (wird eingerichtet)"
-
-#: ../cli/src/devices.c:294
-msgid "connecting (need authentication)"
-msgstr "wird verbunden (Legitimierung wird benötigt)"
-
-#: ../cli/src/devices.c:296
-msgid "connecting (getting IP configuration)"
-msgstr "wird verbunden (IP-Einstellungen werden ermittelt)"
-
-#: ../cli/src/devices.c:298
-msgid "connecting (checking IP connectivity)"
-msgstr "wird verbunden (IP-Funktionalität wird geprüft)"
-
-#: ../cli/src/devices.c:300
-msgid "connecting (starting secondary connections)"
-msgstr "wird verbunden (Zweitverbindungen werden gestartet)"
-
-#: ../cli/src/devices.c:302 ../cli/src/network-manager.c:111
-msgid "connected"
-msgstr "verbunden"
-
-#: ../cli/src/devices.c:306
-msgid "connection failed"
-msgstr "Verbindung gescheitert"
-
-#: ../cli/src/devices.c:331 ../cli/src/devices.c:341 ../cli/src/devices.c:501
-#: ../cli/src/devices.c:545
-msgid "Unknown"
-msgstr "Unbekannt"
-
-#: ../cli/src/devices.c:374
+#: ../cli/src/devices.c:316
 msgid "(none)"
 msgstr "(keine)"
 
-#: ../cli/src/devices.c:399
-#, c-format
-msgid "%s: error converting IP4 address 0x%X"
-msgstr "%s: Fehler bei Umwandlung der IPv4-Addresse 0x%X"
-
-#: ../cli/src/devices.c:470
+#: ../cli/src/devices.c:372
 #, c-format
 msgid "%u MHz"
 msgstr "%u MHz"
 
-#: ../cli/src/devices.c:471
+#: ../cli/src/devices.c:373
 #, c-format
 msgid "%u MB/s"
 msgstr "%u MB/s"
 
-#: ../cli/src/devices.c:480
+#: ../cli/src/devices.c:382
 msgid "Encrypted: "
 msgstr "Verschlüsselt: "
 
-#: ../cli/src/devices.c:485
+#: ../cli/src/devices.c:387
 msgid "WEP "
 msgstr "WEP"
 
-#: ../cli/src/devices.c:487
+#: ../cli/src/devices.c:389
 msgid "WPA "
 msgstr "WPA"
 
-#: ../cli/src/devices.c:489
+#: ../cli/src/devices.c:391
 msgid "WPA2 "
 msgstr "WPA2"
 
 # Das ergibt z.B. WPA-Enterprise, klingt komisch mit »Unternehmen«
-#: ../cli/src/devices.c:492
+#: ../cli/src/devices.c:394
 msgid "Enterprise "
 msgstr "Enterprise"
 
-#: ../cli/src/devices.c:501
+#: ../cli/src/devices.c:403
 msgid "Ad-Hoc"
 msgstr "Ad-Hoc"
 
-#: ../cli/src/devices.c:501
+#: ../cli/src/devices.c:403
 msgid "Infrastructure"
 msgstr "Infrastuktur"
 
-#: ../cli/src/devices.c:536
+#: ../cli/src/devices.c:438
 msgid "Home"
 msgstr "Zu Hause"
 
-#: ../cli/src/devices.c:539
+#: ../cli/src/devices.c:441
 msgid "Partner"
 msgstr "Partner"
 
-#: ../cli/src/devices.c:542
+#: ../cli/src/devices.c:444
 msgid "Roaming"
 msgstr "Bereiche wechselnd"
 
-#: ../cli/src/devices.c:612
+#: ../cli/src/devices.c:516
 #, c-format
 msgid "Error: 'dev list': %s"
 msgstr "Fehler: »Geräteliste«: %s"
 
-#: ../cli/src/devices.c:614
+#: ../cli/src/devices.c:518
 #, c-format
 msgid "Error: 'dev list': %s; allowed fields: %s"
 msgstr "Fehler: »Geräteliste«: %s; erlaubte Felder: %s"
 
-#: ../cli/src/devices.c:623
+#: ../cli/src/devices.c:527
 msgid "Device details"
 msgstr "Geräteinformationen"
 
-#: ../cli/src/devices.c:657 ../cli/src/devices.c:1152 ../cli/src/utils.c:342
+#: ../cli/src/devices.c:572 ../cli/src/devices.c:573 ../cli/src/devices.c:990
+#: ../cli/src/utils.c:477
 msgid "(unknown)"
 msgstr "(unbekannt)"
 
-#: ../cli/src/devices.c:658
-msgid "unknown)"
-msgstr "unbekannt)"
+#: ../cli/src/devices.c:581
+msgid "not connected"
+msgstr "nicht verbunden"
 
-#: ../cli/src/devices.c:684
+#: ../cli/src/devices.c:608
 #, c-format
 msgid "%u Mb/s"
 msgstr "%u Mb/s"
 
 #. Print header
 #. "WIRED-PROPERTIES"
-#: ../cli/src/devices.c:757
+#: ../cli/src/devices.c:681
 msgid "on"
 msgstr "an"
 
-#: ../cli/src/devices.c:757
+#: ../cli/src/devices.c:681
 msgid "off"
 msgstr "aus"
 
-#: ../cli/src/devices.c:1004
+#: ../cli/src/devices.c:832
 #, c-format
 msgid "Error: 'dev status': %s"
 msgstr "Fehler: »Gerätestatus«: %s"
 
-#: ../cli/src/devices.c:1006
+#: ../cli/src/devices.c:834
 #, c-format
 msgid "Error: 'dev status': %s; allowed fields: %s"
 msgstr "Fehler: »Gerätestatus«: %s; erlaubte Felder: %s"
 
-#: ../cli/src/devices.c:1029
+#: ../cli/src/devices.c:857
 msgid "Status of devices"
 msgstr "Status der Geräte"
 
-#: ../cli/src/devices.c:1060
+#: ../cli/src/devices.c:888
 #, c-format
 msgid "Error: '%s' argument is missing."
 msgstr "Fehler: Argument »%s« fehlt."
 
-#: ../cli/src/devices.c:1101 ../cli/src/devices.c:1253
-#: ../cli/src/devices.c:1389 ../cli/src/devices.c:1608
+#: ../cli/src/devices.c:929 ../cli/src/devices.c:1094
+#: ../cli/src/devices.c:1235 ../cli/src/devices.c:1882
 #, c-format
 msgid "Error: Device '%s' not found."
 msgstr "Fehler: Gerät »%s« wurde nicht gefunden."
 
-#: ../cli/src/devices.c:1124
+#: ../cli/src/devices.c:952
 #, c-format
 msgid "Success: Device '%s' successfully disconnected."
 msgstr "Erfolg: Gerät »%s« wurde erfolgreich getrennt."
 
-#: ../cli/src/devices.c:1149
+#: ../cli/src/devices.c:987
 #, c-format
 msgid "Error: Device '%s' (%s) disconnecting failed: %s"
 msgstr "Fehler: Trennung des Gerätes »%s« (%s) ist gescheitert: %s"
 
-#: ../cli/src/devices.c:1157
+#: ../cli/src/devices.c:1000
 #, c-format
-msgid "Device state: %d (%s)\n"
-msgstr "Gerätezustand: %d (%s)\n"
+msgid "Device '%s' has been disconnected.\n"
+msgstr "Gerät »%s« wurde getrennt.\n"
 
-#: ../cli/src/devices.c:1222
+#: ../cli/src/devices.c:1063
 #, c-format
 msgid "Error: iface has to be specified."
 msgstr "Fehler: Es muss eine Schnittstelle angegeben werden."
 
-#: ../cli/src/devices.c:1347
+#: ../cli/src/devices.c:1193
 #, c-format
 msgid "Error: 'dev wifi': %s"
 msgstr "Fehler: »Geräte-WLAN«: %s"
 
-#: ../cli/src/devices.c:1349
+#: ../cli/src/devices.c:1195
 #, c-format
 msgid "Error: 'dev wifi': %s; allowed fields: %s"
 msgstr "Fehler: »Geräte-WLAN«: %s; erlaubte Felder: %s"
 
-#: ../cli/src/devices.c:1372
+#: ../cli/src/devices.c:1218
 msgid "WiFi scan list"
 msgstr "Suchliste des WLAN"
 
-#: ../cli/src/devices.c:1409 ../cli/src/devices.c:1463
-#: ../cli/src/devices.c:1670
+#: ../cli/src/devices.c:1255 ../cli/src/devices.c:1309
 #, c-format
-msgid "Error: Access point with hwaddr '%s' not found."
-msgstr ""
-"Fehler: Der Zugangspunkt mit der Hardware-Adresse »%s« wurde nicht gefunden."
+msgid "Error: Access point with bssid '%s' not found."
+msgstr "Fehler: Zugangspunkt mit der BSSID »%s« nicht gefunden."
 
-#: ../cli/src/devices.c:1426
+#: ../cli/src/devices.c:1272
 #, c-format
 msgid "Error: Device '%s' is not a WiFi device."
 msgstr "Fehler: Gerät »%s« ist kein WLAN-Gerät."
 
-#: ../cli/src/devices.c:1490
+#: ../cli/src/devices.c:1340 ../cli/src/devices.c:1386
+#, c-format
+msgid "Connection with UUID '%s' created and activated on device '%s'\n"
+msgstr ""
+"Verbindung mit der UUID »%s« wurde erstellt und auf dem Gerät »%s« aktiviert\n"
+
+#: ../cli/src/devices.c:1345
+#, c-format
+msgid "Error: Connection activation failed: (%d) %s."
+msgstr "Fehler: Aktivierung der Verbindung ist gescheitert: (%d) %s."
+
+#: ../cli/src/devices.c:1370
+#, c-format
+msgid "Error: Failed to add/activate new connection: (%d) %s"
+msgstr ""
+"Fehler: Neue Verbindung konnte nicht hinzugefügt und aktiviert werden: (%d) %"
+"s"
+
+#: ../cli/src/devices.c:1378
+#, c-format
+msgid "Error: Failed to add/activate new connection: Unknown error"
+msgstr ""
+"Fehler: Neue Verbindung konnte nicht hinzugefügt und aktiviert werden: "
+"Unbekannter Fehler"
+
+#: ../cli/src/devices.c:1522
+#, c-format
+msgid "Error: SSID or BSSID are missing."
+msgstr "Fehler: SSID oder BSSID fehlt."
+
+#: ../cli/src/devices.c:1545
+#, c-format
+msgid "Error: bssid argument value '%s' is not a valid BSSID."
+msgstr "Fehler: Der Wert »%s« des BSSID-Arguments ist keine gültige BSSID."
+
+#: ../cli/src/devices.c:1569
+#, c-format
+msgid ""
+"Error: wep-key-type argument value '%s' is invalid, use 'key' or 'phrase'."
+msgstr ""
+"Fehler: Wert des Arguments wep-key-type »%s« ist ungültig, verwenden Sie "
+"stattdessen »key« oder »phrase«"
+
+#: ../cli/src/devices.c:1609
+#, c-format
+msgid "Error: BSSID to connect to (%s) differs from bssid argument (%s)."
+msgstr ""
+"Fehler: BSSID für die Verbindung (%s) entspricht nicht dem bssid-Argument (%"
+"s)."
+
+#: ../cli/src/devices.c:1615
+#, c-format
+msgid "Error: Parameter '%s' is neither SSID nor BSSID."
+msgstr "Fehler: Parameter »%s« ist weder SSID noch BSSID."
+
+#: ../cli/src/devices.c:1644
+#, c-format
+msgid "Error: Device '%s' is not a Wi-Fi device."
+msgstr "Fehler: Gerät »%s« ist kein WLAN-Gerät."
+
+#: ../cli/src/devices.c:1646
+#, c-format
+msgid "Error: No Wi-Fi device found."
+msgstr "Fehler: Es wurde kein WLAN-Gerät gefunden."
+
+#: ../cli/src/devices.c:1664
+#, c-format
+msgid "Error: No network with SSID '%s' found."
+msgstr "Fehler: Es wurde kein Netzwerk mit SSID »%s« gefunden."
+
+#: ../cli/src/devices.c:1666
+#, c-format
+msgid "Error: No access point with BSSID '%s' found."
+msgstr "Fehler: Es wurde kein Zugangspunkt mit BSSID »%s« gefunden."
+
+#: ../cli/src/devices.c:1764
 #, c-format
 msgid "Error: 'dev wifi' command '%s' is not valid."
 msgstr "Fehler: Der Befehl »%s« für »dev wifi« ist ungültig."
 
-#: ../cli/src/devices.c:1566
+#: ../cli/src/devices.c:1840
 #, c-format
 msgid "Error: 'dev wimax': %s"
 msgstr "Fehler: »Gerät Wimax«: %s"
 
-#: ../cli/src/devices.c:1568
+#: ../cli/src/devices.c:1842
 #, c-format
 msgid "Error: 'dev wimax': %s; allowed fields: %s"
 msgstr "Fehler: »Gerät Wimax«: %s; erlaubte Felder: %s"
 
-#: ../cli/src/devices.c:1591
+#: ../cli/src/devices.c:1865
 msgid "WiMAX NSP list"
 msgstr "WiMAX NSP-Liste"
 
-#: ../cli/src/devices.c:1628
+#: ../cli/src/devices.c:1902
 #, c-format
 msgid "Error: NSP with name '%s' not found."
 msgstr "Fehler: NSP namens »%s« wurde nicht gefunden."
 
-#: ../cli/src/devices.c:1639
+#: ../cli/src/devices.c:1913
 #, c-format
 msgid "Error: Device '%s' is not a WiMAX device."
 msgstr "Fehler: Gerät »%s« ist kein WiMAX-Gerät."
 
-#: ../cli/src/devices.c:1697
+#: ../cli/src/devices.c:1944
+#, c-format
+msgid "Error: Access point with nsp '%s' not found."
+msgstr "Fehler: Zugangspunkt mit NSP »%s« nicht gefunden."
+
+#: ../cli/src/devices.c:1971
 #, c-format
 msgid "Error: 'dev wimax' command '%s' is not valid."
 msgstr "Fehler: Der Befehl »%s« für »dev wimax« ist ungültig."
 
-#: ../cli/src/devices.c:1747
+#: ../cli/src/devices.c:2021
 #, c-format
 msgid "Error: 'dev' command '%s' is not valid."
 msgstr "Fehler: Der Befehl »%s« für »dev« ist ungültig."
@@ -1015,16 +1441,27 @@ msgstr "WIMAX-HARDWARE"
 msgid "WIMAX"
 msgstr "WIMAX"
 
-#: ../cli/src/network-manager.c:74
+#: ../cli/src/network-manager.c:62
+msgid "PERMISSION"
+msgstr "BEFUGNIS"
+
+#. 0
+#: ../cli/src/network-manager.c:63
+msgid "VALUE"
+msgstr "WERT"
+
+#: ../cli/src/network-manager.c:77
 #, c-format
 msgid ""
 "Usage: nmcli nm { COMMAND | help }\n"
 "\n"
-"  COMMAND := { status | enable | sleep | wifi | wwan | wimax }\n"
+"  COMMAND := { status | permissions | enable | sleep | wifi | wwan | "
+"wimax }\n"
 "\n"
-"  COMMAND := { status | enable | sleep | wifi | wwan }\n"
+"  COMMAND := { status | permissions | enable | sleep | wifi | wwan }\n"
 "\n"
 "  status\n"
+"  permissions\n"
 "  enable [true|false]\n"
 "  sleep [true|false]\n"
 "  wifi [on|off]\n"
@@ -1034,11 +1471,12 @@ msgid ""
 msgstr ""
 "Aufruf: nmcli nm { BEFEHL | help }\n"
 "\n"
-"  BEFEHL := { status | enable | sleep | wifi | wwan | wimax }\n"
+"  BEFEHL := { status | permissions | enable | sleep | wifi | wwan | wimax }\n"
 "\n"
-"  BEFEHL := { status | enable | sleep | wifi | wwan }\n"
+"  BEFEHL := { status | permissions | enable | sleep | wifi | wwan }\n"
 "\n"
 "  status\n"
+"  permissions\n"
 "  enable [true|false]\n"
 "  sleep [true|false]\n"
 "  wifi [on|off]\n"
@@ -1046,142 +1484,164 @@ msgstr ""
 "  wimax [on|off]\n"
 "\n"
 
-#: ../cli/src/network-manager.c:103
+#: ../cli/src/network-manager.c:108
 msgid "asleep"
 msgstr "schlafend"
 
-#: ../cli/src/network-manager.c:105
+#: ../cli/src/network-manager.c:110
 msgid "connecting"
 msgstr "wird verbunden"
 
-#: ../cli/src/network-manager.c:107
+#: ../cli/src/network-manager.c:112
 msgid "connected (local only)"
 msgstr "verbunden (nur lokal)"
 
-#: ../cli/src/network-manager.c:109
+#: ../cli/src/network-manager.c:114
 msgid "connected (site only)"
 msgstr "verbunden (nur Gelände)"
 
-#: ../cli/src/network-manager.c:113
+#: ../cli/src/network-manager.c:118
 msgid "disconnecting"
 msgstr "wird getrennt"
 
-#: ../cli/src/network-manager.c:153
+#: ../cli/src/network-manager.c:158
 #, c-format
 msgid "Error: 'nm status': %s"
 msgstr "Fehler: »NM-Status«: %s"
 
-#: ../cli/src/network-manager.c:155
+#: ../cli/src/network-manager.c:160
 #, c-format
 msgid "Error: 'nm status': %s; allowed fields: %s"
 msgstr "Fehler: »NM-Status«: %s; erlaubte Felder: %s"
 
 #. create NMClient
-#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:169
-#: ../cli/src/network-manager.c:170 ../cli/src/network-manager.c:171
-#: ../cli/src/network-manager.c:172 ../cli/src/network-manager.c:174
-#: ../cli/src/network-manager.c:175 ../cli/src/network-manager.c:296
-#: ../cli/src/network-manager.c:351 ../cli/src/network-manager.c:389
-#: ../cli/src/network-manager.c:428
+#: ../cli/src/network-manager.c:173 ../cli/src/network-manager.c:174
+#: ../cli/src/network-manager.c:175 ../cli/src/network-manager.c:176
+#: ../cli/src/network-manager.c:177 ../cli/src/network-manager.c:179
+#: ../cli/src/network-manager.c:180 ../cli/src/network-manager.c:429
+#: ../cli/src/network-manager.c:484 ../cli/src/network-manager.c:522
+#: ../cli/src/network-manager.c:561
 msgid "enabled"
 msgstr "aktiviert"
 
-#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:169
-#: ../cli/src/network-manager.c:170 ../cli/src/network-manager.c:171
-#: ../cli/src/network-manager.c:172 ../cli/src/network-manager.c:174
-#: ../cli/src/network-manager.c:175 ../cli/src/network-manager.c:296
-#: ../cli/src/network-manager.c:351 ../cli/src/network-manager.c:389
-#: ../cli/src/network-manager.c:428
+#: ../cli/src/network-manager.c:173 ../cli/src/network-manager.c:174
+#: ../cli/src/network-manager.c:175 ../cli/src/network-manager.c:176
+#: ../cli/src/network-manager.c:177 ../cli/src/network-manager.c:179
+#: ../cli/src/network-manager.c:180 ../cli/src/network-manager.c:429
+#: ../cli/src/network-manager.c:484 ../cli/src/network-manager.c:522
+#: ../cli/src/network-manager.c:561
 msgid "disabled"
 msgstr "deaktiviert"
 
-#: ../cli/src/network-manager.c:188
+#: ../cli/src/network-manager.c:193
 msgid "NetworkManager status"
 msgstr "Status von NetworkManager"
 
 #. Print header
-#: ../cli/src/network-manager.c:191
+#: ../cli/src/network-manager.c:196
 msgid "running"
 msgstr "wird ausgeführt"
 
-#: ../cli/src/network-manager.c:191
+#: ../cli/src/network-manager.c:196
 msgid "not running"
 msgstr "wird nicht ausgeführt"
 
-#: ../cli/src/network-manager.c:222 ../cli/src/utils.c:322
+# Könnte auch Legitimierung sein. Der kontext entscheidet. -ck
+# Sieht entweder nach lausigen Englischkenntnissen oder nach einem irrtümlicherweise als übersetzbar markierten String aus. 
+#: ../cli/src/network-manager.c:271
+#, fuzzy
+#| msgid "auto"
+msgid "auth"
+msgstr "auth"
+
+#: ../cli/src/network-manager.c:301
+#, c-format
+msgid "Error: 'nm permissions': %s"
+msgstr "Fehler: »nm permissions«: %s"
+
+#: ../cli/src/network-manager.c:303
+#, c-format
+msgid "Error: 'nm permissions': %s; allowed fields: %s"
+msgstr "Fehler: »nm permissions«: %s; erlaubte Felder: %s"
+
+#: ../cli/src/network-manager.c:324
+msgid "NetworkManager permissions"
+msgstr "Befugnisse von NetworkManager"
+
+#: ../cli/src/network-manager.c:350 ../cli/src/utils.c:457
 #, c-format
 msgid "Error: Couldn't connect to system bus: %s"
 msgstr "Fehler: Verbindung zum Systembus konnte nicht hergestellt werden: %s"
 
-#: ../cli/src/network-manager.c:233
+#: ../cli/src/network-manager.c:361
 #, c-format
 msgid "Error: Couldn't create D-Bus object proxy."
 msgstr "Fehler: D-Bus-Objektproxy konnte nicht erstellt werden."
 
-#: ../cli/src/network-manager.c:239
+#: ../cli/src/network-manager.c:367
 #, c-format
 msgid "Error in sleep: %s"
 msgstr "Fehler beim schlafen gehen: %s"
 
-#: ../cli/src/network-manager.c:283 ../cli/src/network-manager.c:338
-#: ../cli/src/network-manager.c:376 ../cli/src/network-manager.c:415
+#: ../cli/src/network-manager.c:416 ../cli/src/network-manager.c:471
+#: ../cli/src/network-manager.c:509 ../cli/src/network-manager.c:548
 #, c-format
 msgid "Error: '--fields' value '%s' is not valid here; allowed fields: %s"
 msgstr ""
 "Fehler: Der Wert »%s« für »--fields« ist hier nicht gültig; erlaubte Felder: %s"
 
-#: ../cli/src/network-manager.c:291
+#: ../cli/src/network-manager.c:424
 msgid "Networking enabled"
 msgstr "Netzwerk aktiviert"
 
-#: ../cli/src/network-manager.c:307
+#: ../cli/src/network-manager.c:440
 #, c-format
 msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'."
 msgstr ""
 "Fehler: Ungültiger »aktiviert«-Parameter: »%s«; Verwenden Sie »true« oder "
 "»false«."
 
-#: ../cli/src/network-manager.c:317
+#: ../cli/src/network-manager.c:450
 #, c-format
 msgid "Error: Sleeping status is not exported by NetworkManager."
 msgstr ""
 "Fehler: Der Schlafzustand-Status wurde von NetworkManager nicht exportiert."
 
-#: ../cli/src/network-manager.c:325
+#: ../cli/src/network-manager.c:458
 #, c-format
 msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'."
 msgstr ""
 "Fehler: Ungültiger »schlafend«-Parameter: »%s«; Verwenden Sie »true« oder "
 "»false«."
 
-#: ../cli/src/network-manager.c:346
+#: ../cli/src/network-manager.c:479
 msgid "WiFi enabled"
 msgstr "WLAN aktiviert"
 
-#: ../cli/src/network-manager.c:362
+#: ../cli/src/network-manager.c:495
 #, c-format
 msgid "Error: invalid 'wifi' parameter: '%s'."
 msgstr "Fehler: Ungültiger »wifi«-Parameter: »%s«."
 
-#: ../cli/src/network-manager.c:384
+#: ../cli/src/network-manager.c:517
 msgid "WWAN enabled"
 msgstr "WWAN aktiviert"
 
-#: ../cli/src/network-manager.c:400
+#: ../cli/src/network-manager.c:533
 #, c-format
 msgid "Error: invalid 'wwan' parameter: '%s'."
 msgstr "Fehler: Ungültiger »wwan«-Parameter: »%s«."
 
-#: ../cli/src/network-manager.c:423
+#: ../cli/src/network-manager.c:556
 msgid "WiMAX enabled"
 msgstr "WiMAX aktiviert"
 
-#: ../cli/src/network-manager.c:439
+#: ../cli/src/network-manager.c:572
 #, c-format
 msgid "Error: invalid 'wimax' parameter: '%s'."
 msgstr "Fehler: Ungültiger »wimax«-Parameter: »%s«."
 
-#: ../cli/src/network-manager.c:452
+#: ../cli/src/network-manager.c:585
 #, c-format
 msgid "Error: 'nm' command '%s' is not valid."
 msgstr "Fehler: Der Befehl »%s« für »nm« ist ungültig."
@@ -1292,115 +1752,150 @@ msgstr "Fehler: NMClient-Objekt konnte nicht erstellt werden."
 msgid "Success"
 msgstr "Erfolg"
 
-#: ../cli/src/settings.c:423
+#: ../cli/src/settings.c:497
 #, c-format
 msgid "%d (hex-ascii-key)"
 msgstr "%d (HEX-ASCII-Schlüssel)"
 
-#: ../cli/src/settings.c:425
+#: ../cli/src/settings.c:499
 #, c-format
 msgid "%d (104/128-bit passphrase)"
 msgstr "%d (104/128-bit-Passphrase)"
 
-#: ../cli/src/settings.c:428
+#: ../cli/src/settings.c:502
 #, c-format
 msgid "%d (unknown)"
 msgstr "%d (unbekannt)"
 
-#: ../cli/src/settings.c:454
+#: ../cli/src/settings.c:528
 msgid "0 (unknown)"
 msgstr "0 (unbekannt)"
 
-#: ../cli/src/settings.c:460
+#: ../cli/src/settings.c:534
 msgid "any, "
 msgstr "jede,"
 
-#: ../cli/src/settings.c:462
+#: ../cli/src/settings.c:536
 msgid "900 MHz, "
 msgstr "900 MHz,"
 
-#: ../cli/src/settings.c:464
+#: ../cli/src/settings.c:538
 msgid "1800 MHz, "
 msgstr "1800 MHz,"
 
-#: ../cli/src/settings.c:466
+#: ../cli/src/settings.c:540
 msgid "1900 MHz, "
 msgstr "1900 MHz,"
 
-#: ../cli/src/settings.c:468
+#: ../cli/src/settings.c:542
 msgid "850 MHz, "
 msgstr "850 MHz,"
 
-#: ../cli/src/settings.c:470
+#: ../cli/src/settings.c:544
 msgid "WCDMA 3GPP UMTS 2100 MHz, "
 msgstr "WCDMA 3GPP UMTS 2100 MHz, "
 
-#: ../cli/src/settings.c:472
+#: ../cli/src/settings.c:546
 msgid "WCDMA 3GPP UMTS 1800 MHz, "
 msgstr "WCDMA 3GPP UMTS 1800 MHz, "
 
-#: ../cli/src/settings.c:474
+#: ../cli/src/settings.c:548
 msgid "WCDMA 3GPP UMTS 1700/2100 MHz, "
 msgstr "WCDMA 3GPP UMTS 1700/2100 MHz, "
 
-#: ../cli/src/settings.c:476
+#: ../cli/src/settings.c:550
 msgid "WCDMA 3GPP UMTS 800 MHz, "
 msgstr "WCDMA 3GPP UMTS 800 MHz, "
 
-#: ../cli/src/settings.c:478
+#: ../cli/src/settings.c:552
 msgid "WCDMA 3GPP UMTS 850 MHz, "
 msgstr "WCDMA 3GPP UMTS 850 MHz, "
 
-#: ../cli/src/settings.c:480
+#: ../cli/src/settings.c:554
 msgid "WCDMA 3GPP UMTS 900 MHz, "
 msgstr "WCDMA 3GPP UMTS 900 MHz, "
 
-#: ../cli/src/settings.c:482
+#: ../cli/src/settings.c:556
 msgid "WCDMA 3GPP UMTS 1700 MHz, "
 msgstr "WCDMA 3GPP UMTS 1700 MHz, "
 
-#: ../cli/src/settings.c:566 ../cli/src/settings.c:732
+#: ../cli/src/settings.c:558
+msgid "WCDMA 3GPP UMTS 1900 MHz, "
+msgstr "WCDMA 3GPP UMTS 1900 MHz, "
+
+#: ../cli/src/settings.c:560
+msgid "WCDMA 3GPP UMTS 2600 MHz, "
+msgstr "WCDMA 3GPP UMTS 2600 MHz, "
+
+#: ../cli/src/settings.c:578
+msgid "0 (NONE)"
+msgstr "0 (KEINES)"
+
+#: ../cli/src/settings.c:584
+msgid "REORDER_HEADERS, "
+msgstr "REORDER_HEADERS, "
+
+#: ../cli/src/settings.c:586
+msgid "GVRP, "
+msgstr "GVRP, "
+
+#: ../cli/src/settings.c:588
+msgid "LOOSE_BINDING, "
+msgstr "LOOSE_BINDING, "
+
+#: ../cli/src/settings.c:731 ../cli/src/settings.c:927
+#: ../cli/src/settings.c:1631
 msgid "auto"
 msgstr "auto"
 
-#: ../cli/src/settings.c:727 ../cli/src/settings.c:730
-#: ../cli/src/settings.c:731 ../cli/src/utils.c:176
+#: ../cli/src/settings.c:921 ../cli/src/settings.c:924
+#: ../cli/src/settings.c:925 ../cli/src/utils.c:279
 msgid "not set"
 msgstr "nicht gesetzt"
 
-#: ../cli/src/utils.c:128
+#: ../cli/src/utils.c:103
+#, c-format
+msgid "Error converting IP4 address '0x%X' to text form"
+msgstr "Fehler beim Umwandeln der IPv4-Adresse »0x%X« in eine Textform"
+
+#: ../cli/src/utils.c:131
+#, c-format
+msgid "Error converting IP6 address '%s' to text form"
+msgstr "Fehler beim Umwandeln der IPv6-Adresse »%s« in eine Textform"
+
+#: ../cli/src/utils.c:232
 #, c-format
 msgid "field '%s' has to be alone"
 msgstr "Feld »%s« muss allein stehen"
 
-#: ../cli/src/utils.c:131
+#: ../cli/src/utils.c:235
 #, c-format
 msgid "invalid field '%s'"
 msgstr "ungültiges Feld »%s«"
 
-#: ../cli/src/utils.c:150
+#: ../cli/src/utils.c:254
 #, c-format
 msgid "Option '--terse' requires specifying '--fields'"
 msgstr "Optione »--terse« benötigt die Angabe von »--fields«"
 
-#: ../cli/src/utils.c:154
+#: ../cli/src/utils.c:258
 #, c-format
 msgid "Option '--terse' requires specific '--fields' option values , not '%s'"
 msgstr "Option »--terse« benötigt bestimmte »--fields«-Werte, nicht »%s«"
 
-#: ../cli/src/utils.c:333
+#: ../cli/src/utils.c:468
 #, c-format
 msgid "Error: Couldn't create D-Bus object proxy for org.freedesktop.DBus"
 msgstr ""
 "Fehler: D-Bus-Objektproxy konnte nicht für org.freedesktop.DBus erstellt "
 "werden."
 
-#: ../cli/src/utils.c:341
+#: ../cli/src/utils.c:476
 #, c-format
 msgid "Error: NameHasOwner request failed: %s"
 msgstr "Fehler: Anfrage NameHasOwner ist gescheitert: %s"
 
-#: ../cli/src/utils.c:386
+#: ../cli/src/utils.c:521
 #, c-format
 msgid ""
 "Warning: nmcli (%s) and NetworkManager (%s) versions don't match. Use --"
@@ -1409,7 +1904,7 @@ msgstr ""
 "Warnung: Die Versionen von nmcli (%s) und NetworkManager (%s) stimmen nicht "
 "überein. Verwenden Sie »--nocheck«, um diese Warnung zu unterdrücken.\n"
 
-#: ../cli/src/utils.c:395
+#: ../cli/src/utils.c:530
 #, c-format
 msgid ""
 "Error: nmcli (%s) and NetworkManager (%s) versions don't match. Force "
@@ -1781,33 +2276,33 @@ msgstr "PKCS#12-Datei konnte nicht überprüft werden: %d"
 msgid "Could not generate random data."
 msgstr "Es konnten keine Zufallsdaten generiert werden."
 
-#: ../libnm-util/nm-utils.c:2000
+#: ../libnm-util/nm-utils.c:2040
 #, c-format
 msgid "Not enough memory to make encryption key."
 msgstr ""
 "Nicht genügend freier Speicher zur Erstellung des Verschlüsselungsschlüssels."
 
-#: ../libnm-util/nm-utils.c:2110
+#: ../libnm-util/nm-utils.c:2150
 msgid "Could not allocate memory for PEM file creation."
 msgstr ""
 "Es konnte nicht genügend freier Speicher zur Erstellung der PEM-Datei "
 "angefordert werden."
 
-#: ../libnm-util/nm-utils.c:2122
+#: ../libnm-util/nm-utils.c:2162
 #, c-format
 msgid "Could not allocate memory for writing IV to PEM file."
 msgstr ""
 "Es konnte nicht genügend freier Speicher zum Schreiben des IV in die PEM-"
 "Datei angefordert werden."
 
-#: ../libnm-util/nm-utils.c:2134
+#: ../libnm-util/nm-utils.c:2174
 #, c-format
 msgid "Could not allocate memory for writing encrypted key to PEM file."
 msgstr ""
 "Es konnte nicht genügend freier Speicher zum Schreiben des verschlüsselten "
 "Schlüssels in die PEM-Datei angefordert werden."
 
-#: ../libnm-util/nm-utils.c:2153
+#: ../libnm-util/nm-utils.c:2193
 #, c-format
 msgid "Could not allocate memory for PEM file data."
 msgstr ""
@@ -1815,52 +2310,63 @@ msgstr ""
 "werden."
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:1
-msgid "Allow control of network connections"
-msgstr "Die Kontrolle von Netzwerkverbindungen erlauben"
+msgid "Enable or disable system networking"
+msgstr "System-Netzwerke aktivieren oder deaktivieren"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:2
-msgid "Connection sharing via a protected WiFi network"
-msgstr "Verbindungsfreigabe über ein geschütztes WLAN-Netzwerk"
+msgid "System policy prevents enabling or disabling system networking"
+msgstr ""
+"Die Systemrichtlinien verhindern die Aktivierung oder Deaktivierung von "
+"System-Netzwerken"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:3
-msgid "Connection sharing via an open WiFi network"
-msgstr "Verbindungsfreigabe über ein offenes WLAN-Netzwerk"
+msgid ""
+"Put NetworkManager to sleep or wake it up (should only be used by system "
+"power management)"
+msgstr ""
+"NetworkManager in den Schlafzustand versetzen oder daraus aufwecken (Sollte "
+"nur von der System-Energieverwaltung verwendet werden)"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:4
-msgid "Enable or disable WiFi devices"
-msgstr "WLAN-Geräte aktivieren oder deaktivieren"
+msgid "System policy prevents putting NetworkManager to sleep or waking it up"
+msgstr ""
+"Die Systemrichtlinien verhindern das in den Schlaf versetzen oder Aufwecken "
+"von NetworkManager"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:5
-msgid "Enable or disable WiMAX mobile broadband devices"
-msgstr "Mobile WiMAX-Breitbandgeräte aktivieren oder deaktivieren"
+msgid "Enable or disable WiFi devices"
+msgstr "WLAN-Geräte aktivieren oder deaktivieren"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:6
-msgid "Enable or disable mobile broadband devices"
-msgstr "Mobile Breitbandgeräte aktivieren oder deaktivieren"
+msgid "System policy prevents enabling or disabling WiFi devices"
+msgstr ""
+"Die Systemrichtlinien verhindern die Aktivierung oder Deaktivierung von WLAN-"
+"Geräten"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:7
-msgid "Enable or disable system networking"
-msgstr "System-Netzwerke aktivieren oder deaktivieren"
+msgid "Enable or disable mobile broadband devices"
+msgstr "Mobile Breitbandgeräte aktivieren oder deaktivieren"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:8
-msgid "Modify network connections for all users"
-msgstr "Netzwerkverbindungen für alle Benutzer bearbeiten"
+msgid "System policy prevents enabling or disabling mobile broadband devices"
+msgstr ""
+"Die Systemrichtlinien verhindern die Aktivierung oder Deaktivierung mobiler "
+"Breitbandgeräte"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:9
-msgid "Modify persistent system hostname"
-msgstr "Den ständigen Rechnernamen des Systems bearbeiten"
+msgid "Enable or disable WiMAX mobile broadband devices"
+msgstr "Mobile WiMAX-Breitbandgeräte aktivieren oder deaktivieren"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:10
-msgid "Modify personal network connections"
-msgstr "Eigene Netzwerkverbindungen bearbeiten"
-
-#: ../policy/org.freedesktop.NetworkManager.policy.in.h:11
 msgid ""
-"Put NetworkManager to sleep or wake it up (should only be used by system "
-"power management)"
+"System policy prevents enabling or disabling WiMAX mobile broadband devices"
 msgstr ""
-"NetworkManager in den Schlafzustand versetzen oder daraus aufwecken (Sollte "
-"nur von der System-Energieverwaltung verwendet werden)"
+"Die Systemrichtlinien verhindern die Aktivierung oder Deaktivierung mobiler "
+"WiMAX-Breitbandgeräte"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:11
+msgid "Allow control of network connections"
+msgstr "Die Kontrolle von Netzwerkverbindungen erlauben"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:12
 msgid "System policy prevents control of network connections"
@@ -1868,35 +2374,28 @@ msgstr ""
 "Die Systemrichtlinien verhindern die Kontrolle von Netzwerkverbindungen"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:13
-msgid "System policy prevents enabling or disabling WiFi devices"
-msgstr ""
-"Die Systemrichtlinien verhindern die Aktivierung oder Deaktivierung von WLAN-"
-"Geräten"
+msgid "Connection sharing via a protected WiFi network"
+msgstr "Verbindungsfreigabe über ein geschütztes WLAN-Netzwerk"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:14
-msgid ""
-"System policy prevents enabling or disabling WiMAX mobile broadband devices"
+msgid "System policy prevents sharing connections via a protected WiFi network"
 msgstr ""
-"Die Systemrichtlinien verhindern die Aktivierung oder Deaktivierung mobiler "
-"WiMAX-Breitbandgeräte"
+"Die Systemrichtlinien verhindern Verbindungsfreigaben über ein geschütztes "
+"WLAN-Netzwerk"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:15
-msgid "System policy prevents enabling or disabling mobile broadband devices"
-msgstr ""
-"Die Systemrichtlinien verhindern die Aktivierung oder Deaktivierung mobiler "
-"Breitbandgeräte"
+msgid "Connection sharing via an open WiFi network"
+msgstr "Verbindungsfreigabe über ein offenes WLAN-Netzwerk"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:16
-msgid "System policy prevents enabling or disabling system networking"
+msgid "System policy prevents sharing connections via an open WiFi network"
 msgstr ""
-"Die Systemrichtlinien verhindern die Aktivierung oder Deaktivierung von "
-"System-Netzwerken"
+"Die Systemrichtlinien verhindern Verbindungsfreigaben über ein offenes WLAN-"
+"Netzwerk"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:17
-msgid "System policy prevents modification of network settings for all users"
-msgstr ""
-"Die Systemrichtlinien verhindern das Bearbeiten von Netzwerkeinstellungen "
-"für alle Benutzer"
+msgid "Modify personal network connections"
+msgstr "Eigene Netzwerkverbindungen bearbeiten"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:18
 msgid "System policy prevents modification of personal network settings"
@@ -1905,43 +2404,178 @@ msgstr ""
 "Netzwerkeinstellungen"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:19
+msgid "Modify network connections for all users"
+msgstr "Netzwerkverbindungen für alle Benutzer bearbeiten"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:20
+msgid "System policy prevents modification of network settings for all users"
+msgstr ""
+"Die Systemrichtlinien verhindern das Bearbeiten von Netzwerkeinstellungen "
+"für alle Benutzer"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:21
+msgid "Modify persistent system hostname"
+msgstr "Den ständigen Rechnernamen des Systems bearbeiten"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:22
 msgid "System policy prevents modification of the persistent system hostname"
 msgstr ""
 "Die Systemrichtlinien verhindern das Bearbeiten des ständigen Rechnernamens "
 "des Systems"
 
-#: ../policy/org.freedesktop.NetworkManager.policy.in.h:20
-msgid "System policy prevents putting NetworkManager to sleep or waking it up"
-msgstr ""
-"Die Systemrichtlinien verhindern das in den Schlaf versetzen oder Aufwecken "
-"von NetworkManager"
+#: ../src/main.c:156
+#, c-format
+msgid "Failed to set signal mask: %d"
+msgstr "Fehler beim Festlegen der Signalmaske: %d"
 
-#: ../policy/org.freedesktop.NetworkManager.policy.in.h:21
-msgid "System policy prevents sharing connections via a protected WiFi network"
+#: ../src/main.c:163
+#, c-format
+msgid "Failed to create signal handling thread: %d"
+msgstr "Erstellen des Threads für die Signalbehandlung schlug fehl: %d"
+
+#: ../src/main.c:178
+#, c-format
+msgid "Opening %s failed: %s\n"
+msgstr "Öffnen von %s fehlgeschlagen: %s\n"
+
+#: ../src/main.c:184
+#, c-format
+msgid "Writing to %s failed: %s\n"
+msgstr "Schreiben nach %s gescheitert: %s\n"
+
+#: ../src/main.c:189
+#, c-format
+msgid "Closing %s failed: %s\n"
+msgstr "Schließen von %s fehlgeschlagen: %s\n"
+
+#: ../src/main.c:232
+#, c-format
+msgid "NetworkManager is already running (pid %ld)\n"
+msgstr "NetworkManager läuft bereits (pid %ld)\n"
+
+#: ../src/main.c:372
+msgid "Print NetworkManager version and exit"
+msgstr "NetworkManager-Version anzeigen und beenden"
+
+#: ../src/main.c:373
+msgid "Don't become a daemon"
+msgstr "Nicht zum Hintergrunddienst werden"
+
+#: ../src/main.c:374
+msgid "Make all warnings fatal"
+msgstr "Alle Warnungen als fatal betrachten"
+
+#: ../src/main.c:375
+msgid "Specify the location of a PID file"
+msgstr "Geben Sie den Ort der PID-Datei an"
+
+#: ../src/main.c:375
+msgid "filename"
+msgstr "Dateiname"
+
+#: ../src/main.c:376
+msgid "State file location"
+msgstr "Speicherort der Statusdatei"
+
+#: ../src/main.c:376
+msgid "/path/to/state.file"
+msgstr "/pfad/zur/status.datei"
+
+#: ../src/main.c:377
+msgid "Config file location"
+msgstr "Speicherort der Konfigurationsdatei"
+
+#: ../src/main.c:377
+msgid "/path/to/config.file"
+msgstr "/pfad/zur/config.datei"
+
+#: ../src/main.c:378
+msgid "List of plugins separated by ','"
+msgstr "Mit »,« getrennte Liste von Erweiterungen"
+
+#: ../src/main.c:378
+msgid "plugin1,plugin2"
+msgstr "erweiterung1,erweiterung2"
+
+#. Translators: Do not translate the values in the square brackets
+#: ../src/main.c:380
+msgid "Log level: one of [ERR, WARN, INFO, DEBUG]"
+msgstr "Protokollierungsstufe: Möglich sind [ERR, WARN, INFO, DEBUG]"
+
+#. Translators: Do not translate the values in the square brackets
+#: ../src/main.c:383
+msgid ""
+"Log domains separated by ',': any combination of\n"
+"                                          [NONE,HW,RFKILL,ETHER,WIFI,BT,MB,"
+"DHCP4,DHCP6,PPP,\n"
+"                                           WIFI_SCAN,IP4,IP6,AUTOIP4,DNS,VPN,"
+"SHARING,SUPPLICANT,\n"
+"                                           AGENTS,SETTINGS,SUSPEND,CORE,"
+"DEVICE,OLPC,WIMAX,\n"
+"                                           INFINIBAND,FIREWALL]"
 msgstr ""
-"Die Systemrichtlinien verhindern Verbindungsfreigaben über ein geschütztes "
-"WLAN-Netzwerk"
+"Protokolldomänen, getrennt durch »,«: jede Kombination von\n"
+"                                          [NONE,HW,RFKILL,ETHER,WIFI,BT,MB,"
+"DHCP4,DHCP6,PPP,\n"
+"                                           WIFI_SCAN,IP4,IP6,AUTOIP4,DNS,VPN,"
+"SHARING,SUPPLICANT,\n"
+"                                           AGENTS,SETTINGS,SUSPEND,CORE,"
+"DEVICE,OLPC,WIMAX,\n"
+"                                           INFINIBAND,FIREWALL]"
 
-#: ../policy/org.freedesktop.NetworkManager.policy.in.h:22
-msgid "System policy prevents sharing connections via an open WiFi network"
+#: ../src/main.c:396
+#, c-format
+msgid "GModules are not supported on your platform!\n"
+msgstr "GModules werden von Ihrer Plattform nicht unterstützt!\n"
+
+#: ../src/main.c:419
+msgid ""
+"NetworkManager monitors all network connections and automatically\n"
+"chooses the best connection to use.  It also allows the user to\n"
+"specify wireless access points which wireless cards in the computer\n"
+"should associate with."
 msgstr ""
-"Die Systemrichtlinien verhindern Verbindungsfreigaben über ein offenes WLAN-"
-"Netzwerk"
+"Die Netzwerkverwaltung überwacht alle Netzwerkverbindungen und wählt\n"
+"automatisch die beste Verbindung zur Verwendung aus. Außerdem ermöglicht "
+"sie\n"
+"dem Anwender diejenigen Drahtlos-Zugangspunkte anzugeben, mit welchen sich\n"
+"die Drahtlos-Netzwerkkarten des Rechners verbinden sollen."
 
-#: ../src/main.c:530
+#: ../src/main.c:425
 #, c-format
 msgid "Invalid option.  Please use --help to see a list of valid options.\n"
 msgstr ""
 "Ungültige Option.  Verwenden Sie --help um eine Liste der verfügbaren "
 "Optionen zu erhalten.\n"
 
-#: ../src/main.c:611
+#: ../src/main.c:435
+#, c-format
+msgid "You must be root to run NetworkManager!\n"
+msgstr ""
+"Sie müssen Systemverwaltungsrechte besitzen, um NetworkManager auszuführen!\n"
+
+#: ../src/main.c:456
+#, c-format
+msgid "Failed to read configuration: (%d) %s\n"
+msgstr "Konfiguration konnte nicht gelesen werden: (%d) %s\n"
+
+#: ../src/main.c:467
 #, c-format
 msgid "%s.  Please use --help to see a list of valid options.\n"
 msgstr ""
 "%s.  Verwenden Sie --help, um eine Liste der verfügbaren Optionen zu "
 "erhalten.\n"
 
+#: ../src/main.c:474
+#, c-format
+msgid "State file %s parsing failed: (%d) %s\n"
+msgstr "Statusdatei %s konnte nicht verarbeitet werden: (%d) %s\n"
+
+#: ../src/main.c:491
+#, c-format
+msgid "Could not daemonize: %s [error %u]\n"
+msgstr "Hintergrunddienst nicht möglich: %s [error %u]\n"
+
 #: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:62
 msgid "# Created by NetworkManager\n"
 msgstr "# Erstellt von NetworkManager\n"
@@ -1955,19 +2589,19 @@ msgstr ""
 "# Zusammengeführt aus %s\n"
 "\n"
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:284
+#: ../src/dhcp-manager/nm-dhcp-manager.c:266
 msgid "no usable DHCP client could be found."
 msgstr "Es konnte kein verwendbarer DHCP-Client gefunden werden."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:293
+#: ../src/dhcp-manager/nm-dhcp-manager.c:275
 msgid "'dhclient' could be found."
 msgstr "»dhclient« konnte nicht gefunden werden."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:303
+#: ../src/dhcp-manager/nm-dhcp-manager.c:285
 msgid "'dhcpcd' could be found."
 msgstr "»dhcpcd« konnte nicht gefunden werden."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:311
+#: ../src/dhcp-manager/nm-dhcp-manager.c:293
 #, c-format
 msgid "unsupported DHCP client '%s'"
 msgstr "Nicht unterstützter DHCP-Client »%s«"
@@ -1982,109 +2616,157 @@ msgstr ""
 msgid "The nameservers listed below may not be recognized."
 msgstr "Die nachfolgend gelisteten Nameserver werden eventuell nicht erkannt."
 
-#: ../src/logging/nm-logging.c:149
+#: ../src/logging/nm-logging.c:130
 #, c-format
 msgid "Unknown log level '%s'"
 msgstr "Unbekannte Protokollstufe »%s«"
 
-#: ../src/logging/nm-logging.c:174
+#: ../src/logging/nm-logging.c:155
 #, c-format
 msgid "Unknown log domain '%s'"
 msgstr "Unbekannte Protokolldomäne »%s«"
 
-#: ../src/modem-manager/nm-modem-cdma.c:296 ../src/nm-device-bt.c:355
+#: ../src/modem-manager/nm-modem-cdma.c:279 ../src/nm-device-bt.c:325
 #, c-format
 msgid "CDMA connection %d"
 msgstr "CDMA-Verbindung %d"
 
-#: ../src/modem-manager/nm-modem-gsm.c:499 ../src/nm-device-bt.c:351
+#: ../src/modem-manager/nm-modem-gsm.c:547 ../src/nm-device-bt.c:321
 #, c-format
 msgid "GSM connection %d"
 msgstr "GSM-Verbindung %d"
 
-#: ../src/nm-device-bt.c:326
+#: ../src/nm-device-bond.c:191
+#, c-format
+msgid "Bond connection %d"
+msgstr "Gebündelte Verbindung %d"
+
+#: ../src/nm-device-bt.c:296
 #, c-format
 msgid "PAN connection %d"
 msgstr "PAN-Verbindung %d"
 
-#: ../src/nm-device-bt.c:359
+#: ../src/nm-device-bt.c:329
 #, c-format
 msgid "DUN connection %d"
 msgstr "DUN-Verbindung %d"
 
-#: ../src/nm-device-ethernet.c:1723
+#: ../src/nm-device-ethernet.c:1326
 #, c-format
 msgid "PPPoE connection %d"
 msgstr "PPPoE-Verbindung %d"
 
-#: ../src/nm-device-ethernet.c:1723 ../src/settings/nm-settings-utils.c:50
+#: ../src/nm-device-ethernet.c:1326 ../src/settings/nm-settings-utils.c:50
 #, c-format
 msgid "Wired connection %d"
 msgstr "Kabelgebundene Verbindung %d"
 
-#: ../src/nm-device-olpc-mesh.c:393
+#: ../src/nm-device-infiniband.c:303
+#, c-format
+msgid "InfiniBand connection %d"
+msgstr "InfiniBand-Verbindung %d"
+
+#: ../src/nm-device-olpc-mesh.c:303
 #, c-format
 msgid "Mesh %d"
 msgstr "Maschennetz %d‬"
 
-#: ../src/nm-manager.c:657
+#: ../src/nm-device-vlan.c:362
+#, c-format
+msgid "VLAN connection %d"
+msgstr "VLAN-Verbindung %d"
+
+#: ../src/nm-manager.c:661
 #, c-format
 msgid "VPN connection %d"
 msgstr "VPN-Verbindung %d"
 
-#: ../src/nm-netlink-monitor.c:100 ../src/nm-netlink-monitor.c:231
-#: ../src/nm-netlink-monitor.c:653
+#: ../src/nm-netlink-monitor.c:148 ../src/nm-netlink-monitor.c:272
+#: ../src/nm-netlink-monitor.c:695
 #, c-format
 msgid "error processing netlink message: %s"
 msgstr "Fehler beim Verarbeiten der netlink-Nachricht: %s"
 
-#: ../src/nm-netlink-monitor.c:214
+#: ../src/nm-netlink-monitor.c:251
 msgid "error occurred while waiting for data on socket"
 msgstr "Während des Wartens auf Daten am Socket ist ein Fehler aufgetreten"
 
-#: ../src/nm-netlink-monitor.c:254
+#: ../src/nm-netlink-monitor.c:296
 #, c-format
 msgid "unable to connect to netlink for monitoring link status: %s"
 msgstr ""
 "Die Verbindung zu netlink zur Überwachung der Netzwerkverbindung konnte "
 "nicht hergestellt werden: %s"
 
-#: ../src/nm-netlink-monitor.c:265
+#: ../src/nm-netlink-monitor.c:307
 #, c-format
 msgid "unable to enable netlink handle credential passing: %s"
 msgstr ""
 "Die netlink-Handle-Berechtigungsnachweisfreigabe konnte nicht aktiviert "
 "werden: %s"
 
-#: ../src/nm-netlink-monitor.c:291 ../src/nm-netlink-monitor.c:353
+#: ../src/nm-netlink-monitor.c:330 ../src/nm-netlink-monitor.c:390
 #, c-format
 msgid "unable to allocate netlink handle for monitoring link status: %s"
 msgstr ""
 "Es konnte kein netlink-Handle zur Überwachung der Netzwerkverbindung "
 "angefordert werden: %s"
 
-#: ../src/nm-netlink-monitor.c:376
+#: ../src/nm-netlink-monitor.c:415
 #, c-format
 msgid "unable to allocate netlink link cache for monitoring link status: %s"
 msgstr ""
 "Es konnte kein netlink-Verbindungszwischenspeicher zur Überwachung der "
 "Netzwerkverbindung angefordert werden: %s"
 
-#: ../src/nm-netlink-monitor.c:502
+#: ../src/nm-netlink-monitor.c:542
 #, c-format
 msgid "unable to join netlink group: %s"
 msgstr "Der netlink-Gruppe konnte nicht beigetreten werden: %s"
 
-#: ../src/nm-netlink-monitor.c:629 ../src/nm-netlink-monitor.c:642
+#: ../src/nm-netlink-monitor.c:671 ../src/nm-netlink-monitor.c:684
 #, c-format
 msgid "error updating link cache: %s"
 msgstr "Die Aktualisierung des Verbindungszwischenspeichers schlug fehl: %s"
 
-#: ../src/settings/plugins/ifcfg-rh/reader.c:3575
-#: ../src/settings/plugins/ifnet/connection_parser.c:51
+#: ../src/settings/plugins/ifcfg-rh/reader.c:93
 msgid "System"
 msgstr "System"
 
+#: ../src/settings/plugins/ifcfg-rh/reader.c:3634
+msgid "Bond"
+msgstr "Gebündelt"
+
+#~ msgid "state: %s\n"
+#~ msgstr "Status: %s\n"
+
+#~ msgid "Connection activated\n"
+#~ msgstr "Verbindung aktiviert\n"
+
+#~ msgid "state: %s (%d)\n"
+#~ msgstr "Status: %s (%d)\n"
+
+#~ msgid "Active connection state: %s\n"
+#~ msgstr "Status der aktiven Verbindung: %s\n"
+
+#~ msgid "Active connection path: %s\n"
+#~ msgstr "Pfad der aktiven Verbindung: %s\n"
+
+#~ msgid "IP4-SETTINGS"
+#~ msgstr "IP4-EINSTELLUNGEN"
+
+#~ msgid "IP6-SETTINGS"
+#~ msgstr "IP6-EINSTELLUNGEN"
+
+#~ msgid "PREFIX"
+#~ msgstr "PRÄFIX"
+
+#~ msgid "unknown)"
+#~ msgstr "unbekannt)"
+
+#~ msgid "Device state: %d (%s)\n"
+#~ msgstr "Gerätezustand: %d (%s)\n"
+
 #~ msgid "SCOPE"
 #~ msgstr "BANDBREITE"
 
diff --git a/po/eo.po b/po/eo.po
index 5ff1b9c1..0284ae6c 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -1,4 +1,4 @@
-# Esperanto translation for NetworkManager
+# Esperanto translation for NetworkManager.
 # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
 # This file is distributed under the same license as the network-manager package.
 #
@@ -7,110 +7,213 @@
 # Kim RIBEIRO < >, 2010.
 # Serge LEBLANC < >, 2010.
 # Michel MORONI < >, 2011.
-# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2010, 2011.
+# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2010, 2011, 2012.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: network-manager\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
 "product=NetworkManager&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2011-05-06 03:25+0000\n"
-"PO-Revision-Date: 2011-05-06 17:17+0200\n"
+"POT-Creation-Date: 2012-04-02 03:24+0000\n"
+"PO-Revision-Date: 2012-04-02 14:22+0200\n"
 "Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
-"Language-Team: Esperanto <ubuntu-l10n-eo@lists.launchpad.net>\n"
+"Language-Team: Esperanto <gnome-l10n-eo@lists.launchpad.net>\n"
 "Language: eo\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-05-06 14:56+0000\n"
-"X-Generator: Launchpad (build 12981)\n"
+"X-Launchpad-Export-Date: 2012-04-02 09:28+0000\n"
+"X-Generator: Launchpad (build 15045)\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 
-#: ../cli/src/connections.c:64 ../cli/src/connections.c:78
-#: ../cli/src/devices.c:101 ../cli/src/devices.c:114 ../cli/src/devices.c:124
-#: ../cli/src/devices.c:134 ../cli/src/devices.c:148 ../cli/src/devices.c:162
-#: ../cli/src/devices.c:173 ../cli/src/devices.c:184 ../cli/src/devices.c:193
-#: ../cli/src/devices.c:202 ../cli/src/devices.c:224
-msgid "NAME"
-msgstr "NOMO"
+#: ../cli/src/common.c:32 ../cli/src/common.c:44 ../cli/src/common.c:52
+#: ../cli/src/common.c:63 ../cli/src/connections.c:125
+#: ../cli/src/connections.c:159
+msgid "GROUP"
+msgstr "GRUPO"
 
 #. 0
-#: ../cli/src/connections.c:65 ../cli/src/connections.c:79
-msgid "UUID"
-msgstr "UUID"
+#: ../cli/src/common.c:33 ../cli/src/common.c:53
+msgid "ADDRESS"
+msgstr "ADRESO"
 
 #. 1
-#: ../cli/src/connections.c:66
-msgid "DEVICES"
-msgstr "APARATOJ"
+#: ../cli/src/common.c:34 ../cli/src/common.c:54
+msgid "ROUTE"
+msgstr "KURSO"
 
 #. 2
-#: ../cli/src/connections.c:67
-msgid "DEFAULT"
-msgstr "DEFAŬLTA"
+#: ../cli/src/common.c:35 ../cli/src/common.c:55
+msgid "DNS"
+msgstr "DNS"
 
 #. 3
-#: ../cli/src/connections.c:68
-msgid "SPEC-OBJECT"
-msgstr "SPEC-OBJEKTO"
+#: ../cli/src/common.c:36 ../cli/src/common.c:56
+msgid "DOMAIN"
+msgstr "DOMAJNO"
 
 #. 4
-#: ../cli/src/connections.c:69
-msgid "VPN"
-msgstr "VPN"
+#: ../cli/src/common.c:37
+msgid "WINS"
+msgstr "WINS"
 
-#. 5
-#. 6
-#. 2
-#. 11
-#. 5
-#: ../cli/src/connections.c:70 ../cli/src/connections.c:85
-#: ../cli/src/devices.c:69 ../cli/src/devices.c:214 ../cli/src/devices.c:230
-msgid "DBUS-PATH"
-msgstr "DBUS-VOJO"
+#. 0
+#: ../cli/src/common.c:45 ../cli/src/common.c:64
+msgid "OPTION"
+msgstr "OPCIO"
+
+#. 0
+#. used only for 'GENERAL' group listing
+#: ../cli/src/connections.c:58 ../cli/src/connections.c:126
+#: ../cli/src/devices.c:102 ../cli/src/devices.c:123 ../cli/src/devices.c:133
+#: ../cli/src/devices.c:143 ../cli/src/devices.c:157 ../cli/src/devices.c:171
+#: ../cli/src/devices.c:193
+msgid "NAME"
+msgstr "NOMO"
+
+#. 0
+#. 1
+#: ../cli/src/connections.c:59 ../cli/src/connections.c:127
+msgid "UUID"
+msgstr "UUID"
 
 #. 1
 #. 0
 #. 1
 #. 2
-#: ../cli/src/connections.c:80 ../cli/src/devices.c:67
-#: ../cli/src/devices.c:103 ../cli/src/devices.c:227
+#: ../cli/src/connections.c:60 ../cli/src/connections.c:160
+#: ../cli/src/devices.c:68 ../cli/src/devices.c:104 ../cli/src/devices.c:196
 msgid "TYPE"
 msgstr "TIPO"
 
 #. 2
-#: ../cli/src/connections.c:81
+#: ../cli/src/connections.c:61
 msgid "TIMESTAMP"
 msgstr "TEMPINDIKO"
 
 #. 3
-#: ../cli/src/connections.c:82
+#: ../cli/src/connections.c:62
 msgid "TIMESTAMP-REAL"
 msgstr "REALA-TEMPINDIKO"
 
 #. 4
-#: ../cli/src/connections.c:83
+#: ../cli/src/connections.c:63
 msgid "AUTOCONNECT"
 msgstr "AŬTOMATA-KONEKTO"
 
 #. 5
-#: ../cli/src/connections.c:84
+#: ../cli/src/connections.c:64
 msgid "READONLY"
 msgstr "NUR-LEGI"
 
-#: ../cli/src/connections.c:167
-#, c-format
+#. 6
+#. 8
+#. 2
+#. 11
+#. 5
+#: ../cli/src/connections.c:65 ../cli/src/connections.c:134
+#: ../cli/src/devices.c:70 ../cli/src/devices.c:183 ../cli/src/devices.c:199
+msgid "DBUS-PATH"
+msgstr "DBUS-VOJO"
+
+#. 2
+#: ../cli/src/connections.c:128
+msgid "DEVICES"
+msgstr "APARATOJ"
+
+#. 3
+#. 1
+#. 6
+#. 1
+#: ../cli/src/connections.c:129 ../cli/src/devices.c:69
+#: ../cli/src/devices.c:109 ../cli/src/network-manager.c:39
+msgid "STATE"
+msgstr "STATO"
+
+#. 4
+#: ../cli/src/connections.c:130
+msgid "DEFAULT"
+msgstr "DEFAŬLTA"
+
+#. 5
+#: ../cli/src/connections.c:131
+msgid "DEFAULT6"
+msgstr "DEFAŬLTO6"
+
+#. 6
+#: ../cli/src/connections.c:132
+msgid "SPEC-OBJECT"
+msgstr "SPEC-OBJEKTO"
+
+#. 7
+#. 1
+#: ../cli/src/connections.c:133 ../cli/src/connections.c:147
+msgid "VPN"
+msgstr "VPN"
+
+#. 9
+#: ../cli/src/connections.c:135
+msgid "CON-PATH"
+msgstr ""
+
+#. 10
+#: ../cli/src/connections.c:136
+msgid "ZONE"
+msgstr ""
+
+#. 11
+#: ../cli/src/connections.c:137
+msgid "MASTER-PATH"
+msgstr ""
+
+#: ../cli/src/connections.c:145 ../cli/src/devices.c:79
+msgid "GENERAL"
+msgstr "ĜENERALE"
+
+#. 0
+#: ../cli/src/connections.c:146
+msgid "IP"
+msgstr "IP"
+
+#. 1
+#: ../cli/src/connections.c:161
+msgid "USERNAME"
+msgstr "UZANTONOMO"
+
+#. 2
+#: ../cli/src/connections.c:162
+msgid "GATEWAY"
+msgstr "KLUZO"
+
+#. 3
+#: ../cli/src/connections.c:163
+msgid "BANNER"
+msgstr ""
+
+#. 4
+#: ../cli/src/connections.c:164
+msgid "VPN-STATE"
+msgstr "VPN-STATO"
+
+#. 5
+#: ../cli/src/connections.c:165
+msgid "CFG"
+msgstr ""
+
+#: ../cli/src/connections.c:186
+#, fuzzy, c-format
 msgid ""
 "Usage: nmcli con { COMMAND | help }\n"
-"  COMMAND := { list | status | up | down }\n"
+"  COMMAND := { list | status | up | down | delete }\n"
 "\n"
 "  list [id <id> | uuid <id>]\n"
-"  status\n"
-"  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [nsp <name>] [--"
+"  status [id <id> | uuid <id> | path <path>]\n"
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [nsp <name>] [--"
 "nowait] [--timeout <timeout>]\n"
-"  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout "
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [--nowait] [--timeout "
 "<timeout>]\n"
 "  down id <id> | uuid <id>\n"
+"  delete id <id> | uuid <id>\n"
 msgstr ""
 "Uzo: nmcli con { KOMANDO | help }\n"
 "  KOMANDO := { list | status | up | down }\n"
@@ -123,570 +226,609 @@ msgstr ""
 "<timeout>]\n"
 "  down id <id> | uuid <id>\n"
 
-#: ../cli/src/connections.c:220 ../cli/src/connections.c:542
+#: ../cli/src/connections.c:240 ../cli/src/connections.c:591
 #, c-format
 msgid "Error: 'con list': %s"
 msgstr "Eraro: 'con list': %s"
 
-#: ../cli/src/connections.c:222 ../cli/src/connections.c:544
+#: ../cli/src/connections.c:242 ../cli/src/connections.c:593
 #, c-format
 msgid "Error: 'con list': %s; allowed fields: %s"
 msgstr "Eraro: 'con list': %s; permesataj kampoj: %s"
 
-#: ../cli/src/connections.c:230
+#: ../cli/src/connections.c:250
 msgid "Connection details"
 msgstr "Konektodetaloj"
 
-#: ../cli/src/connections.c:417
+#: ../cli/src/connections.c:466
 msgid "never"
 msgstr "neniam"
 
 #. "CAPABILITIES"
 #. Print header
 #. "WIFI-PROPERTIES"
-#: ../cli/src/connections.c:418 ../cli/src/connections.c:419
-#: ../cli/src/connections.c:597 ../cli/src/connections.c:599
-#: ../cli/src/devices.c:509 ../cli/src/devices.c:562 ../cli/src/devices.c:687
-#: ../cli/src/devices.c:713 ../cli/src/devices.c:714 ../cli/src/devices.c:715
-#: ../cli/src/devices.c:716 ../cli/src/devices.c:717 ../cli/src/settings.c:520
-#: ../cli/src/settings.c:563 ../cli/src/settings.c:663
-#: ../cli/src/settings.c:937 ../cli/src/settings.c:938
-#: ../cli/src/settings.c:940 ../cli/src/settings.c:942
-#: ../cli/src/settings.c:1067 ../cli/src/settings.c:1068
-#: ../cli/src/settings.c:1069 ../cli/src/settings.c:1148
-#: ../cli/src/settings.c:1149 ../cli/src/settings.c:1150
-#: ../cli/src/settings.c:1151 ../cli/src/settings.c:1152
-#: ../cli/src/settings.c:1153 ../cli/src/settings.c:1154
-#: ../cli/src/settings.c:1155 ../cli/src/settings.c:1156
-#: ../cli/src/settings.c:1157 ../cli/src/settings.c:1158
-#: ../cli/src/settings.c:1159 ../cli/src/settings.c:1160
-#: ../cli/src/settings.c:1235
+#: ../cli/src/connections.c:467 ../cli/src/connections.c:468
+#: ../cli/src/connections.c:705 ../cli/src/connections.c:706
+#: ../cli/src/connections.c:708 ../cli/src/devices.c:595
+#: ../cli/src/devices.c:648 ../cli/src/devices.c:762 ../cli/src/devices.c:763
+#: ../cli/src/devices.c:795 ../cli/src/devices.c:821 ../cli/src/devices.c:822
+#: ../cli/src/devices.c:823 ../cli/src/devices.c:824 ../cli/src/devices.c:825
+#: ../cli/src/settings.c:656 ../cli/src/settings.c:726
+#: ../cli/src/settings.c:846 ../cli/src/settings.c:1128
+#: ../cli/src/settings.c:1129 ../cli/src/settings.c:1131
+#: ../cli/src/settings.c:1133 ../cli/src/settings.c:1134
+#: ../cli/src/settings.c:1262 ../cli/src/settings.c:1263
+#: ../cli/src/settings.c:1264 ../cli/src/settings.c:1265
+#: ../cli/src/settings.c:1340 ../cli/src/settings.c:1341
+#: ../cli/src/settings.c:1342 ../cli/src/settings.c:1343
+#: ../cli/src/settings.c:1344 ../cli/src/settings.c:1345
+#: ../cli/src/settings.c:1346 ../cli/src/settings.c:1347
+#: ../cli/src/settings.c:1348 ../cli/src/settings.c:1349
+#: ../cli/src/settings.c:1350 ../cli/src/settings.c:1351
+#: ../cli/src/settings.c:1352 ../cli/src/settings.c:1423
 msgid "yes"
 msgstr "jes"
 
-#: ../cli/src/connections.c:418 ../cli/src/connections.c:419
-#: ../cli/src/connections.c:597 ../cli/src/connections.c:599
-#: ../cli/src/devices.c:509 ../cli/src/devices.c:562 ../cli/src/devices.c:687
-#: ../cli/src/devices.c:713 ../cli/src/devices.c:714 ../cli/src/devices.c:715
-#: ../cli/src/devices.c:716 ../cli/src/devices.c:717 ../cli/src/settings.c:520
-#: ../cli/src/settings.c:522 ../cli/src/settings.c:563
-#: ../cli/src/settings.c:663 ../cli/src/settings.c:937
-#: ../cli/src/settings.c:938 ../cli/src/settings.c:940
-#: ../cli/src/settings.c:942 ../cli/src/settings.c:1067
-#: ../cli/src/settings.c:1068 ../cli/src/settings.c:1069
-#: ../cli/src/settings.c:1148 ../cli/src/settings.c:1149
-#: ../cli/src/settings.c:1150 ../cli/src/settings.c:1151
-#: ../cli/src/settings.c:1152 ../cli/src/settings.c:1153
-#: ../cli/src/settings.c:1154 ../cli/src/settings.c:1155
-#: ../cli/src/settings.c:1156 ../cli/src/settings.c:1157
-#: ../cli/src/settings.c:1158 ../cli/src/settings.c:1159
-#: ../cli/src/settings.c:1160 ../cli/src/settings.c:1235
+#: ../cli/src/connections.c:467 ../cli/src/connections.c:468
+#: ../cli/src/connections.c:705 ../cli/src/connections.c:706
+#: ../cli/src/connections.c:708 ../cli/src/devices.c:595
+#: ../cli/src/devices.c:648 ../cli/src/devices.c:762 ../cli/src/devices.c:763
+#: ../cli/src/devices.c:795 ../cli/src/devices.c:821 ../cli/src/devices.c:822
+#: ../cli/src/devices.c:823 ../cli/src/devices.c:824 ../cli/src/devices.c:825
+#: ../cli/src/settings.c:656 ../cli/src/settings.c:658
+#: ../cli/src/settings.c:726 ../cli/src/settings.c:846
+#: ../cli/src/settings.c:1128 ../cli/src/settings.c:1129
+#: ../cli/src/settings.c:1131 ../cli/src/settings.c:1133
+#: ../cli/src/settings.c:1134 ../cli/src/settings.c:1262
+#: ../cli/src/settings.c:1263 ../cli/src/settings.c:1264
+#: ../cli/src/settings.c:1265 ../cli/src/settings.c:1340
+#: ../cli/src/settings.c:1341 ../cli/src/settings.c:1342
+#: ../cli/src/settings.c:1343 ../cli/src/settings.c:1344
+#: ../cli/src/settings.c:1345 ../cli/src/settings.c:1346
+#: ../cli/src/settings.c:1347 ../cli/src/settings.c:1348
+#: ../cli/src/settings.c:1349 ../cli/src/settings.c:1350
+#: ../cli/src/settings.c:1351 ../cli/src/settings.c:1352
+#: ../cli/src/settings.c:1423
 msgid "no"
 msgstr "ne"
 
-#: ../cli/src/connections.c:493
+#: ../cli/src/connections.c:542
 msgid "Connection list"
 msgstr "Konektolisto"
 
-#: ../cli/src/connections.c:506 ../cli/src/connections.c:1378
-#: ../cli/src/connections.c:1393 ../cli/src/connections.c:1402
-#: ../cli/src/connections.c:1412 ../cli/src/connections.c:1424
-#: ../cli/src/connections.c:1519 ../cli/src/devices.c:1190
-#: ../cli/src/devices.c:1200 ../cli/src/devices.c:1314
-#: ../cli/src/devices.c:1321 ../cli/src/devices.c:1534
-#: ../cli/src/devices.c:1541
+#: ../cli/src/connections.c:555 ../cli/src/connections.c:1088
+#: ../cli/src/connections.c:1456 ../cli/src/connections.c:1471
+#: ../cli/src/connections.c:1480 ../cli/src/connections.c:1490
+#: ../cli/src/connections.c:1502 ../cli/src/connections.c:1601
+#: ../cli/src/connections.c:1703 ../cli/src/devices.c:1202
+#: ../cli/src/devices.c:1212 ../cli/src/devices.c:1326
+#: ../cli/src/devices.c:1334 ../cli/src/devices.c:1547
+#: ../cli/src/devices.c:1554
 #, c-format
 msgid "Error: %s argument is missing."
 msgstr "Eraro: argumento %s mankas."
 
-#: ../cli/src/connections.c:519
+#: ../cli/src/connections.c:568
 #, c-format
 msgid "Error: %s - no such connection."
 msgstr "Eraro: %s - neniu tia konekto."
 
-#: ../cli/src/connections.c:525 ../cli/src/connections.c:1437
-#: ../cli/src/connections.c:1536 ../cli/src/devices.c:987
-#: ../cli/src/devices.c:1067 ../cli/src/devices.c:1214
-#: ../cli/src/devices.c:1327 ../cli/src/devices.c:1547
+#: ../cli/src/connections.c:574 ../cli/src/connections.c:1515
+#: ../cli/src/connections.c:1618 ../cli/src/connections.c:1710
+#: ../cli/src/devices.c:999 ../cli/src/devices.c:1079
+#: ../cli/src/devices.c:1226 ../cli/src/devices.c:1340
+#: ../cli/src/devices.c:1560
 #, c-format
 msgid "Unknown parameter: %s\n"
 msgstr "Nekonata parametro: %s\n"
 
-#: ../cli/src/connections.c:534
+#: ../cli/src/connections.c:583
 #, c-format
 msgid "Error: no valid parameter specified."
 msgstr "Eraro: neniu valida parametro difinita."
 
-#: ../cli/src/connections.c:549 ../cli/src/connections.c:1627
-#: ../cli/src/devices.c:1755 ../cli/src/network-manager.c:463
+#: ../cli/src/connections.c:598 ../cli/src/connections.c:1803
+#: ../cli/src/devices.c:1768 ../cli/src/network-manager.c:456
 #, c-format
 msgid "Error: %s."
 msgstr "Eraro: %s."
 
+#: ../cli/src/connections.c:611
+msgid "activating"
+msgstr "enŝaltas"
+
+#: ../cli/src/connections.c:613
+msgid "activated"
+msgstr "enŝaltite"
+
+#: ../cli/src/connections.c:615 ../cli/src/devices.c:263
+msgid "deactivating"
+msgstr "malaktivigante"
+
+#: ../cli/src/connections.c:618 ../cli/src/connections.c:641
+#: ../cli/src/connections.c:1327 ../cli/src/devices.c:267
+#: ../cli/src/devices.c:796 ../cli/src/network-manager.c:111
+#: ../cli/src/network-manager.c:173 ../cli/src/network-manager.c:176
+#: ../cli/src/network-manager.c:185 ../cli/src/network-manager.c:291
+#: ../cli/src/network-manager.c:346 ../cli/src/network-manager.c:384
+#: ../cli/src/network-manager.c:423 ../cli/src/settings.c:563
+#: ../cli/src/settings.c:591 ../cli/src/utils.c:499 ../src/main.c:450
+#: ../src/main.c:469
+msgid "unknown"
+msgstr "nekonate"
+
+#: ../cli/src/connections.c:627
+msgid "VPN connecting (prepare)"
+msgstr "VPN konektas (preparo)"
+
+#: ../cli/src/connections.c:629
+msgid "VPN connecting (need authentication)"
+msgstr "VPN konektas (bezonas aŭtentigon)"
+
+#: ../cli/src/connections.c:631
+msgid "VPN connecting"
+msgstr "VPN konektas"
+
+#: ../cli/src/connections.c:633
+msgid "VPN connecting (getting IP configuration)"
+msgstr "VPN konektas (akiras IP-agordaron)"
+
+#: ../cli/src/connections.c:635
+msgid "VPN connected"
+msgstr "VPN konektita"
+
 #: ../cli/src/connections.c:637
+msgid "VPN connection failed"
+msgstr "VPN-konekto fiaskis"
+
+#: ../cli/src/connections.c:639
+msgid "VPN disconnected"
+msgstr "VPN malkonektis"
+
+#: ../cli/src/connections.c:892 ../cli/src/connections.c:1116
 #, c-format
 msgid "Error: 'con status': %s"
 msgstr "Eraro: 'con status': %s"
 
-#: ../cli/src/connections.c:639
+#: ../cli/src/connections.c:894 ../cli/src/connections.c:1118
 #, c-format
 msgid "Error: 'con status': %s; allowed fields: %s"
 msgstr "Eraro: 'con status': %s; permesataj kampoj: %s"
 
-#: ../cli/src/connections.c:647 ../cli/src/connections.c:1452
-#: ../cli/src/connections.c:1551 ../cli/src/devices.c:1014
-#: ../cli/src/devices.c:1076 ../cli/src/devices.c:1229
-#: ../cli/src/devices.c:1357 ../cli/src/devices.c:1576
+#: ../cli/src/connections.c:902
+msgid "Active connection details"
+msgstr "Detaloj de aktivaj konektoj"
+
+#: ../cli/src/connections.c:1038 ../cli/src/connections.c:1530
+#: ../cli/src/connections.c:1633 ../cli/src/connections.c:1724
+#: ../cli/src/devices.c:1026 ../cli/src/devices.c:1088
+#: ../cli/src/devices.c:1241 ../cli/src/devices.c:1370
+#: ../cli/src/devices.c:1589
 #, c-format
 msgid "Error: Can't find out if NetworkManager is running: %s."
-msgstr "Eraro: Ne povas scii ĉu NetworkManager rulas: %s."
+msgstr "Eraro: Ne eblas eltrovi ĉu NetworkManager rulas: %s."
 
-#: ../cli/src/connections.c:651 ../cli/src/connections.c:1456
-#: ../cli/src/connections.c:1555 ../cli/src/devices.c:1018
-#: ../cli/src/devices.c:1080 ../cli/src/devices.c:1233
-#: ../cli/src/devices.c:1361 ../cli/src/devices.c:1580
+#: ../cli/src/connections.c:1042 ../cli/src/connections.c:1534
+#: ../cli/src/connections.c:1637 ../cli/src/connections.c:1728
+#: ../cli/src/devices.c:1030 ../cli/src/devices.c:1092
+#: ../cli/src/devices.c:1245 ../cli/src/devices.c:1374
+#: ../cli/src/devices.c:1593
 #, c-format
 msgid "Error: NetworkManager is not running."
 msgstr "Eraro: NetworkManager ne rulas."
 
-#: ../cli/src/connections.c:659
+#: ../cli/src/connections.c:1074
 msgid "Active connections"
 msgstr "Aktivaj konektoj"
 
-#: ../cli/src/connections.c:1095
+#: ../cli/src/connections.c:1099
+#, c-format
+msgid "Error: '%s' is not an active connection."
+msgstr "Eraro: '%s' ne estas aktiva konekto."
+
+#: ../cli/src/connections.c:1104
+#, c-format
+msgid "Error: unknown parameter: %s"
+msgstr "Eraro: nekonata parametro: %s"
+
+#: ../cli/src/connections.c:1211
 #, c-format
 msgid "no active connection on device '%s'"
 msgstr "neniu aktiva konekto sur aparato '%s'"
 
-#: ../cli/src/connections.c:1103
+#: ../cli/src/connections.c:1219
 #, c-format
 msgid "no active connection or device"
 msgstr "neniu aktiva konekto aŭ aparato"
 
-#: ../cli/src/connections.c:1174
+#: ../cli/src/connections.c:1290
 #, c-format
 msgid "device '%s' not compatible with connection '%s'"
 msgstr "aparato '%s' ne kongruas kun konekto '%s'"
 
-#: ../cli/src/connections.c:1176
+#: ../cli/src/connections.c:1292
 #, c-format
 msgid "no device found for connection '%s'"
 msgstr "neniu aparato trovita por konekto '%s'"
 
-#: ../cli/src/connections.c:1187
-msgid "activating"
-msgstr "enŝaltas"
-
-#: ../cli/src/connections.c:1189
-msgid "activated"
-msgstr "enŝaltite"
-
-#: ../cli/src/connections.c:1191 ../cli/src/devices.c:304
-msgid "deactivating"
-msgstr "malaktivigante"
-
-#: ../cli/src/connections.c:1194 ../cli/src/connections.c:1217
-#: ../cli/src/connections.c:1250 ../cli/src/devices.c:308
-#: ../cli/src/devices.c:688 ../cli/src/network-manager.c:118
-#: ../cli/src/network-manager.c:180 ../cli/src/network-manager.c:183
-#: ../cli/src/network-manager.c:192 ../cli/src/network-manager.c:298
-#: ../cli/src/network-manager.c:353 ../cli/src/network-manager.c:391
-#: ../cli/src/network-manager.c:430 ../cli/src/settings.c:485
-#: ../cli/src/utils.c:396
-msgid "unknown"
-msgstr "nekonate"
-
-#: ../cli/src/connections.c:1203
-msgid "VPN connecting (prepare)"
-msgstr "VPN konektas (preparo)"
-
-#: ../cli/src/connections.c:1205
-msgid "VPN connecting (need authentication)"
-msgstr "VPN konektas (bezonas aŭtentigon)"
-
-#: ../cli/src/connections.c:1207
-msgid "VPN connecting"
-msgstr "VPN konektas"
-
-#: ../cli/src/connections.c:1209
-msgid "VPN connecting (getting IP configuration)"
-msgstr "VPN konektas (akiras IP-agordaron)"
-
-#: ../cli/src/connections.c:1211
-msgid "VPN connected"
-msgstr "VPN konektita"
-
-#: ../cli/src/connections.c:1213
-msgid "VPN connection failed"
-msgstr "VPN-konekto fiaskis"
-
-#: ../cli/src/connections.c:1215
-msgid "VPN disconnected"
-msgstr "VPN malkonektis"
-
-#: ../cli/src/connections.c:1226
+#: ../cli/src/connections.c:1303
 msgid "unknown reason"
 msgstr "nekonata kialo"
 
-#: ../cli/src/connections.c:1228
+#: ../cli/src/connections.c:1305
 msgid "none"
 msgstr "neniu"
 
-#: ../cli/src/connections.c:1230
+#: ../cli/src/connections.c:1307
 msgid "the user was disconnected"
 msgstr "la uzanto estis malkonektite"
 
-#: ../cli/src/connections.c:1232
+#: ../cli/src/connections.c:1309
 msgid "the base network connection was interrupted"
 msgstr "la baza retkonekto estis interrompite"
 
-#: ../cli/src/connections.c:1234
+#: ../cli/src/connections.c:1311
 msgid "the VPN service stopped unexpectedly"
 msgstr "la VPN-servo neatendite ĉesis"
 
-#: ../cli/src/connections.c:1236
+#: ../cli/src/connections.c:1313
 msgid "the VPN service returned invalid configuration"
 msgstr "la VPN-servo revenigis nevalidan agordaron"
 
-#: ../cli/src/connections.c:1238
+#: ../cli/src/connections.c:1315
 msgid "the connection attempt timed out"
 msgstr "la konektoprovo eltempiĝis"
 
-#: ../cli/src/connections.c:1240
+#: ../cli/src/connections.c:1317
 msgid "the VPN service did not start in time"
 msgstr "la VPN-servo ne startis ĝustatempe"
 
-#: ../cli/src/connections.c:1242
+#: ../cli/src/connections.c:1319
 msgid "the VPN service failed to start"
 msgstr "la VPN-servo fiaskis starti"
 
-#: ../cli/src/connections.c:1244
+#: ../cli/src/connections.c:1321
 msgid "no valid VPN secrets"
 msgstr "neniu valida VPN-sekretoj"
 
-#: ../cli/src/connections.c:1246
+#: ../cli/src/connections.c:1323
 msgid "invalid VPN secrets"
 msgstr "nevalidaj VPN-sekretoj"
 
-#: ../cli/src/connections.c:1248
+#: ../cli/src/connections.c:1325
 msgid "the connection was removed"
 msgstr "la konekto estis forigita"
 
-#: ../cli/src/connections.c:1262
+#: ../cli/src/connections.c:1339
 #, c-format
 msgid "state: %s\n"
 msgstr "stato: %s\n"
 
-#: ../cli/src/connections.c:1265 ../cli/src/connections.c:1291
+#: ../cli/src/connections.c:1342 ../cli/src/connections.c:1368
 #, c-format
 msgid "Connection activated\n"
 msgstr "Konekto enŝaltita\n"
 
-#: ../cli/src/connections.c:1268
+#: ../cli/src/connections.c:1345
 #, c-format
 msgid "Error: Connection activation failed."
 msgstr "Eraro: Enŝalto de konekto fiaskis."
 
-#: ../cli/src/connections.c:1287
+#: ../cli/src/connections.c:1364
 #, c-format
 msgid "state: %s (%d)\n"
 msgstr "stato: %s (%d)\n"
 
-#: ../cli/src/connections.c:1297
+#: ../cli/src/connections.c:1374
 #, c-format
 msgid "Error: Connection activation failed: %s."
 msgstr "Eraro: Enŝalto de konekto fiaskis: %s."
 
-#: ../cli/src/connections.c:1314 ../cli/src/devices.c:1136
+#: ../cli/src/connections.c:1391 ../cli/src/devices.c:1148
 #, c-format
 msgid "Error: Timeout %d sec expired."
 msgstr "Eraro: Eltempiĝo finiĝis %d sek."
 
-#: ../cli/src/connections.c:1327
+#: ../cli/src/connections.c:1404
 #, c-format
 msgid "Error: Connection activation failed: %s"
 msgstr "Eraro: Enŝalto de konekto fiaskis: %s"
 
-#: ../cli/src/connections.c:1333
+#: ../cli/src/connections.c:1410
 #, c-format
 msgid "Active connection state: %s\n"
 msgstr "Stato de aktiva konekto: %s\n"
 
-#: ../cli/src/connections.c:1334
+#: ../cli/src/connections.c:1411
 #, c-format
 msgid "Active connection path: %s\n"
 msgstr "Vojo de aktiva konekto: %s\n"
 
-#: ../cli/src/connections.c:1386 ../cli/src/connections.c:1527
+#: ../cli/src/connections.c:1464 ../cli/src/connections.c:1609
+#: ../cli/src/connections.c:1737
 #, c-format
 msgid "Error: Unknown connection: %s."
 msgstr "Eraro: Nekonata konekto: %s."
 
-#: ../cli/src/connections.c:1432 ../cli/src/devices.c:1208
+#: ../cli/src/connections.c:1510 ../cli/src/devices.c:1220
 #, c-format
 msgid "Error: timeout value '%s' is not valid."
 msgstr "Eraro: eltempiĝa valoro '%s' ne validas."
 
-#: ../cli/src/connections.c:1445 ../cli/src/connections.c:1544
+#: ../cli/src/connections.c:1523 ../cli/src/connections.c:1626
+#: ../cli/src/connections.c:1717
 #, c-format
 msgid "Error: id or uuid has to be specified."
 msgstr "Eraro: 'id' aŭ 'uuid' devas esti specifata."
 
-#: ../cli/src/connections.c:1473
+#: ../cli/src/connections.c:1555
 #, c-format
 msgid "Error: No suitable device found: %s."
 msgstr "Eraro: Trovis neniun taŭgan aparaton: %s."
 
-#: ../cli/src/connections.c:1475
+#: ../cli/src/connections.c:1557
 #, c-format
 msgid "Error: No suitable device found."
 msgstr "Eraro: Trovis neniun taŭgan aparaton."
 
-#: ../cli/src/connections.c:1580
+#: ../cli/src/connections.c:1662
 #, c-format
 msgid "Warning: Connection not active\n"
 msgstr "Atenton: Konekto ne aktivas\n"
 
-#: ../cli/src/connections.c:1618
+#: ../cli/src/connections.c:1676
+#, c-format
+msgid "Error: Connection deletion failed: %s"
+msgstr "Eraro: Forigo de konekto malsukcesis: %s"
+
+#: ../cli/src/connections.c:1794
 #, c-format
 msgid "Error: 'con' command '%s' is not valid."
 msgstr "Eraro: 'con'-komando '%s' ne validas."
 
-#: ../cli/src/connections.c:1683
+#: ../cli/src/connections.c:1859
 #, c-format
 msgid "Error: could not connect to D-Bus."
-msgstr "Eraro: ne povis konekti al D-Bus."
+msgstr "Eraro: ne eblis konekti al D-Bus."
 
-#: ../cli/src/connections.c:1690
+#: ../cli/src/connections.c:1867
 #, c-format
 msgid "Error: Could not get system settings."
-msgstr "Eraro: Ne povis akiri sistemajn agordojn."
+msgstr "Eraro: Ne eblis akiri sistemajn agordojn."
 
-#: ../cli/src/connections.c:1700
+#: ../cli/src/connections.c:1877
 #, c-format
 msgid "Error: Can't obtain connections: settings service is not running."
-msgstr "Eraro: Ne povas obteni konektojn: agordo-servo ne aktivas."
+msgstr "Eraro: Ne eblas obteni konektojn: agordo-servo ne aktivas."
 
 #. 0
 #. 9
 #. 3
-#: ../cli/src/devices.c:66 ../cli/src/devices.c:102 ../cli/src/devices.c:212
-#: ../cli/src/devices.c:228
+#: ../cli/src/devices.c:67 ../cli/src/devices.c:103 ../cli/src/devices.c:181
+#: ../cli/src/devices.c:197
 msgid "DEVICE"
 msgstr "APARATO"
 
-#. 1
-#. 4
-#. 1
-#: ../cli/src/devices.c:68 ../cli/src/devices.c:106
-#: ../cli/src/network-manager.c:39
-msgid "STATE"
-msgstr "STATO"
-
-#: ../cli/src/devices.c:78
-msgid "GENERAL"
-msgstr "ĜENERALE"
-
 #. 0
-#: ../cli/src/devices.c:79
+#: ../cli/src/devices.c:80
 msgid "CAPABILITIES"
 msgstr "KAPABLOJ"
 
 #. 1
-#: ../cli/src/devices.c:80
+#: ../cli/src/devices.c:81
 msgid "WIFI-PROPERTIES"
 msgstr "WIFI-ECOJ"
 
 #. 2
-#: ../cli/src/devices.c:81
+#: ../cli/src/devices.c:82
 msgid "AP"
 msgstr "AP"
 
 #. 3
-#: ../cli/src/devices.c:82
+#: ../cli/src/devices.c:83
 msgid "WIRED-PROPERTIES"
 msgstr "DRATA-ECOJ"
 
 #. 4
-#: ../cli/src/devices.c:83
+#: ../cli/src/devices.c:84
 msgid "WIMAX-PROPERTIES"
 msgstr "WIMAX-ECOJ"
 
 #. 5
 #. 0
-#: ../cli/src/devices.c:84 ../cli/src/devices.c:225
+#: ../cli/src/devices.c:85 ../cli/src/devices.c:194
 msgid "NSP"
 msgstr ""
 
 #. 6
-#: ../cli/src/devices.c:85
-msgid "IP4-SETTINGS"
-msgstr "IP4-AGORDOJ"
+#: ../cli/src/devices.c:86
+msgid "IP4"
+msgstr "IP4"
 
 #. 7
-#: ../cli/src/devices.c:86
-msgid "IP4-DNS"
-msgstr "IP4-DNS"
+#: ../cli/src/devices.c:87
+msgid "DHCP4"
+msgstr "DHCP4"
 
 #. 8
-#: ../cli/src/devices.c:87
-msgid "IP6-SETTINGS"
-msgstr "IP6-AGORDOJ"
+#: ../cli/src/devices.c:88
+msgid "IP6"
+msgstr "IP6"
 
 #. 9
-#: ../cli/src/devices.c:88
-msgid "IP6-DNS"
-msgstr "IP6-DNS"
+#: ../cli/src/devices.c:89
+msgid "DHCP6"
+msgstr "DHCP6"
 
 #. 2
-#: ../cli/src/devices.c:104
+#: ../cli/src/devices.c:105
+msgid "VENDOR"
+msgstr "VENDISTO"
+
+#. 3
+#: ../cli/src/devices.c:106
+msgid "PRODUCT"
+msgstr "PRODUKTO"
+
+#. 4
+#: ../cli/src/devices.c:107
 msgid "DRIVER"
 msgstr "PELILO"
 
-#. 3
-#: ../cli/src/devices.c:105
+#. 5
+#: ../cli/src/devices.c:108
 msgid "HWADDR"
 msgstr "APARATADRESO"
 
-#. 0
+#. 7
+#: ../cli/src/devices.c:110
+msgid "REASON"
+msgstr "KIALO"
+
+#. 8
+#: ../cli/src/devices.c:111
+msgid "UDI"
+msgstr ""
+
+#. 9
+#: ../cli/src/devices.c:112
+msgid "IP-IFACE"
+msgstr ""
+
+#. 10
+#: ../cli/src/devices.c:113
+msgid "NM-MANAGED"
+msgstr ""
+
+#. 11
+#: ../cli/src/devices.c:114
+msgid "FIRMWARE-MISSING"
+msgstr ""
+
+#. 12
 #: ../cli/src/devices.c:115
+msgid "CONNECTION"
+msgstr "KONEKTO"
+
+#. 0
+#: ../cli/src/devices.c:124
 msgid "CARRIER-DETECT"
 msgstr "PORTANTO-REKONO"
 
 #. 1
-#: ../cli/src/devices.c:116
+#: ../cli/src/devices.c:125
 msgid "SPEED"
 msgstr "RAPIDO"
 
 #. 0
-#: ../cli/src/devices.c:125
+#: ../cli/src/devices.c:134
 msgid "CARRIER"
 msgstr "PORTANTO"
 
 #. 0
-#: ../cli/src/devices.c:135
+#: ../cli/src/devices.c:144
 msgid "WEP"
 msgstr "WEP"
 
 #. 1
-#: ../cli/src/devices.c:136
+#: ../cli/src/devices.c:145
 msgid "WPA"
 msgstr "WPA"
 
 #. 2
-#: ../cli/src/devices.c:137
+#: ../cli/src/devices.c:146
 msgid "WPA2"
 msgstr "WPA2"
 
 #. 3
-#: ../cli/src/devices.c:138
+#: ../cli/src/devices.c:147
 msgid "TKIP"
 msgstr "TKIP"
 
 #. 4
-#: ../cli/src/devices.c:139
+#: ../cli/src/devices.c:148
 msgid "CCMP"
 msgstr "CCMP"
 
 #. 0
-#: ../cli/src/devices.c:149
+#: ../cli/src/devices.c:158
 msgid "CTR-FREQ"
 msgstr ""
 
 #. 1
-#: ../cli/src/devices.c:150
+#: ../cli/src/devices.c:159
 msgid "RSSI"
 msgstr "RSSI"
 
 #. 2
-#: ../cli/src/devices.c:151
+#: ../cli/src/devices.c:160
 msgid "CINR"
 msgstr "CINR"
 
 #. 3
-#: ../cli/src/devices.c:152
+#: ../cli/src/devices.c:161
 msgid "TX-POW"
 msgstr ""
 
 #. 4
-#: ../cli/src/devices.c:153
+#: ../cli/src/devices.c:162
 msgid "BSID"
-msgstr ""
-
-#. 0
-#: ../cli/src/devices.c:163 ../cli/src/devices.c:174
-msgid "ADDRESS"
-msgstr "ADRESO"
-
-#. 1
-#: ../cli/src/devices.c:164 ../cli/src/devices.c:175
-msgid "PREFIX"
-msgstr "PREFIKSO"
-
-#. 2
-#: ../cli/src/devices.c:165 ../cli/src/devices.c:176
-msgid "GATEWAY"
-msgstr "KLUZO"
+msgstr "BSID"
 
 #. 0
-#: ../cli/src/devices.c:185 ../cli/src/devices.c:194
-msgid "DNS"
-msgstr "DNS"
-
-#. 0
-#: ../cli/src/devices.c:203
+#: ../cli/src/devices.c:172
 msgid "SSID"
 msgstr "SSID"
 
 #. 1
-#: ../cli/src/devices.c:204
+#: ../cli/src/devices.c:173
 msgid "BSSID"
 msgstr "BSSID"
 
 #. 2
-#: ../cli/src/devices.c:205
+#: ../cli/src/devices.c:174
 msgid "MODE"
 msgstr "REĜIMO"
 
 #. 3
-#: ../cli/src/devices.c:206
+#: ../cli/src/devices.c:175
 msgid "FREQ"
 msgstr "FREKV"
 
 #. 4
-#: ../cli/src/devices.c:207
+#: ../cli/src/devices.c:176
 msgid "RATE"
 msgstr "TRANSMETRAPIDO"
 
 #. 5
 #. 1
-#: ../cli/src/devices.c:208 ../cli/src/devices.c:226
+#: ../cli/src/devices.c:177 ../cli/src/devices.c:195
 msgid "SIGNAL"
 msgstr "SIGNALO"
 
 #. 6
-#: ../cli/src/devices.c:209
+#: ../cli/src/devices.c:178
 msgid "SECURITY"
 msgstr "SEKURECO"
 
 #. 7
-#: ../cli/src/devices.c:210
+#: ../cli/src/devices.c:179
 msgid "WPA-FLAGS"
 msgstr "WPA-FLAGOJ"
 
 #. 8
-#: ../cli/src/devices.c:211
+#: ../cli/src/devices.c:180
 msgid "RSN-FLAGS"
 msgstr "RSN-FLAGOJ"
 
 #. 10
 #. 4
-#: ../cli/src/devices.c:213 ../cli/src/devices.c:229
+#: ../cli/src/devices.c:182 ../cli/src/devices.c:198
 msgid "ACTIVE"
 msgstr "AKTIVE"
 
-#: ../cli/src/devices.c:256
-#, c-format
+#: ../cli/src/devices.c:215
+#, fuzzy, c-format
 msgid ""
 "Usage: nmcli dev { COMMAND | help }\n"
 "\n"
@@ -697,7 +839,7 @@ msgid ""
 "  status\n"
 "  list [iface <iface>]\n"
 "  disconnect iface <iface> [--nowait] [--timeout <timeout>]\n"
-"  wifi [list [iface <iface>] [hwaddr <hwaddr>]]\n"
+"  wifi [list [iface <iface>] [bssid <BSSID>]]\n"
 "  wimax [list [iface <iface>] [nsp <name>]]\n"
 "\n"
 msgstr ""
@@ -714,256 +856,462 @@ msgstr ""
 "  wimax [list [iface <iface>] [nsp <name>]]\n"
 "\n"
 
-#: ../cli/src/devices.c:284
+#: ../cli/src/devices.c:243
 msgid "unmanaged"
 msgstr "nemastrumate"
 
-#: ../cli/src/devices.c:286
+#: ../cli/src/devices.c:245
 msgid "unavailable"
 msgstr "neatingeble"
 
-#: ../cli/src/devices.c:288 ../cli/src/network-manager.c:115
+#: ../cli/src/devices.c:247 ../cli/src/network-manager.c:108
 msgid "disconnected"
 msgstr "nekonektite"
 
-#: ../cli/src/devices.c:290
+#: ../cli/src/devices.c:249
 msgid "connecting (prepare)"
 msgstr "konektas (preparo)"
 
-#: ../cli/src/devices.c:292
+#: ../cli/src/devices.c:251
 msgid "connecting (configuring)"
 msgstr "konektas (agordado)"
 
-#: ../cli/src/devices.c:294
+#: ../cli/src/devices.c:253
 msgid "connecting (need authentication)"
 msgstr "konektas (bezonas aŭtentigon)"
 
-#: ../cli/src/devices.c:296
+#: ../cli/src/devices.c:255
 msgid "connecting (getting IP configuration)"
 msgstr "konektas (akiras IP-agordaron)"
 
-#: ../cli/src/devices.c:298
+#: ../cli/src/devices.c:257
 msgid "connecting (checking IP connectivity)"
 msgstr ""
 
-#: ../cli/src/devices.c:300
+#: ../cli/src/devices.c:259
 msgid "connecting (starting secondary connections)"
 msgstr ""
 
-#: ../cli/src/devices.c:302 ../cli/src/network-manager.c:111
+#: ../cli/src/devices.c:261 ../cli/src/network-manager.c:104
 msgid "connected"
 msgstr "konektite"
 
-#: ../cli/src/devices.c:306
+#: ../cli/src/devices.c:265
 msgid "connection failed"
 msgstr "konekto fiaskis"
 
-#: ../cli/src/devices.c:331 ../cli/src/devices.c:341 ../cli/src/devices.c:501
-#: ../cli/src/devices.c:545
+#: ../cli/src/devices.c:276
+msgid "No reason given"
+msgstr "Nenia kialo donita"
+
+#: ../cli/src/devices.c:279
+msgid "Unknown error"
+msgstr "Nekonata eraro"
+
+#: ../cli/src/devices.c:282
+msgid "Device is now managed"
+msgstr "Aparato ne estas administrita"
+
+#: ../cli/src/devices.c:285
+msgid "Device is now unmanaged"
+msgstr "Aparato nun estas administrita"
+
+#: ../cli/src/devices.c:288
+msgid "The device could not be readied for configuration"
+msgstr ""
+
+#: ../cli/src/devices.c:291
+msgid ""
+"IP configuration could not be reserved (no available address, timeout, etc)"
+msgstr ""
+
+#: ../cli/src/devices.c:294
+msgid "The IP configuration is no longer valid"
+msgstr ""
+
+#: ../cli/src/devices.c:297
+msgid "Secrets were required, but not provided"
+msgstr ""
+
+#: ../cli/src/devices.c:300
+msgid "802.1X supplicant disconnected"
+msgstr ""
+
+#: ../cli/src/devices.c:303
+msgid "802.1X supplicant configuration failed"
+msgstr ""
+
+#: ../cli/src/devices.c:306
+msgid "802.1X supplicant failed"
+msgstr ""
+
+#: ../cli/src/devices.c:309
+msgid "802.1X supplicant took too long to authenticate"
+msgstr ""
+
+#: ../cli/src/devices.c:312
+msgid "PPP service failed to start"
+msgstr "la PPP-servo malsukcesis starti"
+
+#: ../cli/src/devices.c:315
+msgid "PPP service disconnected"
+msgstr "la PPP-servo malkonektis"
+
+#: ../cli/src/devices.c:318
+msgid "PPP failed"
+msgstr ""
+
+#: ../cli/src/devices.c:321
+msgid "DHCP client failed to start"
+msgstr "la DHCP-servo malsukcesis starti"
+
+#: ../cli/src/devices.c:324
+msgid "DHCP client error"
+msgstr "Eraro de la DHCP-kliento"
+
+#: ../cli/src/devices.c:327
+msgid "DHCP client failed"
+msgstr "DHCP-kliento malsukcesis"
+
+#: ../cli/src/devices.c:330
+#, fuzzy
+msgid "Shared connection service failed to start"
+msgstr "la servo malsukcesis starti"
+
+#: ../cli/src/devices.c:333
+msgid "Shared connection service failed"
+msgstr ""
+
+#: ../cli/src/devices.c:336
+msgid "AutoIP service failed to start"
+msgstr "la AutoIP-servo malsukcesis starti"
+
+#: ../cli/src/devices.c:339
+msgid "AutoIP service error"
+msgstr ""
+
+#: ../cli/src/devices.c:342
+msgid "AutoIP service failed"
+msgstr "la AutoIP-servo malsukcesis starti"
+
+#: ../cli/src/devices.c:345
+msgid "The line is busy"
+msgstr ""
+
+#: ../cli/src/devices.c:348
+msgid "No dial tone"
+msgstr ""
+
+#: ../cli/src/devices.c:351
+msgid "No carrier could be established"
+msgstr ""
+
+#: ../cli/src/devices.c:354
+msgid "The dialing request timed out"
+msgstr ""
+
+#: ../cli/src/devices.c:357
+msgid "The dialing attempt failed"
+msgstr ""
+
+#: ../cli/src/devices.c:360
+msgid "Modem initialization failed"
+msgstr ""
+
+#: ../cli/src/devices.c:363
+msgid "Failed to select the specified APN"
+msgstr ""
+
+#: ../cli/src/devices.c:366
+msgid "Not searching for networks"
+msgstr ""
+
+#: ../cli/src/devices.c:369
+msgid "Network registration denied"
+msgstr ""
+
+#: ../cli/src/devices.c:372
+msgid "Network registration timed out"
+msgstr ""
+
+#: ../cli/src/devices.c:375
+msgid "Failed to register with the requested network"
+msgstr ""
+
+#: ../cli/src/devices.c:378
+msgid "PIN check failed"
+msgstr ""
+
+#: ../cli/src/devices.c:381
+msgid "Necessary firmware for the device may be missing"
+msgstr ""
+
+#: ../cli/src/devices.c:384
+msgid "The device was removed"
+msgstr "La aparato estas forigita"
+
+#: ../cli/src/devices.c:387
+msgid "NetworkManager went to sleep"
+msgstr ""
+
+#: ../cli/src/devices.c:390
+msgid "The device's active connection disappeared"
+msgstr ""
+
+#: ../cli/src/devices.c:393
+msgid "Device disconnected by user or client"
+msgstr ""
+
+#: ../cli/src/devices.c:396
+msgid "Carrier/link changed"
+msgstr ""
+
+#: ../cli/src/devices.c:399
+msgid "The device's existing connection was assumed"
+msgstr ""
+
+#: ../cli/src/devices.c:402
+msgid "The supplicant is now available"
+msgstr ""
+
+#: ../cli/src/devices.c:405
+msgid "The modem could not be found"
+msgstr ""
+
+#: ../cli/src/devices.c:408
+msgid "The Bluetooth connection failed or timed out"
+msgstr ""
+
+#: ../cli/src/devices.c:411
+msgid "GSM Modem's SIM card not inserted"
+msgstr ""
+
+#: ../cli/src/devices.c:414
+msgid "GSM Modem's SIM PIN required"
+msgstr ""
+
+#: ../cli/src/devices.c:417
+msgid "GSM Modem's SIM PUK required"
+msgstr ""
+
+#: ../cli/src/devices.c:420
+msgid "GSM Modem's SIM wrong"
+msgstr ""
+
+#: ../cli/src/devices.c:423
+msgid "InfiniBand device does not support connected mode"
+msgstr ""
+
+#: ../cli/src/devices.c:426
+msgid "A dependency of the connection failed"
+msgstr ""
+
+#: ../cli/src/devices.c:428 ../cli/src/devices.c:451 ../cli/src/devices.c:467
+#: ../cli/src/devices.c:587 ../cli/src/devices.c:631
 msgid "Unknown"
 msgstr "Nekonate"
 
-#: ../cli/src/devices.c:374
+#: ../cli/src/devices.c:500
 msgid "(none)"
 msgstr "(neniu)"
 
-#: ../cli/src/devices.c:399
-#, c-format
-msgid "%s: error converting IP4 address 0x%X"
-msgstr "%s: eraro dum konverto de IP4-adreso 0x%X"
-
-#: ../cli/src/devices.c:470
+#: ../cli/src/devices.c:556
 #, c-format
 msgid "%u MHz"
 msgstr "%u MHz"
 
-#: ../cli/src/devices.c:471
+#: ../cli/src/devices.c:557
 #, c-format
 msgid "%u MB/s"
 msgstr "%u MB/s"
 
-#: ../cli/src/devices.c:480
+#: ../cli/src/devices.c:566
 msgid "Encrypted: "
 msgstr "Ĉifrite: "
 
-#: ../cli/src/devices.c:485
+#: ../cli/src/devices.c:571
 msgid "WEP "
 msgstr "WEP "
 
-#: ../cli/src/devices.c:487
+#: ../cli/src/devices.c:573
 msgid "WPA "
 msgstr "WPA "
 
-#: ../cli/src/devices.c:489
+#: ../cli/src/devices.c:575
 msgid "WPA2 "
 msgstr "WPA2 "
 
-#: ../cli/src/devices.c:492
+#: ../cli/src/devices.c:578
 msgid "Enterprise "
 msgstr "Entrepreno "
 
-#: ../cli/src/devices.c:501
+#: ../cli/src/devices.c:587
 msgid "Ad-Hoc"
 msgstr "Laŭcela"
 
-#: ../cli/src/devices.c:501
+#: ../cli/src/devices.c:587
 msgid "Infrastructure"
 msgstr "Infrastrukturo"
 
-#: ../cli/src/devices.c:536
+#: ../cli/src/devices.c:622
 msgid "Home"
 msgstr "Hejmo"
 
-#: ../cli/src/devices.c:539
+#: ../cli/src/devices.c:625
 msgid "Partner"
 msgstr "Partnero"
 
-#: ../cli/src/devices.c:542
+#: ../cli/src/devices.c:628
 msgid "Roaming"
-msgstr ""
+msgstr "Retmigrado"
 
-#: ../cli/src/devices.c:612
+#: ../cli/src/devices.c:700
 #, c-format
 msgid "Error: 'dev list': %s"
 msgstr "Eraro: 'dev list': %s"
 
-#: ../cli/src/devices.c:614
+#: ../cli/src/devices.c:702
 #, c-format
 msgid "Error: 'dev list': %s; allowed fields: %s"
 msgstr "Eraro: 'dev list': %s; permesataj kampoj: %s"
 
-#: ../cli/src/devices.c:623
+#: ../cli/src/devices.c:711
 msgid "Device details"
 msgstr "Detaloj de aparato"
 
-#: ../cli/src/devices.c:657 ../cli/src/devices.c:1152 ../cli/src/utils.c:342
+#: ../cli/src/devices.c:756 ../cli/src/devices.c:757 ../cli/src/devices.c:1164
+#: ../cli/src/utils.c:445
 msgid "(unknown)"
 msgstr "(nekonate)"
 
-#: ../cli/src/devices.c:658
-msgid "unknown)"
-msgstr "nekonate)"
+#: ../cli/src/devices.c:765
+msgid "not connected"
+msgstr "nekonektite"
 
-#: ../cli/src/devices.c:684
+#: ../cli/src/devices.c:792
 #, c-format
 msgid "%u Mb/s"
 msgstr "%u Mb/s"
 
 #. Print header
 #. "WIRED-PROPERTIES"
-#: ../cli/src/devices.c:757
+#: ../cli/src/devices.c:865
 msgid "on"
 msgstr "enŝaltite"
 
-#: ../cli/src/devices.c:757
+#: ../cli/src/devices.c:865
 msgid "off"
 msgstr "elŝaltite"
 
-#: ../cli/src/devices.c:1004
+#: ../cli/src/devices.c:1016
 #, c-format
 msgid "Error: 'dev status': %s"
 msgstr "Eraro: 'dev status': %s"
 
-#: ../cli/src/devices.c:1006
+#: ../cli/src/devices.c:1018
 #, c-format
 msgid "Error: 'dev status': %s; allowed fields: %s"
 msgstr "Eraro: 'dev status': %s; permesataj kampoj: %s"
 
-#: ../cli/src/devices.c:1029
+#: ../cli/src/devices.c:1041
 msgid "Status of devices"
 msgstr "Stato de aparatoj"
 
-#: ../cli/src/devices.c:1060
+#: ../cli/src/devices.c:1072
 #, c-format
 msgid "Error: '%s' argument is missing."
 msgstr "Eraro: argumento '%s' mankas."
 
-#: ../cli/src/devices.c:1101 ../cli/src/devices.c:1253
-#: ../cli/src/devices.c:1389 ../cli/src/devices.c:1608
+#: ../cli/src/devices.c:1113 ../cli/src/devices.c:1265
+#: ../cli/src/devices.c:1402 ../cli/src/devices.c:1621
 #, c-format
 msgid "Error: Device '%s' not found."
 msgstr "Eraro: Aparato '%s' ne trovita."
 
-#: ../cli/src/devices.c:1124
+#: ../cli/src/devices.c:1136
 #, c-format
 msgid "Success: Device '%s' successfully disconnected."
 msgstr "Sukceso: Aparato '%s' sukcese malkonektiĝis."
 
-#: ../cli/src/devices.c:1149
+#: ../cli/src/devices.c:1161
 #, c-format
 msgid "Error: Device '%s' (%s) disconnecting failed: %s"
 msgstr "Eraro: Aparato '%s' (%s) eraro dum malkonektiĝo: %s"
 
-#: ../cli/src/devices.c:1157
+#: ../cli/src/devices.c:1169
 #, c-format
 msgid "Device state: %d (%s)\n"
 msgstr "Stato de aparato: %d (%s)\n"
 
-#: ../cli/src/devices.c:1222
+#: ../cli/src/devices.c:1234
 #, c-format
 msgid "Error: iface has to be specified."
 msgstr "Eraro: 'iface' devas esti specifata."
 
-#: ../cli/src/devices.c:1347
+#: ../cli/src/devices.c:1360
 #, c-format
 msgid "Error: 'dev wifi': %s"
 msgstr "Eraro: 'dev wifi': %s"
 
-#: ../cli/src/devices.c:1349
+#: ../cli/src/devices.c:1362
 #, c-format
 msgid "Error: 'dev wifi': %s; allowed fields: %s"
 msgstr "Eraro: 'dev wifi': %s; permesataj kampoj: %s"
 
-#: ../cli/src/devices.c:1372
+#: ../cli/src/devices.c:1385
 msgid "WiFi scan list"
 msgstr "WiFi-skanlisto"
 
-#: ../cli/src/devices.c:1409 ../cli/src/devices.c:1463
-#: ../cli/src/devices.c:1670
+#: ../cli/src/devices.c:1422 ../cli/src/devices.c:1476
 #, c-format
-msgid "Error: Access point with hwaddr '%s' not found."
-msgstr "Eraro: Retkaptejo kun 'hwaddr' '%s' ne trovita"
+msgid "Error: Access point with bssid '%s' not found."
+msgstr "Eraro: Retkaptejo kun 'bssid' '%s' ne trovita"
 
-#: ../cli/src/devices.c:1426
+#: ../cli/src/devices.c:1439
 #, c-format
 msgid "Error: Device '%s' is not a WiFi device."
 msgstr "Eraro: Aparato '%s' ne estas WiFi-aparato."
 
-#: ../cli/src/devices.c:1490
+#: ../cli/src/devices.c:1503
 #, c-format
 msgid "Error: 'dev wifi' command '%s' is not valid."
 msgstr "Eraro: 'dev wifi'-komando '%s' ne validas."
 
-#: ../cli/src/devices.c:1566
+#: ../cli/src/devices.c:1579
 #, c-format
 msgid "Error: 'dev wimax': %s"
 msgstr "Eraro: 'dev wimax': %s"
 
-#: ../cli/src/devices.c:1568
+#: ../cli/src/devices.c:1581
 #, c-format
 msgid "Error: 'dev wimax': %s; allowed fields: %s"
 msgstr "Eraro: 'dev wimax': %s; permesataj kampoj: %s"
 
-#: ../cli/src/devices.c:1591
+#: ../cli/src/devices.c:1604
 msgid "WiMAX NSP list"
 msgstr ""
 
-#: ../cli/src/devices.c:1628
+#: ../cli/src/devices.c:1641
 #, c-format
 msgid "Error: NSP with name '%s' not found."
 msgstr ""
 
-#: ../cli/src/devices.c:1639
+#: ../cli/src/devices.c:1652
 #, c-format
 msgid "Error: Device '%s' is not a WiMAX device."
 msgstr "Eraro: Aparato '%s' ne estas WiMAX-aparato."
 
-#: ../cli/src/devices.c:1697
+#: ../cli/src/devices.c:1683
+#, c-format
+msgid "Error: Access point with nsp '%s' not found."
+msgstr "Eraro: Retkaptejo kun 'nsp' '%s' ne trovita"
+
+#: ../cli/src/devices.c:1710
 #, c-format
 msgid "Error: 'dev wimax' command '%s' is not valid."
 msgstr "Eraro: 'dev wimax'-komando '%s' ne validas."
 
-#: ../cli/src/devices.c:1747
+#: ../cli/src/devices.c:1760
 #, c-format
 msgid "Error: 'dev' command '%s' is not valid."
 msgstr "Eraro: 'dev'-komando '%s' ne validas."
@@ -1012,7 +1360,7 @@ msgstr "WIMAX-APARATARO"
 msgid "WIMAX"
 msgstr "WIMAX"
 
-#: ../cli/src/network-manager.c:74
+#: ../cli/src/network-manager.c:67
 #, c-format
 msgid ""
 "Usage: nmcli nm { COMMAND | help }\n"
@@ -1043,136 +1391,136 @@ msgstr ""
 "  wimax [on|off]\n"
 "\n"
 
-#: ../cli/src/network-manager.c:103
+#: ../cli/src/network-manager.c:96
 msgid "asleep"
 msgstr "dormas"
 
-#: ../cli/src/network-manager.c:105
+#: ../cli/src/network-manager.c:98
 msgid "connecting"
 msgstr "konektas"
 
-#: ../cli/src/network-manager.c:107
+#: ../cli/src/network-manager.c:100
 msgid "connected (local only)"
 msgstr ""
 
-#: ../cli/src/network-manager.c:109
+#: ../cli/src/network-manager.c:102
 msgid "connected (site only)"
 msgstr ""
 
-#: ../cli/src/network-manager.c:113
+#: ../cli/src/network-manager.c:106
 msgid "disconnecting"
 msgstr "malkonektante"
 
-#: ../cli/src/network-manager.c:153
+#: ../cli/src/network-manager.c:146
 #, c-format
 msgid "Error: 'nm status': %s"
 msgstr "Eraro: 'nm status': %s"
 
-#: ../cli/src/network-manager.c:155
+#: ../cli/src/network-manager.c:148
 #, c-format
 msgid "Error: 'nm status': %s; allowed fields: %s"
 msgstr "Eraro: 'nm status': %s; permesataj kampoj: %s"
 
 #. create NMClient
-#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:169
-#: ../cli/src/network-manager.c:170 ../cli/src/network-manager.c:171
-#: ../cli/src/network-manager.c:172 ../cli/src/network-manager.c:174
-#: ../cli/src/network-manager.c:175 ../cli/src/network-manager.c:296
-#: ../cli/src/network-manager.c:351 ../cli/src/network-manager.c:389
-#: ../cli/src/network-manager.c:428
+#: ../cli/src/network-manager.c:161 ../cli/src/network-manager.c:162
+#: ../cli/src/network-manager.c:163 ../cli/src/network-manager.c:164
+#: ../cli/src/network-manager.c:165 ../cli/src/network-manager.c:167
+#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:289
+#: ../cli/src/network-manager.c:344 ../cli/src/network-manager.c:382
+#: ../cli/src/network-manager.c:421
 msgid "enabled"
 msgstr "enŝaltite"
 
-#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:169
-#: ../cli/src/network-manager.c:170 ../cli/src/network-manager.c:171
-#: ../cli/src/network-manager.c:172 ../cli/src/network-manager.c:174
-#: ../cli/src/network-manager.c:175 ../cli/src/network-manager.c:296
-#: ../cli/src/network-manager.c:351 ../cli/src/network-manager.c:389
-#: ../cli/src/network-manager.c:428
+#: ../cli/src/network-manager.c:161 ../cli/src/network-manager.c:162
+#: ../cli/src/network-manager.c:163 ../cli/src/network-manager.c:164
+#: ../cli/src/network-manager.c:165 ../cli/src/network-manager.c:167
+#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:289
+#: ../cli/src/network-manager.c:344 ../cli/src/network-manager.c:382
+#: ../cli/src/network-manager.c:421
 msgid "disabled"
 msgstr "elŝaltite"
 
-#: ../cli/src/network-manager.c:188
+#: ../cli/src/network-manager.c:181
 msgid "NetworkManager status"
 msgstr "Stato de NetworkManager"
 
 #. Print header
-#: ../cli/src/network-manager.c:191
+#: ../cli/src/network-manager.c:184
 msgid "running"
 msgstr "aktive"
 
-#: ../cli/src/network-manager.c:191
+#: ../cli/src/network-manager.c:184
 msgid "not running"
 msgstr "neaktive"
 
-#: ../cli/src/network-manager.c:222 ../cli/src/utils.c:322
+#: ../cli/src/network-manager.c:215 ../cli/src/utils.c:425
 #, c-format
 msgid "Error: Couldn't connect to system bus: %s"
-msgstr "Eraro: Ne povis konekti al sistem-buso: %s."
+msgstr "Eraro: Ne eblis konekti al sistem-buso: %s."
 
-#: ../cli/src/network-manager.c:233
+#: ../cli/src/network-manager.c:226
 #, c-format
 msgid "Error: Couldn't create D-Bus object proxy."
-msgstr "Eraro: Ne povis krei D-busan objekt-prokurservilon."
+msgstr "Eraro: Ne eblis krei D-busan objekt-prokurservilon."
 
-#: ../cli/src/network-manager.c:239
+#: ../cli/src/network-manager.c:232
 #, c-format
 msgid "Error in sleep: %s"
 msgstr "Eraro dum dormo: %s"
 
-#: ../cli/src/network-manager.c:283 ../cli/src/network-manager.c:338
-#: ../cli/src/network-manager.c:376 ../cli/src/network-manager.c:415
+#: ../cli/src/network-manager.c:276 ../cli/src/network-manager.c:331
+#: ../cli/src/network-manager.c:369 ../cli/src/network-manager.c:408
 #, c-format
 msgid "Error: '--fields' value '%s' is not valid here; allowed fields: %s"
 msgstr "Eraro: valoro '--fields' '%s' ne validas tie ĉi; permesataj kampoj: %s"
 
-#: ../cli/src/network-manager.c:291
+#: ../cli/src/network-manager.c:284
 msgid "Networking enabled"
 msgstr "Retkonektado enŝaltita"
 
-#: ../cli/src/network-manager.c:307
+#: ../cli/src/network-manager.c:300
 #, c-format
 msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'."
 msgstr "Eraro: nevalida 'enŝalt'-parametro: '%s'; uzu 'true' aŭ 'false'."
 
-#: ../cli/src/network-manager.c:317
+#: ../cli/src/network-manager.c:310
 #, c-format
 msgid "Error: Sleeping status is not exported by NetworkManager."
 msgstr "Eraro: Dorm-stato ne estas elportite de NetworkManager."
 
-#: ../cli/src/network-manager.c:325
+#: ../cli/src/network-manager.c:318
 #, c-format
 msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'."
-msgstr "Eraro: nevalida 'dorm'-parametro: '%s'; uzu 'true' aŭ 'false'."
+msgstr "Eraro: nevalida 'dorm'-parametro: '%s'; uzu 'true' aŭ 'false'."
 
-#: ../cli/src/network-manager.c:346
+#: ../cli/src/network-manager.c:339
 msgid "WiFi enabled"
 msgstr "WiFi enŝaltita"
 
-#: ../cli/src/network-manager.c:362
+#: ../cli/src/network-manager.c:355
 #, c-format
 msgid "Error: invalid 'wifi' parameter: '%s'."
 msgstr "Eraro: nevalida 'wifi'-parametro: '%s'."
 
-#: ../cli/src/network-manager.c:384
+#: ../cli/src/network-manager.c:377
 msgid "WWAN enabled"
 msgstr "WWAN enŝaltita"
 
-#: ../cli/src/network-manager.c:400
+#: ../cli/src/network-manager.c:393
 #, c-format
 msgid "Error: invalid 'wwan' parameter: '%s'."
 msgstr "Eraro: nevalida 'wwan'-parametro: '%s'."
 
-#: ../cli/src/network-manager.c:423
+#: ../cli/src/network-manager.c:416
 msgid "WiMAX enabled"
 msgstr "WiMAX enŝaltita"
 
-#: ../cli/src/network-manager.c:439
+#: ../cli/src/network-manager.c:432
 #, c-format
 msgid "Error: invalid 'wimax' parameter: '%s'."
 msgstr "Eraro: nevalida 'wimax'-parametro: '%s'."
 
-#: ../cli/src/network-manager.c:452
+#: ../cli/src/network-manager.c:445
 #, c-format
 msgid "Error: 'nm' command '%s' is not valid."
 msgstr "Eraro: 'nm'-komando '%s' ne validas."
@@ -1275,241 +1623,293 @@ msgstr "Ricevis signalon '%d', elŝaltas..."
 
 #: ../cli/src/nmcli.c:257
 msgid "Error: Could not create NMClient object."
-msgstr "Eraro: Ne povas krei NMClient-objekton."
+msgstr "Eraro: Ne eblas krei NMClient-objekton."
 
 #: ../cli/src/nmcli.c:273
 msgid "Success"
 msgstr "Sukceso"
 
-#: ../cli/src/settings.c:423
+#: ../cli/src/settings.c:497
 #, c-format
 msgid "%d (hex-ascii-key)"
 msgstr "%d (heks-ascii-ŝlosilo)"
 
-#: ../cli/src/settings.c:425
+#: ../cli/src/settings.c:499
 #, c-format
 msgid "%d (104/128-bit passphrase)"
 msgstr "%d (104/128-bita pasfrazo)"
 
-#: ../cli/src/settings.c:428
+#: ../cli/src/settings.c:502
 #, c-format
 msgid "%d (unknown)"
 msgstr "%d (nekonate)"
 
-#: ../cli/src/settings.c:454
+#: ../cli/src/settings.c:528
 msgid "0 (unknown)"
 msgstr "0 (nekonate)"
 
-#: ../cli/src/settings.c:460
+#: ../cli/src/settings.c:534
 msgid "any, "
 msgstr "ajna, "
 
-#: ../cli/src/settings.c:462
+#: ../cli/src/settings.c:536
 msgid "900 MHz, "
 msgstr "900 MHz, "
 
-#: ../cli/src/settings.c:464
+#: ../cli/src/settings.c:538
 msgid "1800 MHz, "
 msgstr "1800 MHz, "
 
-#: ../cli/src/settings.c:466
+#: ../cli/src/settings.c:540
 msgid "1900 MHz, "
 msgstr "1900 MHz, "
 
-#: ../cli/src/settings.c:468
+#: ../cli/src/settings.c:542
 msgid "850 MHz, "
 msgstr "850 MHz, "
 
-#: ../cli/src/settings.c:470
+#: ../cli/src/settings.c:544
 msgid "WCDMA 3GPP UMTS 2100 MHz, "
 msgstr "WCDMA 3GPP UMTS 2100 MHz, "
 
-#: ../cli/src/settings.c:472
+#: ../cli/src/settings.c:546
 msgid "WCDMA 3GPP UMTS 1800 MHz, "
 msgstr "WCDMA 3GPP UMTS 1800 MHz, "
 
-#: ../cli/src/settings.c:474
+#: ../cli/src/settings.c:548
 msgid "WCDMA 3GPP UMTS 1700/2100 MHz, "
 msgstr "WCDMA 3GPP UMTS 1700/2100 MHz, "
 
-#: ../cli/src/settings.c:476
+#: ../cli/src/settings.c:550
 msgid "WCDMA 3GPP UMTS 800 MHz, "
 msgstr "WCDMA 3GPP UMTS 800 MHz, "
 
-#: ../cli/src/settings.c:478
+#: ../cli/src/settings.c:552
 msgid "WCDMA 3GPP UMTS 850 MHz, "
 msgstr "WCDMA 3GPP UMTS 850 MHz, "
 
-#: ../cli/src/settings.c:480
+#: ../cli/src/settings.c:554
 msgid "WCDMA 3GPP UMTS 900 MHz, "
 msgstr "WCDMA 3GPP UMTS 900 MHz, "
 
-#: ../cli/src/settings.c:482
+#: ../cli/src/settings.c:556
 msgid "WCDMA 3GPP UMTS 1700 MHz, "
 msgstr "WCDMA 3GPP UMTS 1700 MHz, "
 
-#: ../cli/src/settings.c:566 ../cli/src/settings.c:732
+#: ../cli/src/settings.c:558
+msgid "WCDMA 3GPP UMTS 1900 MHz, "
+msgstr "WCDMA 3GPP UMTS 1900 MHz, "
+
+#: ../cli/src/settings.c:560
+msgid "WCDMA 3GPP UMTS 2600 MHz, "
+msgstr "WCDMA 3GPP UMTS 2600 MHz, "
+
+#: ../cli/src/settings.c:578
+msgid "0 (NONE)"
+msgstr "0 (NENIU)"
+
+#: ../cli/src/settings.c:584
+msgid "REORDER_HEADERS, "
+msgstr ""
+
+#: ../cli/src/settings.c:586
+msgid "GVRP, "
+msgstr ""
+
+#: ../cli/src/settings.c:588
+msgid "LOOSE_BINDING, "
+msgstr ""
+
+#: ../cli/src/settings.c:730 ../cli/src/settings.c:926
+#: ../cli/src/settings.c:1630
 msgid "auto"
 msgstr "aŭto"
 
-#: ../cli/src/settings.c:727 ../cli/src/settings.c:730
-#: ../cli/src/settings.c:731 ../cli/src/utils.c:176
+#: ../cli/src/settings.c:920 ../cli/src/settings.c:923
+#: ../cli/src/settings.c:924 ../cli/src/utils.c:247
 msgid "not set"
 msgstr "neagordite"
 
-#: ../cli/src/utils.c:128
+#: ../cli/src/utils.c:103
+#, fuzzy, c-format
+msgid "Error converting IP4 address '0x%X' to text form"
+msgstr "Eraro dum konverto de IP4-adreso '0x%X'"
+
+#: ../cli/src/utils.c:131
+#, c-format
+msgid "Error converting IP6 address '%s' to text form"
+msgstr "Eraro dum konverto de IP6-adreso '%s'"
+
+#: ../cli/src/utils.c:200
 #, c-format
 msgid "field '%s' has to be alone"
 msgstr "kampo '%s' devas esti sola"
 
-#: ../cli/src/utils.c:131
+#: ../cli/src/utils.c:203
 #, c-format
 msgid "invalid field '%s'"
 msgstr "nevalida kampo '%s'"
 
-#: ../cli/src/utils.c:150
+#: ../cli/src/utils.c:222
 #, c-format
 msgid "Option '--terse' requires specifying '--fields'"
 msgstr "Opcio '--terse' postulas specifigon de '--fields'"
 
-#: ../cli/src/utils.c:154
+#: ../cli/src/utils.c:226
 #, c-format
 msgid "Option '--terse' requires specific '--fields' option values , not '%s'"
 msgstr ""
 "Opcio '--terse' postulas specifajn elektindajn valorojn de '--fields', ne "
 "'%s'"
 
-#: ../cli/src/utils.c:333
+#: ../cli/src/utils.c:436
 #, c-format
 msgid "Error: Couldn't create D-Bus object proxy for org.freedesktop.DBus"
-msgstr "Eraro: Ne povas krei D-Bus-prokurilobjekto por org.freedesktop.DBus"
+msgstr "Eraro: Ne eblas krei D-Bus-prokurilobjekto por org.freedesktop.DBus"
 
-#: ../cli/src/utils.c:341
+#: ../cli/src/utils.c:444
 #, c-format
 msgid "Error: NameHasOwner request failed: %s"
 msgstr "Eraro: NameHasOwner-peto fiaskis: %s"
 
-#: ../cli/src/utils.c:386
+#: ../cli/src/utils.c:489
 #, c-format
 msgid ""
 "Warning: nmcli (%s) and NetworkManager (%s) versions don't match. Use --"
 "nocheck to suppress the warning.\n"
 msgstr ""
 
-#: ../cli/src/utils.c:395
+#: ../cli/src/utils.c:498
 #, c-format
 msgid ""
 "Error: nmcli (%s) and NetworkManager (%s) versions don't match. Force "
 "execution using --nocheck, but the results are unpredictable."
 msgstr ""
 
-#: ../libnm-util/crypto.c:127
+#: ../libnm-util/crypto.c:133
 #, c-format
 msgid "PEM key file had no end tag '%s'."
 msgstr "PEM-ŝlosil-dosiero ne havis finan etikedon '%s'."
 
-#: ../libnm-util/crypto.c:140
+#: ../libnm-util/crypto.c:146
 #, c-format
 msgid "Doesn't look like a PEM private key file."
 msgstr "Tio ĉi ne aspektas kiel privat-ŝlosila PEM-dosiero."
 
-#: ../libnm-util/crypto.c:148
+#: ../libnm-util/crypto.c:154
 #, c-format
 msgid "Not enough memory to store PEM file data."
 msgstr "Malsufiĉas memoro por stori datenojn de PEM-dosiero."
 
-#: ../libnm-util/crypto.c:164
+#: ../libnm-util/crypto.c:170
 #, c-format
 msgid "Malformed PEM file: Proc-Type was not first tag."
 msgstr "Misforma PEM-dosiero: 'Proc-Type' ne estas la unua etikedo."
 
-#: ../libnm-util/crypto.c:172
+#: ../libnm-util/crypto.c:178
 #, c-format
 msgid "Malformed PEM file: unknown Proc-Type tag '%s'."
 msgstr "Misforma PEM-dosiero: nekonata Proc-Type-etikedo \"%s\"."
 
-#: ../libnm-util/crypto.c:182
+#: ../libnm-util/crypto.c:188
 #, c-format
 msgid "Malformed PEM file: DEK-Info was not the second tag."
 msgstr "Misforma PEM-dosiero: 'DEK-Info' ne estas la dua etikedo."
 
-#: ../libnm-util/crypto.c:193
+#: ../libnm-util/crypto.c:199
 #, c-format
 msgid "Malformed PEM file: no IV found in DEK-Info tag."
 msgstr "Misforma PEM-dosiero: mi ne trovis IV en la etikedo \"DEK-Info\"."
 
-#: ../libnm-util/crypto.c:200
+#: ../libnm-util/crypto.c:206
 #, c-format
 msgid "Malformed PEM file: invalid format of IV in DEK-Info tag."
 msgstr ""
 "Misforma PEM-dosiero: nevalida struktturo de IV en la etikedo \"DEK-Info\"."
 
-#: ../libnm-util/crypto.c:213
+#: ../libnm-util/crypto.c:219
 #, c-format
 msgid "Malformed PEM file: unknown private key cipher '%s'."
 msgstr "Misforma PEM-dosiero: nekonata privat-ŝlosila ĉifro \"%s\"."
 
-#: ../libnm-util/crypto.c:232
+#: ../libnm-util/crypto.c:238
 #, c-format
 msgid "Could not decode private key."
 msgstr "Ne eblis malĉifri la privatan ŝlosilon."
 
-#: ../libnm-util/crypto.c:268 ../libnm-util/crypto.c:554
+#: ../libnm-util/crypto.c:284
+msgid "Failed to find expected PKCS#8 start tag."
+msgstr ""
+
+#: ../libnm-util/crypto.c:292
+#, c-format
+msgid "Failed to find expected PKCS#8 end tag '%s'."
+msgstr ""
+
+#: ../libnm-util/crypto.c:312
+msgid "Not enough memory to store private key data."
+msgstr "Memoro ne sufiĉas por konservi la datumon de la privata ŝlosilo."
+
+#: ../libnm-util/crypto.c:317
+msgid "Failed to decode PKCS#8 private key."
+msgstr "Malsukcesis malĉifri la privatan ŝlosilon PKCS#8."
+
+#: ../libnm-util/crypto.c:339 ../libnm-util/crypto.c:625
 #, c-format
 msgid "Not enough memory to store certificate data."
-msgstr "Malsufiĉas memoro por stori la datenojn de la certigilo."
+msgstr "Malsufiĉas memoro por stori la datenojn de la atestilo."
 
-#: ../libnm-util/crypto.c:294
+#: ../libnm-util/crypto.c:365
 #, c-format
 msgid "IV must be an even number of bytes in length."
 msgstr "IV nepre amkplesu paran nombron da bajtoj."
 
-#: ../libnm-util/crypto.c:303
+#: ../libnm-util/crypto.c:374
 #, c-format
 msgid "Not enough memory to store the IV."
 msgstr "Malsufiĉas memoro por stori la IV-on."
 
-#: ../libnm-util/crypto.c:314
+#: ../libnm-util/crypto.c:385
 #, c-format
 msgid "IV contains non-hexadecimal digits."
 msgstr "IV enhavas nedeksesumajn ciferojn"
 
-#: ../libnm-util/crypto.c:352 ../libnm-util/crypto_gnutls.c:147
+#: ../libnm-util/crypto.c:423 ../libnm-util/crypto_gnutls.c:147
 #: ../libnm-util/crypto_gnutls.c:265 ../libnm-util/crypto_nss.c:167
 #: ../libnm-util/crypto_nss.c:332
 #, c-format
 msgid "Private key cipher '%s' was unknown."
 msgstr "Privata Cipher-ŝlosilo '%s' estas nekonata."
 
-#: ../libnm-util/crypto.c:361
+#: ../libnm-util/crypto.c:432
 #, c-format
 msgid "Not enough memory to decrypt private key."
 msgstr "Nesufiĉa memoro por malĉifri privatan ŝlosilon."
 
-#: ../libnm-util/crypto.c:426
+#: ../libnm-util/crypto.c:497
 #, c-format
 msgid "Not enough memory to store decrypted private key."
 msgstr "Nesufiĉa memoro por gardi privatan ŝlosilon malĉifritan."
 
-#: ../libnm-util/crypto.c:471
+#: ../libnm-util/crypto.c:542
 #, c-format
 msgid "Unable to determine private key type."
 msgstr "Ne eblas determini la tipon de la privata ŝlosilo."
 
-#: ../libnm-util/crypto.c:526
+#: ../libnm-util/crypto.c:597
 #, c-format
 msgid "PEM certificate had no start tag '%s'."
-msgstr "La PEM-certigilo ne havas start-etikedon \"%s\"."
+msgstr "La PEM-atestilo ne havas start-etikedon \"%s\"."
 
-#: ../libnm-util/crypto.c:535
+#: ../libnm-util/crypto.c:606
 #, c-format
 msgid "PEM certificate had no end tag '%s'."
-msgstr "La PEM-certigilo ne havas finan etikedon \"%s\"."
+msgstr "La PEM-atestilo ne havas finan etikedon \"%s\"."
 
-#: ../libnm-util/crypto.c:559
+#: ../libnm-util/crypto.c:630
 #, c-format
 msgid "Failed to decode certificate."
-msgstr "Malsuksesis malĉifri la certigilon."
+msgstr "Malsuksesis malĉifri la atestilon."
 
 #: ../libnm-util/crypto_gnutls.c:50
 msgid "Failed to initialize the crypto engine."
@@ -1593,12 +1993,12 @@ msgstr "Eraro dum pravalorizo de atestilaj datumoj: %s"
 #: ../libnm-util/crypto_gnutls.c:383
 #, c-format
 msgid "Couldn't decode certificate: %s"
-msgstr "Ne povis malkodi certigilon: %s"
+msgstr "Ne eblis malkodi atestilon: %s"
 
 #: ../libnm-util/crypto_gnutls.c:407
 #, c-format
 msgid "Couldn't initialize PKCS#12 decoder: %s"
-msgstr "Ne povis pravalorizi PKCS#12-malkodilon: %s"
+msgstr "Ne eblis pravalorizi PKCS#12-malkodilon: %s"
 
 #: ../libnm-util/crypto_gnutls.c:420
 #, c-format
@@ -1610,6 +2010,16 @@ msgstr "Ne eblis dekodi PKCS#12-dosieron: %s"
 msgid "Couldn't verify PKCS#12 file: %s"
 msgstr "No povis kontroli PKCS#12-dosieron: %s"
 
+#: ../libnm-util/crypto_gnutls.c:460
+#, c-format
+msgid "Couldn't initialize PKCS#8 decoder: %s"
+msgstr "Ne eblis pravalorizi PKCS#8-malkodilon: %s"
+
+#: ../libnm-util/crypto_gnutls.c:483
+#, c-format
+msgid "Couldn't decode PKCS#8 file: %s"
+msgstr "Ne eblis dekodi PKCS#8-dosieron: %s"
+
 #: ../libnm-util/crypto_nss.c:56
 #, c-format
 msgid "Failed to initialize the crypto engine: %d."
@@ -1693,165 +2103,284 @@ msgstr "Neatendita nombro da datumoj post ĉifrado."
 #: ../libnm-util/crypto_nss.c:443
 #, c-format
 msgid "Couldn't decode certificate: %d"
-msgstr "Ne povis malkodigi atestilon: %d"
+msgstr "Ne eblis malkodigi atestilon: %d"
 
 #: ../libnm-util/crypto_nss.c:478
 #, c-format
 msgid "Couldn't convert password to UCS2: %d"
-msgstr "Ne povis konverti pasvorton al UCS2: %d"
+msgstr "Ne eblis konverti pasvorton al UCS2: %d"
 
 #: ../libnm-util/crypto_nss.c:506
 #, c-format
 msgid "Couldn't initialize PKCS#12 decoder: %d"
-msgstr "Ne povis pravalorizi PKCS#12-malkodilon: %d"
+msgstr "Ne eblis pravalorizi PKCS#12-malkodilon: %d"
 
 #: ../libnm-util/crypto_nss.c:515
 #, c-format
 msgid "Couldn't decode PKCS#12 file: %d"
-msgstr "Ne povis malkodigi PKCS#12-dosieron: %d"
+msgstr "Ne eblis malkodigi PKCS#12-dosieron: %d"
 
 #: ../libnm-util/crypto_nss.c:524
 #, c-format
 msgid "Couldn't verify PKCS#12 file: %d"
-msgstr "Ne povis kontroli PKCS#12-dosieron: %d"
+msgstr "Ne eblis kontroli PKCS#12-dosieron: %d"
 
-#: ../libnm-util/crypto_nss.c:553
+#: ../libnm-util/crypto_nss.c:568
 msgid "Could not generate random data."
-msgstr "Ne povis generi hazardajn datumojn."
+msgstr "Ne eblis generi hazardajn datumojn."
 
-#: ../libnm-util/nm-utils.c:2000
+#: ../libnm-util/nm-utils.c:2040
 #, c-format
 msgid "Not enough memory to make encryption key."
 msgstr "Nesufiĉa memoro por fari ĉifran ŝlosilon."
 
-#: ../libnm-util/nm-utils.c:2110
+#: ../libnm-util/nm-utils.c:2150
 msgid "Could not allocate memory for PEM file creation."
-msgstr "Ne povis atribui memoron por kreo de PEM-dosiero."
+msgstr "Ne eblis atribui memoron por kreo de PEM-dosiero."
 
-#: ../libnm-util/nm-utils.c:2122
+#: ../libnm-util/nm-utils.c:2162
 #, c-format
 msgid "Could not allocate memory for writing IV to PEM file."
-msgstr "Ne povis atribui memoron por konservi IV en PEM-dosieron."
+msgstr "Ne eblis atribui memoron por konservi IV en PEM-dosieron."
 
-#: ../libnm-util/nm-utils.c:2134
+#: ../libnm-util/nm-utils.c:2174
 #, c-format
 msgid "Could not allocate memory for writing encrypted key to PEM file."
 msgstr ""
-"Ne povis atribui memoron por konservi ĉifritan ŝlosilon en PEM-dosieron."
+"Ne eblis atribui memoron por konservi ĉifritan ŝlosilon en PEM-dosieron."
 
-#: ../libnm-util/nm-utils.c:2153
+#: ../libnm-util/nm-utils.c:2193
 #, c-format
 msgid "Could not allocate memory for PEM file data."
-msgstr "Ne povis atribui memoron por datumoj de PEM-dosiero."
+msgstr "Ne eblis atribui memoron por datumoj de PEM-dosiero."
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:1
-msgid "Allow control of network connections"
-msgstr "Permesi kontrolon de retkonektoj"
+msgid "Enable or disable system networking"
+msgstr "Enŝalti aŭ elŝalti sistemretkonektadon"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:2
-msgid "Connection sharing via a protected WiFi network"
-msgstr "Kundivido de konektoj per protektita WiFi-reto"
+msgid "System policy prevents enabling or disabling system networking"
+msgstr "Sistempolitiko preventas enŝalton aŭ elŝalton de sistema retkonektado"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:3
-msgid "Connection sharing via an open WiFi network"
-msgstr "Kundivido de konektoj per malferma WiFi-reto"
+msgid ""
+"Put NetworkManager to sleep or wake it up (should only be used by system "
+"power management)"
+msgstr ""
+"Dormigi aŭ veki NetworkManager (estu uzata nur de sistema energimastumado)"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:4
-msgid "Enable or disable WiFi devices"
-msgstr "Enŝalti aŭ elŝalti WiFi-aparatojn"
+msgid "System policy prevents putting NetworkManager to sleep or waking it up"
+msgstr "Sistempolitiko preventas dormigi aŭ veki NetworkManager"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:5
-msgid "Enable or disable WiMAX mobile broadband devices"
-msgstr "Enŝalti aŭ elŝalti WiMAX-larĝkapacitajn aparatojn"
+msgid "Enable or disable WiFi devices"
+msgstr "Enŝalti aŭ elŝalti WiFi-aparatojn"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:6
-msgid "Enable or disable mobile broadband devices"
-msgstr "Enŝalti aŭ elŝalti poŝtelefonajn larĝkapacitajn aparatojn"
+msgid "System policy prevents enabling or disabling WiFi devices"
+msgstr "Sistempolitiko preventas enŝalton aŭ elŝalton de WiFi-aparatoj"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:7
-msgid "Enable or disable system networking"
-msgstr "Enŝalti aŭ elŝalti sistemretkonektadon"
+msgid "Enable or disable mobile broadband devices"
+msgstr "Enŝalti aŭ elŝalti poŝtelefonajn larĝkapacitajn aparatojn"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:8
-msgid "Modify network connections for all users"
-msgstr "Modifi retkonektojn por ĉiuj uzantoj"
+msgid "System policy prevents enabling or disabling mobile broadband devices"
+msgstr ""
+"Sistempolitiko preventas enŝalton aŭ elŝalton de poŝtelefonaj larĝkapacitaj "
+"aparatoj"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:9
-msgid "Modify persistent system hostname"
-msgstr "Modifi permanentan sisteman gastigan nomon"
+msgid "Enable or disable WiMAX mobile broadband devices"
+msgstr "Enŝalti aŭ elŝalti WiMAX-larĝkapacitajn aparatojn"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:10
-msgid "Modify personal network connections"
-msgstr "Modifi proprajn retkonektojn"
-
-#: ../policy/org.freedesktop.NetworkManager.policy.in.h:11
 msgid ""
-"Put NetworkManager to sleep or wake it up (should only be used by system "
-"power management)"
+"System policy prevents enabling or disabling WiMAX mobile broadband devices"
 msgstr ""
-"Dormigi aŭ veki NetworkManager (estu uzata nur de sistema energimastumado)"
+"Sistempolitiko preventas enŝalton aŭ elŝalton de larĝkapacitaj WiMAX-aparatoj"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:11
+msgid "Allow control of network connections"
+msgstr "Permesi kontrolon de retkonektoj"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:12
 msgid "System policy prevents control of network connections"
 msgstr "Sistempolitiko preventas kontrolon de retkonektoj"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:13
-msgid "System policy prevents enabling or disabling WiFi devices"
-msgstr "Sistempolitiko preventas enŝalton aŭ elŝalton de WiFi-aparatoj"
+msgid "Connection sharing via a protected WiFi network"
+msgstr "Kundivido de konektoj per protektita WiFi-reto"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:14
-msgid ""
-"System policy prevents enabling or disabling WiMAX mobile broadband devices"
+msgid "System policy prevents sharing connections via a protected WiFi network"
 msgstr ""
-"Sistempolitiko preventas enŝalton aŭ elŝalton de larĝkapacitaj WiMAX-"
-"aparatoj"
+"Sistempolitiko preventas kundividon de konektoj per protektita WiFi-reto"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:15
-msgid "System policy prevents enabling or disabling mobile broadband devices"
-msgstr ""
-"Sistempolitiko preventas enŝalton aŭ elŝalton de poŝtelefonaj larĝkapacitaj "
-"aparatoj"
+msgid "Connection sharing via an open WiFi network"
+msgstr "Kundivido de konektoj per malferma WiFi-reto"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:16
-msgid "System policy prevents enabling or disabling system networking"
-msgstr "Sistempolitiko preventas enŝalton aŭ elŝalton de sistema retkonektado"
+msgid "System policy prevents sharing connections via an open WiFi network"
+msgstr "Sistempolitiko preventas kundividon de konektoj per malferma WiFi-reto"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:17
-msgid "System policy prevents modification of network settings for all users"
-msgstr "Sistempolitiko preventas modifadon de retagordoj por ĉiuj uzantoj"
+msgid "Modify personal network connections"
+msgstr "Modifi proprajn retkonektojn"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:18
 msgid "System policy prevents modification of personal network settings"
 msgstr "Sistempolitiko preventas modifadon de propraj retagordoj"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:19
-msgid "System policy prevents modification of the persistent system hostname"
-msgstr "Sistempolitiko preventas modifadon de la konstanta sistem-gastnomo"
+msgid "Modify network connections for all users"
+msgstr "Modifi retkonektojn por ĉiuj uzantoj"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:20
-msgid "System policy prevents putting NetworkManager to sleep or waking it up"
-msgstr "Sistempolitiko preventas dormigi aŭ veki NetworkManager"
+msgid "System policy prevents modification of network settings for all users"
+msgstr "Sistempolitiko preventas modifadon de retagordoj por ĉiuj uzantoj"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:21
-msgid "System policy prevents sharing connections via a protected WiFi network"
-msgstr ""
-"Sistempolitiko preventas kundividon de konektoj per protektita WiFi-reto"
+msgid "Modify persistent system hostname"
+msgstr "Modifi permanentan sisteman gastigan nomon"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:22
-msgid "System policy prevents sharing connections via an open WiFi network"
-msgstr "Sistempolitiko preventas kundividon de konektoj per malferma WiFi-reto"
+msgid "System policy prevents modification of the persistent system hostname"
+msgstr "Sistempolitiko preventas modifadon de la konstanta sistem-gastnomo"
+
+#: ../src/main.c:143
+#, c-format
+msgid "Failed to initialize SIGTERM pipe: %d"
+msgstr ""
+
+#: ../src/main.c:174
+#, c-format
+msgid "Opening %s failed: %s\n"
+msgstr ""
+
+#: ../src/main.c:180
+#, c-format
+msgid "Writing to %s failed: %s\n"
+msgstr ""
+
+#: ../src/main.c:185
+#, c-format
+msgid "Closing %s failed: %s\n"
+msgstr ""
+
+#: ../src/main.c:228
+#, c-format
+msgid "NetworkManager is already running (pid %ld)\n"
+msgstr "NetworkManager jam rulas (pid %ld)\n"
+
+#: ../src/main.c:368
+msgid "Print NetworkManager version and exit"
+msgstr "Eldoni version de NetworkManager kaj eliri"
+
+#: ../src/main.c:369
+msgid "Don't become a daemon"
+msgstr "Ne fariĝi demono"
+
+#: ../src/main.c:370
+msgid "Make all warnings fatal"
+msgstr "Igi ĉiujn avertojn fatalaj"
+
+#: ../src/main.c:371
+msgid "Specify the location of a PID file"
+msgstr ""
+
+#: ../src/main.c:371
+msgid "filename"
+msgstr "dosiernomo"
+
+#: ../src/main.c:372
+msgid "State file location"
+msgstr ""
+
+#: ../src/main.c:372
+msgid "/path/to/state.file"
+msgstr ""
+
+#: ../src/main.c:373
+msgid "Config file location"
+msgstr ""
+
+#: ../src/main.c:373
+msgid "/path/to/config.file"
+msgstr ""
+
+#: ../src/main.c:374
+msgid "List of plugins separated by ','"
+msgstr ""
+
+#: ../src/main.c:374
+msgid "plugin1,plugin2"
+msgstr ""
+
+#. Translators: Do not translate the values in the square brackets
+#: ../src/main.c:376
+msgid "Log level: one of [ERR, WARN, INFO, DEBUG]"
+msgstr ""
+
+#. Translators: Do not translate the values in the square brackets
+#: ../src/main.c:379
+msgid ""
+"Log domains separated by ',': any combination of\n"
+"                                          [NONE,HW,RFKILL,ETHER,WIFI,BT,MB,"
+"DHCP4,DHCP6,PPP,\n"
+"                                           WIFI_SCAN,IP4,IP6,AUTOIP4,DNS,VPN,"
+"SHARING,SUPPLICANT,\n"
+"                                           AGENTS,SETTINGS,SUSPEND,CORE,"
+"DEVICE,OLPC,WIMAX,\n"
+"                                           INFINIBAND,FIREWALL]"
+msgstr ""
+
+#: ../src/main.c:392
+#, c-format
+msgid "GModules are not supported on your platform!\n"
+msgstr ""
+
+#: ../src/main.c:411
+msgid ""
+"NetworkManager monitors all network connections and automatically\n"
+"chooses the best connection to use.  It also allows the user to\n"
+"specify wireless access points which wireless cards in the computer\n"
+"should associate with."
+msgstr ""
 
-#: ../src/main.c:530
+#: ../src/main.c:417
 #, c-format
 msgid "Invalid option.  Please use --help to see a list of valid options.\n"
 msgstr ""
 "Nevalida opcio. Bonvolu uzi --help por vidi liston da validaj opcioj.\n"
 
-#: ../src/main.c:611
+#: ../src/main.c:427
+#, c-format
+msgid "You must be root to run NetworkManager!\n"
+msgstr ""
+
+#: ../src/main.c:448
+#, c-format
+msgid "Failed to read configuration: (%d) %s\n"
+msgstr ""
+
+#: ../src/main.c:459
 #, c-format
 msgid "%s.  Please use --help to see a list of valid options.\n"
 msgstr "%s. Bovolu uzi --help por vidi liston da validaj opcioj.\n"
 
+#: ../src/main.c:466
+#, c-format
+msgid "State file %s parsing failed: (%d) %s\n"
+msgstr ""
+
+#: ../src/main.c:483
+#, c-format
+msgid "Could not daemonize: %s [error %u]\n"
+msgstr ""
+
 #: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:62
 msgid "# Created by NetworkManager\n"
 msgstr "# Kreita de NetworkManager\n"
@@ -1865,185 +2394,168 @@ msgstr ""
 "# Kunfandita el %s\n"
 "\n"
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:284
+#: ../src/dhcp-manager/nm-dhcp-manager.c:266
 msgid "no usable DHCP client could be found."
 msgstr "neniu uzebla DHCP-kliento estis trovebla."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:293
+#: ../src/dhcp-manager/nm-dhcp-manager.c:275
 msgid "'dhclient' could be found."
 msgstr "'dhclient' povis esti trovita."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:303
+#: ../src/dhcp-manager/nm-dhcp-manager.c:285
 msgid "'dhcpcd' could be found."
 msgstr "'dhcpcd' povis esti trovita."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:311
+#: ../src/dhcp-manager/nm-dhcp-manager.c:293
 #, c-format
 msgid "unsupported DHCP client '%s'"
 msgstr "nesubtenata DHCP-kliento '%s'"
 
-#: ../src/dns-manager/nm-dns-manager.c:369
+#: ../src/dns-manager/nm-dns-manager.c:376
 msgid "NOTE: the libc resolver may not support more than 3 nameservers."
 msgstr "NOTO: la libc-solvilo eble ne povus subteni pli ol 3 nomservilojn."
 
-#: ../src/dns-manager/nm-dns-manager.c:371
+#: ../src/dns-manager/nm-dns-manager.c:378
 msgid "The nameservers listed below may not be recognized."
 msgstr "La sube ligstigitaj nomserviloj eble ne estos rekonataj."
 
-#: ../src/logging/nm-logging.c:149
+#: ../src/logging/nm-logging.c:130
 #, c-format
 msgid "Unknown log level '%s'"
 msgstr "Nekonata protokolnivelo '%s'"
 
-#: ../src/logging/nm-logging.c:174
+#: ../src/logging/nm-logging.c:155
 #, c-format
 msgid "Unknown log domain '%s'"
 msgstr "Nekonata protokola regiono '%s'"
 
-#: ../src/modem-manager/nm-modem-cdma.c:296 ../src/nm-device-bt.c:355
+#: ../src/modem-manager/nm-modem-cdma.c:279 ../src/nm-device-bt.c:325
 #, c-format
 msgid "CDMA connection %d"
 msgstr "CDMA-konekto %d"
 
-#: ../src/modem-manager/nm-modem-gsm.c:499 ../src/nm-device-bt.c:351
+#: ../src/modem-manager/nm-modem-gsm.c:547 ../src/nm-device-bt.c:321
 #, c-format
 msgid "GSM connection %d"
 msgstr "GSM-konekto %d"
 
-#: ../src/nm-device-bt.c:326
+#: ../src/nm-device-bond.c:191
+#, c-format
+msgid "Bond connection %d"
+msgstr ""
+
+#: ../src/nm-device-bt.c:296
 #, c-format
 msgid "PAN connection %d"
 msgstr "PAN-konekto %d"
 
-#: ../src/nm-device-bt.c:359
+#: ../src/nm-device-bt.c:329
 #, c-format
 msgid "DUN connection %d"
 msgstr "DUN-konekto %d"
 
-#: ../src/nm-device-ethernet.c:1681
+#: ../src/nm-device-ethernet.c:1326
 #, c-format
 msgid "PPPoE connection %d"
 msgstr "PPPoE-konekto %d"
 
-#: ../src/nm-device-ethernet.c:1681 ../src/settings/nm-settings-utils.c:50
+#: ../src/nm-device-ethernet.c:1326 ../src/settings/nm-settings-utils.c:50
 #, c-format
 msgid "Wired connection %d"
 msgstr "Drata konekto %d"
 
-#: ../src/nm-device-olpc-mesh.c:423
+#: ../src/nm-device-infiniband.c:303
+#, c-format
+msgid "InfiniBand connection %d"
+msgstr ""
+
+#: ../src/nm-device-olpc-mesh.c:293
 #, c-format
 msgid "Mesh %d"
 msgstr ""
 
-#: ../src/nm-manager.c:673
+#: ../src/nm-device-vlan.c:362
+#, c-format
+msgid "VLAN connection %d"
+msgstr "VLAN-konekto %d"
+
+#: ../src/nm-manager.c:661
 #, c-format
 msgid "VPN connection %d"
 msgstr "VPN-konekto %d"
 
-#: ../src/nm-netlink-monitor.c:100 ../src/nm-netlink-monitor.c:231
-#: ../src/nm-netlink-monitor.c:653
+#: ../src/nm-netlink-monitor.c:148 ../src/nm-netlink-monitor.c:272
+#: ../src/nm-netlink-monitor.c:695
 #, c-format
 msgid "error processing netlink message: %s"
 msgstr "eraro dum traktado de netlink-mesaĝo: %s"
 
-#: ../src/nm-netlink-monitor.c:214
+#: ../src/nm-netlink-monitor.c:251
 msgid "error occurred while waiting for data on socket"
 msgstr "okazis eraro dum atendado je datumoj sur kontaktoskatolo"
 
-#: ../src/nm-netlink-monitor.c:254
+#: ../src/nm-netlink-monitor.c:296
 #, c-format
 msgid "unable to connect to netlink for monitoring link status: %s"
 msgstr "ne eblas konekti al netlink por kontroli ligilan staton: %s"
 
-#: ../src/nm-netlink-monitor.c:265
+#: ../src/nm-netlink-monitor.c:307
 #, c-format
 msgid "unable to enable netlink handle credential passing: %s"
-msgstr "ne povis aktivigi la netlink-tenilan legitimaĵo-pasadon: %s"
+msgstr "ne eblis aktivigi la netlink-tenilan legitimaĵo-pasadon: %s"
 
-#: ../src/nm-netlink-monitor.c:291 ../src/nm-netlink-monitor.c:353
+#: ../src/nm-netlink-monitor.c:330 ../src/nm-netlink-monitor.c:390
 #, c-format
 msgid "unable to allocate netlink handle for monitoring link status: %s"
-msgstr "ne povis atribui retligiltenilon por kontroli ligilstaton: %s"
+msgstr "ne eblis atribui retligiltenilon por kontroli ligilstaton: %s"
 
-#: ../src/nm-netlink-monitor.c:376
+#: ../src/nm-netlink-monitor.c:415
 #, c-format
 msgid "unable to allocate netlink link cache for monitoring link status: %s"
 msgstr ""
-"ne povis atribui ligilan kaŝmemoron de netlink por kontroli ligilstaton: %s"
+"ne eblis atribui ligilan kaŝmemoron de netlink por kontroli ligilstaton: %s"
 
-#: ../src/nm-netlink-monitor.c:502
+#: ../src/nm-netlink-monitor.c:542
 #, c-format
 msgid "unable to join netlink group: %s"
 msgstr "ne eblas membriĝi al retligila grupo: %s"
 
-#: ../src/nm-netlink-monitor.c:629 ../src/nm-netlink-monitor.c:642
+#: ../src/nm-netlink-monitor.c:671 ../src/nm-netlink-monitor.c:684
 #, c-format
 msgid "error updating link cache: %s"
 msgstr "eraro dum ĝisdatigo de ligila kaŝmemoro: %s"
 
-#: ../src/settings/plugins/ifcfg-rh/reader.c:3512
-#: ../src/settings/plugins/ifnet/connection_parser.c:51
+#: ../src/settings/plugins/ifcfg-rh/reader.c:93
 msgid "System"
 msgstr "Sistemo"
 
-#~ msgid "SCOPE"
-#~ msgstr "AMPLEKSO"
-
-#~ msgid "DBUS-SERVICE"
-#~ msgstr "DBUS-SERVO"
-
-#~ msgid "system"
-#~ msgstr "sistemo"
+#: ../src/settings/plugins/ifcfg-rh/reader.c:3634
+msgid "Bond"
+msgstr ""
 
-#~ msgid "user"
-#~ msgstr "uzanto"
+#~ msgid "Allow use of user-specific connections"
+#~ msgstr "Permesi uzon de specifaj konektoj por uzantoj"
 
-#~ msgid "System connections"
-#~ msgstr "Sistemkonektoj"
+#~ msgid "System policy prevents use of user-specific connections"
+#~ msgstr "Sistempolitiko preventas uzon de uzant-specifaj konektoj"
 
-#~ msgid "User connections"
-#~ msgstr "Uzanto-konektoj"
+#~ msgid "IP6-SETTINGS"
+#~ msgstr "IP6-AGORDOJ"
 
-#~ msgid "Error: Obtaining active connection for '%s' failed."
-#~ msgstr "Eraro: Akiro de aktiva konekto por '%s' fiaskis."
+#~ msgid "IP6-DNS"
+#~ msgstr "IP6-DNS"
 
-#~ msgid "Error: Could not get user settings."
-#~ msgstr "Eraro: Ne povis akiri uzanto-agordojn."
+#~ msgid "IP4-SETTINGS"
+#~ msgstr "IP4-AGORDOJ"
 
-#~ msgid "Not enough memory to store file data."
-#~ msgstr "Malsufiĉas memoro por stori la datenojn de la dosiero."
+#~ msgid "IP4-DNS"
+#~ msgstr "IP4-DNS"
 
-#~ msgid "Allow use of user-specific connections"
-#~ msgstr "Permesi uzon de specifaj konektoj por uzantoj"
+#~ msgid "PREFIX"
+#~ msgstr "PREFIKSO"
 
-#~ msgid "System policy prevents use of user-specific connections"
-#~ msgstr "Sistempolitiko preventas uzon de uzant-specifaj konektoj"
+#~ msgid "%s: error converting IP4 address 0x%X"
+#~ msgstr "%s: eraro dum konverto de IP4-adreso 0x%X"
 
-#~ msgid "Auto %s"
-#~ msgstr "Aŭto %s"
-
-#~ msgid ""
-#~ "Usage: nmcli nm { COMMAND | help }\n"
-#~ "\n"
-#~ "  COMMAND := { status | sleep | wakeup | wifi | wwan }\n"
-#~ "\n"
-#~ "  status\n"
-#~ "  sleep\n"
-#~ "  wakeup\n"
-#~ "  wifi [on|off]\n"
-#~ "  wwan [on|off]\n"
-#~ "\n"
-#~ msgstr ""
-#~ "Uzo: nmcli nm { KOMANDO | help }\n"
-#~ "\n"
-#~ "  KOMANDO := { status | sleep | wakeup | wifi | wwan }\n"
-#~ "\n"
-#~ "  status\n"
-#~ "  sleep\n"
-#~ "  wakeup\n"
-#~ "  wifi [on|off]\n"
-#~ "  wwan [on|off]\n"
-#~ "\n"
-
-#~ msgid "Error: Could not connect to NetworkManager."
-#~ msgstr "Eraro: Ne eblis konekti al NetworkManager"
+#~ msgid "unknown)"
+#~ msgstr "nekonate)"
diff --git a/po/gl.po b/po/gl.po
index 7242f4dd..a0bb3fce 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -5,470 +5,616 @@
 # Ignacio Casal Quinteiro <icq@cvs.gnome.org>, 2007, 2008.
 # Miguel Anxo Bouzada <mbouzada@gmail.com>, 2010.
 # Fran Diéguez <frandieguez@gnome.org>, 2011.
+# Fran Dieguez <frandieguez@gnome.org>, 2012.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: gl\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
 "product=NetworkManager&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2011-08-24 19:48+0000\n"
-"PO-Revision-Date: 2011-08-25 01:12+0000\n"
-"Last-Translator: Fran Diéguez <Unknown>\n"
+"POT-Creation-Date: 2012-03-10 03:25+0000\n"
+"PO-Revision-Date: 2012-03-22 01:48+0100\n"
+"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
 "Language-Team: Galician <gnome-l10n-gl@gnome.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
 
-#: ../cli/src/connections.c:64 ../cli/src/connections.c:78
-#: ../cli/src/devices.c:101 ../cli/src/devices.c:114 ../cli/src/devices.c:124
-#: ../cli/src/devices.c:134 ../cli/src/devices.c:148 ../cli/src/devices.c:162
-#: ../cli/src/devices.c:173 ../cli/src/devices.c:184 ../cli/src/devices.c:193
-#: ../cli/src/devices.c:202 ../cli/src/devices.c:224
-msgid "NAME"
-msgstr "NOME"
+#: ../cli/src/common.c:32 ../cli/src/common.c:44 ../cli/src/common.c:52
+#: ../cli/src/common.c:63 ../cli/src/connections.c:125
+#: ../cli/src/connections.c:159
+msgid "GROUP"
+msgstr "GRUPO"
 
 #. 0
-#: ../cli/src/connections.c:65 ../cli/src/connections.c:79
-msgid "UUID"
-msgstr "UUID"
+#: ../cli/src/common.c:33 ../cli/src/common.c:53
+msgid "ADDRESS"
+msgstr "ENDEREZO"
 
 #. 1
-#: ../cli/src/connections.c:66
-msgid "DEVICES"
-msgstr "DISPOSITIVOS"
+#: ../cli/src/common.c:34 ../cli/src/common.c:54
+#| msgid "RATE"
+msgid "ROUTE"
+msgstr "RUTA"
 
 #. 2
-#: ../cli/src/connections.c:67
-msgid "DEFAULT"
-msgstr "PREDEFINIDO"
+#: ../cli/src/common.c:35 ../cli/src/common.c:55
+msgid "DNS"
+msgstr "DNS"
 
 #. 3
-#: ../cli/src/connections.c:68
-msgid "SPEC-OBJECT"
-msgstr "SPEC-OBXECTO"
+#: ../cli/src/common.c:36 ../cli/src/common.c:56
+msgid "DOMAIN"
+msgstr "DOMINIO"
 
 #. 4
-#: ../cli/src/connections.c:69
-msgid "VPN"
-msgstr "VPN"
+#: ../cli/src/common.c:37
+msgid "WINS"
+msgstr "WINS"
 
-#. 5
-#. 6
-#. 2
-#. 11
-#. 5
-#: ../cli/src/connections.c:70 ../cli/src/connections.c:85
-#: ../cli/src/devices.c:69 ../cli/src/devices.c:214 ../cli/src/devices.c:230
-msgid "DBUS-PATH"
-msgstr "DBUS-RUTA"
+#. 0
+#: ../cli/src/common.c:45 ../cli/src/common.c:64
+msgid "OPTION"
+msgstr "OPCIÓN"
+
+#. 0
+#. used only for 'GENERAL' group listing
+#: ../cli/src/connections.c:58 ../cli/src/connections.c:126
+#: ../cli/src/devices.c:102 ../cli/src/devices.c:123 ../cli/src/devices.c:133
+#: ../cli/src/devices.c:143 ../cli/src/devices.c:157 ../cli/src/devices.c:171
+#: ../cli/src/devices.c:193
+msgid "NAME"
+msgstr "NOME"
+
+#. 0
+#. 1
+#: ../cli/src/connections.c:59 ../cli/src/connections.c:127
+msgid "UUID"
+msgstr "UUID"
 
 #. 1
 #. 0
 #. 1
 #. 2
-#: ../cli/src/connections.c:80 ../cli/src/devices.c:67
-#: ../cli/src/devices.c:103 ../cli/src/devices.c:227
+#: ../cli/src/connections.c:60 ../cli/src/connections.c:160
+#: ../cli/src/devices.c:68 ../cli/src/devices.c:104 ../cli/src/devices.c:196
 msgid "TYPE"
 msgstr "TIPO"
 
 #. 2
-#: ../cli/src/connections.c:81
+#: ../cli/src/connections.c:61
 msgid "TIMESTAMP"
 msgstr "MARCADETEMPO"
 
 #. 3
-#: ../cli/src/connections.c:82
+#: ../cli/src/connections.c:62
 msgid "TIMESTAMP-REAL"
 msgstr "TIMESTAMP-REAL"
 
 #. 4
-#: ../cli/src/connections.c:83
+#: ../cli/src/connections.c:63
 msgid "AUTOCONNECT"
 msgstr "AUTOCONECTAR"
 
 #. 5
-#: ../cli/src/connections.c:84
+#: ../cli/src/connections.c:64
 msgid "READONLY"
 msgstr "SO-LECTURA"
 
-#: ../cli/src/connections.c:167
+#. 6
+#. 8
+#. 2
+#. 11
+#. 5
+#: ../cli/src/connections.c:65 ../cli/src/connections.c:134
+#: ../cli/src/devices.c:70 ../cli/src/devices.c:183 ../cli/src/devices.c:199
+msgid "DBUS-PATH"
+msgstr "DBUS-RUTA"
+
+#. 2
+#: ../cli/src/connections.c:128
+msgid "DEVICES"
+msgstr "DISPOSITIVOS"
+
+#. 3
+#. 1
+#. 6
+#. 1
+#: ../cli/src/connections.c:129 ../cli/src/devices.c:69
+#: ../cli/src/devices.c:109 ../cli/src/network-manager.c:39
+msgid "STATE"
+msgstr "ESTADO"
+
+#. 4
+#: ../cli/src/connections.c:130
+msgid "DEFAULT"
+msgstr "PREDEFINIDO"
+
+#. 5
+#: ../cli/src/connections.c:131
+#| msgid "DEFAULT"
+msgid "DEFAULT6"
+msgstr "PREDEFINIDO6"
+
+#. 6
+#: ../cli/src/connections.c:132
+msgid "SPEC-OBJECT"
+msgstr "SPEC-OBXECTO"
+
+#. 7
+#. 1
+#: ../cli/src/connections.c:133 ../cli/src/connections.c:147
+msgid "VPN"
+msgstr "VPN"
+
+#. 9
+#: ../cli/src/connections.c:135
+msgid "CON-PATH"
+msgstr "RUTA-CON"
+
+#. 10
+#: ../cli/src/connections.c:136
+msgid "ZONE"
+msgstr "ZONA"
+
+#. 11
+#: ../cli/src/connections.c:137
+#| msgid "DBUS-PATH"
+msgid "MASTER-PATH"
+msgstr "RUTA-MASTER"
+
+#: ../cli/src/connections.c:145 ../cli/src/devices.c:79
+msgid "GENERAL"
+msgstr "XERAL"
+
+#. 0
+#: ../cli/src/connections.c:146
+#| msgid "TKIP"
+msgid "IP"
+msgstr "IP"
+
+#. 1
+#: ../cli/src/connections.c:161
+#| msgid "NAME"
+msgid "USERNAME"
+msgstr "NOME-USUARIO"
+
+#. 2
+#: ../cli/src/connections.c:162
+msgid "GATEWAY"
+msgstr "PASARELA"
+
+#. 3
+#: ../cli/src/connections.c:163
+msgid "BANNER"
+msgstr "BANNER"
+
+#. 4
+#: ../cli/src/connections.c:164
+#| msgid "STATE"
+msgid "VPN-STATE"
+msgstr "ESTADO-VPN"
+
+#. 5
+#: ../cli/src/connections.c:165
+msgid "CFG"
+msgstr "CFG"
+
+#: ../cli/src/connections.c:186
 #, c-format
 #| msgid ""
 #| "Usage: nmcli con { COMMAND | help }\n"
 #| "  COMMAND := { list | status | up | down }\n"
 #| "\n"
-#| "  list [id <id> | uuid <id> | system | user]\n"
+#| "  list [id <id> | uuid <id>]\n"
 #| "  status\n"
+#| "  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [nsp <name>] [--"
+#| "nowait] [--timeout <timeout>]\n"
 #| "  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--"
 #| "timeout <timeout>]\n"
 #| "  down id <id> | uuid <id>\n"
 msgid ""
 "Usage: nmcli con { COMMAND | help }\n"
-"  COMMAND := { list | status | up | down }\n"
+"  COMMAND := { list | status | up | down | delete }\n"
 "\n"
 "  list [id <id> | uuid <id>]\n"
-"  status\n"
-"  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [nsp <name>] [--"
+"  status [id <id> | uuid <id> | path <path>]\n"
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [nsp <name>] [--"
 "nowait] [--timeout <timeout>]\n"
-"  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout "
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [--nowait] [--timeout "
 "<timeout>]\n"
 "  down id <id> | uuid <id>\n"
+"  delete id <id> | uuid <id>\n"
 msgstr ""
-"Uso: nmcli con { COMANDO | help }\n"
-"  COMANDO := { list | status | up | down }\n"
+"Uso: nmcli con { ORDE | help }\n"
+"  COMMAND := { list | status | up | down | delete }\n"
 "\n"
 "  list [id <id> | uuid <id>]\n"
-"  status\n"
-"  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [nsp <name>] [--"
+"  status [id <id> | uuid <id> | path <path>]\n"
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [nsp <name>] [--"
 "nowait] [--timeout <timeout>]\n"
-"  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout "
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [--nowait] [--timeout "
 "<timeout>]\n"
 "  down id <id> | uuid <id>\n"
+"  delete id <id> | uuid <id>\n"
 
-#: ../cli/src/connections.c:220 ../cli/src/connections.c:544
+#: ../cli/src/connections.c:240 ../cli/src/connections.c:591
 #, c-format
 msgid "Error: 'con list': %s"
 msgstr "Erro: 'con list': %s"
 
-#: ../cli/src/connections.c:222 ../cli/src/connections.c:546
+#: ../cli/src/connections.c:242 ../cli/src/connections.c:593
 #, c-format
 msgid "Error: 'con list': %s; allowed fields: %s"
 msgstr "Erro: 'con list': %s; campos permitidos: %s"
 
-#: ../cli/src/connections.c:230
+#: ../cli/src/connections.c:250
 msgid "Connection details"
 msgstr "Detalles da conexión"
 
-#: ../cli/src/connections.c:419
+#: ../cli/src/connections.c:466
 msgid "never"
 msgstr "nunca"
 
 #. "CAPABILITIES"
 #. Print header
 #. "WIFI-PROPERTIES"
-#: ../cli/src/connections.c:420 ../cli/src/connections.c:421
-#: ../cli/src/connections.c:599 ../cli/src/connections.c:601
-#: ../cli/src/devices.c:509 ../cli/src/devices.c:562 ../cli/src/devices.c:687
-#: ../cli/src/devices.c:713 ../cli/src/devices.c:714 ../cli/src/devices.c:715
-#: ../cli/src/devices.c:716 ../cli/src/devices.c:717 ../cli/src/settings.c:520
-#: ../cli/src/settings.c:563 ../cli/src/settings.c:663
-#: ../cli/src/settings.c:937 ../cli/src/settings.c:938
-#: ../cli/src/settings.c:940 ../cli/src/settings.c:942
-#: ../cli/src/settings.c:1067 ../cli/src/settings.c:1068
-#: ../cli/src/settings.c:1069 ../cli/src/settings.c:1148
-#: ../cli/src/settings.c:1149 ../cli/src/settings.c:1150
-#: ../cli/src/settings.c:1151 ../cli/src/settings.c:1152
-#: ../cli/src/settings.c:1153 ../cli/src/settings.c:1154
-#: ../cli/src/settings.c:1155 ../cli/src/settings.c:1156
-#: ../cli/src/settings.c:1157 ../cli/src/settings.c:1158
-#: ../cli/src/settings.c:1159 ../cli/src/settings.c:1160
-#: ../cli/src/settings.c:1235
+#: ../cli/src/connections.c:467 ../cli/src/connections.c:468
+#: ../cli/src/connections.c:705 ../cli/src/connections.c:706
+#: ../cli/src/connections.c:708 ../cli/src/devices.c:595
+#: ../cli/src/devices.c:648 ../cli/src/devices.c:762 ../cli/src/devices.c:763
+#: ../cli/src/devices.c:795 ../cli/src/devices.c:821 ../cli/src/devices.c:822
+#: ../cli/src/devices.c:823 ../cli/src/devices.c:824 ../cli/src/devices.c:825
+#: ../cli/src/settings.c:656 ../cli/src/settings.c:726
+#: ../cli/src/settings.c:846 ../cli/src/settings.c:1128
+#: ../cli/src/settings.c:1129 ../cli/src/settings.c:1131
+#: ../cli/src/settings.c:1133 ../cli/src/settings.c:1134
+#: ../cli/src/settings.c:1262 ../cli/src/settings.c:1263
+#: ../cli/src/settings.c:1264 ../cli/src/settings.c:1265
+#: ../cli/src/settings.c:1340 ../cli/src/settings.c:1341
+#: ../cli/src/settings.c:1342 ../cli/src/settings.c:1343
+#: ../cli/src/settings.c:1344 ../cli/src/settings.c:1345
+#: ../cli/src/settings.c:1346 ../cli/src/settings.c:1347
+#: ../cli/src/settings.c:1348 ../cli/src/settings.c:1349
+#: ../cli/src/settings.c:1350 ../cli/src/settings.c:1351
+#: ../cli/src/settings.c:1352 ../cli/src/settings.c:1423
 msgid "yes"
 msgstr "si"
 
-#: ../cli/src/connections.c:420 ../cli/src/connections.c:421
-#: ../cli/src/connections.c:599 ../cli/src/connections.c:601
-#: ../cli/src/devices.c:509 ../cli/src/devices.c:562 ../cli/src/devices.c:687
-#: ../cli/src/devices.c:713 ../cli/src/devices.c:714 ../cli/src/devices.c:715
-#: ../cli/src/devices.c:716 ../cli/src/devices.c:717 ../cli/src/settings.c:520
-#: ../cli/src/settings.c:522 ../cli/src/settings.c:563
-#: ../cli/src/settings.c:663 ../cli/src/settings.c:937
-#: ../cli/src/settings.c:938 ../cli/src/settings.c:940
-#: ../cli/src/settings.c:942 ../cli/src/settings.c:1067
-#: ../cli/src/settings.c:1068 ../cli/src/settings.c:1069
-#: ../cli/src/settings.c:1148 ../cli/src/settings.c:1149
-#: ../cli/src/settings.c:1150 ../cli/src/settings.c:1151
-#: ../cli/src/settings.c:1152 ../cli/src/settings.c:1153
-#: ../cli/src/settings.c:1154 ../cli/src/settings.c:1155
-#: ../cli/src/settings.c:1156 ../cli/src/settings.c:1157
-#: ../cli/src/settings.c:1158 ../cli/src/settings.c:1159
-#: ../cli/src/settings.c:1160 ../cli/src/settings.c:1235
+#: ../cli/src/connections.c:467 ../cli/src/connections.c:468
+#: ../cli/src/connections.c:705 ../cli/src/connections.c:706
+#: ../cli/src/connections.c:708 ../cli/src/devices.c:595
+#: ../cli/src/devices.c:648 ../cli/src/devices.c:762 ../cli/src/devices.c:763
+#: ../cli/src/devices.c:795 ../cli/src/devices.c:821 ../cli/src/devices.c:822
+#: ../cli/src/devices.c:823 ../cli/src/devices.c:824 ../cli/src/devices.c:825
+#: ../cli/src/settings.c:656 ../cli/src/settings.c:658
+#: ../cli/src/settings.c:726 ../cli/src/settings.c:846
+#: ../cli/src/settings.c:1128 ../cli/src/settings.c:1129
+#: ../cli/src/settings.c:1131 ../cli/src/settings.c:1133
+#: ../cli/src/settings.c:1134 ../cli/src/settings.c:1262
+#: ../cli/src/settings.c:1263 ../cli/src/settings.c:1264
+#: ../cli/src/settings.c:1265 ../cli/src/settings.c:1340
+#: ../cli/src/settings.c:1341 ../cli/src/settings.c:1342
+#: ../cli/src/settings.c:1343 ../cli/src/settings.c:1344
+#: ../cli/src/settings.c:1345 ../cli/src/settings.c:1346
+#: ../cli/src/settings.c:1347 ../cli/src/settings.c:1348
+#: ../cli/src/settings.c:1349 ../cli/src/settings.c:1350
+#: ../cli/src/settings.c:1351 ../cli/src/settings.c:1352
+#: ../cli/src/settings.c:1423
 msgid "no"
 msgstr "non"
 
-#: ../cli/src/connections.c:495
-#| msgid "Connection details"
+#: ../cli/src/connections.c:542
 msgid "Connection list"
 msgstr "Lista de conexións"
 
-#: ../cli/src/connections.c:508 ../cli/src/connections.c:1368
-#: ../cli/src/connections.c:1383 ../cli/src/connections.c:1392
-#: ../cli/src/connections.c:1402 ../cli/src/connections.c:1414
-#: ../cli/src/connections.c:1509 ../cli/src/devices.c:1190
-#: ../cli/src/devices.c:1200 ../cli/src/devices.c:1314
-#: ../cli/src/devices.c:1321 ../cli/src/devices.c:1534
-#: ../cli/src/devices.c:1541
+#: ../cli/src/connections.c:555 ../cli/src/connections.c:1088
+#: ../cli/src/connections.c:1914 ../cli/src/connections.c:1929
+#: ../cli/src/connections.c:1938 ../cli/src/connections.c:1948
+#: ../cli/src/connections.c:1960 ../cli/src/connections.c:2059
+#: ../cli/src/connections.c:2161 ../cli/src/devices.c:1202
+#: ../cli/src/devices.c:1212 ../cli/src/devices.c:1326
+#: ../cli/src/devices.c:1334 ../cli/src/devices.c:1547
+#: ../cli/src/devices.c:1554
 #, c-format
 msgid "Error: %s argument is missing."
 msgstr "Erro: falta o argumento %s"
 
-#: ../cli/src/connections.c:521
+#: ../cli/src/connections.c:568
 #, c-format
 msgid "Error: %s - no such connection."
 msgstr "Erro: %s - non existe dita conexión."
 
-#: ../cli/src/connections.c:527 ../cli/src/connections.c:1427
-#: ../cli/src/connections.c:1526 ../cli/src/devices.c:987
-#: ../cli/src/devices.c:1067 ../cli/src/devices.c:1214
-#: ../cli/src/devices.c:1327 ../cli/src/devices.c:1547
+#: ../cli/src/connections.c:574 ../cli/src/connections.c:1973
+#: ../cli/src/connections.c:2076 ../cli/src/connections.c:2168
+#: ../cli/src/devices.c:999 ../cli/src/devices.c:1079
+#: ../cli/src/devices.c:1226 ../cli/src/devices.c:1340
+#: ../cli/src/devices.c:1560
 #, c-format
 msgid "Unknown parameter: %s\n"
 msgstr "Parámetros descoñecidos: %s\n"
 
-#: ../cli/src/connections.c:536
+#: ../cli/src/connections.c:583
 #, c-format
 msgid "Error: no valid parameter specified."
 msgstr "Erro: non se especificou un parámetro válido"
 
-#: ../cli/src/connections.c:551 ../cli/src/connections.c:1617
-#: ../cli/src/devices.c:1755 ../cli/src/network-manager.c:463
+#: ../cli/src/connections.c:598 ../cli/src/connections.c:2261
+#: ../cli/src/devices.c:1768 ../cli/src/network-manager.c:456
 #, c-format
 msgid "Error: %s."
 msgstr "Erro: %s."
 
+#: ../cli/src/connections.c:611
+msgid "activating"
+msgstr "activando"
+
+#: ../cli/src/connections.c:613
+msgid "activated"
+msgstr "activada"
+
+#: ../cli/src/connections.c:615 ../cli/src/devices.c:263
+msgid "deactivating"
+msgstr "desactivando"
+
+#: ../cli/src/connections.c:618 ../cli/src/connections.c:641
+#: ../cli/src/connections.c:1785 ../cli/src/devices.c:267
+#: ../cli/src/devices.c:796 ../cli/src/network-manager.c:111
+#: ../cli/src/network-manager.c:173 ../cli/src/network-manager.c:176
+#: ../cli/src/network-manager.c:185 ../cli/src/network-manager.c:291
+#: ../cli/src/network-manager.c:346 ../cli/src/network-manager.c:384
+#: ../cli/src/network-manager.c:423 ../cli/src/settings.c:563
+#: ../cli/src/settings.c:591 ../cli/src/utils.c:499 ../src/main.c:450
+#: ../src/main.c:469
+msgid "unknown"
+msgstr "descoñecido"
+
+#: ../cli/src/connections.c:627
+msgid "VPN connecting (prepare)"
+msgstr "Conectándose á VPN (preparando)"
+
+#: ../cli/src/connections.c:629
+msgid "VPN connecting (need authentication)"
+msgstr "Conexión VPN (requírese autenticación)"
+
+#: ../cli/src/connections.c:631
+msgid "VPN connecting"
+msgstr "Conexión VPN"
+
+#: ../cli/src/connections.c:633
+msgid "VPN connecting (getting IP configuration)"
+msgstr "Conectándose á VPN (obtendo a configuración de IP)"
+
+#: ../cli/src/connections.c:635
+msgid "VPN connected"
+msgstr "Conectado á VPN"
+
+#: ../cli/src/connections.c:637
+msgid "VPN connection failed"
+msgstr "Produciuse un fallo ao conectarse á VPN"
+
 #: ../cli/src/connections.c:639
+msgid "VPN disconnected"
+msgstr "Desconectado á VPN"
+
+#: ../cli/src/connections.c:892 ../cli/src/connections.c:1116
 #, c-format
 msgid "Error: 'con status': %s"
 msgstr "Erro: «con status»: %s"
 
-#: ../cli/src/connections.c:641
+#: ../cli/src/connections.c:894 ../cli/src/connections.c:1118
 #, c-format
 msgid "Error: 'con status': %s; allowed fields: %s"
 msgstr "Erro: «con status»: %s; campos permitidos: %s"
 
-#: ../cli/src/connections.c:649 ../cli/src/connections.c:1442
-#: ../cli/src/connections.c:1541 ../cli/src/devices.c:1014
-#: ../cli/src/devices.c:1076 ../cli/src/devices.c:1229
-#: ../cli/src/devices.c:1357 ../cli/src/devices.c:1576
+#: ../cli/src/connections.c:902
+#| msgid "Active connections"
+msgid "Active connection details"
+msgstr "Detalles da conexión activa"
+
+#: ../cli/src/connections.c:1038 ../cli/src/connections.c:1988
+#: ../cli/src/connections.c:2091 ../cli/src/connections.c:2182
+#: ../cli/src/devices.c:1026 ../cli/src/devices.c:1088
+#: ../cli/src/devices.c:1241 ../cli/src/devices.c:1370
+#: ../cli/src/devices.c:1589
 #, c-format
 msgid "Error: Can't find out if NetworkManager is running: %s."
 msgstr "Erro: non é posíbel determinar se NetworkManager está a funcionar: %s."
 
-#: ../cli/src/connections.c:653 ../cli/src/connections.c:1446
-#: ../cli/src/connections.c:1545 ../cli/src/devices.c:1018
-#: ../cli/src/devices.c:1080 ../cli/src/devices.c:1233
-#: ../cli/src/devices.c:1361 ../cli/src/devices.c:1580
+#: ../cli/src/connections.c:1042 ../cli/src/connections.c:1992
+#: ../cli/src/connections.c:2095 ../cli/src/connections.c:2186
+#: ../cli/src/devices.c:1030 ../cli/src/devices.c:1092
+#: ../cli/src/devices.c:1245 ../cli/src/devices.c:1374
+#: ../cli/src/devices.c:1593
 #, c-format
 msgid "Error: NetworkManager is not running."
 msgstr "Erro: NetworkManager non está a funcionar."
 
-#: ../cli/src/connections.c:661
+#: ../cli/src/connections.c:1074
 msgid "Active connections"
 msgstr "Conexións activas"
 
-#: ../cli/src/connections.c:1085
+#: ../cli/src/connections.c:1099
+#, c-format
+#| msgid "Error: %s - no such connection."
+msgid "Error: '%s' is not an active connection."
+msgstr "Erro: «%s» non é unha conexión activa."
+
+#: ../cli/src/connections.c:1104
+#, c-format
+#| msgid "Unknown parameter: %s\n"
+msgid "Error: unknown parameter: %s"
+msgstr "Erro: parámetro descoñecido: %s"
+
+#: ../cli/src/connections.c:1669
 #, c-format
 msgid "no active connection on device '%s'"
 msgstr "non hai conexións activas no dispositivo «%s»"
 
-#: ../cli/src/connections.c:1093
+#: ../cli/src/connections.c:1677
 #, c-format
 msgid "no active connection or device"
 msgstr "non hai conexións activas ou dispositivo"
 
-#: ../cli/src/connections.c:1164
+#: ../cli/src/connections.c:1748
 #, c-format
 msgid "device '%s' not compatible with connection '%s'"
 msgstr "o dispositivo «%s» non é compatíbel coa conexión «%s»"
 
-#: ../cli/src/connections.c:1166
+#: ../cli/src/connections.c:1750
 #, c-format
 msgid "no device found for connection '%s'"
 msgstr "non foi posíbel encontrar un dispositivo para a conexión «%s»"
 
-#: ../cli/src/connections.c:1177
-msgid "activating"
-msgstr "activando"
-
-#: ../cli/src/connections.c:1179
-msgid "activated"
-msgstr "activada"
-
-#: ../cli/src/connections.c:1181 ../cli/src/devices.c:304
-#| msgid "activating"
-msgid "deactivating"
-msgstr "desactivando"
-
-#: ../cli/src/connections.c:1184 ../cli/src/connections.c:1207
-#: ../cli/src/connections.c:1240 ../cli/src/devices.c:308
-#: ../cli/src/devices.c:688 ../cli/src/network-manager.c:118
-#: ../cli/src/network-manager.c:180 ../cli/src/network-manager.c:183
-#: ../cli/src/network-manager.c:192 ../cli/src/network-manager.c:298
-#: ../cli/src/network-manager.c:353 ../cli/src/network-manager.c:391
-#: ../cli/src/network-manager.c:430 ../cli/src/settings.c:485
-#: ../cli/src/utils.c:396
-msgid "unknown"
-msgstr "descoñecido"
-
-#: ../cli/src/connections.c:1193
-msgid "VPN connecting (prepare)"
-msgstr "Conectándose á VPN (preparando)"
-
-#: ../cli/src/connections.c:1195
-msgid "VPN connecting (need authentication)"
-msgstr "Conexión VPN (requírese autenticación)"
-
-#: ../cli/src/connections.c:1197
-msgid "VPN connecting"
-msgstr "Conexión VPN"
-
-#: ../cli/src/connections.c:1199
-msgid "VPN connecting (getting IP configuration)"
-msgstr "Conectándose á VPN (obtendo a configuración de IP)"
-
-#: ../cli/src/connections.c:1201
-msgid "VPN connected"
-msgstr "Conectado á VPN"
-
-#: ../cli/src/connections.c:1203
-msgid "VPN connection failed"
-msgstr "Produciuse un fallo ao conectarse á VPN"
-
-#: ../cli/src/connections.c:1205
-msgid "VPN disconnected"
-msgstr "Desconectado á VPN"
-
-#: ../cli/src/connections.c:1216
+#: ../cli/src/connections.c:1761
 msgid "unknown reason"
 msgstr "razón descoñecida"
 
-#: ../cli/src/connections.c:1218
+#: ../cli/src/connections.c:1763
 msgid "none"
 msgstr "ninguna"
 
-#: ../cli/src/connections.c:1220
+#: ../cli/src/connections.c:1765
 msgid "the user was disconnected"
 msgstr "o usuario desconectouse"
 
-#: ../cli/src/connections.c:1222
+#: ../cli/src/connections.c:1767
 msgid "the base network connection was interrupted"
 msgstr "a conexión de rede base foi interrompida"
 
-#: ../cli/src/connections.c:1224
+#: ../cli/src/connections.c:1769
 msgid "the VPN service stopped unexpectedly"
 msgstr "o servizo de VPN deteuse de forma inesperada"
 
-#: ../cli/src/connections.c:1226
+#: ../cli/src/connections.c:1771
 msgid "the VPN service returned invalid configuration"
 msgstr "o servizo de VPN devolveu unha configuración non válida"
 
-#: ../cli/src/connections.c:1228
+#: ../cli/src/connections.c:1773
 msgid "the connection attempt timed out"
 msgstr "o intento de conexión superou o tempo de espera máximo"
 
-#: ../cli/src/connections.c:1230
+#: ../cli/src/connections.c:1775
 msgid "the VPN service did not start in time"
 msgstr "o servizo de VPN non se iniciou a tempo"
 
-#: ../cli/src/connections.c:1232
+#: ../cli/src/connections.c:1777
 msgid "the VPN service failed to start"
 msgstr "o servizo de VPN fallou ao iniciarse"
 
-#: ../cli/src/connections.c:1234
+#: ../cli/src/connections.c:1779
 msgid "no valid VPN secrets"
 msgstr "non hai segredos VPN válidos"
 
-#: ../cli/src/connections.c:1236
+#: ../cli/src/connections.c:1781
 msgid "invalid VPN secrets"
 msgstr "segredos VPN non válidos"
 
-#: ../cli/src/connections.c:1238
+#: ../cli/src/connections.c:1783
 msgid "the connection was removed"
 msgstr "eliminouse a conexión"
 
-#: ../cli/src/connections.c:1252
+#: ../cli/src/connections.c:1797
 #, c-format
 msgid "state: %s\n"
 msgstr "estado: %s\n"
 
-#: ../cli/src/connections.c:1255 ../cli/src/connections.c:1281
+#: ../cli/src/connections.c:1800 ../cli/src/connections.c:1826
 #, c-format
 msgid "Connection activated\n"
 msgstr "Conexión activada\n"
 
-#: ../cli/src/connections.c:1258
+#: ../cli/src/connections.c:1803
 #, c-format
 msgid "Error: Connection activation failed."
 msgstr "Erro: A activación da conexión fallou."
 
-#: ../cli/src/connections.c:1277
+#: ../cli/src/connections.c:1822
 #, c-format
 msgid "state: %s (%d)\n"
 msgstr "estado: %s (%d)\n"
 
-#: ../cli/src/connections.c:1287
+#: ../cli/src/connections.c:1832
 #, c-format
 msgid "Error: Connection activation failed: %s."
 msgstr "Erro: A activación da conexión fallou: %s."
 
-#: ../cli/src/connections.c:1304 ../cli/src/devices.c:1136
+#: ../cli/src/connections.c:1849 ../cli/src/devices.c:1148
 #, c-format
 msgid "Error: Timeout %d sec expired."
 msgstr "Erro: Alcanzouse o tempo de espera de %d segundos."
 
-#: ../cli/src/connections.c:1317
+#: ../cli/src/connections.c:1862
 #, c-format
 msgid "Error: Connection activation failed: %s"
 msgstr "Erro: Produciuse un fallo ao activar a conexión: %s"
 
-#: ../cli/src/connections.c:1323
+#: ../cli/src/connections.c:1868
 #, c-format
 msgid "Active connection state: %s\n"
 msgstr "Estado da conexión activa: %s\n"
 
-#: ../cli/src/connections.c:1324
+#: ../cli/src/connections.c:1869
 #, c-format
 msgid "Active connection path: %s\n"
 msgstr "Camiño da conexión activa: %s\n"
 
-#: ../cli/src/connections.c:1376 ../cli/src/connections.c:1517
+#: ../cli/src/connections.c:1922 ../cli/src/connections.c:2067
+#: ../cli/src/connections.c:2195
 #, c-format
 msgid "Error: Unknown connection: %s."
 msgstr "Erro: Conexión descoñecida: %s."
 
-#: ../cli/src/connections.c:1422 ../cli/src/devices.c:1208
+#: ../cli/src/connections.c:1968 ../cli/src/devices.c:1220
 #, c-format
 msgid "Error: timeout value '%s' is not valid."
 msgstr "Erro: O valor do tempo de espera máximo «%s» non é válido."
 
-#: ../cli/src/connections.c:1435 ../cli/src/connections.c:1534
+#: ../cli/src/connections.c:1981 ../cli/src/connections.c:2084
+#: ../cli/src/connections.c:2175
 #, c-format
 msgid "Error: id or uuid has to be specified."
 msgstr "Erro: debe especificar o id ou o uuid."
 
-#: ../cli/src/connections.c:1463
+#: ../cli/src/connections.c:2013
 #, c-format
 msgid "Error: No suitable device found: %s."
 msgstr "Erro: Non se encontrou un dispositivo axeitado: %s."
 
-#: ../cli/src/connections.c:1465
+#: ../cli/src/connections.c:2015
 #, c-format
 msgid "Error: No suitable device found."
 msgstr "Erro: Non se encontrou o dispositivo axeitado."
 
-#: ../cli/src/connections.c:1570
+#: ../cli/src/connections.c:2120
 #, c-format
 msgid "Warning: Connection not active\n"
 msgstr "Aviso: A conexión non está activa.\n"
 
-#: ../cli/src/connections.c:1608
+#: ../cli/src/connections.c:2134
+#, c-format
+#| msgid "Error: Connection activation failed: %s"
+msgid "Error: Connection deletion failed: %s"
+msgstr "Erro: Produciuse un erro na eliminación: %s"
+
+#: ../cli/src/connections.c:2252
 #, c-format
 msgid "Error: 'con' command '%s' is not valid."
 msgstr "Erro: «con» a orde «%s» non é válida"
 
-#: ../cli/src/connections.c:1673
+#: ../cli/src/connections.c:2317
 #, c-format
 msgid "Error: could not connect to D-Bus."
 msgstr "Erro: non é posíbel conectarse a D-Bus."
 
-#: ../cli/src/connections.c:1680
+#: ../cli/src/connections.c:2325
 #, c-format
 msgid "Error: Could not get system settings."
 msgstr "Erro: Non é posíbel obter as opcións do sistema."
 
-#: ../cli/src/connections.c:1690
+#: ../cli/src/connections.c:2335
 #, c-format
-#| msgid "Error: Can't obtain connections: settings services are not running."
 msgid "Error: Can't obtain connections: settings service is not running."
 msgstr ""
 "Erro: Non é posíbel obter as conexións: o servizo de configuracións non "
@@ -477,237 +623,247 @@ msgstr ""
 #. 0
 #. 9
 #. 3
-#: ../cli/src/devices.c:66 ../cli/src/devices.c:102 ../cli/src/devices.c:212
-#: ../cli/src/devices.c:228
+#: ../cli/src/devices.c:67 ../cli/src/devices.c:103 ../cli/src/devices.c:181
+#: ../cli/src/devices.c:197
 msgid "DEVICE"
 msgstr "DISPOSITIVO"
 
-#. 1
-#. 4
-#. 1
-#: ../cli/src/devices.c:68 ../cli/src/devices.c:106
-#: ../cli/src/network-manager.c:39
-msgid "STATE"
-msgstr "ESTADO"
-
-#: ../cli/src/devices.c:78
-msgid "GENERAL"
-msgstr "XERAL"
-
 #. 0
-#: ../cli/src/devices.c:79
+#: ../cli/src/devices.c:80
 msgid "CAPABILITIES"
 msgstr "CAPACIDADES"
 
 #. 1
-#: ../cli/src/devices.c:80
+#: ../cli/src/devices.c:81
 msgid "WIFI-PROPERTIES"
 msgstr "PROPIEDADES-WIFI"
 
 #. 2
-#: ../cli/src/devices.c:81
+#: ../cli/src/devices.c:82
 msgid "AP"
 msgstr "AP"
 
 #. 3
-#: ../cli/src/devices.c:82
+#: ../cli/src/devices.c:83
 msgid "WIRED-PROPERTIES"
 msgstr "PROPIEDADES-CONCABLES"
 
 #. 4
-#: ../cli/src/devices.c:83
-#| msgid "WIFI-PROPERTIES"
+#: ../cli/src/devices.c:84
 msgid "WIMAX-PROPERTIES"
 msgstr "PROPIEDADES-WIMAX"
 
 #. 5
 #. 0
-#: ../cli/src/devices.c:84 ../cli/src/devices.c:225
-#| msgid "DNS"
+#: ../cli/src/devices.c:85 ../cli/src/devices.c:194
 msgid "NSP"
 msgstr "PSR"
 
 #. 6
-#: ../cli/src/devices.c:85
-msgid "IP4-SETTINGS"
-msgstr "CONFIGURACIONS-IP4"
+#: ../cli/src/devices.c:86
+#| msgid "IP4-DNS"
+msgid "IP4"
+msgstr "IP4"
 
 #. 7
-#: ../cli/src/devices.c:86
-msgid "IP4-DNS"
-msgstr "IP4-DNS"
+#: ../cli/src/devices.c:87
+msgid "DHCP4"
+msgstr "DHCP4"
 
 #. 8
-#: ../cli/src/devices.c:87
-msgid "IP6-SETTINGS"
-msgstr "IP4-CONFIGURACIONS"
+#: ../cli/src/devices.c:88
+#| msgid "IP6-DNS"
+msgid "IP6"
+msgstr "IP6"
 
 #. 9
-#: ../cli/src/devices.c:88
-msgid "IP6-DNS"
-msgstr "IP6-DNS"
+#: ../cli/src/devices.c:89
+msgid "DHCP6"
+msgstr "DHCP6"
 
 #. 2
-#: ../cli/src/devices.c:104
+#: ../cli/src/devices.c:105
+msgid "VENDOR"
+msgstr "FABRICANTE"
+
+#. 3
+#: ../cli/src/devices.c:106
+msgid "PRODUCT"
+msgstr "PRODUTO"
+
+#. 4
+#: ../cli/src/devices.c:107
 msgid "DRIVER"
 msgstr "CONTROLADOR"
 
-#. 3
-#: ../cli/src/devices.c:105
+#. 5
+#: ../cli/src/devices.c:108
 msgid "HWADDR"
 msgstr "ENDEREZO-HARDWARE"
 
-#. 0
+#. 7
+#: ../cli/src/devices.c:110
+#| msgid "READONLY"
+msgid "REASON"
+msgstr "SO-LECTURARAZÓN"
+
+#. 8
+#: ../cli/src/devices.c:111
+msgid "UDI"
+msgstr "UDI"
+
+#. 9
+#: ../cli/src/devices.c:112
+msgid "IP-IFACE"
+msgstr "IP-IFACE"
+
+#. 10
+#: ../cli/src/devices.c:113
+msgid "NM-MANAGED"
+msgstr "NM-MANAGED"
+
+#. 11
+#: ../cli/src/devices.c:114
+msgid "FIRMWARE-MISSING"
+msgstr "FALTA-FIRMWARE"
+
+#. 12
 #: ../cli/src/devices.c:115
+#| msgid "AUTOCONNECT"
+msgid "CONNECTION"
+msgstr "CONEXIÓN"
+
+#. 0
+#: ../cli/src/devices.c:124
 msgid "CARRIER-DETECT"
 msgstr "DETECTAR-CARRIERV"
 
 #. 1
-#: ../cli/src/devices.c:116
+#: ../cli/src/devices.c:125
 msgid "SPEED"
 msgstr "VELOCIDADE"
 
 #. 0
-#: ../cli/src/devices.c:125
+#: ../cli/src/devices.c:134
 msgid "CARRIER"
 msgstr "CARRIER"
 
 #. 0
-#: ../cli/src/devices.c:135
+#: ../cli/src/devices.c:144
 msgid "WEP"
 msgstr "WEP"
 
 #. 1
-#: ../cli/src/devices.c:136
+#: ../cli/src/devices.c:145
 msgid "WPA"
 msgstr "WPA"
 
 #. 2
-#: ../cli/src/devices.c:137
+#: ../cli/src/devices.c:146
 msgid "WPA2"
 msgstr "WPA2"
 
 #. 3
-#: ../cli/src/devices.c:138
+#: ../cli/src/devices.c:147
 msgid "TKIP"
 msgstr "TKIP"
 
 #. 4
-#: ../cli/src/devices.c:139
+#: ../cli/src/devices.c:148
 msgid "CCMP"
 msgstr "CCMP"
 
 #. 0
-#: ../cli/src/devices.c:149
-#| msgid "FREQ"
+#: ../cli/src/devices.c:158
 msgid "CTR-FREQ"
 msgstr "CTR-FREC"
 
 #. 1
-#: ../cli/src/devices.c:150
-#| msgid "SSID"
+#: ../cli/src/devices.c:159
 msgid "RSSI"
 msgstr "RSSI"
 
 #. 2
-#: ../cli/src/devices.c:151
+#: ../cli/src/devices.c:160
 msgid "CINR"
 msgstr "CINR"
 
 #. 3
-#: ../cli/src/devices.c:152
+#: ../cli/src/devices.c:161
 msgid "TX-POW"
 msgstr "TX-POW"
 
 #. 4
-#: ../cli/src/devices.c:153
-#| msgid "BSSID"
+#: ../cli/src/devices.c:162
 msgid "BSID"
 msgstr "BSID"
 
 #. 0
-#: ../cli/src/devices.c:163 ../cli/src/devices.c:174
-msgid "ADDRESS"
-msgstr "ENDEREZO"
-
-#. 1
-#: ../cli/src/devices.c:164 ../cli/src/devices.c:175
-msgid "PREFIX"
-msgstr "PREFIXO"
-
-#. 2
-#: ../cli/src/devices.c:165 ../cli/src/devices.c:176
-msgid "GATEWAY"
-msgstr "PASARELA"
-
-#. 0
-#: ../cli/src/devices.c:185 ../cli/src/devices.c:194
-msgid "DNS"
-msgstr "DNS"
-
-#. 0
-#: ../cli/src/devices.c:203
+#: ../cli/src/devices.c:172
 msgid "SSID"
 msgstr "SSID"
 
 #. 1
-#: ../cli/src/devices.c:204
+#: ../cli/src/devices.c:173
 msgid "BSSID"
 msgstr "BSSID"
 
 #. 2
-#: ../cli/src/devices.c:205
+#: ../cli/src/devices.c:174
 msgid "MODE"
 msgstr "MODO"
 
 #. 3
-#: ../cli/src/devices.c:206
+#: ../cli/src/devices.c:175
 msgid "FREQ"
 msgstr "FREQ"
 
 #. 4
-#: ../cli/src/devices.c:207
+#: ../cli/src/devices.c:176
 msgid "RATE"
 msgstr "TAXA"
 
 #. 5
 #. 1
-#: ../cli/src/devices.c:208 ../cli/src/devices.c:226
+#: ../cli/src/devices.c:177 ../cli/src/devices.c:195
 msgid "SIGNAL"
 msgstr "SINAL"
 
 #. 6
-#: ../cli/src/devices.c:209
+#: ../cli/src/devices.c:178
 msgid "SECURITY"
 msgstr "SEGURIDADE"
 
 #. 7
-#: ../cli/src/devices.c:210
+#: ../cli/src/devices.c:179
 msgid "WPA-FLAGS"
 msgstr "OPCIONS-WPA"
 
 #. 8
-#: ../cli/src/devices.c:211
+#: ../cli/src/devices.c:180
 msgid "RSN-FLAGS"
 msgstr "OPCIONS-RSN"
 
 #. 10
 #. 4
-#: ../cli/src/devices.c:213 ../cli/src/devices.c:229
+#: ../cli/src/devices.c:182 ../cli/src/devices.c:198
 msgid "ACTIVE"
 msgstr "ACTIVA"
 
-#: ../cli/src/devices.c:256
+#: ../cli/src/devices.c:215
 #, c-format
 #| msgid ""
 #| "Usage: nmcli dev { COMMAND | help }\n"
 #| "\n"
+#| "  COMMAND := { status | list | disconnect | wifi | wimax }\n"
+#| "\n"
 #| "  COMMAND := { status | list | disconnect | wifi }\n"
 #| "\n"
 #| "  status\n"
 #| "  list [iface <iface>]\n"
 #| "  disconnect iface <iface> [--nowait] [--timeout <timeout>]\n"
 #| "  wifi [list [iface <iface>] [hwaddr <hwaddr>]]\n"
+#| "  wimax [list [iface <iface>] [nsp <name>]]\n"
 #| "\n"
 msgid ""
 "Usage: nmcli dev { COMMAND | help }\n"
@@ -719,278 +875,504 @@ msgid ""
 "  status\n"
 "  list [iface <iface>]\n"
 "  disconnect iface <iface> [--nowait] [--timeout <timeout>]\n"
-"  wifi [list [iface <iface>] [hwaddr <hwaddr>]]\n"
+"  wifi [list [iface <iface>] [bssid <BSSID>]]\n"
 "  wimax [list [iface <iface>] [nsp <name>]]\n"
 "\n"
 msgstr ""
 "Uso: nmcli dev { ORDE | help }\n"
 "\n"
-"  COMANDO := { status | list | disconnect | wifi }\n"
+"  ORDE := { status | list | disconnect | wifi | wimax }\n"
+"\n"
+"  ORDE := { status | list | disconnect | wifi }\n"
 "\n"
 "  status\n"
 "  list [iface <iface>]\n"
 "  disconnect iface <iface> [--nowait] [--timeout <timeout>]\n"
-"  wifi [list [iface <iface>] [hwaddr <hwaddr>]]\n"
+"  wifi [list [iface <iface>] [bssid <BSSID>]]\n"
 "  wimax [list [iface <iface>] [nsp <name>]]\n"
 "\n"
 
-#: ../cli/src/devices.c:284
+#: ../cli/src/devices.c:243
 msgid "unmanaged"
 msgstr "non xestionada"
 
-#: ../cli/src/devices.c:286
+#: ../cli/src/devices.c:245
 msgid "unavailable"
 msgstr "non dispoñíbel"
 
-#: ../cli/src/devices.c:288 ../cli/src/network-manager.c:115
+#: ../cli/src/devices.c:247 ../cli/src/network-manager.c:108
 msgid "disconnected"
 msgstr "desconectado"
 
-#: ../cli/src/devices.c:290
+#: ../cli/src/devices.c:249
 msgid "connecting (prepare)"
 msgstr "conectando (preparando)"
 
-#: ../cli/src/devices.c:292
+#: ../cli/src/devices.c:251
 msgid "connecting (configuring)"
 msgstr "conectando (configurando)"
 
-#: ../cli/src/devices.c:294
+#: ../cli/src/devices.c:253
 msgid "connecting (need authentication)"
 msgstr "conectando (precisa autenticación)"
 
-#: ../cli/src/devices.c:296
+#: ../cli/src/devices.c:255
 msgid "connecting (getting IP configuration)"
 msgstr "conectando (obtendo a configuración IP)"
 
-#: ../cli/src/devices.c:298
-#| msgid "connecting (getting IP configuration)"
+#: ../cli/src/devices.c:257
 msgid "connecting (checking IP connectivity)"
 msgstr "conectando (comprobando conectividade IP)"
 
-#: ../cli/src/devices.c:300
-#| msgid "connecting (getting IP configuration)"
+#: ../cli/src/devices.c:259
 msgid "connecting (starting secondary connections)"
 msgstr "conectando (iniciando conexións secundarias)"
 
-#: ../cli/src/devices.c:302 ../cli/src/network-manager.c:111
+#: ../cli/src/devices.c:261 ../cli/src/network-manager.c:104
 msgid "connected"
 msgstr "conectado"
 
-#: ../cli/src/devices.c:306
+#: ../cli/src/devices.c:265
 msgid "connection failed"
 msgstr "produciuse un fallo na conexión"
 
-#: ../cli/src/devices.c:331 ../cli/src/devices.c:341 ../cli/src/devices.c:501
-#: ../cli/src/devices.c:545
+#: ../cli/src/devices.c:276
+msgid "No reason given"
+msgstr "Non se dou unha razón"
+
+#: ../cli/src/devices.c:279
+#| msgid "Unknown"
+msgid "Unknown error"
+msgstr "Erro descoñecido"
+
+#: ../cli/src/devices.c:282
+msgid "Device is now managed"
+msgstr "O dispositivo agora está xestionado"
+
+#: ../cli/src/devices.c:285
+msgid "Device is now unmanaged"
+msgstr "O dispositivo está agora non xestionado"
+
+#: ../cli/src/devices.c:288
+#| msgid "the VPN service returned invalid configuration"
+msgid "The device could not be readied for configuration"
+msgstr "O dispositivo non puido lerse para a súa configuración"
+
+#: ../cli/src/devices.c:291
+msgid ""
+"IP configuration could not be reserved (no available address, timeout, etc)"
+msgstr ""
+"Non foi posíbel reservar a configuración de IP (enderezo non dispoñíbel, "
+"tempo de espera, etc)"
+
+#: ../cli/src/devices.c:294
+msgid "The IP configuration is no longer valid"
+msgstr "A configuración IP xa non é válida"
+
+#: ../cli/src/devices.c:297
+msgid "Secrets were required, but not provided"
+msgstr "Requírense os segredos, pero non se forneceron"
+
+#: ../cli/src/devices.c:300
+msgid "802.1X supplicant disconnected"
+msgstr "802.1X supplicant desconectado"
+
+#: ../cli/src/devices.c:303
+msgid "802.1X supplicant configuration failed"
+msgstr "Fallou a configuación do 802.1X supplicant"
+
+#: ../cli/src/devices.c:306
+msgid "802.1X supplicant failed"
+msgstr "Fallou o 802.1X supplicant"
+
+#: ../cli/src/devices.c:309
+msgid "802.1X supplicant took too long to authenticate"
+msgstr "O 802.1X supplicant votou demasiado tempo para autenticarse"
+
+#: ../cli/src/devices.c:312
+#| msgid "the VPN service failed to start"
+msgid "PPP service failed to start"
+msgstr "O servizo PPP fallou ao iniciar"
+
+#: ../cli/src/devices.c:315
+#| msgid "VPN disconnected"
+msgid "PPP service disconnected"
+msgstr "O servizo PPP está desconectado"
+
+#: ../cli/src/devices.c:318
+msgid "PPP failed"
+msgstr "PPP fallou"
+
+#: ../cli/src/devices.c:321
+#| msgid "the VPN service failed to start"
+msgid "DHCP client failed to start"
+msgstr "O cliente DHCP fallou ao iniciar"
+
+#: ../cli/src/devices.c:324
+msgid "DHCP client error"
+msgstr "Erro no cliente DHCP"
+
+#: ../cli/src/devices.c:327
+#| msgid "VPN connection failed"
+msgid "DHCP client failed"
+msgstr "O cliente DHCP fallou"
+
+#: ../cli/src/devices.c:330
+#| msgid "the VPN service failed to start"
+msgid "Shared connection service failed to start"
+msgstr "O servizo de conexión compartida fallou ao iniciar"
+
+#: ../cli/src/devices.c:333
+#| msgid "connection failed"
+msgid "Shared connection service failed"
+msgstr "O servizo de conexión compartida fallou"
+
+#: ../cli/src/devices.c:336
+#| msgid "the VPN service failed to start"
+msgid "AutoIP service failed to start"
+msgstr "O servizo AutoIP fallou ao iniciar"
+
+#: ../cli/src/devices.c:339
+msgid "AutoIP service error"
+msgstr "Erro no servizo AutoIP"
+
+#: ../cli/src/devices.c:342
+#| msgid "the VPN service failed to start"
+msgid "AutoIP service failed"
+msgstr "O servizo AutoIP fallou"
+
+#: ../cli/src/devices.c:345
+msgid "The line is busy"
+msgstr "A liña está ocupada"
+
+#: ../cli/src/devices.c:348
+msgid "No dial tone"
+msgstr "Non hai ton de chamada"
+
+#: ../cli/src/devices.c:351
+msgid "No carrier could be established"
+msgstr "Non foi posíbel estabelecer o «carrier»"
+
+#: ../cli/src/devices.c:354
+msgid "The dialing request timed out"
+msgstr "Tempo de espera superado na solicitude de marcado"
+
+#: ../cli/src/devices.c:357
+msgid "The dialing attempt failed"
+msgstr "Fallou o intento de marcado"
+
+#: ../cli/src/devices.c:360
+#| msgid "Error: Connection activation failed."
+msgid "Modem initialization failed"
+msgstr "Fallou a inicialización do módem"
+
+#: ../cli/src/devices.c:363
+#| msgid "Failed to decrypt the private key."
+msgid "Failed to select the specified APN"
+msgstr "Produciuse un fallo ao seleccionar o APN especificado"
+
+#: ../cli/src/devices.c:366
+msgid "Not searching for networks"
+msgstr "Non está buscando por redes"
+
+#: ../cli/src/devices.c:369
+#| msgid "Networking enabled"
+msgid "Network registration denied"
+msgstr "Rexistro na rede rexeitado"
+
+#: ../cli/src/devices.c:372
+msgid "Network registration timed out"
+msgstr "O rexistro na rede superou o tempo de espera"
+
+#: ../cli/src/devices.c:375
+msgid "Failed to register with the requested network"
+msgstr "Produciuse un fallo ao rexistrarse na rede solicitada"
+
+#: ../cli/src/devices.c:378
+#| msgid "VPN connection failed"
+msgid "PIN check failed"
+msgstr "Produciuse un fallo na comprobación do PIN"
+
+#: ../cli/src/devices.c:381
+msgid "Necessary firmware for the device may be missing"
+msgstr "É preciso o firmware que poida que falte para o dispositivo"
+
+#: ../cli/src/devices.c:384
+#| msgid "the connection was removed"
+msgid "The device was removed"
+msgstr "O dispositivo eliminouse"
+
+#: ../cli/src/devices.c:387
+#| msgid "NetworkManager status"
+msgid "NetworkManager went to sleep"
+msgstr "NetworkManager púxose a durmir"
+
+#: ../cli/src/devices.c:390
+#| msgid "no active connection or device"
+msgid "The device's active connection disappeared"
+msgstr "A conexión de rede activa do dispositivo desapareceu"
+
+#: ../cli/src/devices.c:393
+msgid "Device disconnected by user or client"
+msgstr "Dispositivo desconectado polo usuario ou cliente"
+
+#: ../cli/src/devices.c:396
+msgid "Carrier/link changed"
+msgstr "Cambiou o «carrier»/ligazón"
+
+#: ../cli/src/devices.c:399
+#| msgid "the connection was removed"
+msgid "The device's existing connection was assumed"
+msgstr "A conexión existente do dispositivo foi asumida"
+
+#: ../cli/src/devices.c:402
+msgid "The supplicant is now available"
+msgstr "O «supplicant» está agora activado"
+
+#: ../cli/src/devices.c:405
+#| msgid "'dhcpcd' could be found."
+msgid "The modem could not be found"
+msgstr "Non foi posíbel atopar o módem"
+
+#: ../cli/src/devices.c:408
+#| msgid "the connection attempt timed out"
+msgid "The Bluetooth connection failed or timed out"
+msgstr "Fallou a conexión de Bluetooth ou superouse o tempo máximo de espera"
+
+#: ../cli/src/devices.c:411
+msgid "GSM Modem's SIM card not inserted"
+msgstr "A tarxeta SIM do módem GSM non está insertada"
+
+#: ../cli/src/devices.c:414
+msgid "GSM Modem's SIM PIN required"
+msgstr "Requírese o PIN do SIM do módem GSM"
+
+#: ../cli/src/devices.c:417
+msgid "GSM Modem's SIM PUK required"
+msgstr "Requírese o PUK do SIM do módem GSM"
+
+#: ../cli/src/devices.c:420
+msgid "GSM Modem's SIM wrong"
+msgstr "SIM do modem GSM incorrecta"
+
+#: ../cli/src/devices.c:423
+msgid "InfiniBand device does not support connected mode"
+msgstr "O dispositivo InfiniBand non admite o modo conectado"
+
+#: ../cli/src/devices.c:426
+#| msgid "connection failed"
+msgid "A dependency of the connection failed"
+msgstr "Fallou unha dependencia da conexión"
+
+#: ../cli/src/devices.c:428 ../cli/src/devices.c:451 ../cli/src/devices.c:467
+#: ../cli/src/devices.c:587 ../cli/src/devices.c:631
 msgid "Unknown"
 msgstr "Descoñecido"
 
-#: ../cli/src/devices.c:374
+#: ../cli/src/devices.c:500
 msgid "(none)"
 msgstr "(ningún)"
 
-#: ../cli/src/devices.c:399
-#, c-format
-msgid "%s: error converting IP4 address 0x%X"
-msgstr "%s: produciuse un erro ao converter o enderezo IP4 0x%X"
-
-#: ../cli/src/devices.c:470
+#: ../cli/src/devices.c:556
 #, c-format
 msgid "%u MHz"
 msgstr "%u MHz"
 
-#: ../cli/src/devices.c:471
+#: ../cli/src/devices.c:557
 #, c-format
 msgid "%u MB/s"
 msgstr "%u MB/s"
 
-#: ../cli/src/devices.c:480
+#: ../cli/src/devices.c:566
 msgid "Encrypted: "
 msgstr "Cifrado: "
 
-#: ../cli/src/devices.c:485
+#: ../cli/src/devices.c:571
 msgid "WEP "
 msgstr "WEP "
 
-#: ../cli/src/devices.c:487
+#: ../cli/src/devices.c:573
 msgid "WPA "
 msgstr "WPA "
 
-#: ../cli/src/devices.c:489
+#: ../cli/src/devices.c:575
 msgid "WPA2 "
 msgstr "WPA2 "
 
-#: ../cli/src/devices.c:492
+#: ../cli/src/devices.c:578
 msgid "Enterprise "
 msgstr "Empresa "
 
-#: ../cli/src/devices.c:501
+#: ../cli/src/devices.c:587
 msgid "Ad-Hoc"
 msgstr "Ad-Hoc"
 
-#: ../cli/src/devices.c:501
+#: ../cli/src/devices.c:587
 msgid "Infrastructure"
 msgstr "Infraestrutura"
 
-#: ../cli/src/devices.c:536
+#: ../cli/src/devices.c:622
 msgid "Home"
 msgstr "Casa"
 
-#: ../cli/src/devices.c:539
+#: ../cli/src/devices.c:625
 msgid "Partner"
 msgstr "Asociado"
 
-#: ../cli/src/devices.c:542
+#: ../cli/src/devices.c:628
 msgid "Roaming"
 msgstr "Roaming"
 
-#: ../cli/src/devices.c:612
+#: ../cli/src/devices.c:700
 #, c-format
 msgid "Error: 'dev list': %s"
 msgstr "Erro: «dev list»: %s"
 
-#: ../cli/src/devices.c:614
+#: ../cli/src/devices.c:702
 #, c-format
 msgid "Error: 'dev list': %s; allowed fields: %s"
 msgstr "Erro: «dev list»: %s campos permitidos: %s"
 
-#: ../cli/src/devices.c:623
+#: ../cli/src/devices.c:711
 msgid "Device details"
 msgstr "Detalles do dispositivo"
 
-#: ../cli/src/devices.c:657 ../cli/src/devices.c:1152 ../cli/src/utils.c:342
+#: ../cli/src/devices.c:756 ../cli/src/devices.c:757 ../cli/src/devices.c:1164
+#: ../cli/src/utils.c:445
 msgid "(unknown)"
 msgstr "(descoñecido)"
 
-#: ../cli/src/devices.c:658
-msgid "unknown)"
-msgstr "descoñecido)"
+#: ../cli/src/devices.c:765
+#| msgid "connected"
+msgid "not connected"
+msgstr "non conectado"
 
-#: ../cli/src/devices.c:684
+#: ../cli/src/devices.c:792
 #, c-format
 msgid "%u Mb/s"
 msgstr "%u Mb/s"
 
 #. Print header
 #. "WIRED-PROPERTIES"
-#: ../cli/src/devices.c:757
+#: ../cli/src/devices.c:865
 msgid "on"
 msgstr "activado"
 
-#: ../cli/src/devices.c:757
+#: ../cli/src/devices.c:865
 msgid "off"
 msgstr "desactivado"
 
-#: ../cli/src/devices.c:1004
+#: ../cli/src/devices.c:1016
 #, c-format
 msgid "Error: 'dev status': %s"
 msgstr "Erro: «dev status»: %s"
 
-#: ../cli/src/devices.c:1006
+#: ../cli/src/devices.c:1018
 #, c-format
 msgid "Error: 'dev status': %s; allowed fields: %s"
 msgstr "Erro: «dev status»: %s campos permitidos: %s"
 
-#: ../cli/src/devices.c:1029
+#: ../cli/src/devices.c:1041
 msgid "Status of devices"
 msgstr "Estado dos dispositivos"
 
-#: ../cli/src/devices.c:1060
+#: ../cli/src/devices.c:1072
 #, c-format
 msgid "Error: '%s' argument is missing."
 msgstr "Erro: falta o argumento «%s»."
 
-#: ../cli/src/devices.c:1101 ../cli/src/devices.c:1253
-#: ../cli/src/devices.c:1389 ../cli/src/devices.c:1608
+#: ../cli/src/devices.c:1113 ../cli/src/devices.c:1265
+#: ../cli/src/devices.c:1402 ../cli/src/devices.c:1621
 #, c-format
 msgid "Error: Device '%s' not found."
 msgstr "Erro: Non é posíbel encontrar o dispositivo %s."
 
-#: ../cli/src/devices.c:1124
+#: ../cli/src/devices.c:1136
 #, c-format
 msgid "Success: Device '%s' successfully disconnected."
 msgstr "Éxito: O dispositivo «%s» desconectouse correctamente."
 
-#: ../cli/src/devices.c:1149
+#: ../cli/src/devices.c:1161
 #, c-format
 msgid "Error: Device '%s' (%s) disconnecting failed: %s"
 msgstr "Erro: Fallou a desconexión do dispositivo «%s» (%s): %s"
 
-#: ../cli/src/devices.c:1157
+#: ../cli/src/devices.c:1169
 #, c-format
 msgid "Device state: %d (%s)\n"
 msgstr "Estado do dispositivo: %d (%s)\n"
 
-#: ../cli/src/devices.c:1222
+#: ../cli/src/devices.c:1234
 #, c-format
 msgid "Error: iface has to be specified."
 msgstr "Erro: non se especificou a interface."
 
-#: ../cli/src/devices.c:1347
+#: ../cli/src/devices.c:1360
 #, c-format
 msgid "Error: 'dev wifi': %s"
 msgstr "Erro: «dev wifi»: %s"
 
-#: ../cli/src/devices.c:1349
+#: ../cli/src/devices.c:1362
 #, c-format
 msgid "Error: 'dev wifi': %s; allowed fields: %s"
 msgstr "Erro: «dev wiki»: %s; campos permitidos: %s"
 
-#: ../cli/src/devices.c:1372
+#: ../cli/src/devices.c:1385
 msgid "WiFi scan list"
 msgstr "Lista de escaneo WiFi"
 
-#: ../cli/src/devices.c:1409 ../cli/src/devices.c:1463
-#: ../cli/src/devices.c:1670
+#: ../cli/src/devices.c:1422 ../cli/src/devices.c:1476
 #, c-format
-msgid "Error: Access point with hwaddr '%s' not found."
-msgstr "Erro: Non se encontrou o punto de acces co enderezo hardware «%s»."
+#| msgid "Error: Access point with hwaddr '%s' not found."
+msgid "Error: Access point with bssid '%s' not found."
+msgstr "Erro: non foi posíbel atopar o punto de acceso con bssid «%s»."
 
-#: ../cli/src/devices.c:1426
+#: ../cli/src/devices.c:1439
 #, c-format
 msgid "Error: Device '%s' is not a WiFi device."
 msgstr "Erro: O dispositivo «%s» non é un dispositivo WiFi."
 
-#: ../cli/src/devices.c:1490
+#: ../cli/src/devices.c:1503
 #, c-format
 msgid "Error: 'dev wifi' command '%s' is not valid."
 msgstr "Erro: «dev wifi» a orde «%s» non é válida."
 
-#: ../cli/src/devices.c:1566
+#: ../cli/src/devices.c:1579
 #, c-format
-#| msgid "Error: 'dev wifi': %s"
 msgid "Error: 'dev wimax': %s"
 msgstr "Erro: «dev wimax» «%s»"
 
-#: ../cli/src/devices.c:1568
+#: ../cli/src/devices.c:1581
 #, c-format
-#| msgid "Error: 'dev wifi': %s; allowed fields: %s"
 msgid "Error: 'dev wimax': %s; allowed fields: %s"
 msgstr "Erro: «dev wimax»: %s; campos permitidos: %s"
 
-#: ../cli/src/devices.c:1591
+#: ../cli/src/devices.c:1604
 msgid "WiMAX NSP list"
 msgstr "Lista PSR WiMAX"
 
-#: ../cli/src/devices.c:1628
+#: ../cli/src/devices.c:1641
 #, c-format
-#| msgid "Error: Device '%s' not found."
 msgid "Error: NSP with name '%s' not found."
 msgstr "Error: no se encontrou o PSR co nome «%s»."
 
-#: ../cli/src/devices.c:1639
+#: ../cli/src/devices.c:1652
 #, c-format
-#| msgid "Error: Device '%s' is not a WiFi device."
 msgid "Error: Device '%s' is not a WiMAX device."
 msgstr "Error: o dispositivo «%s» non é un dispositivo WiMAX."
 
-#: ../cli/src/devices.c:1697
+#: ../cli/src/devices.c:1683
+#, c-format
+#| msgid "Error: Access point with hwaddr '%s' not found."
+msgid "Error: Access point with nsp '%s' not found."
+msgstr "Erro: Non foi posíbel atopar o punto de acceso con sp «%s»."
+
+#: ../cli/src/devices.c:1710
 #, c-format
-#| msgid "Error: 'dev wifi' command '%s' is not valid."
 msgid "Error: 'dev wimax' command '%s' is not valid."
 msgstr "Error: orde «dev wimax» «%s» non válida."
 
-#: ../cli/src/devices.c:1747
+#: ../cli/src/devices.c:1760
 #, c-format
 msgid "Error: 'dev' command '%s' is not valid."
 msgstr "Erro: «dev» a orde «%s» non é válida."
@@ -1031,7 +1413,6 @@ msgstr "WWAN"
 
 #. 7
 #: ../cli/src/network-manager.c:45
-#| msgid "WIFI-HARDWARE"
 msgid "WIMAX-HARDWARE"
 msgstr "HARDWARE-WIMAX"
 
@@ -1040,19 +1421,8 @@ msgstr "HARDWARE-WIMAX"
 msgid "WIMAX"
 msgstr "WIMAX"
 
-#: ../cli/src/network-manager.c:74
+#: ../cli/src/network-manager.c:67
 #, c-format
-#| msgid ""
-#| "Usage: nmcli nm { COMMAND | help }\n"
-#| "\n"
-#| "  COMMAND := { status | sleep | wakeup | wifi | wwan }\n"
-#| "\n"
-#| "  status\n"
-#| "  sleep\n"
-#| "  wakeup\n"
-#| "  wifi [on|off]\n"
-#| "  wwan [on|off]\n"
-#| "\n"
 msgid ""
 "Usage: nmcli nm { COMMAND | help }\n"
 "\n"
@@ -1070,9 +1440,9 @@ msgid ""
 msgstr ""
 "Uso: nmcli nm { ORDE | help }\n"
 "\n"
-"  COMANDO := { status | enable | sleep | wifi | wwan | wimax }\n"
+"  ORDE := { status | enable | sleep | wifi | wwan | wimax }\n"
 "\n"
-"  COMANDO := { status | enable | sleep | wifi | wwan }\n"
+"  ORDE := { status | enable | sleep | wifi | wwan }\n"
 "\n"
 "  status\n"
 "  enable [true|false]\n"
@@ -1082,166 +1452,144 @@ msgstr ""
 "  wimax [on|off]\n"
 "\n"
 
-#: ../cli/src/network-manager.c:103
+#: ../cli/src/network-manager.c:96
 msgid "asleep"
 msgstr "dormido"
 
-#: ../cli/src/network-manager.c:105
+#: ../cli/src/network-manager.c:98
 msgid "connecting"
 msgstr "conectando"
 
-#: ../cli/src/network-manager.c:107
+#: ../cli/src/network-manager.c:100
 msgid "connected (local only)"
 msgstr "conectado (só local)"
 
-#: ../cli/src/network-manager.c:109
-#| msgid "connected"
+#: ../cli/src/network-manager.c:102
 msgid "connected (site only)"
 msgstr "conectado (só o sitio)"
 
-#: ../cli/src/network-manager.c:113
-#| msgid "connecting"
+#: ../cli/src/network-manager.c:106
 msgid "disconnecting"
 msgstr "desconectando"
 
-#: ../cli/src/network-manager.c:153
+#: ../cli/src/network-manager.c:146
 #, c-format
 msgid "Error: 'nm status': %s"
 msgstr "Erro:«'nm status»: %s"
 
-#: ../cli/src/network-manager.c:155
+#: ../cli/src/network-manager.c:148
 #, c-format
 msgid "Error: 'nm status': %s; allowed fields: %s"
 msgstr "Erro: 'nm status': %s; campos permitidos: %s"
 
 #. create NMClient
-#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:169
-#: ../cli/src/network-manager.c:170 ../cli/src/network-manager.c:171
-#: ../cli/src/network-manager.c:172 ../cli/src/network-manager.c:174
-#: ../cli/src/network-manager.c:175 ../cli/src/network-manager.c:296
-#: ../cli/src/network-manager.c:351 ../cli/src/network-manager.c:389
-#: ../cli/src/network-manager.c:428
+#: ../cli/src/network-manager.c:161 ../cli/src/network-manager.c:162
+#: ../cli/src/network-manager.c:163 ../cli/src/network-manager.c:164
+#: ../cli/src/network-manager.c:165 ../cli/src/network-manager.c:167
+#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:289
+#: ../cli/src/network-manager.c:344 ../cli/src/network-manager.c:382
+#: ../cli/src/network-manager.c:421
 msgid "enabled"
 msgstr "activado"
 
-#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:169
-#: ../cli/src/network-manager.c:170 ../cli/src/network-manager.c:171
-#: ../cli/src/network-manager.c:172 ../cli/src/network-manager.c:174
-#: ../cli/src/network-manager.c:175 ../cli/src/network-manager.c:296
-#: ../cli/src/network-manager.c:351 ../cli/src/network-manager.c:389
-#: ../cli/src/network-manager.c:428
+#: ../cli/src/network-manager.c:161 ../cli/src/network-manager.c:162
+#: ../cli/src/network-manager.c:163 ../cli/src/network-manager.c:164
+#: ../cli/src/network-manager.c:165 ../cli/src/network-manager.c:167
+#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:289
+#: ../cli/src/network-manager.c:344 ../cli/src/network-manager.c:382
+#: ../cli/src/network-manager.c:421
 msgid "disabled"
 msgstr "desactivado"
 
-#: ../cli/src/network-manager.c:188
+#: ../cli/src/network-manager.c:181
 msgid "NetworkManager status"
 msgstr "Estado de NetworkManager"
 
 #. Print header
-#: ../cli/src/network-manager.c:191
+#: ../cli/src/network-manager.c:184
 msgid "running"
 msgstr "en execución"
 
-#: ../cli/src/network-manager.c:191
+#: ../cli/src/network-manager.c:184
 msgid "not running"
 msgstr "non está a executarse"
 
-#: ../cli/src/network-manager.c:222 ../cli/src/utils.c:322
+#: ../cli/src/network-manager.c:215 ../cli/src/utils.c:425
 #, c-format
 msgid "Error: Couldn't connect to system bus: %s"
 msgstr "Erro: Non se puido conectar ao bus do sistema: %s"
 
-#: ../cli/src/network-manager.c:233
+#: ../cli/src/network-manager.c:226
 #, c-format
 msgid "Error: Couldn't create D-Bus object proxy."
 msgstr "Erro: Non se puido crear o proxy do obxecto D-Bus."
 
-#: ../cli/src/network-manager.c:239
+#: ../cli/src/network-manager.c:232
 #, c-format
 msgid "Error in sleep: %s"
 msgstr "Erro ao durmir: %s"
 
-#: ../cli/src/network-manager.c:283 ../cli/src/network-manager.c:338
-#: ../cli/src/network-manager.c:376 ../cli/src/network-manager.c:415
+#: ../cli/src/network-manager.c:276 ../cli/src/network-manager.c:331
+#: ../cli/src/network-manager.c:369 ../cli/src/network-manager.c:408
 #, c-format
 msgid "Error: '--fields' value '%s' is not valid here; allowed fields: %s"
 msgstr "Erro: '--fields' valor '%s' non é válido aquí; campos permitidos: %s"
 
-#: ../cli/src/network-manager.c:291
+#: ../cli/src/network-manager.c:284
 msgid "Networking enabled"
 msgstr "Rede activada"
 
-#: ../cli/src/network-manager.c:307
+#: ../cli/src/network-manager.c:300
 #, c-format
 msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'."
 msgstr ""
 "Erro: o parámetro 'activar' é incorrecto: '%s'; use 'verdadeiro' ou 'falso'."
 
-#: ../cli/src/network-manager.c:317
+#: ../cli/src/network-manager.c:310
 #, c-format
 msgid "Error: Sleeping status is not exported by NetworkManager."
 msgstr "Erro: O status dormente non foi exportado polo NetworkManager."
 
-#: ../cli/src/network-manager.c:325
+#: ../cli/src/network-manager.c:318
 #, c-format
 msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'."
 msgstr ""
 "Erro: O parámetro 'durmir' é incorrecto: '%s'; use 'verdadeiro' ou 'falso'."
 
-#: ../cli/src/network-manager.c:346
+#: ../cli/src/network-manager.c:339
 msgid "WiFi enabled"
 msgstr "WiFi activada"
 
-#: ../cli/src/network-manager.c:362
+#: ../cli/src/network-manager.c:355
 #, c-format
 msgid "Error: invalid 'wifi' parameter: '%s'."
 msgstr "Erro: parámetro «wifi» non válido: «%s»."
 
-#: ../cli/src/network-manager.c:384
+#: ../cli/src/network-manager.c:377
 msgid "WWAN enabled"
 msgstr "WWAN activada"
 
-#: ../cli/src/network-manager.c:400
+#: ../cli/src/network-manager.c:393
 #, c-format
 msgid "Error: invalid 'wwan' parameter: '%s'."
 msgstr "Erro: parámetro «wwan» non válido: «%s»."
 
-#: ../cli/src/network-manager.c:423
-#| msgid "WiFi enabled"
+#: ../cli/src/network-manager.c:416
 msgid "WiMAX enabled"
 msgstr "WiMAX activado"
 
-#: ../cli/src/network-manager.c:439
+#: ../cli/src/network-manager.c:432
 #, c-format
-#| msgid "Error: invalid 'wifi' parameter: '%s'."
 msgid "Error: invalid 'wimax' parameter: '%s'."
 msgstr "Erro: parámetro «wimax» non válido: «%s»."
 
-#: ../cli/src/network-manager.c:452
+#: ../cli/src/network-manager.c:445
 #, c-format
 msgid "Error: 'nm' command '%s' is not valid."
 msgstr "Erro: «nm» a orde «%s» non é válida."
 
 #: ../cli/src/nmcli.c:64
 #, c-format
-#| msgid ""
-#| "Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n"
-#| "\n"
-#| "OPTIONS\n"
-#| "  -t[erse]                                   terse output\n"
-#| "  -p[retty]                                  pretty output\n"
-#| "  -m[ode] tabular|multiline                  output mode\n"
-#| "  -f[ields] <field1,field2,...>|all|common   specify fields to output\n"
-#| "  -e[scape] yes|no                           escape columns separators in "
-#| "values\n"
-#| "  -v[ersion]                                 show program version\n"
-#| "  -h[elp]                                    print this help\n"
-#| "\n"
-#| "OBJECT\n"
-#| "  nm          NetworkManager status\n"
-#| "  con         NetworkManager connections\n"
-#| "  dev         devices managed by NetworkManager\n"
-#| "\n"
 msgid ""
 "Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n"
 "\n"
@@ -1347,117 +1695,156 @@ msgstr "Erro: non é posíbel crear o obxecto NMClient."
 msgid "Success"
 msgstr "Éxito"
 
-#: ../cli/src/settings.c:423
+#: ../cli/src/settings.c:497
 #, c-format
 msgid "%d (hex-ascii-key)"
 msgstr "%d (hex-ascii-key)"
 
-#: ../cli/src/settings.c:425
+#: ../cli/src/settings.c:499
 #, c-format
 msgid "%d (104/128-bit passphrase)"
 msgstr "%d (frase de paso 104/128-bit)"
 
-#: ../cli/src/settings.c:428
+#: ../cli/src/settings.c:502
 #, c-format
 msgid "%d (unknown)"
 msgstr "%d (descoñecido)"
 
-#: ../cli/src/settings.c:454
+#: ../cli/src/settings.c:528
 msgid "0 (unknown)"
 msgstr "0 (descoñecido)"
 
-#: ../cli/src/settings.c:460
+#: ../cli/src/settings.c:534
 msgid "any, "
 msgstr "calquera, "
 
-#: ../cli/src/settings.c:462
+#: ../cli/src/settings.c:536
 msgid "900 MHz, "
 msgstr "900 MHz, "
 
-#: ../cli/src/settings.c:464
+#: ../cli/src/settings.c:538
 msgid "1800 MHz, "
 msgstr "1800 MHz, "
 
-#: ../cli/src/settings.c:466
+#: ../cli/src/settings.c:540
 msgid "1900 MHz, "
 msgstr "1900 MHz, "
 
-#: ../cli/src/settings.c:468
+#: ../cli/src/settings.c:542
 msgid "850 MHz, "
 msgstr "850 MHz, "
 
-#: ../cli/src/settings.c:470
+#: ../cli/src/settings.c:544
 msgid "WCDMA 3GPP UMTS 2100 MHz, "
 msgstr "WCDMA 3GPP UMTS 2100 MHz, "
 
-#: ../cli/src/settings.c:472
+#: ../cli/src/settings.c:546
 msgid "WCDMA 3GPP UMTS 1800 MHz, "
 msgstr "WCDMA 3GPP UMTS 1800 MHz, "
 
-#: ../cli/src/settings.c:474
+#: ../cli/src/settings.c:548
 msgid "WCDMA 3GPP UMTS 1700/2100 MHz, "
 msgstr "WCDMA 3GPP UMTS 1700/2100 MHz, "
 
-#: ../cli/src/settings.c:476
+#: ../cli/src/settings.c:550
 msgid "WCDMA 3GPP UMTS 800 MHz, "
 msgstr "WCDMA 3GPP UMTS 800 MHz, "
 
-#: ../cli/src/settings.c:478
+#: ../cli/src/settings.c:552
 msgid "WCDMA 3GPP UMTS 850 MHz, "
 msgstr "WCDMA 3GPP UMTS 850 MHz, "
 
-#: ../cli/src/settings.c:480
+#: ../cli/src/settings.c:554
 msgid "WCDMA 3GPP UMTS 900 MHz, "
 msgstr "WCDMA 3GPP UMTS 900 MHz, "
 
-#: ../cli/src/settings.c:482
+#: ../cli/src/settings.c:556
 msgid "WCDMA 3GPP UMTS 1700 MHz, "
 msgstr "WCDMA 3GPP UMTS 1700 MHz, "
 
-#: ../cli/src/settings.c:566 ../cli/src/settings.c:732
+#: ../cli/src/settings.c:558
+#| msgid "WCDMA 3GPP UMTS 900 MHz, "
+msgid "WCDMA 3GPP UMTS 1900 MHz, "
+msgstr "WCDMA 3GPP UMTS 1900 MHz, "
+
+#: ../cli/src/settings.c:560
+#| msgid "WCDMA 3GPP UMTS 2100 MHz, "
+msgid "WCDMA 3GPP UMTS 2600 MHz, "
+msgstr "WCDMA 3GPP UMTS 2600 MHz, "
+
+#: ../cli/src/settings.c:578
+msgid "0 (NONE)"
+msgstr "0 (NINGÚN)"
+
+#: ../cli/src/settings.c:584
+msgid "REORDER_HEADERS, "
+msgstr "REORDER_HEADERS, "
+
+#: ../cli/src/settings.c:586
+msgid "GVRP, "
+msgstr "GVRP, "
+
+#: ../cli/src/settings.c:588
+msgid "LOOSE_BINDING, "
+msgstr "LOOSE_BINDING, "
+
+#: ../cli/src/settings.c:730 ../cli/src/settings.c:926
+#: ../cli/src/settings.c:1630
 msgid "auto"
 msgstr "automático"
 
-#: ../cli/src/settings.c:727 ../cli/src/settings.c:730
-#: ../cli/src/settings.c:731 ../cli/src/utils.c:176
+#: ../cli/src/settings.c:920 ../cli/src/settings.c:923
+#: ../cli/src/settings.c:924 ../cli/src/utils.c:247
 msgid "not set"
 msgstr "non definido"
 
-#: ../cli/src/utils.c:128
+#: ../cli/src/utils.c:103
+#, c-format
+#| msgid "%s: error converting IP4 address 0x%X"
+msgid "Error converting IP4 address '0x%X' to text form"
+msgstr "Produciuse un erro ao converter o enderezo IPv4 «0x%X» á formato texto"
+
+#: ../cli/src/utils.c:131
+#, c-format
+#| msgid "%s: error converting IP4 address 0x%X"
+msgid "Error converting IP6 address '%s' to text form"
+msgstr "Produciuse un erro ao converter o enderezo IPv6 «%s» á formato texto"
+
+#: ../cli/src/utils.c:200
 #, c-format
 msgid "field '%s' has to be alone"
 msgstr "o campo «%s» ten que estar só"
 
-#: ../cli/src/utils.c:131
+#: ../cli/src/utils.c:203
 #, c-format
 msgid "invalid field '%s'"
 msgstr "campo «%s» non válido"
 
-#: ../cli/src/utils.c:150
+#: ../cli/src/utils.c:222
 #, c-format
 msgid "Option '--terse' requires specifying '--fields'"
 msgstr "A opcións «--terse» require que especifique «--fields»"
 
-#: ../cli/src/utils.c:154
+#: ../cli/src/utils.c:226
 #, c-format
 msgid "Option '--terse' requires specific '--fields' option values , not '%s'"
 msgstr ""
 "A opción «--terse» require que especifique os valores da opción «--fields», "
 "non «%s»"
 
-#: ../cli/src/utils.c:333
+#: ../cli/src/utils.c:436
 #, c-format
 msgid "Error: Couldn't create D-Bus object proxy for org.freedesktop.DBus"
 msgstr ""
 "Erro: non é posíbel crear un proxy de obxecto D-Bus para org.freedesktop."
 "DBus."
 
-#: ../cli/src/utils.c:341
+#: ../cli/src/utils.c:444
 #, c-format
 msgid "Error: NameHasOwner request failed: %s"
 msgstr "Erro: produciuse un fallo na resposta «NameHasOwner»: %s"
 
-#: ../cli/src/utils.c:386
+#: ../cli/src/utils.c:489
 #, c-format
 msgid ""
 "Warning: nmcli (%s) and NetworkManager (%s) versions don't match. Use --"
@@ -1466,7 +1853,7 @@ msgstr ""
 "Advertencia: as versións de nmcli (%s) e de NetworkManager (%s) non "
 "coinciden. Use «--nocheck» para evitar o aviso.\n"
 
-#: ../cli/src/utils.c:395
+#: ../cli/src/utils.c:498
 #, c-format
 msgid ""
 "Error: nmcli (%s) and NetworkManager (%s) versions don't match. Force "
@@ -1536,12 +1923,10 @@ msgstr ""
 "Produciuse un fallo ao buscar a etiqueta de finalización «%s» de PKCS#8."
 
 #: ../libnm-util/crypto.c:312
-#| msgid "Not enough memory to store file data."
 msgid "Not enough memory to store private key data."
 msgstr "No hai memoria dabondo para almacenar os datos da chave privada."
 
 #: ../libnm-util/crypto.c:317
-#| msgid "Failed to decrypt the private key."
 msgid "Failed to decode PKCS#8 private key."
 msgstr "Produciuse un erro ao descifrar a chave privada PKCS#8."
 
@@ -1589,13 +1974,11 @@ msgstr "Non foi posíbel determinar o tipo de chave privada"
 
 #: ../libnm-util/crypto.c:597
 #, c-format
-#| msgid "PEM certificate '%s' had no end tag '%s'."
 msgid "PEM certificate had no start tag '%s'."
 msgstr "O certificado PEM non ten etiqueta de inicio «%s»."
 
 #: ../libnm-util/crypto.c:606
 #, c-format
-#| msgid "PEM certificate '%s' had no end tag '%s'."
 msgid "PEM certificate had no end tag '%s'."
 msgstr "O certificado PEM non ten etiqueta de finalización «%s»."
 
@@ -1713,13 +2096,11 @@ msgstr "Non foi posíbel verificar o ficheiro PKCS#12: %s"
 
 #: ../libnm-util/crypto_gnutls.c:460
 #, c-format
-#| msgid "Couldn't initialize PKCS#12 decoder: %s"
 msgid "Couldn't initialize PKCS#8 decoder: %s"
 msgstr "Non foi posíbel iniciar o decodificador PKCS#8: %s"
 
 #: ../libnm-util/crypto_gnutls.c:483
 #, c-format
-#| msgid "Couldn't decode PKCS#12 file: %s"
 msgid "Couldn't decode PKCS#8 file: %s"
 msgstr "Non foi posíbel decodificar o ficheiro PKCS#8: %s"
 
@@ -1834,159 +2215,288 @@ msgstr "Non foi posíbel verficar o ficheiro PKCS#12: %d"
 msgid "Could not generate random data."
 msgstr "Non foi posíbel xerar datos aleatorios."
 
-#: ../libnm-util/nm-utils.c:2000
+#: ../libnm-util/nm-utils.c:2034
 #, c-format
 msgid "Not enough memory to make encryption key."
 msgstr "Sen memoria abondo para crear a chave de cifrado."
 
-#: ../libnm-util/nm-utils.c:2110
+#: ../libnm-util/nm-utils.c:2144
 msgid "Could not allocate memory for PEM file creation."
 msgstr "Non foi posíbel asignar memoria para a creación do ficheiro PEM,"
 
-#: ../libnm-util/nm-utils.c:2122
+#: ../libnm-util/nm-utils.c:2156
 #, c-format
 msgid "Could not allocate memory for writing IV to PEM file."
 msgstr "Non foi posíbel asignar memoria para escribir IV no ficheiro PEM."
 
-#: ../libnm-util/nm-utils.c:2134
+#: ../libnm-util/nm-utils.c:2168
 #, c-format
 msgid "Could not allocate memory for writing encrypted key to PEM file."
 msgstr ""
 "Non foi posíbel asignar memoria para escribir a chave cifrada no ficheiro "
 "PEM."
 
-#: ../libnm-util/nm-utils.c:2153
+#: ../libnm-util/nm-utils.c:2187
 #, c-format
 msgid "Could not allocate memory for PEM file data."
 msgstr "Non foi posíbel asignar memoria para os datos do ficheiro PEM."
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:1
-msgid "Allow control of network connections"
-msgstr "Permitir o control das conexións de rede"
+msgid "Enable or disable system networking"
+msgstr "Activar ou desactivar a rede do sistema"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:2
-msgid "Connection sharing via a protected WiFi network"
-msgstr "Conexión compartida a través dunha rede WiFi protexida"
+msgid "System policy prevents enabling or disabling system networking"
+msgstr ""
+"A normativa do sistema evita a activación ou desactivación da rede do sistema"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:3
-msgid "Connection sharing via an open WiFi network"
-msgstr "Conexión compartida a través dunha rede WiFi aberta"
+msgid ""
+"Put NetworkManager to sleep or wake it up (should only be used by system "
+"power management)"
+msgstr ""
+"Poñer o NetworkManager en suspensión e espertalo (só debe ser usado polo "
+"sistema de xestión de rede)"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:4
-msgid "Enable or disable WiFi devices"
-msgstr "Activar ou desactivar os dispositivos WiFi"
+msgid "System policy prevents putting NetworkManager to sleep or waking it up"
+msgstr ""
+"A normativa do sistema evita poñer o NetworkManager en suspensión ou "
+"espertalo"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:5
-#| msgid "Enable or disable mobile broadband devices"
-msgid "Enable or disable WiMAX mobile broadband devices"
-msgstr "Activar ou desactivar os dispositivos de banda larga móbil WIMAX"
+msgid "Enable or disable WiFi devices"
+msgstr "Activar ou desactivar os dispositivos WiFi"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:6
-msgid "Enable or disable mobile broadband devices"
-msgstr "Activar ou desactivar os dispositivos de banda ancha móbiles"
+msgid "System policy prevents enabling or disabling WiFi devices"
+msgstr ""
+"A normativa do sistema evita a activación e desactivación dos dispositivos "
+"WiFi"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:7
-msgid "Enable or disable system networking"
-msgstr "Activar ou desactivar a rede do sistema"
+msgid "Enable or disable mobile broadband devices"
+msgstr "Activar ou desactivar os dispositivos de banda ancha móbiles"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:8
-#| msgid "Modify system connections"
-msgid "Modify network connections for all users"
-msgstr "Modificar as conexións de rede para tódolos usuarios"
+msgid "System policy prevents enabling or disabling mobile broadband devices"
+msgstr ""
+"A normativa do sistema evita a activación ou desactivación dos dispositivos "
+"de banda ancha."
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:9
-msgid "Modify persistent system hostname"
-msgstr "Modificar o nome persistente do anfitrión do sistema"
+msgid "Enable or disable WiMAX mobile broadband devices"
+msgstr "Activar ou desactivar os dispositivos de banda larga móbil WIMAX"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:10
-#| msgid "Allow control of network connections"
-msgid "Modify personal network connections"
-msgstr "Modificar as conexións de rede persoais"
-
-#: ../policy/org.freedesktop.NetworkManager.policy.in.h:11
 msgid ""
-"Put NetworkManager to sleep or wake it up (should only be used by system "
-"power management)"
+"System policy prevents enabling or disabling WiMAX mobile broadband devices"
 msgstr ""
-"Poñer o NetworkManager en suspensión e espertalo (só debe ser usado polo "
-"sistema de xestión de rede)"
+"A normativa do sistema evita activar ou desactivar os dispositivos de banda "
+"larga móbil WIMAX."
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:11
+msgid "Allow control of network connections"
+msgstr "Permitir o control das conexións de rede"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:12
 msgid "System policy prevents control of network connections"
 msgstr "A normativa do sistema evita o control das conexións de rede"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:13
-msgid "System policy prevents enabling or disabling WiFi devices"
-msgstr ""
-"A normativa do sistema evita a activación e desactivación dos dispositivos "
-"WiFi"
+msgid "Connection sharing via a protected WiFi network"
+msgstr "Conexión compartida a través dunha rede WiFi protexida"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:14
-#| msgid ""
-#| "System policy prevents enabling or disabling mobile broadband devices"
-msgid ""
-"System policy prevents enabling or disabling WiMAX mobile broadband devices"
+msgid "System policy prevents sharing connections via a protected WiFi network"
 msgstr ""
-"A normativa do sistema evita activar ou desactivar os dispositivos de banda "
-"larga móbil WIMAX."
+"A política do sistema impide compartir conexións a través dunha rede WiFi "
+"protexida"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:15
-msgid "System policy prevents enabling or disabling mobile broadband devices"
-msgstr ""
-"A normativa do sistema evita a activación ou desactivación dos dispositivos "
-"de banda ancha."
+msgid "Connection sharing via an open WiFi network"
+msgstr "Conexión compartida a través dunha rede WiFi aberta"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:16
-msgid "System policy prevents enabling or disabling system networking"
+msgid "System policy prevents sharing connections via an open WiFi network"
 msgstr ""
-"A normativa do sistema evita a activación ou desactivación da rede do sistema"
+"A política do sistema impide compartir conexións a través dunha rede WiFi "
+"aberta"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:17
-#| msgid "System policy prevents modification of system settings"
-msgid "System policy prevents modification of network settings for all users"
-msgstr ""
-"A política do sistema impide a modificación da configuración da rede para "
-"tódolos usuarios"
+msgid "Modify personal network connections"
+msgstr "Modificar as conexións de rede persoais"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:18
-#| msgid "System policy prevents modification of system settings"
 msgid "System policy prevents modification of personal network settings"
 msgstr ""
 "A política do sistema impide a modificación da configuración persoal da rede"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:19
-msgid "System policy prevents modification of the persistent system hostname"
-msgstr ""
-"A política do sistema impide a modificación do nome do anfitrión do sistema"
+msgid "Modify network connections for all users"
+msgstr "Modificar as conexións de rede para tódolos usuarios"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:20
-msgid "System policy prevents putting NetworkManager to sleep or waking it up"
+msgid "System policy prevents modification of network settings for all users"
 msgstr ""
-"A normativa do sistema evita poñer o NetworkManager en suspensión ou "
-"espertalo"
+"A política do sistema impide a modificación da configuración da rede para "
+"tódolos usuarios"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:21
-msgid "System policy prevents sharing connections via a protected WiFi network"
-msgstr ""
-"A política do sistema impide compartir conexións a través dunha rede WiFi "
-"protexida"
+msgid "Modify persistent system hostname"
+msgstr "Modificar o nome persistente do anfitrión do sistema"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:22
-msgid "System policy prevents sharing connections via an open WiFi network"
+msgid "System policy prevents modification of the persistent system hostname"
 msgstr ""
-"A política do sistema impide compartir conexións a través dunha rede WiFi "
-"aberta"
+"A política do sistema impide a modificación do nome do anfitrión do sistema"
+
+#: ../src/main.c:143
+#, c-format
+#| msgid "Failed to initialize the crypto engine: %d."
+msgid "Failed to initialize SIGTERM pipe: %d"
+msgstr "Produciuse un fallo ao inicializar a tubería SIGTERM: %d"
+
+#: ../src/main.c:174
+#, c-format
+msgid "Opening %s failed: %s\n"
+msgstr "A apertura de %s fallou: %s\n"
+
+#: ../src/main.c:180
+#, c-format
+msgid "Writing to %s failed: %s\n"
+msgstr "A escritura de %s fallou: %s\n"
+
+#: ../src/main.c:185
+#, c-format
+msgid "Closing %s failed: %s\n"
+msgstr "O peche de %s fallou: %s\n"
 
-#: ../src/main.c:525
+#: ../src/main.c:228
+#, c-format
+#| msgid "Error: NetworkManager is not running."
+msgid "NetworkManager is already running (pid %ld)\n"
+msgstr "NetworkManager xa está executándose (pid %ld)\n"
+
+#: ../src/main.c:368
+#| msgid "NetworkManager status"
+msgid "Print NetworkManager version and exit"
+msgstr "Imprimir a versión de NetworkManager e saír"
+
+#: ../src/main.c:369
+msgid "Don't become a daemon"
+msgstr "Non converter en daemon"
+
+#: ../src/main.c:370
+msgid "Make all warnings fatal"
+msgstr "Facer todos os avisos fatais"
+
+#: ../src/main.c:371
+msgid "Specify the location of a PID file"
+msgstr "Especifique a localización do ficheiro PID"
+
+#: ../src/main.c:371
+msgid "filename"
+msgstr "nome-de-ficheiro"
+
+#: ../src/main.c:372
+msgid "State file location"
+msgstr "Localización do ficheiro de estado"
+
+#: ../src/main.c:372
+msgid "/path/to/state.file"
+msgstr "/ruta/ao/ficheiro-de.configuración"
+
+#: ../src/main.c:373
+msgid "Config file location"
+msgstr "Localización do ficheiro de configuración"
+
+#: ../src/main.c:373
+msgid "/path/to/config.file"
+msgstr "/ruta/ao/ficheiro-de.configuración"
+
+#: ../src/main.c:374
+msgid "List of plugins separated by ','"
+msgstr "Lista de engadidos separados por «,»"
+
+#: ../src/main.c:374
+msgid "plugin1,plugin2"
+msgstr "engadido1,engadido2"
+
+#. Translators: Do not translate the values in the square brackets
+#: ../src/main.c:376
+msgid "Log level: one of [ERR, WARN, INFO, DEBUG]"
+msgstr "Nivel de rexistroÑ un de [ERR, WARN, INFO, DEBUG]"
+
+#. Translators: Do not translate the values in the square brackets
+#: ../src/main.c:379
+msgid ""
+"Log domains separated by ',': any combination of\n"
+"                                          [NONE,HW,RFKILL,ETHER,WIFI,BT,MB,"
+"DHCP4,DHCP6,PPP,\n"
+"                                           WIFI_SCAN,IP4,IP6,AUTOIP4,DNS,VPN,"
+"SHARING,SUPPLICANT,\n"
+"                                           AGENTS,SETTINGS,SUSPEND,CORE,"
+"DEVICE,OLPC,WIMAX,\n"
+"                                           INFINIBAND,FIREWALL]"
+msgstr ""
+"Dominios de rexistro separados por ',': calquera combinación de\n"
+"                                          [NONE,HW,RFKILL,ETHER,WIFI,BT,MB,"
+"DHCP4,DHCP6,PPP,\n"
+"                                           WIFI_SCAN,IP4,IP6,AUTOIP4,DNS,VPN,"
+"SHARING,SUPPLICANT,\n"
+"                                           AGENTS,SETTINGS,SUSPEND,CORE,"
+"DEVICE,OLPC,WIMAX,\n"
+"                                           INFINIBAND,FIREWALL]"
+
+#: ../src/main.c:392
+#, c-format
+msgid "GModules are not supported on your platform!\n"
+msgstr "GModules non admite a súa plataforma!\n"
+
+#: ../src/main.c:411
+msgid ""
+"NetworkManager monitors all network connections and automatically\n"
+"chooses the best connection to use.  It also allows the user to\n"
+"specify wireless access points which wireless cards in the computer\n"
+"should associate with."
+msgstr ""
+"NetworkManager monitoriza todas as redes e selecciona automaticamente\n"
+"a mellor conexión para o seu uso. Tamén lle permite ao usuario\n"
+"especificar puntos de accceso sen fíos aos que se asociarán as \n"
+"tarxetas sen fíos neste computador."
+
+#: ../src/main.c:417
 #, c-format
 msgid "Invalid option.  Please use --help to see a list of valid options.\n"
 msgstr "Opción incorrecta. Use --help para ver a lista de opcións válidas.\n"
 
-#: ../src/main.c:606
+#: ../src/main.c:427
+#, c-format
+msgid "You must be root to run NetworkManager!\n"
+msgstr "Debe ser superusuario para executar NetworkManager!\n"
+
+#: ../src/main.c:448
+#, c-format
+#| msgid "Failed to set IV for encryption: %s / %s."
+msgid "Failed to read configuration: (%d) %s\n"
+msgstr "Produciuse un fallo ao ler a configuración: (%d) %s\n"
+
+#: ../src/main.c:459
 #, c-format
 msgid "%s.  Please use --help to see a list of valid options.\n"
 msgstr "%s. Use --help para ver a lista das opcións válidas.\n"
 
+#: ../src/main.c:466
+#, c-format
+msgid "State file %s parsing failed: (%d) %s\n"
+msgstr "Produciuse un fallo ao analizar o ficheiro de estado %s: (%d) %s\n"
+
+#: ../src/main.c:483
+#, c-format
+msgid "Could not daemonize: %s [error %u]\n"
+msgstr "Non foi posíbel crear o daemon: %s [error %u]\n"
+
 #: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:62
 msgid "# Created by NetworkManager\n"
 msgstr "# Creado por NetworkManager\n"
@@ -2000,19 +2510,19 @@ msgstr ""
 "# Fusionado desde %s\n"
 "\n"
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:284
+#: ../src/dhcp-manager/nm-dhcp-manager.c:266
 msgid "no usable DHCP client could be found."
 msgstr "non se encontrou un cliente de DHCP usábel."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:293
+#: ../src/dhcp-manager/nm-dhcp-manager.c:275
 msgid "'dhclient' could be found."
 msgstr "Non foi posíbel encontrar «dhclient»."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:303
+#: ../src/dhcp-manager/nm-dhcp-manager.c:285
 msgid "'dhcpcd' could be found."
 msgstr "Non foi posíbel encontrar «dhcpcd»."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:311
+#: ../src/dhcp-manager/nm-dhcp-manager.c:293
 #, c-format
 msgid "unsupported DHCP client '%s'"
 msgstr "cliente DHCP «%s» non compatíbel"
@@ -2025,115 +2535,142 @@ msgstr "NOTE: o importador libc non permite máis de 3 nomes de servidores."
 msgid "The nameservers listed below may not be recognized."
 msgstr "Os nomes de servidores listados a seguir poden non ser recoñecidos"
 
-#: ../src/logging/nm-logging.c:149
+#: ../src/logging/nm-logging.c:130
 #, c-format
 msgid "Unknown log level '%s'"
 msgstr "Nivel de rexistro «%s» descoñecido"
 
-#: ../src/logging/nm-logging.c:174
+#: ../src/logging/nm-logging.c:155
 #, c-format
 msgid "Unknown log domain '%s'"
 msgstr "Dominio de rexistro «%s» descoñecido"
 
-#: ../src/modem-manager/nm-modem-cdma.c:296 ../src/nm-device-bt.c:355
+#: ../src/modem-manager/nm-modem-cdma.c:279 ../src/nm-device-bt.c:325
 #, c-format
-#| msgid "connection failed"
 msgid "CDMA connection %d"
 msgstr "Conexión CDMA %d"
 
-#: ../src/modem-manager/nm-modem-gsm.c:499 ../src/nm-device-bt.c:351
+#: ../src/modem-manager/nm-modem-gsm.c:512 ../src/nm-device-bt.c:321
 #, c-format
-#| msgid "connection failed"
 msgid "GSM connection %d"
 msgstr "Conexión GSM %d"
 
-#: ../src/nm-device-bt.c:326
+#: ../src/nm-device-bond.c:192
+#, c-format
+#| msgid "PPPoE connection %d"
+msgid "Bond connection %d"
+msgstr "Conexión Bond %d"
+
+#: ../src/nm-device-bt.c:296
 #, c-format
-#| msgid "VPN connection failed"
 msgid "PAN connection %d"
 msgstr "Conexión PAN %d"
 
-#: ../src/nm-device-bt.c:359
+#: ../src/nm-device-bt.c:329
 #, c-format
-#| msgid "VPN connection failed"
 msgid "DUN connection %d"
 msgstr "Conexión DUN %d"
 
-#: ../src/nm-device-ethernet.c:1724
+#: ../src/nm-device-ethernet.c:1326
 #, c-format
-#| msgid "VPN connection failed"
 msgid "PPPoE connection %d"
 msgstr "Conexión PPPoE %d"
 
-#: ../src/nm-device-ethernet.c:1724 ../src/settings/nm-settings-utils.c:50
+#: ../src/nm-device-ethernet.c:1326 ../src/settings/nm-settings-utils.c:50
 #, c-format
-#| msgid "Active connections"
 msgid "Wired connection %d"
 msgstr "Conexión cableada %d"
 
-#: ../src/nm-device-olpc-mesh.c:393
+#: ../src/nm-device-infiniband.c:303
+#, c-format
+#| msgid "Wired connection %d"
+msgid "InfiniBand connection %d"
+msgstr "Conexión InfiniBand %d"
+
+#: ../src/nm-device-olpc-mesh.c:293
 #, c-format
 msgid "Mesh %d"
 msgstr "Malla %d"
 
-#: ../src/nm-manager.c:663
+#: ../src/nm-device-vlan.c:362
+#, c-format
+#| msgid "PAN connection %d"
+msgid "VLAN connection %d"
+msgstr "Conexión VLAN %d"
+
+#: ../src/nm-manager.c:661
 #, c-format
-#| msgid "VPN connection failed"
 msgid "VPN connection %d"
 msgstr "Conexión VPN %d"
 
-#: ../src/nm-netlink-monitor.c:101 ../src/nm-netlink-monitor.c:234
-#: ../src/nm-netlink-monitor.c:667
+#: ../src/nm-netlink-monitor.c:148 ../src/nm-netlink-monitor.c:272
+#: ../src/nm-netlink-monitor.c:695
 #, c-format
 msgid "error processing netlink message: %s"
 msgstr "produciuse un erro procesando a mensaxe netlink: %s"
 
-#: ../src/nm-netlink-monitor.c:216
+#: ../src/nm-netlink-monitor.c:251
 msgid "error occurred while waiting for data on socket"
 msgstr "producouse un erro agardando por datos nun socket"
 
-#: ../src/nm-netlink-monitor.c:260
+#: ../src/nm-netlink-monitor.c:296
 #, c-format
 msgid "unable to connect to netlink for monitoring link status: %s"
 msgstr ""
 "non é posíbel conectar ao netlink para monitorizar o estado da lingazón: %s"
 
-#: ../src/nm-netlink-monitor.c:271
+#: ../src/nm-netlink-monitor.c:307
 #, c-format
 msgid "unable to enable netlink handle credential passing: %s"
 msgstr ""
 "non é posíbel activar a ligazón de rede para xestionar o paso de "
 "creadenciais: %s"
 
-#: ../src/nm-netlink-monitor.c:297 ../src/nm-netlink-monitor.c:360
+#: ../src/nm-netlink-monitor.c:330 ../src/nm-netlink-monitor.c:390
 #, c-format
 msgid "unable to allocate netlink handle for monitoring link status: %s"
 msgstr ""
 "non é posíbel crear o manexador netlink para monitorizar o estado da "
 "ligazón: %s"
 
-#: ../src/nm-netlink-monitor.c:385
+#: ../src/nm-netlink-monitor.c:415
 #, c-format
 msgid "unable to allocate netlink link cache for monitoring link status: %s"
 msgstr ""
 "non é posíbel asignar a ligazón á caché netlink para monitorizar o estado da "
 "ligazón: %s"
 
-#: ../src/nm-netlink-monitor.c:512
+#: ../src/nm-netlink-monitor.c:542
 #, c-format
 msgid "unable to join netlink group: %s"
 msgstr "non é posíbel unir ao grupo da ligazón de rede: %s"
 
-#: ../src/nm-netlink-monitor.c:643 ../src/nm-netlink-monitor.c:656
+#: ../src/nm-netlink-monitor.c:671 ../src/nm-netlink-monitor.c:684
 #, c-format
 msgid "error updating link cache: %s"
 msgstr "produciuse un erro ao actualizar a caché de ligazóns: %s"
 
-#: ../src/settings/plugins/ifcfg-rh/reader.c:3575
-#: ../src/settings/plugins/ifnet/connection_parser.c:51
+#: ../src/settings/plugins/ifcfg-rh/reader.c:93
 msgid "System"
 msgstr "Sistema"
 
+#: ../src/settings/plugins/ifcfg-rh/reader.c:3632
+#| msgid "on"
+msgid "Bond"
+msgstr "Bond"
+
+#~ msgid "IP4-SETTINGS"
+#~ msgstr "CONFIGURACIONS-IP4"
+
+#~ msgid "IP6-SETTINGS"
+#~ msgstr "IP4-CONFIGURACIONS"
+
+#~ msgid "PREFIX"
+#~ msgstr "PREFIXO"
+
+#~ msgid "unknown)"
+#~ msgstr "descoñecido)"
+
 #~ msgid "Auto %s"
 #~ msgstr "Auto %s"
 
diff --git a/po/id.po b/po/id.po
index 278b0e82..5e70c014 100644
--- a/po/id.po
+++ b/po/id.po
@@ -1,14 +1,14 @@
 # Indonesian translation for network-manager
 # Copyright (C) 2010 THE network-manager'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the network-manager package.
-# Andika Triwidada <andika@gmail.com>, 2010, 2011.
+# Andika Triwidada <andika@gmail.com>, 2010, 2011, 2012.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: network-manager master\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2011-05-18 03:24+0000\n"
-"PO-Revision-Date: 2011-08-14 21:21+0700\n"
+"POT-Creation-Date: 2012-05-09 03:24+0000\n"
+"PO-Revision-Date: 2012-05-09 17:12+0700\n"
 "Last-Translator: Andika Triwidada <andika@gmail.com>\n"
 "Language-Team: GNOME Indonesian Translation Team <gnome@i15n.org>\n"
 "MIME-Version: 1.0\n"
@@ -18,790 +18,935 @@ msgstr ""
 "X-Poedit-Language: Indonesian\n"
 "X-Poedit-Country: Indonesia\n"
 
-#: ../cli/src/connections.c:64
-#: ../cli/src/connections.c:78
-#: ../cli/src/devices.c:101
-#: ../cli/src/devices.c:114
+#: ../cli/src/common.c:32
+#: ../cli/src/common.c:44
+#: ../cli/src/common.c:52
+#: ../cli/src/common.c:63
+#: ../cli/src/connections.c:125
+#: ../cli/src/connections.c:159
+msgid "GROUP"
+msgstr "GROUP"
+
+#. 0
+#: ../cli/src/common.c:33
+#: ../cli/src/common.c:53
+msgid "ADDRESS"
+msgstr "ADDRESS"
+
+#. 1
+#: ../cli/src/common.c:34
+#: ../cli/src/common.c:54
+msgid "ROUTE"
+msgstr "ROUTE"
+
+#. 2
+#: ../cli/src/common.c:35
+#: ../cli/src/common.c:55
+msgid "DNS"
+msgstr "DNS"
+
+#. 3
+#: ../cli/src/common.c:36
+#: ../cli/src/common.c:56
+msgid "DOMAIN"
+msgstr "DOMAIN"
+
+#. 4
+#: ../cli/src/common.c:37
+msgid "WINS"
+msgstr "WINS"
+
+#. 0
+#: ../cli/src/common.c:45
+#: ../cli/src/common.c:64
+msgid "OPTION"
+msgstr "OPTION"
+
+#. 0
+#. used only for 'GENERAL' group listing
+#: ../cli/src/connections.c:58
+#: ../cli/src/connections.c:126
+#: ../cli/src/devices.c:103
 #: ../cli/src/devices.c:124
 #: ../cli/src/devices.c:134
-#: ../cli/src/devices.c:148
-#: ../cli/src/devices.c:162
-#: ../cli/src/devices.c:173
-#: ../cli/src/devices.c:184
-#: ../cli/src/devices.c:193
-#: ../cli/src/devices.c:202
-#: ../cli/src/devices.c:224
+#: ../cli/src/devices.c:144
+#: ../cli/src/devices.c:158
+#: ../cli/src/devices.c:172
+#: ../cli/src/devices.c:194
 msgid "NAME"
 msgstr "NAME"
 
 #. 0
-#: ../cli/src/connections.c:65
-#: ../cli/src/connections.c:79
+#. 1
+#: ../cli/src/connections.c:59
+#: ../cli/src/connections.c:127
 msgid "UUID"
 msgstr "UUID"
 
 #. 1
-#: ../cli/src/connections.c:66
-msgid "DEVICES"
-msgstr "DEVICES"
+#. 0
+#. 1
+#. 2
+#: ../cli/src/connections.c:60
+#: ../cli/src/connections.c:160
+#: ../cli/src/devices.c:69
+#: ../cli/src/devices.c:105
+#: ../cli/src/devices.c:197
+msgid "TYPE"
+msgstr "TYPE"
 
 #. 2
-#: ../cli/src/connections.c:67
-msgid "DEFAULT"
-msgstr "DEFAULT"
+#: ../cli/src/connections.c:61
+msgid "TIMESTAMP"
+msgstr "TIMESTAMP"
 
 #. 3
-#: ../cli/src/connections.c:68
-msgid "SPEC-OBJECT"
-msgstr "SPEC-OBJECT"
+#: ../cli/src/connections.c:62
+msgid "TIMESTAMP-REAL"
+msgstr "TIMESTAMP-REAL"
 
 #. 4
-#: ../cli/src/connections.c:69
-msgid "VPN"
-msgstr "VPN"
+#: ../cli/src/connections.c:63
+msgid "AUTOCONNECT"
+msgstr "AUTOCONNECT"
 
 #. 5
+#: ../cli/src/connections.c:64
+msgid "READONLY"
+msgstr "READONLY"
+
 #. 6
+#. 8
 #. 2
 #. 11
 #. 5
-#: ../cli/src/connections.c:70
-#: ../cli/src/connections.c:85
-#: ../cli/src/devices.c:69
-#: ../cli/src/devices.c:214
-#: ../cli/src/devices.c:230
+#: ../cli/src/connections.c:65
+#: ../cli/src/connections.c:134
+#: ../cli/src/devices.c:71
+#: ../cli/src/devices.c:184
+#: ../cli/src/devices.c:200
 msgid "DBUS-PATH"
 msgstr "DBUS-PATH"
 
+#. 2
+#: ../cli/src/connections.c:128
+msgid "DEVICES"
+msgstr "DEVICES"
+
+#. 3
+#. 1
+#. 6
 #. 1
+#: ../cli/src/connections.c:129
+#: ../cli/src/devices.c:70
+#: ../cli/src/devices.c:110
+#: ../cli/src/network-manager.c:39
+msgid "STATE"
+msgstr "STATE"
+
+#. 4
+#: ../cli/src/connections.c:130
+msgid "DEFAULT"
+msgstr "DEFAULT"
+
+#. 5
+#: ../cli/src/connections.c:131
+msgid "DEFAULT6"
+msgstr "DEFAULT6"
+
+#. 6
+#: ../cli/src/connections.c:132
+msgid "SPEC-OBJECT"
+msgstr "SPEC-OBJECT"
+
+#. 7
+#. 1
+#: ../cli/src/connections.c:133
+#: ../cli/src/connections.c:147
+msgid "VPN"
+msgstr "VPN"
+
+#. 9
+#: ../cli/src/connections.c:135
+msgid "CON-PATH"
+msgstr "CON-PATH"
+
+#. 10
+#: ../cli/src/connections.c:136
+msgid "ZONE"
+msgstr "ZONE"
+
+#. 11
+#: ../cli/src/connections.c:137
+msgid "MASTER-PATH"
+msgstr "MASTER-PATH"
+
+#: ../cli/src/connections.c:145
+#: ../cli/src/devices.c:80
+msgid "GENERAL"
+msgstr "GENERAL"
+
 #. 0
+#: ../cli/src/connections.c:146
+msgid "IP"
+msgstr "IP"
+
 #. 1
-#. 2
-#: ../cli/src/connections.c:80
-#: ../cli/src/devices.c:67
-#: ../cli/src/devices.c:103
-#: ../cli/src/devices.c:227
-msgid "TYPE"
-msgstr "TYPE"
+#: ../cli/src/connections.c:161
+msgid "USERNAME"
+msgstr "USERNAME"
 
 #. 2
-#: ../cli/src/connections.c:81
-msgid "TIMESTAMP"
-msgstr "TIMESTAMP"
+#: ../cli/src/connections.c:162
+msgid "GATEWAY"
+msgstr "GATEWAY"
 
 #. 3
-#: ../cli/src/connections.c:82
-msgid "TIMESTAMP-REAL"
-msgstr "TIMESTAMP-REAL"
+#: ../cli/src/connections.c:163
+msgid "BANNER"
+msgstr "BANNER"
 
 #. 4
-#: ../cli/src/connections.c:83
-msgid "AUTOCONNECT"
-msgstr "AUTOCONNECT"
+#: ../cli/src/connections.c:164
+msgid "VPN-STATE"
+msgstr "VPN-STATE"
 
 #. 5
-#: ../cli/src/connections.c:84
-msgid "READONLY"
-msgstr "READONLY"
+#: ../cli/src/connections.c:165
+msgid "CFG"
+msgstr "CFG"
 
-#: ../cli/src/connections.c:167
-#, c-format
-#| msgid ""
-#| "Usage: nmcli con { COMMAND | help }\n"
-#| "  COMMAND := { list | status | up | down }\n"
-#| "\n"
-#| "  list [id <id> | uuid <id> | system | user]\n"
-#| "  status\n"
-#| "  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--"
-#| "timeout <timeout>]\n"
-#| "  down id <id> | uuid <id>\n"
+#: ../cli/src/connections.c:186
+#, c-format
 msgid ""
 "Usage: nmcli con { COMMAND | help }\n"
-"  COMMAND := { list | status | up | down }\n"
+"  COMMAND := { list | status | up | down | delete }\n"
 "\n"
 "  list [id <id> | uuid <id>]\n"
-"  status\n"
-"  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [nsp <name>] [--nowait] [--timeout <timeout>]\n"
-"  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout <timeout>]\n"
+"  status [id <id> | uuid <id> | path <path>]\n"
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [nsp <name>] [--nowait] [--timeout <timeout>]\n"
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [--nowait] [--timeout <timeout>]\n"
 "  down id <id> | uuid <id>\n"
+"  delete id <id> | uuid <id>\n"
 msgstr ""
 "Cara pakai: nmcli con { PERINTAH | help }\n"
-"  PERINTAH := { list | status | up | down }\n"
+"  PERINTAH := { list | status | up | down | delete }\n"
 "\n"
-"  list [id <id> | uuid <id>\n"
-"  status\n"
-"  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [nsp <name>][--nowait] [--timeout <timeout>]\n"
-"  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout <timeout>]\n"
+"  list [id <id> | uuid <id>]\n"
+"  status [id <id> | uuid <id> | path <path>]\n"
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [nsp <name>] [--nowait] [--timeout <timeout>]\n"
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [--nowait] [--timeout <timeout>]\n"
 "  down id <id> | uuid <id>\n"
+"  delete id <id> | uuid <id>\n"
 
-#: ../cli/src/connections.c:220
-#: ../cli/src/connections.c:542
+#: ../cli/src/connections.c:240
+#: ../cli/src/connections.c:591
 #, c-format
 msgid "Error: 'con list': %s"
 msgstr "Galat: 'con list': %s"
 
-#: ../cli/src/connections.c:222
-#: ../cli/src/connections.c:544
+#: ../cli/src/connections.c:242
+#: ../cli/src/connections.c:593
 #, c-format
 msgid "Error: 'con list': %s; allowed fields: %s"
 msgstr "Galat: 'con list': %s; ruas yang diijinkan: %s"
 
-#: ../cli/src/connections.c:230
+#: ../cli/src/connections.c:250
 msgid "Connection details"
 msgstr "Rincian koneksi"
 
-#: ../cli/src/connections.c:417
+#: ../cli/src/connections.c:466
 msgid "never"
 msgstr "never"
 
 #. "CAPABILITIES"
 #. Print header
 #. "WIFI-PROPERTIES"
-#: ../cli/src/connections.c:418
-#: ../cli/src/connections.c:419
-#: ../cli/src/connections.c:597
-#: ../cli/src/connections.c:599
-#: ../cli/src/devices.c:509
-#: ../cli/src/devices.c:562
-#: ../cli/src/devices.c:687
-#: ../cli/src/devices.c:713
-#: ../cli/src/devices.c:714
-#: ../cli/src/devices.c:715
-#: ../cli/src/devices.c:716
-#: ../cli/src/devices.c:717
-#: ../cli/src/settings.c:520
-#: ../cli/src/settings.c:563
-#: ../cli/src/settings.c:663
-#: ../cli/src/settings.c:937
-#: ../cli/src/settings.c:938
-#: ../cli/src/settings.c:940
-#: ../cli/src/settings.c:942
-#: ../cli/src/settings.c:1067
-#: ../cli/src/settings.c:1068
-#: ../cli/src/settings.c:1069
-#: ../cli/src/settings.c:1148
-#: ../cli/src/settings.c:1149
-#: ../cli/src/settings.c:1150
-#: ../cli/src/settings.c:1151
-#: ../cli/src/settings.c:1152
-#: ../cli/src/settings.c:1153
-#: ../cli/src/settings.c:1154
-#: ../cli/src/settings.c:1155
-#: ../cli/src/settings.c:1156
-#: ../cli/src/settings.c:1157
-#: ../cli/src/settings.c:1158
-#: ../cli/src/settings.c:1159
-#: ../cli/src/settings.c:1160
-#: ../cli/src/settings.c:1235
+#: ../cli/src/connections.c:467
+#: ../cli/src/connections.c:468
+#: ../cli/src/connections.c:705
+#: ../cli/src/connections.c:706
+#: ../cli/src/connections.c:708
+#: ../cli/src/devices.c:605
+#: ../cli/src/devices.c:658
+#: ../cli/src/devices.c:772
+#: ../cli/src/devices.c:773
+#: ../cli/src/devices.c:805
+#: ../cli/src/devices.c:831
+#: ../cli/src/devices.c:832
+#: ../cli/src/devices.c:833
+#: ../cli/src/devices.c:834
+#: ../cli/src/devices.c:835
+#: ../cli/src/network-manager.c:267
+#: ../cli/src/settings.c:657
+#: ../cli/src/settings.c:727
+#: ../cli/src/settings.c:847
+#: ../cli/src/settings.c:1129
+#: ../cli/src/settings.c:1130
+#: ../cli/src/settings.c:1132
+#: ../cli/src/settings.c:1134
+#: ../cli/src/settings.c:1135
+#: ../cli/src/settings.c:1263
+#: ../cli/src/settings.c:1264
+#: ../cli/src/settings.c:1265
+#: ../cli/src/settings.c:1266
+#: ../cli/src/settings.c:1341
+#: ../cli/src/settings.c:1342
+#: ../cli/src/settings.c:1343
+#: ../cli/src/settings.c:1344
+#: ../cli/src/settings.c:1345
+#: ../cli/src/settings.c:1346
+#: ../cli/src/settings.c:1347
+#: ../cli/src/settings.c:1348
+#: ../cli/src/settings.c:1349
+#: ../cli/src/settings.c:1350
+#: ../cli/src/settings.c:1351
+#: ../cli/src/settings.c:1352
+#: ../cli/src/settings.c:1353
+#: ../cli/src/settings.c:1424
 msgid "yes"
 msgstr "ya"
 
-#: ../cli/src/connections.c:418
-#: ../cli/src/connections.c:419
-#: ../cli/src/connections.c:597
-#: ../cli/src/connections.c:599
-#: ../cli/src/devices.c:509
-#: ../cli/src/devices.c:562
-#: ../cli/src/devices.c:687
-#: ../cli/src/devices.c:713
-#: ../cli/src/devices.c:714
-#: ../cli/src/devices.c:715
-#: ../cli/src/devices.c:716
-#: ../cli/src/devices.c:717
-#: ../cli/src/settings.c:520
-#: ../cli/src/settings.c:522
-#: ../cli/src/settings.c:563
-#: ../cli/src/settings.c:663
-#: ../cli/src/settings.c:937
-#: ../cli/src/settings.c:938
-#: ../cli/src/settings.c:940
-#: ../cli/src/settings.c:942
-#: ../cli/src/settings.c:1067
-#: ../cli/src/settings.c:1068
-#: ../cli/src/settings.c:1069
-#: ../cli/src/settings.c:1148
-#: ../cli/src/settings.c:1149
-#: ../cli/src/settings.c:1150
-#: ../cli/src/settings.c:1151
-#: ../cli/src/settings.c:1152
-#: ../cli/src/settings.c:1153
-#: ../cli/src/settings.c:1154
-#: ../cli/src/settings.c:1155
-#: ../cli/src/settings.c:1156
-#: ../cli/src/settings.c:1157
-#: ../cli/src/settings.c:1158
-#: ../cli/src/settings.c:1159
-#: ../cli/src/settings.c:1160
-#: ../cli/src/settings.c:1235
+#: ../cli/src/connections.c:467
+#: ../cli/src/connections.c:468
+#: ../cli/src/connections.c:705
+#: ../cli/src/connections.c:706
+#: ../cli/src/connections.c:708
+#: ../cli/src/devices.c:605
+#: ../cli/src/devices.c:658
+#: ../cli/src/devices.c:772
+#: ../cli/src/devices.c:773
+#: ../cli/src/devices.c:805
+#: ../cli/src/devices.c:831
+#: ../cli/src/devices.c:832
+#: ../cli/src/devices.c:833
+#: ../cli/src/devices.c:834
+#: ../cli/src/devices.c:835
+#: ../cli/src/network-manager.c:269
+#: ../cli/src/settings.c:657
+#: ../cli/src/settings.c:659
+#: ../cli/src/settings.c:727
+#: ../cli/src/settings.c:847
+#: ../cli/src/settings.c:1129
+#: ../cli/src/settings.c:1130
+#: ../cli/src/settings.c:1132
+#: ../cli/src/settings.c:1134
+#: ../cli/src/settings.c:1135
+#: ../cli/src/settings.c:1263
+#: ../cli/src/settings.c:1264
+#: ../cli/src/settings.c:1265
+#: ../cli/src/settings.c:1266
+#: ../cli/src/settings.c:1341
+#: ../cli/src/settings.c:1342
+#: ../cli/src/settings.c:1343
+#: ../cli/src/settings.c:1344
+#: ../cli/src/settings.c:1345
+#: ../cli/src/settings.c:1346
+#: ../cli/src/settings.c:1347
+#: ../cli/src/settings.c:1348
+#: ../cli/src/settings.c:1349
+#: ../cli/src/settings.c:1350
+#: ../cli/src/settings.c:1351
+#: ../cli/src/settings.c:1352
+#: ../cli/src/settings.c:1353
+#: ../cli/src/settings.c:1424
 msgid "no"
 msgstr "tidak"
 
-#: ../cli/src/connections.c:493
-#| msgid "Connection details"
+#: ../cli/src/connections.c:542
 msgid "Connection list"
 msgstr "Daftar koneksi"
 
-#: ../cli/src/connections.c:506
-#: ../cli/src/connections.c:1378
-#: ../cli/src/connections.c:1393
-#: ../cli/src/connections.c:1402
-#: ../cli/src/connections.c:1412
-#: ../cli/src/connections.c:1424
-#: ../cli/src/connections.c:1519
-#: ../cli/src/devices.c:1190
-#: ../cli/src/devices.c:1200
-#: ../cli/src/devices.c:1314
-#: ../cli/src/devices.c:1321
-#: ../cli/src/devices.c:1534
-#: ../cli/src/devices.c:1541
+#: ../cli/src/connections.c:555
+#: ../cli/src/connections.c:1088
+#: ../cli/src/connections.c:1456
+#: ../cli/src/connections.c:1471
+#: ../cli/src/connections.c:1480
+#: ../cli/src/connections.c:1490
+#: ../cli/src/connections.c:1502
+#: ../cli/src/connections.c:1601
+#: ../cli/src/connections.c:1703
+#: ../cli/src/devices.c:1212
+#: ../cli/src/devices.c:1222
+#: ../cli/src/devices.c:1336
+#: ../cli/src/devices.c:1344
+#: ../cli/src/devices.c:1718
+#: ../cli/src/devices.c:1725
+#: ../cli/src/devices.c:1739
+#: ../cli/src/devices.c:1746
+#: ../cli/src/devices.c:1763
+#: ../cli/src/devices.c:1774
+#: ../cli/src/devices.c:1995
+#: ../cli/src/devices.c:2002
 #, c-format
 msgid "Error: %s argument is missing."
 msgstr "Galat: argumen %s hilang."
 
-#: ../cli/src/connections.c:519
+#: ../cli/src/connections.c:568
 #, c-format
 msgid "Error: %s - no such connection."
 msgstr "Galat: %s - koneksi tak ada."
 
-#: ../cli/src/connections.c:525
-#: ../cli/src/connections.c:1437
-#: ../cli/src/connections.c:1536
-#: ../cli/src/devices.c:987
-#: ../cli/src/devices.c:1067
-#: ../cli/src/devices.c:1214
-#: ../cli/src/devices.c:1327
-#: ../cli/src/devices.c:1547
+#: ../cli/src/connections.c:574
+#: ../cli/src/connections.c:1515
+#: ../cli/src/connections.c:1618
+#: ../cli/src/connections.c:1710
+#: ../cli/src/devices.c:1009
+#: ../cli/src/devices.c:1089
+#: ../cli/src/devices.c:1236
+#: ../cli/src/devices.c:1350
+#: ../cli/src/devices.c:1787
+#: ../cli/src/devices.c:2008
 #, c-format
 msgid "Unknown parameter: %s\n"
 msgstr "Parameter tak dikenal: %s\n"
 
-#: ../cli/src/connections.c:534
+#: ../cli/src/connections.c:583
 #, c-format
 msgid "Error: no valid parameter specified."
 msgstr "Galat: tak ada parameter valid yang dinyatakan."
 
-#: ../cli/src/connections.c:549
-#: ../cli/src/connections.c:1627
-#: ../cli/src/devices.c:1755
-#: ../cli/src/network-manager.c:463
+#: ../cli/src/connections.c:598
+#: ../cli/src/connections.c:1803
+#: ../cli/src/devices.c:2216
+#: ../cli/src/network-manager.c:596
 #, c-format
 msgid "Error: %s."
 msgstr "Galat: %s."
 
+#: ../cli/src/connections.c:611
+msgid "activating"
+msgstr "mengaktifkan"
+
+#: ../cli/src/connections.c:613
+msgid "activated"
+msgstr "diaktifkan"
+
+#: ../cli/src/connections.c:615
+#: ../cli/src/devices.c:273
+msgid "deactivating"
+msgstr "menonaktifkan"
+
+#: ../cli/src/connections.c:618
+#: ../cli/src/connections.c:641
+#: ../cli/src/connections.c:1327
+#: ../cli/src/devices.c:277
+#: ../cli/src/devices.c:806
+#: ../cli/src/network-manager.c:123
+#: ../cli/src/network-manager.c:185
+#: ../cli/src/network-manager.c:188
+#: ../cli/src/network-manager.c:197
+#: ../cli/src/network-manager.c:257
+#: ../cli/src/network-manager.c:273
+#: ../cli/src/network-manager.c:431
+#: ../cli/src/network-manager.c:486
+#: ../cli/src/network-manager.c:524
+#: ../cli/src/network-manager.c:563
+#: ../cli/src/settings.c:563
+#: ../cli/src/settings.c:591
+#: ../cli/src/utils.c:531
+#: ../src/main.c:458
+#: ../src/main.c:477
+msgid "unknown"
+msgstr "tak diketahui"
+
+#: ../cli/src/connections.c:627
+msgid "VPN connecting (prepare)"
+msgstr "VPN sedang menyiapkan"
+
+#: ../cli/src/connections.c:629
+msgid "VPN connecting (need authentication)"
+msgstr "VPN sedang menyambung (perlu otentikasi)"
+
+#: ../cli/src/connections.c:631
+msgid "VPN connecting"
+msgstr "VPN sedang menyambung"
+
+#: ../cli/src/connections.c:633
+msgid "VPN connecting (getting IP configuration)"
+msgstr "VPN sedang menyambung (sedang mengambil konfigurasi IP)"
+
+#: ../cli/src/connections.c:635
+msgid "VPN connected"
+msgstr "VPN terhubung"
+
 #: ../cli/src/connections.c:637
+msgid "VPN connection failed"
+msgstr "Sambungan VPN gagal"
+
+#: ../cli/src/connections.c:639
+msgid "VPN disconnected"
+msgstr "VPN diputus"
+
+#: ../cli/src/connections.c:892
+#: ../cli/src/connections.c:1116
 #, c-format
 msgid "Error: 'con status': %s"
 msgstr "Galat: 'con status': %s"
 
-#: ../cli/src/connections.c:639
+#: ../cli/src/connections.c:894
+#: ../cli/src/connections.c:1118
 #, c-format
 msgid "Error: 'con status': %s; allowed fields: %s"
 msgstr "Galat: 'con status': %s; ruas yang diijinkan: %s"
 
-#: ../cli/src/connections.c:647
-#: ../cli/src/connections.c:1452
-#: ../cli/src/connections.c:1551
-#: ../cli/src/devices.c:1014
-#: ../cli/src/devices.c:1076
-#: ../cli/src/devices.c:1229
-#: ../cli/src/devices.c:1357
-#: ../cli/src/devices.c:1576
+#: ../cli/src/connections.c:902
+msgid "Active connection details"
+msgstr "Rincian koneksi aktif"
+
+#: ../cli/src/connections.c:1038
+#: ../cli/src/connections.c:1530
+#: ../cli/src/connections.c:1633
+#: ../cli/src/connections.c:1724
+#: ../cli/src/devices.c:1036
+#: ../cli/src/devices.c:1098
+#: ../cli/src/devices.c:1251
+#: ../cli/src/devices.c:1380
+#: ../cli/src/devices.c:1809
+#: ../cli/src/devices.c:2037
+#: ../cli/src/network-manager.c:311
 #, c-format
-#| msgid "Error: Could not connect to NetworkManager."
 msgid "Error: Can't find out if NetworkManager is running: %s."
 msgstr "Galat: Tak bisa menentukan apakah NetworkManager sedang berjalan: %s."
 
-#: ../cli/src/connections.c:651
-#: ../cli/src/connections.c:1456
-#: ../cli/src/connections.c:1555
-#: ../cli/src/devices.c:1018
-#: ../cli/src/devices.c:1080
-#: ../cli/src/devices.c:1233
-#: ../cli/src/devices.c:1361
-#: ../cli/src/devices.c:1580
+#: ../cli/src/connections.c:1042
+#: ../cli/src/connections.c:1534
+#: ../cli/src/connections.c:1637
+#: ../cli/src/connections.c:1728
+#: ../cli/src/devices.c:1040
+#: ../cli/src/devices.c:1102
+#: ../cli/src/devices.c:1255
+#: ../cli/src/devices.c:1384
+#: ../cli/src/devices.c:1813
+#: ../cli/src/devices.c:2041
+#: ../cli/src/network-manager.c:315
 #, c-format
-#| msgid "NetworkManager status"
 msgid "Error: NetworkManager is not running."
 msgstr "Galat: NetworkManager tidak sedang berjalan."
 
-#: ../cli/src/connections.c:659
+#: ../cli/src/connections.c:1074
 msgid "Active connections"
 msgstr "Koneksi aktif"
 
-#: ../cli/src/connections.c:1095
+#: ../cli/src/connections.c:1099
+#, c-format
+msgid "Error: '%s' is not an active connection."
+msgstr "Galat: %s bukan suatu koneksi aktif."
+
+#: ../cli/src/connections.c:1104
+#, c-format
+msgid "Error: unknown parameter: %s"
+msgstr "Galat: parameter tak dikenal: %s"
+
+#: ../cli/src/connections.c:1211
 #, c-format
 msgid "no active connection on device '%s'"
 msgstr "tak ada koneksi aktif pada perangkat '%s'"
 
-#: ../cli/src/connections.c:1103
+#: ../cli/src/connections.c:1219
 #, c-format
 msgid "no active connection or device"
 msgstr "tak ada koneksi atau perangkat aktif "
 
-#: ../cli/src/connections.c:1174
+#: ../cli/src/connections.c:1290
 #, c-format
 msgid "device '%s' not compatible with connection '%s'"
 msgstr "perangkat '%s' tak kompatibel dengan koneksi '%s'"
 
-#: ../cli/src/connections.c:1176
+#: ../cli/src/connections.c:1292
 #, c-format
 msgid "no device found for connection '%s'"
 msgstr "tak ditemukan perangkat bagi koneksi '%s'"
 
-#: ../cli/src/connections.c:1187
-msgid "activating"
-msgstr "mengaktifkan"
-
-#: ../cli/src/connections.c:1189
-msgid "activated"
-msgstr "diaktifkan"
-
-#: ../cli/src/connections.c:1191
-#: ../cli/src/devices.c:304
-#| msgid "activating"
-msgid "deactivating"
-msgstr "menonaktifkan"
-
-#: ../cli/src/connections.c:1194
-#: ../cli/src/connections.c:1217
-#: ../cli/src/connections.c:1250
-#: ../cli/src/devices.c:308
-#: ../cli/src/devices.c:688
-#: ../cli/src/network-manager.c:118
-#: ../cli/src/network-manager.c:180
-#: ../cli/src/network-manager.c:183
-#: ../cli/src/network-manager.c:192
-#: ../cli/src/network-manager.c:298
-#: ../cli/src/network-manager.c:353
-#: ../cli/src/network-manager.c:391
-#: ../cli/src/network-manager.c:430
-#: ../cli/src/settings.c:485
-#: ../cli/src/utils.c:396
-msgid "unknown"
-msgstr "tak diketahui"
-
-#: ../cli/src/connections.c:1203
-msgid "VPN connecting (prepare)"
-msgstr "VPN sedang menyiapkan"
-
-#: ../cli/src/connections.c:1205
-msgid "VPN connecting (need authentication)"
-msgstr "VPN sedang menyambung (perlu otentikasi)"
-
-#: ../cli/src/connections.c:1207
-msgid "VPN connecting"
-msgstr "VPN sedang menyambung"
-
-#: ../cli/src/connections.c:1209
-msgid "VPN connecting (getting IP configuration)"
-msgstr "VPN sedang menyambung (sedang mengambil konfigurasi IP)"
-
-#: ../cli/src/connections.c:1211
-msgid "VPN connected"
-msgstr "VPN terhubung"
-
-#: ../cli/src/connections.c:1213
-msgid "VPN connection failed"
-msgstr "Sambungan VPN gagal"
-
-#: ../cli/src/connections.c:1215
-msgid "VPN disconnected"
-msgstr "VPN diputus"
-
-#: ../cli/src/connections.c:1226
+#: ../cli/src/connections.c:1303
 msgid "unknown reason"
 msgstr "alasan tidak diketahui"
 
-#: ../cli/src/connections.c:1228
+#: ../cli/src/connections.c:1305
 msgid "none"
 msgstr "tidak ada"
 
-#: ../cli/src/connections.c:1230
+#: ../cli/src/connections.c:1307
 msgid "the user was disconnected"
 msgstr "pengguna diputus"
 
-#: ../cli/src/connections.c:1232
+#: ../cli/src/connections.c:1309
 msgid "the base network connection was interrupted"
 msgstr "koneksi jaringan dasar terputus"
 
-#: ../cli/src/connections.c:1234
+#: ../cli/src/connections.c:1311
 msgid "the VPN service stopped unexpectedly"
 msgstr "layanan VPN berhenti secara tak terduga"
 
-#: ../cli/src/connections.c:1236
+#: ../cli/src/connections.c:1313
 msgid "the VPN service returned invalid configuration"
 msgstr "layanan VPN mengembalikan konfigurasi yang tak valid"
 
-#: ../cli/src/connections.c:1238
+#: ../cli/src/connections.c:1315
 msgid "the connection attempt timed out"
 msgstr "usaha koneksi kehabisan waktu"
 
-#: ../cli/src/connections.c:1240
+#: ../cli/src/connections.c:1317
 msgid "the VPN service did not start in time"
 msgstr "layanan VPN tak mulai pada waktunya"
 
-#: ../cli/src/connections.c:1242
+#: ../cli/src/connections.c:1319
 msgid "the VPN service failed to start"
 msgstr "layanan VPN gagal dimulai"
 
-#: ../cli/src/connections.c:1244
+#: ../cli/src/connections.c:1321
 msgid "no valid VPN secrets"
 msgstr "tak ada rahasia VPN yang valid"
 
-#: ../cli/src/connections.c:1246
+#: ../cli/src/connections.c:1323
 msgid "invalid VPN secrets"
 msgstr "rahasia VPN tak valid"
 
-#: ../cli/src/connections.c:1248
+#: ../cli/src/connections.c:1325
 msgid "the connection was removed"
 msgstr "koneksi dihapus"
 
-#: ../cli/src/connections.c:1262
+#: ../cli/src/connections.c:1339
 #, c-format
 msgid "state: %s\n"
 msgstr "keadaan: %s\n"
 
-#: ../cli/src/connections.c:1265
-#: ../cli/src/connections.c:1291
+#: ../cli/src/connections.c:1342
+#: ../cli/src/connections.c:1368
 #, c-format
 msgid "Connection activated\n"
 msgstr "Koneksi diaktifkan\n"
 
-#: ../cli/src/connections.c:1268
+#: ../cli/src/connections.c:1345
 #, c-format
 msgid "Error: Connection activation failed."
 msgstr "Galat: Aktivasi koneksi gagal."
 
-#: ../cli/src/connections.c:1287
+#: ../cli/src/connections.c:1364
 #, c-format
 msgid "state: %s (%d)\n"
 msgstr "keadaan: %s (%d)\n"
 
-#: ../cli/src/connections.c:1297
+#: ../cli/src/connections.c:1374
 #, c-format
 msgid "Error: Connection activation failed: %s."
 msgstr "Galat: Aktivasi koneksi gagal: %s."
 
-#: ../cli/src/connections.c:1314
-#: ../cli/src/devices.c:1136
+#: ../cli/src/connections.c:1391
+#: ../cli/src/devices.c:1158
 #, c-format
 msgid "Error: Timeout %d sec expired."
 msgstr "Galat: Timeout %d detik telah berlalu."
 
-#: ../cli/src/connections.c:1327
+#: ../cli/src/connections.c:1404
 #, c-format
 msgid "Error: Connection activation failed: %s"
 msgstr "Galat: Aktivasi koneksi gagal: %s"
 
-#: ../cli/src/connections.c:1333
+#: ../cli/src/connections.c:1410
 #, c-format
 msgid "Active connection state: %s\n"
 msgstr "Keadaan koneksi aktif: %s\n"
 
-#: ../cli/src/connections.c:1334
+#: ../cli/src/connections.c:1411
 #, c-format
 msgid "Active connection path: %s\n"
 msgstr "Path koneksi aktif: %s\n"
 
-#: ../cli/src/connections.c:1386
-#: ../cli/src/connections.c:1527
+#: ../cli/src/connections.c:1464
+#: ../cli/src/connections.c:1609
+#: ../cli/src/connections.c:1737
 #, c-format
 msgid "Error: Unknown connection: %s."
 msgstr "Galat: Koneksi tak dikenal: %s."
 
-#: ../cli/src/connections.c:1432
-#: ../cli/src/devices.c:1208
+#: ../cli/src/connections.c:1510
+#: ../cli/src/devices.c:1230
+#: ../cli/src/devices.c:1782
 #, c-format
 msgid "Error: timeout value '%s' is not valid."
 msgstr "Galat: nilai timeout '%s' tak valid."
 
-#: ../cli/src/connections.c:1445
-#: ../cli/src/connections.c:1544
+#: ../cli/src/connections.c:1523
+#: ../cli/src/connections.c:1626
+#: ../cli/src/connections.c:1717
 #, c-format
 msgid "Error: id or uuid has to be specified."
 msgstr "Galat: id atau uuid mesti dinyatakan."
 
-#: ../cli/src/connections.c:1473
+#: ../cli/src/connections.c:1555
 #, c-format
 msgid "Error: No suitable device found: %s."
 msgstr "Galat: tak ditemukan perangkat yang cocok: %s."
 
-#: ../cli/src/connections.c:1475
+#: ../cli/src/connections.c:1557
 #, c-format
 msgid "Error: No suitable device found."
 msgstr "Galat: tak ditemukan perangkat yang cocok."
 
-#: ../cli/src/connections.c:1580
+#: ../cli/src/connections.c:1662
 #, c-format
 msgid "Warning: Connection not active\n"
 msgstr "Peringatan: Sambungan tak aktif\n"
 
-#: ../cli/src/connections.c:1618
+#: ../cli/src/connections.c:1676
+#, c-format
+msgid "Error: Connection deletion failed: %s"
+msgstr "Galat: Penghapusan koneksi gagal: %s"
+
+#: ../cli/src/connections.c:1794
 #, c-format
 msgid "Error: 'con' command '%s' is not valid."
 msgstr "Galat: 'con' perintah '%s' tak valid."
 
-#: ../cli/src/connections.c:1683
+#: ../cli/src/connections.c:1859
 #, c-format
 msgid "Error: could not connect to D-Bus."
 msgstr "Galat: tak bisa menyambung ke D-Bus."
 
-#: ../cli/src/connections.c:1690
+#: ../cli/src/connections.c:1867
 #, c-format
 msgid "Error: Could not get system settings."
 msgstr "Galat: Tak bisa memperoleh tatanan sistem."
 
-#: ../cli/src/connections.c:1700
+#: ../cli/src/connections.c:1877
 #, c-format
-#| msgid "Error: Can't obtain connections: settings services are not running."
 msgid "Error: Can't obtain connections: settings service is not running."
 msgstr "Galat: Tak bisa mendapat koneksi: layanan penataan tak berjalan."
 
 #. 0
 #. 9
 #. 3
-#: ../cli/src/devices.c:66
-#: ../cli/src/devices.c:102
-#: ../cli/src/devices.c:212
-#: ../cli/src/devices.c:228
+#: ../cli/src/devices.c:68
+#: ../cli/src/devices.c:104
+#: ../cli/src/devices.c:182
+#: ../cli/src/devices.c:198
 msgid "DEVICE"
 msgstr "DEVICE"
 
-#. 1
-#. 4
-#. 1
-#: ../cli/src/devices.c:68
-#: ../cli/src/devices.c:106
-#: ../cli/src/network-manager.c:39
-msgid "STATE"
-msgstr "STATE"
-
-#: ../cli/src/devices.c:78
-msgid "GENERAL"
-msgstr "GENERAL"
-
 #. 0
-#: ../cli/src/devices.c:79
+#: ../cli/src/devices.c:81
 msgid "CAPABILITIES"
 msgstr "CAPABILITIES"
 
 #. 1
-#: ../cli/src/devices.c:80
+#: ../cli/src/devices.c:82
 msgid "WIFI-PROPERTIES"
 msgstr "WIFI-PROPERTIES"
 
 #. 2
-#: ../cli/src/devices.c:81
+#: ../cli/src/devices.c:83
 msgid "AP"
 msgstr "AP"
 
 #. 3
-#: ../cli/src/devices.c:82
+#: ../cli/src/devices.c:84
 msgid "WIRED-PROPERTIES"
 msgstr "WIRED-PROPERTIES"
 
 #. 4
-#: ../cli/src/devices.c:83
-#| msgid "WIFI-PROPERTIES"
+#: ../cli/src/devices.c:85
 msgid "WIMAX-PROPERTIES"
 msgstr "WIMAX-PROPERTIES"
 
 #. 5
 #. 0
-#: ../cli/src/devices.c:84
-#: ../cli/src/devices.c:225
-#| msgid "DNS"
+#: ../cli/src/devices.c:86
+#: ../cli/src/devices.c:195
 msgid "NSP"
 msgstr "NSP"
 
 #. 6
-#: ../cli/src/devices.c:85
-msgid "IP4-SETTINGS"
-msgstr "IP4-SETTINGS"
+#: ../cli/src/devices.c:87
+msgid "IP4"
+msgstr "IP4"
 
 #. 7
-#: ../cli/src/devices.c:86
-msgid "IP4-DNS"
-msgstr "IP4-DNS"
+#: ../cli/src/devices.c:88
+msgid "DHCP4"
+msgstr "DHCP4"
 
 #. 8
-#: ../cli/src/devices.c:87
-msgid "IP6-SETTINGS"
-msgstr "IP6-SETTINGS"
+#: ../cli/src/devices.c:89
+msgid "IP6"
+msgstr "IP6"
 
 #. 9
-#: ../cli/src/devices.c:88
-msgid "IP6-DNS"
-msgstr "IP6-DNS"
+#: ../cli/src/devices.c:90
+msgid "DHCP6"
+msgstr "DHCP6"
 
 #. 2
-#: ../cli/src/devices.c:104
+#: ../cli/src/devices.c:106
+msgid "VENDOR"
+msgstr "VENDOR"
+
+#. 3
+#: ../cli/src/devices.c:107
+msgid "PRODUCT"
+msgstr "PRODUCT"
+
+#. 4
+#: ../cli/src/devices.c:108
 msgid "DRIVER"
 msgstr "DRIVER"
 
-#. 3
-#: ../cli/src/devices.c:105
+#. 5
+#: ../cli/src/devices.c:109
 msgid "HWADDR"
 msgstr "HWADDR"
 
-#. 0
+#. 7
+#: ../cli/src/devices.c:111
+msgid "REASON"
+msgstr "REASON"
+
+#. 8
+#: ../cli/src/devices.c:112
+msgid "UDI"
+msgstr "UDI"
+
+#. 9
+#: ../cli/src/devices.c:113
+msgid "IP-IFACE"
+msgstr "IP-IFACE"
+
+#. 10
+#: ../cli/src/devices.c:114
+msgid "NM-MANAGED"
+msgstr "NM-MANAGED"
+
+#. 11
 #: ../cli/src/devices.c:115
+msgid "FIRMWARE-MISSING"
+msgstr "FIRMWARE-MISSING"
+
+#. 12
+#: ../cli/src/devices.c:116
+msgid "CONNECTION"
+msgstr "CONNECTION"
+
+#. 0
+#: ../cli/src/devices.c:125
 msgid "CARRIER-DETECT"
 msgstr "CARRIER-DETECT"
 
 #. 1
-#: ../cli/src/devices.c:116
+#: ../cli/src/devices.c:126
 msgid "SPEED"
 msgstr "SPEED"
 
 #. 0
-#: ../cli/src/devices.c:125
+#: ../cli/src/devices.c:135
 msgid "CARRIER"
 msgstr "CARRIER"
 
 #. 0
-#: ../cli/src/devices.c:135
+#: ../cli/src/devices.c:145
 msgid "WEP"
 msgstr "WEP"
 
 #. 1
-#: ../cli/src/devices.c:136
+#: ../cli/src/devices.c:146
 msgid "WPA"
 msgstr " WPA"
 
 #. 2
-#: ../cli/src/devices.c:137
+#: ../cli/src/devices.c:147
 msgid "WPA2"
 msgstr " WPA2"
 
 #. 3
-#: ../cli/src/devices.c:138
+#: ../cli/src/devices.c:148
 msgid "TKIP"
 msgstr "TKIP"
 
 #. 4
-#: ../cli/src/devices.c:139
+#: ../cli/src/devices.c:149
 msgid "CCMP"
 msgstr "CCMP"
 
 #. 0
-#: ../cli/src/devices.c:149
-#| msgid "FREQ"
+#: ../cli/src/devices.c:159
 msgid "CTR-FREQ"
 msgstr "CTR-FREQ"
 
 #. 1
-#: ../cli/src/devices.c:150
-#| msgid "SSID"
+#: ../cli/src/devices.c:160
 msgid "RSSI"
 msgstr "RSSI"
 
 #. 2
-#: ../cli/src/devices.c:151
+#: ../cli/src/devices.c:161
 msgid "CINR"
 msgstr "CINR"
 
 #. 3
-#: ../cli/src/devices.c:152
+#: ../cli/src/devices.c:162
 msgid "TX-POW"
 msgstr "TX-POW"
 
 #. 4
-#: ../cli/src/devices.c:153
-#| msgid "BSSID"
+#: ../cli/src/devices.c:163
 msgid "BSID"
 msgstr "BSID"
 
 #. 0
-#: ../cli/src/devices.c:163
-#: ../cli/src/devices.c:174
-msgid "ADDRESS"
-msgstr "ADDRESS"
-
-#. 1
-#: ../cli/src/devices.c:164
-#: ../cli/src/devices.c:175
-msgid "PREFIX"
-msgstr "PREFIX"
-
-#. 2
-#: ../cli/src/devices.c:165
-#: ../cli/src/devices.c:176
-msgid "GATEWAY"
-msgstr "GATEWAY"
-
-#. 0
-#: ../cli/src/devices.c:185
-#: ../cli/src/devices.c:194
-msgid "DNS"
-msgstr "DNS"
-
-#. 0
-#: ../cli/src/devices.c:203
+#: ../cli/src/devices.c:173
 msgid "SSID"
 msgstr "SSID"
 
 #. 1
-#: ../cli/src/devices.c:204
+#: ../cli/src/devices.c:174
 msgid "BSSID"
 msgstr "BSSID"
 
 #. 2
-#: ../cli/src/devices.c:205
+#: ../cli/src/devices.c:175
 msgid "MODE"
 msgstr "MODE"
 
 #. 3
-#: ../cli/src/devices.c:206
+#: ../cli/src/devices.c:176
 msgid "FREQ"
 msgstr "FREQ"
 
 #. 4
-#: ../cli/src/devices.c:207
+#: ../cli/src/devices.c:177
 msgid "RATE"
 msgstr "RATE"
 
 #. 5
 #. 1
-#: ../cli/src/devices.c:208
-#: ../cli/src/devices.c:226
+#: ../cli/src/devices.c:178
+#: ../cli/src/devices.c:196
 msgid "SIGNAL"
 msgstr "SIGNAL"
 
 #. 6
-#: ../cli/src/devices.c:209
+#: ../cli/src/devices.c:179
 msgid "SECURITY"
 msgstr "SECURITY"
 
 #. 7
-#: ../cli/src/devices.c:210
+#: ../cli/src/devices.c:180
 msgid "WPA-FLAGS"
 msgstr "WPA-FLAGS"
 
 #. 8
-#: ../cli/src/devices.c:211
+#: ../cli/src/devices.c:181
 msgid "RSN-FLAGS"
 msgstr "RSN-FLAGS"
 
 #. 10
 #. 4
-#: ../cli/src/devices.c:213
-#: ../cli/src/devices.c:229
+#: ../cli/src/devices.c:183
+#: ../cli/src/devices.c:199
 msgid "ACTIVE"
 msgstr "ACTIVE"
 
-#: ../cli/src/devices.c:256
-#, c-format
-#| msgid ""
-#| "Usage: nmcli dev { COMMAND | help }\n"
-#| "\n"
-#| "  COMMAND := { status | list | disconnect | wifi }\n"
-#| "\n"
-#| "  status\n"
-#| "  list [iface <iface>]\n"
-#| "  disconnect iface <iface> [--nowait] [--timeout <timeout>]\n"
-#| "  wifi [list [iface <iface>] [hwaddr <hwaddr>]]\n"
-#| "\n"
+#: ../cli/src/devices.c:218
+#, c-format
 msgid ""
 "Usage: nmcli dev { COMMAND | help }\n"
 "\n"
@@ -812,7 +957,9 @@ msgid ""
 "  status\n"
 "  list [iface <iface>]\n"
 "  disconnect iface <iface> [--nowait] [--timeout <timeout>]\n"
-"  wifi [list [iface <iface>] [hwaddr <hwaddr>]]\n"
+"  wifi [list [iface <iface>] [bssid <BSSID>]]\n"
+"  wifi connect <(B)SSID> [password <password>] [wep-key-type key|phrase] [iface <iface>] [bssid <BSSID>] [name <name>]\n"
+"               [--private] [--nowait] [--timeout <timeout>]\n"
 "  wimax [list [iface <iface>] [nsp <name>]]\n"
 "\n"
 msgstr ""
@@ -825,276 +972,542 @@ msgstr ""
 "  status\n"
 "  list [iface <iface>]\n"
 "  disconnect iface <iface> [--nowait] [--timeout <timeout>]\n"
-"  wifi [list [iface <iface>] [hwaddr <hwaddr>]]\n"
-"  wimax [list [iface <iface>] [nsp <name>]]\n"
+"  wifi [list [iface <iface>] [bssid <BSSID>]]\n"
+"  wifi connect <(B)SSID> [password <password>] [wep-key-type key|phrase] [iface <iface>] [bssid <BSSID>] [name <nama>]\n"
+"               [--private] [--nowait] [--timeout <timeout>]\n"
+"  wimax [list [iface <iface>] [nsp <nama>]]\n"
 "\n"
 
-#: ../cli/src/devices.c:284
+#: ../cli/src/devices.c:253
 msgid "unmanaged"
 msgstr "tak dikelola"
 
-#: ../cli/src/devices.c:286
+#: ../cli/src/devices.c:255
 msgid "unavailable"
 msgstr "tak tersedia"
 
-#: ../cli/src/devices.c:288
-#: ../cli/src/network-manager.c:115
+#: ../cli/src/devices.c:257
+#: ../cli/src/network-manager.c:120
 msgid "disconnected"
 msgstr "terputus"
 
-#: ../cli/src/devices.c:290
+#: ../cli/src/devices.c:259
 msgid "connecting (prepare)"
 msgstr "sedang menyambung (bersiap)"
 
-#: ../cli/src/devices.c:292
+#: ../cli/src/devices.c:261
 msgid "connecting (configuring)"
 msgstr "sedang menyambung (sedang menata)"
 
-#: ../cli/src/devices.c:294
+#: ../cli/src/devices.c:263
 msgid "connecting (need authentication)"
 msgstr "sedang menyambung (perlu otentikasi)"
 
-#: ../cli/src/devices.c:296
+#: ../cli/src/devices.c:265
 msgid "connecting (getting IP configuration)"
 msgstr "sedang menyambung (sedang mengambil konfigurasi IP)"
 
-#: ../cli/src/devices.c:298
-#| msgid "connecting (getting IP configuration)"
+#: ../cli/src/devices.c:267
 msgid "connecting (checking IP connectivity)"
 msgstr "sedang menyambung (memeriksa konektivitas IP)"
 
-#: ../cli/src/devices.c:300
-#| msgid "connecting (getting IP configuration)"
+#: ../cli/src/devices.c:269
 msgid "connecting (starting secondary connections)"
 msgstr "sedang menyambung (memulai koneksi sekunder)"
 
-#: ../cli/src/devices.c:302
-#: ../cli/src/network-manager.c:111
+#: ../cli/src/devices.c:271
+#: ../cli/src/network-manager.c:116
 msgid "connected"
 msgstr "terhubung"
 
-#: ../cli/src/devices.c:306
+#: ../cli/src/devices.c:275
 msgid "connection failed"
 msgstr "koneksi gagal"
 
+#: ../cli/src/devices.c:286
+msgid "No reason given"
+msgstr "Tak ada alasan yang diberikan"
+
+#: ../cli/src/devices.c:289
+msgid "Unknown error"
+msgstr "Galat tak dikenal"
+
+#: ../cli/src/devices.c:292
+msgid "Device is now managed"
+msgstr "Perangkat kini dikelola"
+
+#: ../cli/src/devices.c:295
+msgid "Device is now unmanaged"
+msgstr "Perangkat kini tak dikelola"
+
+#: ../cli/src/devices.c:298
+msgid "The device could not be readied for configuration"
+msgstr "Perangkat tak dapat dibuat bersiap untuk ditata"
+
+#: ../cli/src/devices.c:301
+msgid "IP configuration could not be reserved (no available address, timeout, etc)"
+msgstr "Konfigurasi IP tak dapat dipesan (alamat tak tersedia, habis waktu, dsb)"
+
+#: ../cli/src/devices.c:304
+msgid "The IP configuration is no longer valid"
+msgstr "Konfigurasi IP tak valid lagi"
+
+#: ../cli/src/devices.c:307
+msgid "Secrets were required, but not provided"
+msgstr "Rahasia diperlukan, tapi tak disediakan"
+
+#: ../cli/src/devices.c:310
+msgid "802.1X supplicant disconnected"
+msgstr "802.1X supplicant diputus"
+
+#: ../cli/src/devices.c:313
+msgid "802.1X supplicant configuration failed"
+msgstr "Konfigurasi 802.1X supplicant gagal"
+
+#: ../cli/src/devices.c:316
+msgid "802.1X supplicant failed"
+msgstr "802.1X supplicant gagal"
+
+#: ../cli/src/devices.c:319
+msgid "802.1X supplicant took too long to authenticate"
+msgstr "802.1X supplicant makan waktu terlalu lama untuk mengotentikasi"
+
+#: ../cli/src/devices.c:322
+msgid "PPP service failed to start"
+msgstr "Layanan PPP gagal dimulai"
+
+#: ../cli/src/devices.c:325
+msgid "PPP service disconnected"
+msgstr "Layanan PPP diputus"
+
+#: ../cli/src/devices.c:328
+msgid "PPP failed"
+msgstr "PPP gagal"
+
 #: ../cli/src/devices.c:331
-#: ../cli/src/devices.c:341
-#: ../cli/src/devices.c:501
-#: ../cli/src/devices.c:545
+msgid "DHCP client failed to start"
+msgstr "Klien DHCP gagal dimulai"
+
+#: ../cli/src/devices.c:334
+msgid "DHCP client error"
+msgstr "Galat klien DHCP"
+
+#: ../cli/src/devices.c:337
+msgid "DHCP client failed"
+msgstr "Klien DHCP gagal"
+
+#: ../cli/src/devices.c:340
+msgid "Shared connection service failed to start"
+msgstr "Layanan koneksi berbagi gagal dimulai"
+
+#: ../cli/src/devices.c:343
+msgid "Shared connection service failed"
+msgstr "Layanan koneksi berbagi gagal"
+
+#: ../cli/src/devices.c:346
+msgid "AutoIP service failed to start"
+msgstr "Layanan AutoIP gagal dimulai"
+
+#: ../cli/src/devices.c:349
+msgid "AutoIP service error"
+msgstr "Galat layanan AutoIP"
+
+#: ../cli/src/devices.c:352
+msgid "AutoIP service failed"
+msgstr "Layanan AutoIP gagal"
+
+#: ../cli/src/devices.c:355
+msgid "The line is busy"
+msgstr "Jalur sibuk"
+
+#: ../cli/src/devices.c:358
+msgid "No dial tone"
+msgstr "Tak ada nada panggil"
+
+#: ../cli/src/devices.c:361
+msgid "No carrier could be established"
+msgstr "Carrier tak dapat dijalin"
+
+#: ../cli/src/devices.c:364
+msgid "The dialing request timed out"
+msgstr "Permintaan pemanggilan habis waktu"
+
+#: ../cli/src/devices.c:367
+msgid "The dialing attempt failed"
+msgstr "Usaha memanggil gagal"
+
+#: ../cli/src/devices.c:370
+msgid "Modem initialization failed"
+msgstr "Inisialisasi modem gagal"
+
+#: ../cli/src/devices.c:373
+msgid "Failed to select the specified APN"
+msgstr "Gagal memilih APN yang dinyatakan"
+
+#: ../cli/src/devices.c:376
+msgid "Not searching for networks"
+msgstr "Tak mencari jaringan"
+
+#: ../cli/src/devices.c:379
+msgid "Network registration denied"
+msgstr "Pendaftaran jaringan ditolak"
+
+#: ../cli/src/devices.c:382
+msgid "Network registration timed out"
+msgstr "Pendaftaran jaringan habis waktu"
+
+#: ../cli/src/devices.c:385
+msgid "Failed to register with the requested network"
+msgstr "Gagal mendaftar ke jaringan yang diminta"
+
+#: ../cli/src/devices.c:388
+msgid "PIN check failed"
+msgstr "Uji PIN gagal"
+
+#: ../cli/src/devices.c:391
+msgid "Necessary firmware for the device may be missing"
+msgstr "Firmware yang diperlukan bagi perangkat mungkin hilang"
+
+#: ../cli/src/devices.c:394
+msgid "The device was removed"
+msgstr "Perangkat dicabut"
+
+#: ../cli/src/devices.c:397
+msgid "NetworkManager went to sleep"
+msgstr "NetworkManager tidur"
+
+#: ../cli/src/devices.c:400
+msgid "The device's active connection disappeared"
+msgstr "Koneksi aktif perangkat menghilang"
+
+#: ../cli/src/devices.c:403
+msgid "Device disconnected by user or client"
+msgstr "Perangkat diputus oleh pengguna atau klien"
+
+#: ../cli/src/devices.c:406
+msgid "Carrier/link changed"
+msgstr "Carrier/link berubah"
+
+#: ../cli/src/devices.c:409
+msgid "The device's existing connection was assumed"
+msgstr "Koneksi perangkat kini diasumsikan"
+
+#: ../cli/src/devices.c:412
+msgid "The supplicant is now available"
+msgstr "Supplicant kini tersedia"
+
+#: ../cli/src/devices.c:415
+msgid "The modem could not be found"
+msgstr "Modem tak dapat ditemukan"
+
+#: ../cli/src/devices.c:418
+msgid "The Bluetooth connection failed or timed out"
+msgstr "Koneksi Bluetooth gagal atau kehabisan waktu"
+
+#: ../cli/src/devices.c:421
+msgid "GSM Modem's SIM card not inserted"
+msgstr "Kartu SIM Modem GSM tak dipasang"
+
+#: ../cli/src/devices.c:424
+msgid "GSM Modem's SIM PIN required"
+msgstr "PIN SIM Modem GSM diperlukan"
+
+#: ../cli/src/devices.c:427
+msgid "GSM Modem's SIM PUK required"
+msgstr "PUK SIM Modem GSM diperlukan"
+
+#: ../cli/src/devices.c:430
+msgid "GSM Modem's SIM wrong"
+msgstr "SIM Modem GSM salah"
+
+#: ../cli/src/devices.c:433
+msgid "InfiniBand device does not support connected mode"
+msgstr "Perangkat InfiniBand tak mendukung mode tersambung"
+
+#: ../cli/src/devices.c:436
+msgid "A dependency of the connection failed"
+msgstr "Suatu kebergantungan koneksi gagal"
+
+#: ../cli/src/devices.c:438
+#: ../cli/src/devices.c:461
+#: ../cli/src/devices.c:477
+#: ../cli/src/devices.c:597
+#: ../cli/src/devices.c:641
 msgid "Unknown"
 msgstr "Tak dikenal"
 
-#: ../cli/src/devices.c:374
+#: ../cli/src/devices.c:510
 msgid "(none)"
 msgstr "(tidak ada)"
 
-#: ../cli/src/devices.c:399
-#, c-format
-msgid "%s: error converting IP4 address 0x%X"
-msgstr "%s: galat mengubah alamat IP4 0x%X"
-
-#: ../cli/src/devices.c:470
+#: ../cli/src/devices.c:566
 #, c-format
 msgid "%u MHz"
 msgstr "%u MHz"
 
-#: ../cli/src/devices.c:471
+#: ../cli/src/devices.c:567
 #, c-format
 msgid "%u MB/s"
 msgstr "%u MB/s"
 
-#: ../cli/src/devices.c:480
+#: ../cli/src/devices.c:576
 msgid "Encrypted: "
 msgstr "Terenkripsi:"
 
-#: ../cli/src/devices.c:485
+#: ../cli/src/devices.c:581
 msgid "WEP "
 msgstr "WEP "
 
-#: ../cli/src/devices.c:487
+#: ../cli/src/devices.c:583
 msgid "WPA "
 msgstr "WPA "
 
-#: ../cli/src/devices.c:489
+#: ../cli/src/devices.c:585
 msgid "WPA2 "
 msgstr "WPA2 "
 
-#: ../cli/src/devices.c:492
+#: ../cli/src/devices.c:588
 msgid "Enterprise "
 msgstr "Enterprise "
 
-#: ../cli/src/devices.c:501
+#: ../cli/src/devices.c:597
 msgid "Ad-Hoc"
 msgstr "Ad-Hoc"
 
-#: ../cli/src/devices.c:501
+#: ../cli/src/devices.c:597
 msgid "Infrastructure"
 msgstr "Infrastruktur"
 
-#: ../cli/src/devices.c:536
+#: ../cli/src/devices.c:632
 msgid "Home"
 msgstr "Rumah"
 
-#: ../cli/src/devices.c:539
+#: ../cli/src/devices.c:635
 msgid "Partner"
 msgstr "Pasangan"
 
-#: ../cli/src/devices.c:542
+#: ../cli/src/devices.c:638
 msgid "Roaming"
 msgstr "Roaming"
 
-#: ../cli/src/devices.c:612
+#: ../cli/src/devices.c:710
 #, c-format
 msgid "Error: 'dev list': %s"
 msgstr "Galat: 'dev list': %s"
 
-#: ../cli/src/devices.c:614
+#: ../cli/src/devices.c:712
 #, c-format
 msgid "Error: 'dev list': %s; allowed fields: %s"
 msgstr "Galat: 'dev list': %s; ruas yang diijinkan: %s"
 
-#: ../cli/src/devices.c:623
+#: ../cli/src/devices.c:721
 msgid "Device details"
 msgstr "Rincian perangkat"
 
-#: ../cli/src/devices.c:657
-#: ../cli/src/devices.c:1152
-#: ../cli/src/utils.c:342
+#: ../cli/src/devices.c:766
+#: ../cli/src/devices.c:767
+#: ../cli/src/devices.c:1174
+#: ../cli/src/utils.c:477
 msgid "(unknown)"
 msgstr "(tak diketahui)"
 
-#: ../cli/src/devices.c:658
-msgid "unknown)"
-msgstr "tak diketahui)"
+#: ../cli/src/devices.c:775
+msgid "not connected"
+msgstr "tak terhubung"
 
-#: ../cli/src/devices.c:684
+#: ../cli/src/devices.c:802
 #, c-format
 msgid "%u Mb/s"
 msgstr "%u Mb/s"
 
 #. Print header
 #. "WIRED-PROPERTIES"
-#: ../cli/src/devices.c:757
+#: ../cli/src/devices.c:875
 msgid "on"
 msgstr "nyala"
 
-#: ../cli/src/devices.c:757
+#: ../cli/src/devices.c:875
 msgid "off"
 msgstr "mati"
 
-#: ../cli/src/devices.c:1004
+#: ../cli/src/devices.c:1026
 #, c-format
 msgid "Error: 'dev status': %s"
 msgstr "Galat: 'dev status': %s"
 
-#: ../cli/src/devices.c:1006
+#: ../cli/src/devices.c:1028
 #, c-format
 msgid "Error: 'dev status': %s; allowed fields: %s"
 msgstr "Galat: 'dev status': %s; ruas yang diijinkan: %s"
 
-#: ../cli/src/devices.c:1029
+#: ../cli/src/devices.c:1051
 msgid "Status of devices"
 msgstr "Status perangkat"
 
-#: ../cli/src/devices.c:1060
+#: ../cli/src/devices.c:1082
 #, c-format
 msgid "Error: '%s' argument is missing."
 msgstr "Galat: argumen '%s' hilang."
 
-#: ../cli/src/devices.c:1101
-#: ../cli/src/devices.c:1253
-#: ../cli/src/devices.c:1389
-#: ../cli/src/devices.c:1608
+#: ../cli/src/devices.c:1123
+#: ../cli/src/devices.c:1275
+#: ../cli/src/devices.c:1412
+#: ../cli/src/devices.c:2069
 #, c-format
 msgid "Error: Device '%s' not found."
 msgstr "Galat: Perangkat '%s' tak ditemukan."
 
-#: ../cli/src/devices.c:1124
+#: ../cli/src/devices.c:1146
 #, c-format
 msgid "Success: Device '%s' successfully disconnected."
 msgstr "Sukses: Perangkat '%s' diputus dengan sukses."
 
-#: ../cli/src/devices.c:1149
+#: ../cli/src/devices.c:1171
 #, c-format
 msgid "Error: Device '%s' (%s) disconnecting failed: %s"
 msgstr "Galat: Pemutusan perangkat '%s' (%s) gagal: %s "
 
-#: ../cli/src/devices.c:1157
+#: ../cli/src/devices.c:1179
 #, c-format
 msgid "Device state: %d (%s)\n"
 msgstr "Keadaan perangkat: %d (%s)\n"
 
-#: ../cli/src/devices.c:1222
+#: ../cli/src/devices.c:1244
 #, c-format
 msgid "Error: iface has to be specified."
 msgstr "Galat: iface mesti dinyatakan."
 
-#: ../cli/src/devices.c:1347
+#: ../cli/src/devices.c:1370
 #, c-format
 msgid "Error: 'dev wifi': %s"
 msgstr "Galat: 'dev wifi': %s"
 
-#: ../cli/src/devices.c:1349
+#: ../cli/src/devices.c:1372
 #, c-format
 msgid "Error: 'dev wifi': %s; allowed fields: %s"
 msgstr "Galat: 'dev wifi': %s; ruas yang diijinkan: %s"
 
-#: ../cli/src/devices.c:1372
+#: ../cli/src/devices.c:1395
 msgid "WiFi scan list"
 msgstr "Daftar pindai WiFi"
 
-#: ../cli/src/devices.c:1409
-#: ../cli/src/devices.c:1463
-#: ../cli/src/devices.c:1670
+#: ../cli/src/devices.c:1432
+#: ../cli/src/devices.c:1486
 #, c-format
-msgid "Error: Access point with hwaddr '%s' not found."
-msgstr "Galat: Access point dengan hwaddr '%s' tak ditemukan."
+msgid "Error: Access point with bssid '%s' not found."
+msgstr "Galat: Access point dengan bssid '%s' tak ditemukan."
 
-#: ../cli/src/devices.c:1426
+#: ../cli/src/devices.c:1449
 #, c-format
 msgid "Error: Device '%s' is not a WiFi device."
 msgstr "Galat: Perangkat '%s' bukan perangkat WiFi."
 
-#: ../cli/src/devices.c:1490
+#: ../cli/src/devices.c:1527
+#: ../cli/src/devices.c:1573
+#, c-format
+msgid "Connection with UUID '%s' created and activated on device '%s'\n"
+msgstr "Koneksi dengan UUID '%s' dibuat dan diaktifkan pada perangkat '%s'\n"
+
+#: ../cli/src/devices.c:1532
+#, c-format
+msgid "Error: Connection activation failed: (%d) %s."
+msgstr "Galat: Aktivasi koneksi gagal: (%d) %s."
+
+#: ../cli/src/devices.c:1557
+#, c-format
+msgid "Error: Failed to add/activate new connection: (%d) %s"
+msgstr "Galat: Gagal menambah/mengaktifkan koneksi baru: (%d) %s"
+
+#: ../cli/src/devices.c:1565
+#, c-format
+msgid "Error: Failed to add/activate new connection: Unknown error"
+msgstr "Galat: Gagal menambah/mengaktifkan koneksi baru: Galat tak dikenal"
+
+#: ../cli/src/devices.c:1709
+#, c-format
+msgid "Error: SSID or BSSID are missing."
+msgstr "Galat: SSID atau BSSID hilang."
+
+#: ../cli/src/devices.c:1732
+#, c-format
+msgid "Error: bssid argument value '%s' is not a valid BSSID."
+msgstr "Galat: nilai argumen bssid '%s' bukan BSSID yang valid."
+
+#: ../cli/src/devices.c:1756
+#, c-format
+msgid "Error: wep-key-type argument value '%s' is invalid, use 'key' or 'phrase'."
+msgstr "Galat: Nilai argumen jenis-kunci-wep '%s' tak valid, gunakan 'key' atau 'phrase'."
+
+#: ../cli/src/devices.c:1796
+#, c-format
+msgid "Error: BSSID to connect to (%s) differs from bssid argument (%s)."
+msgstr "Galat: BSSID yang akan dihubungi (%s) berbeda dengan argumen bssid (%s)."
+
+#: ../cli/src/devices.c:1802
+#, c-format
+msgid "Error: Parameter '%s' is neither SSID nor BSSID."
+msgstr "Galat: Parameter '%s' bukan SSID maupun BSSID."
+
+#: ../cli/src/devices.c:1831
+#, c-format
+msgid "Error: Device '%s' is not a Wi-Fi device."
+msgstr "Galat: Perangkat '%s' bukan perangkat WiFi."
+
+#: ../cli/src/devices.c:1833
+#, c-format
+msgid "Error: No Wi-Fi device found."
+msgstr "Galat: Tak ditemukan perangkat Wi-Fi."
+
+#: ../cli/src/devices.c:1851
+#, c-format
+msgid "Error: No network with SSID '%s' found."
+msgstr "Galat: Tak ditemukan jaringan dengan SSID '%s'."
+
+#: ../cli/src/devices.c:1853
+#, c-format
+msgid "Error: No access point with BSSID '%s' found."
+msgstr "Galat: Tak ditemukan access point dengan BSSID '%s'."
+
+#: ../cli/src/devices.c:1951
 #, c-format
 msgid "Error: 'dev wifi' command '%s' is not valid."
 msgstr "Galat: 'dev wifi' perintah '%s' tak valid."
 
-#: ../cli/src/devices.c:1566
+#: ../cli/src/devices.c:2027
 #, c-format
-#| msgid "Error: 'dev wifi': %s"
 msgid "Error: 'dev wimax': %s"
 msgstr "Galat: 'dev wimax': %s"
 
-#: ../cli/src/devices.c:1568
+#: ../cli/src/devices.c:2029
 #, c-format
-#| msgid "Error: 'dev wifi': %s; allowed fields: %s"
 msgid "Error: 'dev wimax': %s; allowed fields: %s"
 msgstr "Galat: 'dev wimax': %s; ruas yang diijinkan: %s"
 
-#: ../cli/src/devices.c:1591
+#: ../cli/src/devices.c:2052
 msgid "WiMAX NSP list"
 msgstr "Daftar NSP WiMAX"
 
-#: ../cli/src/devices.c:1628
+#: ../cli/src/devices.c:2089
 #, c-format
-#| msgid "Error: Device '%s' not found."
 msgid "Error: NSP with name '%s' not found."
 msgstr "Galat: NSP bernama '%s' tak ditemukan."
 
-#: ../cli/src/devices.c:1639
+#: ../cli/src/devices.c:2100
 #, c-format
-#| msgid "Error: Device '%s' is not a WiFi device."
 msgid "Error: Device '%s' is not a WiMAX device."
 msgstr "Galat: Perangkat '%s' bukan perangkat WiMAX."
 
-#: ../cli/src/devices.c:1697
+#: ../cli/src/devices.c:2131
+#, c-format
+msgid "Error: Access point with nsp '%s' not found."
+msgstr "Galat: Access point dengan nsp '%s' tak ditemukan."
+
+#: ../cli/src/devices.c:2158
 #, c-format
-#| msgid "Error: 'dev wifi' command '%s' is not valid."
 msgid "Error: 'dev wimax' command '%s' is not valid."
 msgstr "Galat: 'dev wimax' perintah '%s' tak valid."
 
-#: ../cli/src/devices.c:1747
+#: ../cli/src/devices.c:2208
 #, c-format
 msgid "Error: 'dev' command '%s' is not valid."
 msgstr "Galat: 'dev' perintah '%s' tak valid."
@@ -1135,7 +1548,6 @@ msgstr "WWAN"
 
 #. 7
 #: ../cli/src/network-manager.c:45
-#| msgid "WIFI-HARDWARE"
 msgid "WIMAX-HARDWARE"
 msgstr "WIMAX-HARDWARE"
 
@@ -1144,27 +1556,26 @@ msgstr "WIMAX-HARDWARE"
 msgid "WIMAX"
 msgstr "WIMAX"
 
-#: ../cli/src/network-manager.c:74
-#, c-format
-#| msgid ""
-#| "Usage: nmcli nm { COMMAND | help }\n"
-#| "\n"
-#| "  COMMAND := { status | sleep | wakeup | wifi | wwan }\n"
-#| "\n"
-#| "  status\n"
-#| "  sleep\n"
-#| "  wakeup\n"
-#| "  wifi [on|off]\n"
-#| "  wwan [on|off]\n"
-#| "\n"
+#: ../cli/src/network-manager.c:62
+msgid "PERMISSION"
+msgstr "PERMISSION"
+
+#. 0
+#: ../cli/src/network-manager.c:63
+msgid "VALUE"
+msgstr "VALUE"
+
+#: ../cli/src/network-manager.c:77
+#, c-format
 msgid ""
 "Usage: nmcli nm { COMMAND | help }\n"
 "\n"
-"  COMMAND := { status | enable | sleep | wifi | wwan | wimax }\n"
+"  COMMAND := { status | permissions | enable | sleep | wifi | wwan | wimax }\n"
 "\n"
-"  COMMAND := { status | enable | sleep | wifi | wwan }\n"
+"  COMMAND := { status | permissions | enable | sleep | wifi | wwan }\n"
 "\n"
 "  status\n"
+"  permissions\n"
 "  enable [true|false]\n"
 "  sleep [true|false]\n"
 "  wifi [on|off]\n"
@@ -1174,196 +1585,187 @@ msgid ""
 msgstr ""
 "Cara pakai: nmcli nm { PERINTAH | help }\n"
 "\n"
-"  PERINTAH := { status | sleep | wakeup | wifi | wwan | wimax }\n"
+"  PERINTAH := { status | permissions | enable | sleep | wifi | wwan | wimax }\n"
 "\n"
-"  PERINTAH := { status | sleep | wakeup | wifi | wwan }\n"
+"  PERINTAH := { status | permissions | enable | sleep | wifi | wwan }\n"
 "\n"
 "  status\n"
+"  permissions\n"
 "  enable [true|false]\n"
 "  sleep [true|false]\n"
 "  wifi [on|off]\n"
 "  wwan [on|off]\n"
 "  wimax [on|off]\n"
 "\n"
+"\n"
 
-#: ../cli/src/network-manager.c:103
+#: ../cli/src/network-manager.c:108
 msgid "asleep"
 msgstr "mengantuk"
 
-#: ../cli/src/network-manager.c:105
+#: ../cli/src/network-manager.c:110
 msgid "connecting"
 msgstr "menyambung"
 
-#: ../cli/src/network-manager.c:107
+#: ../cli/src/network-manager.c:112
 msgid "connected (local only)"
 msgstr "tersambung (lokal saja)"
 
-#: ../cli/src/network-manager.c:109
-#| msgid "connected"
+#: ../cli/src/network-manager.c:114
 msgid "connected (site only)"
 msgstr "tersambung (situs saja)"
 
-#: ../cli/src/network-manager.c:113
-#| msgid "connecting"
+#: ../cli/src/network-manager.c:118
 msgid "disconnecting"
 msgstr "memutus"
 
-#: ../cli/src/network-manager.c:153
+#: ../cli/src/network-manager.c:158
 #, c-format
 msgid "Error: 'nm status': %s"
 msgstr "Galat: 'nm status': %s"
 
-#: ../cli/src/network-manager.c:155
+#: ../cli/src/network-manager.c:160
 #, c-format
 msgid "Error: 'nm status': %s; allowed fields: %s"
 msgstr "Galat: 'nm status': %s; ruas yang diijinkan: %s"
 
 #. create NMClient
-#: ../cli/src/network-manager.c:168
-#: ../cli/src/network-manager.c:169
-#: ../cli/src/network-manager.c:170
-#: ../cli/src/network-manager.c:171
-#: ../cli/src/network-manager.c:172
+#: ../cli/src/network-manager.c:173
 #: ../cli/src/network-manager.c:174
 #: ../cli/src/network-manager.c:175
-#: ../cli/src/network-manager.c:296
-#: ../cli/src/network-manager.c:351
-#: ../cli/src/network-manager.c:389
-#: ../cli/src/network-manager.c:428
+#: ../cli/src/network-manager.c:176
+#: ../cli/src/network-manager.c:177
+#: ../cli/src/network-manager.c:179
+#: ../cli/src/network-manager.c:180
+#: ../cli/src/network-manager.c:429
+#: ../cli/src/network-manager.c:484
+#: ../cli/src/network-manager.c:522
+#: ../cli/src/network-manager.c:561
 msgid "enabled"
 msgstr "diaktifkan"
 
-#: ../cli/src/network-manager.c:168
-#: ../cli/src/network-manager.c:169
-#: ../cli/src/network-manager.c:170
-#: ../cli/src/network-manager.c:171
-#: ../cli/src/network-manager.c:172
+#: ../cli/src/network-manager.c:173
 #: ../cli/src/network-manager.c:174
 #: ../cli/src/network-manager.c:175
-#: ../cli/src/network-manager.c:296
-#: ../cli/src/network-manager.c:351
-#: ../cli/src/network-manager.c:389
-#: ../cli/src/network-manager.c:428
+#: ../cli/src/network-manager.c:176
+#: ../cli/src/network-manager.c:177
+#: ../cli/src/network-manager.c:179
+#: ../cli/src/network-manager.c:180
+#: ../cli/src/network-manager.c:429
+#: ../cli/src/network-manager.c:484
+#: ../cli/src/network-manager.c:522
+#: ../cli/src/network-manager.c:561
 msgid "disabled"
 msgstr "dimatikan"
 
-#: ../cli/src/network-manager.c:188
+#: ../cli/src/network-manager.c:193
 msgid "NetworkManager status"
 msgstr "Status NetworkManager"
 
 #. Print header
-#: ../cli/src/network-manager.c:191
+#: ../cli/src/network-manager.c:196
 msgid "running"
 msgstr "berjalan"
 
-#: ../cli/src/network-manager.c:191
+#: ../cli/src/network-manager.c:196
 msgid "not running"
 msgstr "tak berjalan"
 
-#: ../cli/src/network-manager.c:222
-#: ../cli/src/utils.c:322
+#: ../cli/src/network-manager.c:271
+msgid "auth"
+msgstr "auth"
+
+#: ../cli/src/network-manager.c:301
+#, c-format
+msgid "Error: 'nm permissions': %s"
+msgstr "Galat: 'nm permissions': %s"
+
+#: ../cli/src/network-manager.c:303
+#, c-format
+msgid "Error: 'nm permissions': %s; allowed fields: %s"
+msgstr "Galat: 'nm permissions': %s; ruas yang diijinkan: %s"
+
+#: ../cli/src/network-manager.c:324
+msgid "NetworkManager permissions"
+msgstr "Ijin NetworkManager"
+
+#: ../cli/src/network-manager.c:350
+#: ../cli/src/utils.c:457
 #, c-format
-#| msgid "Error: could not connect to D-Bus."
 msgid "Error: Couldn't connect to system bus: %s"
 msgstr "Galat: Tak bisa menyambung ke bus sistem: %s"
 
-#: ../cli/src/network-manager.c:233
+#: ../cli/src/network-manager.c:361
 #, c-format
-#| msgid "Error: could not connect to D-Bus."
 msgid "Error: Couldn't create D-Bus object proxy."
 msgstr "Galat: Tak bisa membuat proksi objek D-Bus."
 
-#: ../cli/src/network-manager.c:239
+#: ../cli/src/network-manager.c:367
 #, c-format
-#| msgid "Error: 'con list': %s"
 msgid "Error in sleep: %s"
 msgstr "Galat dalam sleep: %s"
 
-#: ../cli/src/network-manager.c:283
-#: ../cli/src/network-manager.c:338
-#: ../cli/src/network-manager.c:376
-#: ../cli/src/network-manager.c:415
+#: ../cli/src/network-manager.c:416
+#: ../cli/src/network-manager.c:471
+#: ../cli/src/network-manager.c:509
+#: ../cli/src/network-manager.c:548
 #, c-format
 msgid "Error: '--fields' value '%s' is not valid here; allowed fields: %s"
 msgstr "Galat: nilai '--fields' '%s' tak valid disini; ruas yang diijinkan: %s"
 
-#: ../cli/src/network-manager.c:291
-#| msgid "WiFi enabled"
+#: ../cli/src/network-manager.c:424
 msgid "Networking enabled"
 msgstr "Jaringan diaktifkan"
 
-#: ../cli/src/network-manager.c:307
+#: ../cli/src/network-manager.c:440
 #, c-format
-#| msgid "Error: invalid 'wwan' parameter: '%s'."
 msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'."
 msgstr "Galat: parameter 'enable' tak valid: '%s'; gunakan 'true' atau 'false'."
 
-#: ../cli/src/network-manager.c:317
+#: ../cli/src/network-manager.c:450
 #, c-format
-#| msgid "Error: Could not connect to NetworkManager."
 msgid "Error: Sleeping status is not exported by NetworkManager."
 msgstr "Galat: Status tidur tak diekspor oleh NetworkManager."
 
-#: ../cli/src/network-manager.c:325
+#: ../cli/src/network-manager.c:458
 #, c-format
-#| msgid "Error: invalid 'wifi' parameter: '%s'."
 msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'."
 msgstr "Galat: parameter 'sleep' tak valid: '%s'; gunakan 'true' atau 'false'."
 
-#: ../cli/src/network-manager.c:346
+#: ../cli/src/network-manager.c:479
 msgid "WiFi enabled"
 msgstr "WiFi diaktifkan"
 
-#: ../cli/src/network-manager.c:362
+#: ../cli/src/network-manager.c:495
 #, c-format
 msgid "Error: invalid 'wifi' parameter: '%s'."
 msgstr "Galat: parameter 'wifi' tak valid: '%s'."
 
-#: ../cli/src/network-manager.c:384
+#: ../cli/src/network-manager.c:517
 msgid "WWAN enabled"
 msgstr "WWAN diaktifkan"
 
-#: ../cli/src/network-manager.c:400
+#: ../cli/src/network-manager.c:533
 #, c-format
 msgid "Error: invalid 'wwan' parameter: '%s'."
 msgstr "Galat: parameter 'wwan' tak valid: '%s'."
 
-#: ../cli/src/network-manager.c:423
-#| msgid "WiFi enabled"
+#: ../cli/src/network-manager.c:556
 msgid "WiMAX enabled"
 msgstr "WiMAX diaktifkan"
 
-#: ../cli/src/network-manager.c:439
+#: ../cli/src/network-manager.c:572
 #, c-format
-#| msgid "Error: invalid 'wifi' parameter: '%s'."
 msgid "Error: invalid 'wimax' parameter: '%s'."
 msgstr "Galat: parameter 'wimax' tak valid: '%s'."
 
-#: ../cli/src/network-manager.c:452
+#: ../cli/src/network-manager.c:585
 #, c-format
 msgid "Error: 'nm' command '%s' is not valid."
 msgstr "Galat: 'nm' perintah '%s' tak valid."
 
 #: ../cli/src/nmcli.c:64
 #, c-format
-#| msgid ""
-#| "Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n"
-#| "\n"
-#| "OPTIONS\n"
-#| "  -t[erse]                                   terse output\n"
-#| "  -p[retty]                                  pretty output\n"
-#| "  -m[ode] tabular|multiline                  output mode\n"
-#| "  -f[ields] <field1,field2,...>|all|common   specify fields to output\n"
-#| "  -e[scape] yes|no                           escape columns separators in "
-#| "values\n"
-#| "  -v[ersion]                                 show program version\n"
-#| "  -h[elp]                                    print this help\n"
-#| "\n"
-#| "OBJECT\n"
-#| "  nm          NetworkManager status\n"
-#| "  con         NetworkManager connections\n"
-#| "  dev         devices managed by NetworkManager\n"
-#| "\n"
 msgid ""
 "Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n"
 "\n"
@@ -1459,7 +1861,6 @@ msgid "Caught signal %d, shutting down..."
 msgstr "Menangkap sinyal %d, sedang mematikan..."
 
 #: ../cli/src/nmcli.c:257
-#| msgid "Error: Could not get user settings."
 msgid "Error: Could not create NMClient object."
 msgstr "Galat: Tak bisa membuat objek NMClient."
 
@@ -1467,121 +1868,156 @@ msgstr "Galat: Tak bisa membuat objek NMClient."
 msgid "Success"
 msgstr "Sukses"
 
-#: ../cli/src/settings.c:423
+#: ../cli/src/settings.c:497
 #, c-format
 msgid "%d (hex-ascii-key)"
 msgstr "%d (kunci-hex-ascii)"
 
-#: ../cli/src/settings.c:425
+#: ../cli/src/settings.c:499
 #, c-format
 msgid "%d (104/128-bit passphrase)"
 msgstr "%d (104/128-bit frasa sandi)"
 
-#: ../cli/src/settings.c:428
+#: ../cli/src/settings.c:502
 #, c-format
 msgid "%d (unknown)"
 msgstr "%d (tak dikenal)"
 
-#: ../cli/src/settings.c:454
+#: ../cli/src/settings.c:528
 msgid "0 (unknown)"
 msgstr "0 (tak dikenal)"
 
-#: ../cli/src/settings.c:460
+#: ../cli/src/settings.c:534
 msgid "any, "
 msgstr "sebarang, "
 
-#: ../cli/src/settings.c:462
+#: ../cli/src/settings.c:536
 msgid "900 MHz, "
 msgstr "900 MHz, "
 
-#: ../cli/src/settings.c:464
+#: ../cli/src/settings.c:538
 msgid "1800 MHz, "
 msgstr "1800 MHz, "
 
-#: ../cli/src/settings.c:466
+#: ../cli/src/settings.c:540
 msgid "1900 MHz, "
 msgstr "1900 MHz, "
 
-#: ../cli/src/settings.c:468
+#: ../cli/src/settings.c:542
 msgid "850 MHz, "
 msgstr "850 MHz, "
 
-#: ../cli/src/settings.c:470
+#: ../cli/src/settings.c:544
 msgid "WCDMA 3GPP UMTS 2100 MHz, "
 msgstr "WCDMA 3GPP UMTS 2100 MHz, "
 
-#: ../cli/src/settings.c:472
+#: ../cli/src/settings.c:546
 msgid "WCDMA 3GPP UMTS 1800 MHz, "
 msgstr "WCDMA 3GPP UMTS 1800 MHz, "
 
-#: ../cli/src/settings.c:474
+#: ../cli/src/settings.c:548
 msgid "WCDMA 3GPP UMTS 1700/2100 MHz, "
 msgstr "WCDMA 3GPP UMTS 1700/2100 MHz, "
 
-#: ../cli/src/settings.c:476
+#: ../cli/src/settings.c:550
 msgid "WCDMA 3GPP UMTS 800 MHz, "
 msgstr "WCDMA 3GPP UMTS 800 MHz, "
 
-#: ../cli/src/settings.c:478
+#: ../cli/src/settings.c:552
 msgid "WCDMA 3GPP UMTS 850 MHz, "
 msgstr "WCDMA 3GPP UMTS 850 MHz, "
 
-#: ../cli/src/settings.c:480
+#: ../cli/src/settings.c:554
 msgid "WCDMA 3GPP UMTS 900 MHz, "
 msgstr "WCDMA 3GPP UMTS 900 MHz, "
 
-#: ../cli/src/settings.c:482
+#: ../cli/src/settings.c:556
 msgid "WCDMA 3GPP UMTS 1700 MHz, "
 msgstr "WCDMA 3GPP UMTS 1700 MHz, "
 
-#: ../cli/src/settings.c:566
-#: ../cli/src/settings.c:732
+#: ../cli/src/settings.c:558
+msgid "WCDMA 3GPP UMTS 1900 MHz, "
+msgstr "WCDMA 3GPP UMTS 1900 MHz, "
+
+#: ../cli/src/settings.c:560
+msgid "WCDMA 3GPP UMTS 2600 MHz, "
+msgstr "WCDMA 3GPP UMTS 2600 MHz, "
+
+#: ../cli/src/settings.c:578
+msgid "0 (NONE)"
+msgstr "0 (NONE)"
+
+#: ../cli/src/settings.c:584
+msgid "REORDER_HEADERS, "
+msgstr "REORDER_HEADERS, "
+
+#: ../cli/src/settings.c:586
+msgid "GVRP, "
+msgstr "GVRP, "
+
+#: ../cli/src/settings.c:588
+msgid "LOOSE_BINDING, "
+msgstr "LOOSE_BINDING, "
+
+#: ../cli/src/settings.c:731
+#: ../cli/src/settings.c:927
+#: ../cli/src/settings.c:1631
 msgid "auto"
 msgstr "otomatis"
 
-#: ../cli/src/settings.c:727
-#: ../cli/src/settings.c:730
-#: ../cli/src/settings.c:731
-#: ../cli/src/utils.c:176
+#: ../cli/src/settings.c:921
+#: ../cli/src/settings.c:924
+#: ../cli/src/settings.c:925
+#: ../cli/src/utils.c:279
 msgid "not set"
 msgstr "tak ditata"
 
-#: ../cli/src/utils.c:128
+#: ../cli/src/utils.c:103
+#, c-format
+msgid "Error converting IP4 address '0x%X' to text form"
+msgstr "Galat konversi alamat IP4 '0x%X' ke bentuk teks"
+
+#: ../cli/src/utils.c:131
+#, c-format
+msgid "Error converting IP6 address '%s' to text form"
+msgstr "Galat konversi alamat IP6 '%s' ke bentuk teks"
+
+#: ../cli/src/utils.c:232
 #, c-format
 msgid "field '%s' has to be alone"
 msgstr "ruas '%s' mesti sendiri"
 
-#: ../cli/src/utils.c:131
+#: ../cli/src/utils.c:235
 #, c-format
 msgid "invalid field '%s'"
 msgstr "ruas tak valid '%s'"
 
-#: ../cli/src/utils.c:150
+#: ../cli/src/utils.c:254
 #, c-format
 msgid "Option '--terse' requires specifying '--fields'"
 msgstr "Opsi '--terse' memerlukan penyataan '--fields'"
 
-#: ../cli/src/utils.c:154
+#: ../cli/src/utils.c:258
 #, c-format
 msgid "Option '--terse' requires specific '--fields' option values , not '%s'"
 msgstr "Opsi '--terse' memerlukan nilai opsi '--fields' spesifik, bukan '%s'"
 
-#: ../cli/src/utils.c:333
+#: ../cli/src/utils.c:468
 #, c-format
 msgid "Error: Couldn't create D-Bus object proxy for org.freedesktop.DBus"
 msgstr "Galat: Tak bisa membuat proksi objek D-Bus bagi org.freedesktop.DBus"
 
-#: ../cli/src/utils.c:341
+#: ../cli/src/utils.c:476
 #, c-format
 msgid "Error: NameHasOwner request failed: %s"
 msgstr "Galat: Permintaan NameHasOwner gagal: %s"
 
-#: ../cli/src/utils.c:386
+#: ../cli/src/utils.c:521
 #, c-format
 msgid "Warning: nmcli (%s) and NetworkManager (%s) versions don't match. Use --nocheck to suppress the warning.\n"
 msgstr "Peringatan: Versi nmcli (%s) dan NetworkManager (%s) tak cocok. Gunakan --nocheck untuk meredam peringatan.\n"
 
-#: ../cli/src/utils.c:395
+#: ../cli/src/utils.c:530
 #, c-format
 msgid "Error: nmcli (%s) and NetworkManager (%s) versions don't match. Force execution using --nocheck, but the results are unpredictable."
 msgstr "Galat: Versi nmcli (%s) dan NetworkManager (%s) tak cocok. Paksakan eksekusi memakai --nocheck, tapi hasilnya tak dapat ditebak."
@@ -1646,12 +2082,10 @@ msgid "Failed to find expected PKCS#8 end tag '%s'."
 msgstr "Gagal menemukan tag akhir PKCS#8 '%s' yang diharapkan."
 
 #: ../libnm-util/crypto.c:312
-#| msgid "Not enough memory to store file data."
 msgid "Not enough memory to store private key data."
 msgstr "Tak cukup memori untuk menyimpan data kunci privat."
 
 #: ../libnm-util/crypto.c:317
-#| msgid "Failed to decrypt the private key."
 msgid "Failed to decode PKCS#8 private key."
 msgstr "Gagal mengawa kode (decode) kunci privat PKCS#8."
 
@@ -1702,13 +2136,11 @@ msgstr "Tak bisa menentukan jenis kunci privat."
 
 #: ../libnm-util/crypto.c:597
 #, c-format
-#| msgid "PEM certificate '%s' had no end tag '%s'."
 msgid "PEM certificate had no start tag '%s'."
 msgstr "Sertifikat PEM tak memiliki tag awal '%s'."
 
 #: ../libnm-util/crypto.c:606
 #, c-format
-#| msgid "PEM certificate '%s' had no end tag '%s'."
 msgid "PEM certificate had no end tag '%s'."
 msgstr "Sertifikat PEM tak memiliki tag akhir '%s'."
 
@@ -1822,13 +2254,11 @@ msgstr "Tak bisa memeriksa berkas PKCS#12: %s"
 
 #: ../libnm-util/crypto_gnutls.c:460
 #, c-format
-#| msgid "Couldn't initialize PKCS#12 decoder: %s"
 msgid "Couldn't initialize PKCS#8 decoder: %s"
 msgstr "Tak bisa menginisialisasi pengawa kode (decoder) PKCS#8: %s"
 
 #: ../libnm-util/crypto_gnutls.c:483
 #, c-format
-#| msgid "Couldn't decode PKCS#12 file: %s"
 msgid "Couldn't decode PKCS#8 file: %s"
 msgstr "Tak bisa mengawa kode (decode) berkas PKCS#8: %s"
 
@@ -1941,135 +2371,259 @@ msgstr "Tak bisa memeriksa berkas PKCS#12: %d"
 msgid "Could not generate random data."
 msgstr "Tak bisa menjangkitkan data acak."
 
-#: ../libnm-util/nm-utils.c:2000
+#: ../libnm-util/nm-utils.c:2040
 #, c-format
 msgid "Not enough memory to make encryption key."
 msgstr "Tak cukup memori untuk membuat kunci penyandian."
 
-#: ../libnm-util/nm-utils.c:2110
+#: ../libnm-util/nm-utils.c:2150
 msgid "Could not allocate memory for PEM file creation."
 msgstr "Tak bisa mengalokasikan memori bagi pembuatan berkas PEM."
 
-#: ../libnm-util/nm-utils.c:2122
+#: ../libnm-util/nm-utils.c:2162
 #, c-format
 msgid "Could not allocate memory for writing IV to PEM file."
 msgstr "Tak bisa mengalokasikan memori untuk menulis IV ke berkas PEM."
 
-#: ../libnm-util/nm-utils.c:2134
+#: ../libnm-util/nm-utils.c:2174
 #, c-format
 msgid "Could not allocate memory for writing encrypted key to PEM file."
 msgstr "Tak bisa mengalokasikan memori untuk menulis kunci tersandi ke berkas PEM."
 
-#: ../libnm-util/nm-utils.c:2153
+#: ../libnm-util/nm-utils.c:2193
 #, c-format
 msgid "Could not allocate memory for PEM file data."
 msgstr "Tak bisa mengalokasikan memori bagi data berkas PEM."
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:1
-msgid "Allow control of network connections"
-msgstr "Ijinkan pengendalian sambungan jaringan"
+msgid "Enable or disable system networking"
+msgstr "Aktifkan atau matikan jejaring sistem"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:2
-msgid "Connection sharing via a protected WiFi network"
-msgstr "Berbagi koneksi melalui jaringan WiFi terlindung."
+msgid "System policy prevents enabling or disabling system networking"
+msgstr "Kebijakan sistem mencegah mengaktifkan atau mematikan jejaring sistem"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:3
-msgid "Connection sharing via an open WiFi network"
-msgstr "Berbagi koneksi melalui jaringan WiFi terbuka"
+msgid "Put NetworkManager to sleep or wake it up (should only be used by system power management)"
+msgstr "Tidurkan NetworkManager atau bangunkan (mestinya hanya dipakai oleh manajemen daya sistem)"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:4
-msgid "Enable or disable WiFi devices"
-msgstr "Aktifkan atau matikan perangkat WiFi"
+msgid "System policy prevents putting NetworkManager to sleep or waking it up"
+msgstr "Kebijakan sistem mencegah menidurkan NetworkManager atau membangunkannya"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:5
-#| msgid "Enable or disable mobile broadband devices"
-msgid "Enable or disable WiMAX mobile broadband devices"
-msgstr "Aktifkan atau matikan perangkat broadband bergerak WiMAX"
+msgid "Enable or disable WiFi devices"
+msgstr "Aktifkan atau matikan perangkat WiFi"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:6
-msgid "Enable or disable mobile broadband devices"
-msgstr "Aktifkan atau matikan perangkat broadband bergerak"
+msgid "System policy prevents enabling or disabling WiFi devices"
+msgstr "Kebijakan sistem mencegah mengaktifkan atau mematikan perangkat WiFi"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:7
-msgid "Enable or disable system networking"
-msgstr "Aktifkan atau matikan jejaring sistem"
+msgid "Enable or disable mobile broadband devices"
+msgstr "Aktifkan atau matikan perangkat broadband bergerak"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:8
-#| msgid "Modify system connections"
-msgid "Modify network connections for all users"
-msgstr "Ubah koneksi jaringan bagi semua pengguna"
+msgid "System policy prevents enabling or disabling mobile broadband devices"
+msgstr "Kebijakan sistem mencegah mengaktifkan atau mematikan perangkat broadband bergerak"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:9
-msgid "Modify persistent system hostname"
-msgstr "Ubah nama host sistem yang persisten"
+msgid "Enable or disable WiMAX mobile broadband devices"
+msgstr "Aktifkan atau matikan perangkat broadband bergerak WiMAX"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:10
-#| msgid "Allow control of network connections"
-msgid "Modify personal network connections"
-msgstr "Ubah koneksi jaringan personal"
+msgid "System policy prevents enabling or disabling WiMAX mobile broadband devices"
+msgstr "Kebijakan sistem mencegah mengaktifkan atau mematikan perangkat broadband bergerak WiMAX"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:11
-msgid "Put NetworkManager to sleep or wake it up (should only be used by system power management)"
-msgstr "Tidurkan NetworkManager atau bangunkan (mestinya hanya dipakai oleh manajemen daya sistem)"
+msgid "Allow control of network connections"
+msgstr "Ijinkan pengendalian sambungan jaringan"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:12
 msgid "System policy prevents control of network connections"
 msgstr "Kebijakan sistem mencegah pengendalian sambungan jaringan"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:13
-msgid "System policy prevents enabling or disabling WiFi devices"
-msgstr "Kebijakan sistem mencegah mengaktifkan atau mematikan perangkat WiFi"
+msgid "Connection sharing via a protected WiFi network"
+msgstr "Berbagi koneksi melalui jaringan WiFi terlindung."
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:14
-#| msgid ""
-#| "System policy prevents enabling or disabling mobile broadband devices"
-msgid "System policy prevents enabling or disabling WiMAX mobile broadband devices"
-msgstr "Kebijakan sistem mencegah mengaktifkan atau mematikan perangkat broadband bergerak WiMAX"
+msgid "System policy prevents sharing connections via a protected WiFi network"
+msgstr "Kebijakan sistem mencegah berbagi sambungan melalui jaringan WiFi terlindung"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:15
-msgid "System policy prevents enabling or disabling mobile broadband devices"
-msgstr "Kebijakan sistem mencegah mengaktifkan atau mematikan perangkat broadband bergerak"
+msgid "Connection sharing via an open WiFi network"
+msgstr "Berbagi koneksi melalui jaringan WiFi terbuka"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:16
-msgid "System policy prevents enabling or disabling system networking"
-msgstr "Kebijakan sistem mencegah mengaktifkan atau mematikan jejaring sistem"
+msgid "System policy prevents sharing connections via an open WiFi network"
+msgstr "Kebijakan sistem mencegah berbagi sambungan melalui jaringan WiFi terbuka"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:17
-#| msgid "System policy prevents modification of system settings"
-msgid "System policy prevents modification of network settings for all users"
-msgstr "Kebijakan sistem mencegah pengubahan tatanan sistem bagi semua pengguna"
+msgid "Modify personal network connections"
+msgstr "Ubah koneksi jaringan personal"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:18
-#| msgid "System policy prevents modification of system settings"
 msgid "System policy prevents modification of personal network settings"
 msgstr "Kebijakan sistem mencegah pengubahan tatanan jaringan pribadi"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:19
-msgid "System policy prevents modification of the persistent system hostname"
-msgstr "Kebijakan sistem mencegah pengubahan nama host yang persisten"
+msgid "Modify network connections for all users"
+msgstr "Ubah koneksi jaringan bagi semua pengguna"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:20
-msgid "System policy prevents putting NetworkManager to sleep or waking it up"
-msgstr "Kebijakan sistem mencegah menidurkan NetworkManager atau membangunkannya"
+msgid "System policy prevents modification of network settings for all users"
+msgstr "Kebijakan sistem mencegah pengubahan tatanan sistem bagi semua pengguna"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:21
-msgid "System policy prevents sharing connections via a protected WiFi network"
-msgstr "Kebijakan sistem mencegah berbagi sambungan melalui jaringan WiFi terlindung"
+msgid "Modify persistent system hostname"
+msgstr "Ubah nama host sistem yang persisten"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:22
-msgid "System policy prevents sharing connections via an open WiFi network"
-msgstr "Kebijakan sistem mencegah berbagi sambungan melalui jaringan WiFi terbuka"
+msgid "System policy prevents modification of the persistent system hostname"
+msgstr "Kebijakan sistem mencegah pengubahan nama host yang persisten"
+
+#: ../src/main.c:156
+#, c-format
+msgid "Failed to set signal mask: %d"
+msgstr "Gagal menata mask sinyal: %d"
+
+#: ../src/main.c:163
+#, c-format
+msgid "Failed to create signal handling thread: %d"
+msgstr "Gagal membuat thread penanganan sinyal: %d"
+
+#: ../src/main.c:178
+#, c-format
+msgid "Opening %s failed: %s\n"
+msgstr "Membuka %s gagal: %s\n"
+
+#: ../src/main.c:184
+#, c-format
+msgid "Writing to %s failed: %s\n"
+msgstr "Menulis ke %s gagal: %s\n"
 
-#: ../src/main.c:530
+#: ../src/main.c:189
+#, c-format
+msgid "Closing %s failed: %s\n"
+msgstr "Menutup %s gagal: %s\n"
+
+#: ../src/main.c:232
+#, c-format
+msgid "NetworkManager is already running (pid %ld)\n"
+msgstr "NetworkManager telah dijalankan (pid %ld)\n"
+
+#: ../src/main.c:372
+msgid "Print NetworkManager version and exit"
+msgstr "Cetak versi NetworkManager dan keluar"
+
+#: ../src/main.c:373
+msgid "Don't become a daemon"
+msgstr "Jangan jadi daemon"
+
+#: ../src/main.c:374
+msgid "Make all warnings fatal"
+msgstr "Jadikan semua peringatan fatal"
+
+#: ../src/main.c:375
+msgid "Specify the location of a PID file"
+msgstr "Nyatakan lokasi berkas PID"
+
+#: ../src/main.c:375
+msgid "filename"
+msgstr "filename"
+
+#: ../src/main.c:376
+msgid "State file location"
+msgstr "Lokasi berkas keadaan"
+
+#: ../src/main.c:376
+msgid "/path/to/state.file"
+msgstr "/path/to/state.file"
+
+#: ../src/main.c:377
+msgid "Config file location"
+msgstr "Lokasi berkas konfig"
+
+#: ../src/main.c:377
+msgid "/path/to/config.file"
+msgstr "/path/to/config.file"
+
+#: ../src/main.c:378
+msgid "List of plugins separated by ','"
+msgstr "Daftar plugin dipisah oleh ','"
+
+#: ../src/main.c:378
+msgid "plugin1,plugin2"
+msgstr "plugin1,plugin2"
+
+#. Translators: Do not translate the values in the square brackets
+#: ../src/main.c:380
+msgid "Log level: one of [ERR, WARN, INFO, DEBUG]"
+msgstr "Aras log: satu dari [ERR, WARN, INFO, DEBUG]"
+
+#. Translators: Do not translate the values in the square brackets
+#: ../src/main.c:383
+msgid ""
+"Log domains separated by ',': any combination of\n"
+"                                          [NONE,HW,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,\n"
+"                                           WIFI_SCAN,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,\n"
+"                                           AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,WIMAX,\n"
+"                                           INFINIBAND,FIREWALL]"
+msgstr ""
+"Domain log dipisahkan dengan ',': sebarang kombinasi dari\n"
+"                                          [NONE,HW,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,\n"
+"                                           WIFI_SCAN,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,\n"
+"                                           AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,WIMAX,\n"
+"                                           INFINIBAND,FIREWALL]"
+
+#: ../src/main.c:396
+#, c-format
+msgid "GModules are not supported on your platform!\n"
+msgstr "GModules tak didukung pada platform Anda!\n"
+
+#: ../src/main.c:419
+msgid ""
+"NetworkManager monitors all network connections and automatically\n"
+"chooses the best connection to use.  It also allows the user to\n"
+"specify wireless access points which wireless cards in the computer\n"
+"should associate with."
+msgstr ""
+"NetworkManager memantau semua koneksi jaringan dan secara otomatis\n"
+"memilih koneksi terbaik untuk dipakai. Ini juga mengijinkan pengguna untuk\n"
+"menyatakan access point nirkabel yang mesti dipakai oleh kartu nirkabel\n"
+"dalam komputer."
+
+#: ../src/main.c:425
 #, c-format
 msgid "Invalid option.  Please use --help to see a list of valid options.\n"
 msgstr "Opsi tak valid.  Silakan pakai --help untuk melihat daftar opsi yang valid.\n"
 
-#: ../src/main.c:611
+#: ../src/main.c:435
+#, c-format
+msgid "You must be root to run NetworkManager!\n"
+msgstr "Anda mesti root untuk menjalankan NetworkManager!\n"
+
+#: ../src/main.c:456
+#, c-format
+msgid "Failed to read configuration: (%d) %s\n"
+msgstr "Gagal membaca konfigurasi: (%d) %s\n"
+
+#: ../src/main.c:467
 #, c-format
 msgid "%s.  Please use --help to see a list of valid options.\n"
 msgstr "%s.  Silakan pakai --help untuk melihat daftar opsi yang valid.\n"
 
+#: ../src/main.c:474
+#, c-format
+msgid "State file %s parsing failed: (%d) %s\n"
+msgstr "Penguraian berkas keadaan %s gagal: (%d) %s\n"
+
+#: ../src/main.c:491
+#, c-format
+msgid "Could not daemonize: %s [error %u]\n"
+msgstr "Tak bisa menjadi daemon: %s [galat %u]\n"
+
 #: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:62
 msgid "# Created by NetworkManager\n"
 msgstr "# Dibuat oleh NetworkManager\n"
@@ -2083,136 +2637,147 @@ msgstr ""
 "# Digabung dari %s\n"
 "\n"
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:284
+#: ../src/dhcp-manager/nm-dhcp-manager.c:266
 msgid "no usable DHCP client could be found."
 msgstr "tak menemukan klien DHCP yang dapat dipakai."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:293
+#: ../src/dhcp-manager/nm-dhcp-manager.c:275
 msgid "'dhclient' could be found."
 msgstr "'dhclient' dapat ditemukan."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:303
+#: ../src/dhcp-manager/nm-dhcp-manager.c:285
 msgid "'dhcpcd' could be found."
 msgstr "'dhcpd' dapat ditemukan."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:311
+#: ../src/dhcp-manager/nm-dhcp-manager.c:293
 #, c-format
 msgid "unsupported DHCP client '%s'"
 msgstr "Klien DHCP '%s' yang tak didukung"
 
-#: ../src/dns-manager/nm-dns-manager.c:369
+#: ../src/dns-manager/nm-dns-manager.c:376
 msgid "NOTE: the libc resolver may not support more than 3 nameservers."
 msgstr "CATATAN: resolver libc mungkin tak mendukung lebih dari 3 nameserver."
 
-#: ../src/dns-manager/nm-dns-manager.c:371
+#: ../src/dns-manager/nm-dns-manager.c:378
 msgid "The nameservers listed below may not be recognized."
 msgstr "Nameserver yang terdaftar di bawah mungkin tak dikenali."
 
-#: ../src/logging/nm-logging.c:149
+#: ../src/logging/nm-logging.c:130
 #, c-format
 msgid "Unknown log level '%s'"
 msgstr "Aras log tak dikenal '%s'"
 
-#: ../src/logging/nm-logging.c:174
+#: ../src/logging/nm-logging.c:155
 #, c-format
 msgid "Unknown log domain '%s'"
 msgstr "Ranah log tak dikenal '%s'"
 
-#: ../src/modem-manager/nm-modem-cdma.c:296
-#: ../src/nm-device-bt.c:355
+#: ../src/modem-manager/nm-modem-cdma.c:279
+#: ../src/nm-device-bt.c:325
 #, c-format
-#| msgid "connection failed"
 msgid "CDMA connection %d"
 msgstr "Sambungan CDMA %d"
 
-#: ../src/modem-manager/nm-modem-gsm.c:499
-#: ../src/nm-device-bt.c:351
+#: ../src/modem-manager/nm-modem-gsm.c:547
+#: ../src/nm-device-bt.c:321
 #, c-format
-#| msgid "connection failed"
 msgid "GSM connection %d"
 msgstr "Sambungan GSM %d"
 
-#: ../src/nm-device-bt.c:326
+#: ../src/nm-device-bond.c:191
+#, c-format
+msgid "Bond connection %d"
+msgstr "Sambungan bond %d"
+
+#: ../src/nm-device-bt.c:296
 #, c-format
-#| msgid "VPN connection failed"
 msgid "PAN connection %d"
 msgstr "Sambungan PAN %d"
 
-#: ../src/nm-device-bt.c:359
+#: ../src/nm-device-bt.c:329
 #, c-format
-#| msgid "VPN connection failed"
 msgid "DUN connection %d"
 msgstr "Sambungan DUN %d"
 
-#: ../src/nm-device-ethernet.c:1681
+#: ../src/nm-device-ethernet.c:1326
 #, c-format
-#| msgid "VPN connection failed"
 msgid "PPPoE connection %d"
 msgstr "Sambungan PPPoE %d"
 
-#: ../src/nm-device-ethernet.c:1681
+#: ../src/nm-device-ethernet.c:1326
 #: ../src/settings/nm-settings-utils.c:50
 #, c-format
-#| msgid "Active connections"
 msgid "Wired connection %d"
 msgstr "Sambungan kabel %d"
 
-#: ../src/nm-device-olpc-mesh.c:423
+#: ../src/nm-device-infiniband.c:303
+#, c-format
+msgid "InfiniBand connection %d"
+msgstr "Sambungan InfiniBand %d"
+
+#: ../src/nm-device-olpc-mesh.c:293
 #, c-format
 msgid "Mesh %d"
 msgstr "Mesh %d"
 
-#: ../src/nm-manager.c:673
+#: ../src/nm-device-vlan.c:362
+#, c-format
+msgid "VLAN connection %d"
+msgstr "Sambungan VLAN %d"
+
+#: ../src/nm-manager.c:661
 #, c-format
-#| msgid "VPN connection failed"
 msgid "VPN connection %d"
 msgstr "Sambungan VPN %d"
 
-#: ../src/nm-netlink-monitor.c:100
-#: ../src/nm-netlink-monitor.c:231
-#: ../src/nm-netlink-monitor.c:653
+#: ../src/nm-netlink-monitor.c:148
+#: ../src/nm-netlink-monitor.c:272
+#: ../src/nm-netlink-monitor.c:695
 #, c-format
 msgid "error processing netlink message: %s"
 msgstr "galat memroses pesan netlink: %s"
 
-#: ../src/nm-netlink-monitor.c:214
+#: ../src/nm-netlink-monitor.c:251
 msgid "error occurred while waiting for data on socket"
 msgstr "galat terjadi ketika menunggu data pada soket"
 
-#: ../src/nm-netlink-monitor.c:254
+#: ../src/nm-netlink-monitor.c:296
 #, c-format
 msgid "unable to connect to netlink for monitoring link status: %s"
 msgstr "tak bisa menyambung ke netlink untuk pemantauan status sambungan: %s"
 
-#: ../src/nm-netlink-monitor.c:265
+#: ../src/nm-netlink-monitor.c:307
 #, c-format
 msgid "unable to enable netlink handle credential passing: %s"
 msgstr "tak bisa mengaktifkan penyampaian kredensial handle netlink: %s"
 
-#: ../src/nm-netlink-monitor.c:291
-#: ../src/nm-netlink-monitor.c:353
+#: ../src/nm-netlink-monitor.c:330
+#: ../src/nm-netlink-monitor.c:390
 #, c-format
 msgid "unable to allocate netlink handle for monitoring link status: %s"
 msgstr "tak bisa mengalokasikan handle netlink untuk pemantauan status sambungan: %s"
 
-#: ../src/nm-netlink-monitor.c:376
+#: ../src/nm-netlink-monitor.c:415
 #, c-format
 msgid "unable to allocate netlink link cache for monitoring link status: %s"
 msgstr "tak bisa mengalokasikan singgahan sambungan netlink untuk pemantauan status sambungan: %s"
 
-#: ../src/nm-netlink-monitor.c:502
+#: ../src/nm-netlink-monitor.c:542
 #, c-format
 msgid "unable to join netlink group: %s"
 msgstr "tak bisa bergabung dengan grup netlink: %s"
 
-#: ../src/nm-netlink-monitor.c:629
-#: ../src/nm-netlink-monitor.c:642
+#: ../src/nm-netlink-monitor.c:671
+#: ../src/nm-netlink-monitor.c:684
 #, c-format
 msgid "error updating link cache: %s"
 msgstr "galat memperbarui singgahan sambungan: %s"
 
-#: ../src/settings/plugins/ifcfg-rh/reader.c:3512
-#: ../src/settings/plugins/ifnet/connection_parser.c:51
+#: ../src/settings/plugins/ifcfg-rh/reader.c:93
 msgid "System"
 msgstr "Sistem"
 
+#: ../src/settings/plugins/ifcfg-rh/reader.c:3634
+msgid "Bond"
+msgstr "Bond"
+
diff --git a/po/lt.po b/po/lt.po
index 1d9eb95e..52f70bfc 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -4,909 +4,1368 @@
 # Žygimantas Beručka <zygis@gnome.org>, 2005-2006, 2008, 2010.
 # Aurimas Černius <aurisc4@gmail.com>, 2010.
 # Rimas Kudelis <rq@akl.lt>, 2010.
+# Algimantas Margevičius <margevicius.algimantas@gmail.com>, 2012.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: NetworkManager HEAD\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=Networ"
-"kManager&component=general\n"
-"POT-Creation-Date: 2010-09-20 15:25+0000\n"
-"PO-Revision-Date: 2010-10-16 17:10+0300\n"
-"Last-Translator: Rimas Kudelis <rq@akl.lt>\n"
-"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
-"Language: lt\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=NetworkManager&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2012-04-28 03:24+0000\n"
+"PO-Revision-Date: 2012-04-28 16:21+0300\n"
+"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
+"Language-Team: Lietuvių <>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: lt\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
-"100<10 || n%100>=20) ? 1 : 2);\n"
+"100<10 || n%100>=20) ? 1 : 2)\n"
 "X-Generator: Virtaal 0.5.2\n"
 
-#: ../cli/src/connections.c:60 ../cli/src/connections.c:75
-#: ../cli/src/devices.c:88 ../cli/src/devices.c:101 ../cli/src/devices.c:111
-#: ../cli/src/devices.c:121 ../cli/src/devices.c:134 ../cli/src/devices.c:145
-#: ../cli/src/devices.c:156 ../cli/src/devices.c:165 ../cli/src/devices.c:174
-msgid "NAME"
-msgstr "PAVADINIMAS"
+#: ../cli/src/common.c:32 ../cli/src/common.c:44 ../cli/src/common.c:52
+#: ../cli/src/common.c:63 ../cli/src/connections.c:125
+#: ../cli/src/connections.c:159
+msgid "GROUP"
+msgstr "GRUPĖ"
 
 #. 0
-#: ../cli/src/connections.c:61 ../cli/src/connections.c:76
-msgid "UUID"
-msgstr "UUID"
+#: ../cli/src/common.c:33 ../cli/src/common.c:53
+msgid "ADDRESS"
+msgstr "ADRESAS"
 
 #. 1
-#: ../cli/src/connections.c:62
-msgid "DEVICES"
-msgstr "ĮRENGINIAI"
+#: ../cli/src/common.c:34 ../cli/src/common.c:54
+msgid "ROUTE"
+msgstr "KELIAS"
 
 #. 2
-#: ../cli/src/connections.c:63 ../cli/src/connections.c:78
-msgid "SCOPE"
-msgstr "SRITIS"
+#: ../cli/src/common.c:35 ../cli/src/common.c:55
+msgid "DNS"
+msgstr "DNS"
 
 #. 3
-#: ../cli/src/connections.c:64
-msgid "DEFAULT"
-msgstr "NUMATYTASIS"
+#: ../cli/src/common.c:36 ../cli/src/common.c:56
+msgid "DOMAIN"
+msgstr "DOMENAS"
 
 #. 4
-#: ../cli/src/connections.c:65
-msgid "DBUS-SERVICE"
-msgstr "DBUS-TARNYBA"
+#: ../cli/src/common.c:37
+msgid "WINS"
+msgstr "SĖKMĖS"
 
-#. 5
-#: ../cli/src/connections.c:66
-msgid "SPEC-OBJECT"
-msgstr "SPEC-OBJECTAS"
+#. 0
+#: ../cli/src/common.c:45 ../cli/src/common.c:64
+msgid "OPTION"
+msgstr "PARINKTIS"
 
-#. 6
-#: ../cli/src/connections.c:67
-msgid "VPN"
-msgstr "VPN"
+#. 0
+#. used only for 'GENERAL' group listing
+#: ../cli/src/connections.c:58 ../cli/src/connections.c:126
+#: ../cli/src/devices.c:102 ../cli/src/devices.c:123 ../cli/src/devices.c:133
+#: ../cli/src/devices.c:143 ../cli/src/devices.c:157 ../cli/src/devices.c:171
+#: ../cli/src/devices.c:193
+msgid "NAME"
+msgstr "PAVADINIMAS"
+
+#. 0
+#. 1
+#: ../cli/src/connections.c:59 ../cli/src/connections.c:127
+msgid "UUID"
+msgstr "UUID"
 
 #. 1
 #. 0
 #. 1
-#: ../cli/src/connections.c:77 ../cli/src/devices.c:62 ../cli/src/devices.c:90
+#. 2
+#: ../cli/src/connections.c:60 ../cli/src/connections.c:160
+#: ../cli/src/devices.c:68 ../cli/src/devices.c:104 ../cli/src/devices.c:196
 msgid "TYPE"
 msgstr "TIPAS"
 
-#. 3
-#: ../cli/src/connections.c:79
+#. 2
+#: ../cli/src/connections.c:61
 msgid "TIMESTAMP"
 msgstr "LAIKO-ŽYMA"
 
-#. 4
-#: ../cli/src/connections.c:80
+#. 3
+#: ../cli/src/connections.c:62
 msgid "TIMESTAMP-REAL"
 msgstr "LAIKO-ŽYMA-TIKROJI"
 
-#. 5
-#: ../cli/src/connections.c:81
+#. 4
+#: ../cli/src/connections.c:63
 msgid "AUTOCONNECT"
 msgstr "AUTOPRISIJUNGIMAS"
 
-#. 6
-#: ../cli/src/connections.c:82
+#. 5
+#: ../cli/src/connections.c:64
 msgid "READONLY"
 msgstr "TIKSKAITOMA"
 
-#. 7
-#: ../cli/src/connections.c:83
+#. 6
+#. 8
+#. 2
+#. 11
+#. 5
+#: ../cli/src/connections.c:65 ../cli/src/connections.c:134
+#: ../cli/src/devices.c:70 ../cli/src/devices.c:183 ../cli/src/devices.c:199
 msgid "DBUS-PATH"
 msgstr "DBUS-KELIAS"
 
-#: ../cli/src/connections.c:159
+#. 2
+#: ../cli/src/connections.c:128
+msgid "DEVICES"
+msgstr "ĮRENGINIAI"
+
+#. 3
+#. 1
+#. 6
+#. 1
+#: ../cli/src/connections.c:129 ../cli/src/devices.c:69
+#: ../cli/src/devices.c:109 ../cli/src/network-manager.c:39
+msgid "STATE"
+msgstr "BŪSENA"
+
+#. 4
+#: ../cli/src/connections.c:130
+msgid "DEFAULT"
+msgstr "NUMATYTASIS"
+
+#. 5
+#: ../cli/src/connections.c:131
+msgid "DEFAULT6"
+msgstr "NUMATYTASIS6"
+
+#. 6
+#: ../cli/src/connections.c:132
+msgid "SPEC-OBJECT"
+msgstr "SPEC-OBJECTAS"
+
+#. 7
+#. 1
+#: ../cli/src/connections.c:133 ../cli/src/connections.c:147
+msgid "VPN"
+msgstr "VPN"
+
+#. 9
+#: ../cli/src/connections.c:135
+msgid "CON-PATH"
+msgstr "RYŠIO-KELIAS"
+
+#. 10
+#: ../cli/src/connections.c:136
+msgid "ZONE"
+msgstr "ZONA"
+
+#. 11
+#: ../cli/src/connections.c:137
+msgid "MASTER-PATH"
+msgstr "PAGRINDINIS-KELIAS"
+
+#: ../cli/src/connections.c:145 ../cli/src/devices.c:79
+msgid "GENERAL"
+msgstr "BENDRA"
+
+#. 0
+#: ../cli/src/connections.c:146
+msgid "IP"
+msgstr "IP"
+
+#. 1
+#: ../cli/src/connections.c:161
+msgid "USERNAME"
+msgstr "NAUDOTOJO VARDAS"
+
+#. 2
+#: ../cli/src/connections.c:162
+msgid "GATEWAY"
+msgstr "ŠLIUZAS"
+
+#. 3
+#: ../cli/src/connections.c:163
+msgid "BANNER"
+msgstr "PRANEŠIMAS"
+
+#. 4
+#: ../cli/src/connections.c:164
+msgid "VPN-STATE"
+msgstr "VPN BŪSENA"
+
+#. 5
+#: ../cli/src/connections.c:165
+msgid "CFG"
+msgstr "KONF"
+
+#: ../cli/src/connections.c:186
 #, c-format
 msgid ""
 "Usage: nmcli con { COMMAND | help }\n"
-"  COMMAND := { list | status | up | down }\n"
+"  COMMAND := { list | status | up | down | delete }\n"
 "\n"
-"  list [id <id> | uuid <id> | system | user]\n"
-"  status\n"
-"  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout "
+"  list [id <id> | uuid <id>]\n"
+"  status [id <id> | uuid <id> | path <path>]\n"
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [nsp <name>] [--"
+"nowait] [--timeout <timeout>]\n"
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [--nowait] [--timeout "
 "<timeout>]\n"
 "  down id <id> | uuid <id>\n"
+"  delete id <id> | uuid <id>\n"
 msgstr ""
 "Naudojimas: nmcli con { KOMANDA | help }\n"
-"  KOMANDA := { list | status | up | down }\n"
+"  KOMANDA := { list | status | up | down | delete }\n"
 "\n"
-"  list [id <id> | uuid <id> | system | user]\n"
-"  status\n"
-"  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout "
+"  list [id <id> | uuid <id>]\n"
+"  status [id <id> | uuid <id> | path <path>]\n"
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [nsp <name>] [--"
+"nowait] [--timeout <timeout>]\n"
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [--nowait] [--timeout "
 "<timeout>]\n"
 "  down id <id> | uuid <id>\n"
+"  delete id <id> | uuid <id>\n"
 
-#: ../cli/src/connections.c:199 ../cli/src/connections.c:540
+#: ../cli/src/connections.c:240 ../cli/src/connections.c:591
 #, c-format
 msgid "Error: 'con list': %s"
 msgstr "Klaida: „con list“: %s"
 
-#: ../cli/src/connections.c:201 ../cli/src/connections.c:542
+#: ../cli/src/connections.c:242 ../cli/src/connections.c:593
 #, c-format
 msgid "Error: 'con list': %s; allowed fields: %s"
 msgstr "Klaida: „con list“: %s; leidžiami laukai: %s"
 
-#: ../cli/src/connections.c:209
+#: ../cli/src/connections.c:250
 msgid "Connection details"
 msgstr "Ryšio informacija"
 
-#: ../cli/src/connections.c:384 ../cli/src/connections.c:605
-msgid "system"
-msgstr "sisteminis"
-
-#: ../cli/src/connections.c:384 ../cli/src/connections.c:605
-msgid "user"
-msgstr "naudotojo"
-
-#: ../cli/src/connections.c:386
+#: ../cli/src/connections.c:466
 msgid "never"
 msgstr "niekada"
 
 #. "CAPABILITIES"
 #. Print header
 #. "WIFI-PROPERTIES"
-#: ../cli/src/connections.c:387 ../cli/src/connections.c:388
-#: ../cli/src/connections.c:606 ../cli/src/connections.c:609
-#: ../cli/src/devices.c:432 ../cli/src/devices.c:557 ../cli/src/devices.c:583
-#: ../cli/src/devices.c:584 ../cli/src/devices.c:585 ../cli/src/devices.c:586
-#: ../cli/src/devices.c:587 ../cli/src/settings.c:508
-#: ../cli/src/settings.c:551 ../cli/src/settings.c:652
-#: ../cli/src/settings.c:926 ../cli/src/settings.c:927
-#: ../cli/src/settings.c:929 ../cli/src/settings.c:931
-#: ../cli/src/settings.c:1056 ../cli/src/settings.c:1057
-#: ../cli/src/settings.c:1058 ../cli/src/settings.c:1137
-#: ../cli/src/settings.c:1138 ../cli/src/settings.c:1139
-#: ../cli/src/settings.c:1140 ../cli/src/settings.c:1141
-#: ../cli/src/settings.c:1142 ../cli/src/settings.c:1143
-#: ../cli/src/settings.c:1144 ../cli/src/settings.c:1145
-#: ../cli/src/settings.c:1146 ../cli/src/settings.c:1147
-#: ../cli/src/settings.c:1148 ../cli/src/settings.c:1149
-#: ../cli/src/settings.c:1224
+#: ../cli/src/connections.c:467 ../cli/src/connections.c:468
+#: ../cli/src/connections.c:705 ../cli/src/connections.c:706
+#: ../cli/src/connections.c:708 ../cli/src/devices.c:595
+#: ../cli/src/devices.c:648 ../cli/src/devices.c:762 ../cli/src/devices.c:763
+#: ../cli/src/devices.c:795 ../cli/src/devices.c:821 ../cli/src/devices.c:822
+#: ../cli/src/devices.c:823 ../cli/src/devices.c:824 ../cli/src/devices.c:825
+#: ../cli/src/settings.c:657 ../cli/src/settings.c:727
+#: ../cli/src/settings.c:847 ../cli/src/settings.c:1129
+#: ../cli/src/settings.c:1130 ../cli/src/settings.c:1132
+#: ../cli/src/settings.c:1134 ../cli/src/settings.c:1135
+#: ../cli/src/settings.c:1263 ../cli/src/settings.c:1264
+#: ../cli/src/settings.c:1265 ../cli/src/settings.c:1266
+#: ../cli/src/settings.c:1341 ../cli/src/settings.c:1342
+#: ../cli/src/settings.c:1343 ../cli/src/settings.c:1344
+#: ../cli/src/settings.c:1345 ../cli/src/settings.c:1346
+#: ../cli/src/settings.c:1347 ../cli/src/settings.c:1348
+#: ../cli/src/settings.c:1349 ../cli/src/settings.c:1350
+#: ../cli/src/settings.c:1351 ../cli/src/settings.c:1352
+#: ../cli/src/settings.c:1353 ../cli/src/settings.c:1424
 msgid "yes"
 msgstr "taip"
 
-#: ../cli/src/connections.c:387 ../cli/src/connections.c:388
-#: ../cli/src/connections.c:606 ../cli/src/connections.c:609
-#: ../cli/src/devices.c:432 ../cli/src/devices.c:557 ../cli/src/devices.c:583
-#: ../cli/src/devices.c:584 ../cli/src/devices.c:585 ../cli/src/devices.c:586
-#: ../cli/src/devices.c:587 ../cli/src/settings.c:508
-#: ../cli/src/settings.c:510 ../cli/src/settings.c:551
-#: ../cli/src/settings.c:652 ../cli/src/settings.c:926
-#: ../cli/src/settings.c:927 ../cli/src/settings.c:929
-#: ../cli/src/settings.c:931 ../cli/src/settings.c:1056
-#: ../cli/src/settings.c:1057 ../cli/src/settings.c:1058
-#: ../cli/src/settings.c:1137 ../cli/src/settings.c:1138
-#: ../cli/src/settings.c:1139 ../cli/src/settings.c:1140
-#: ../cli/src/settings.c:1141 ../cli/src/settings.c:1142
-#: ../cli/src/settings.c:1143 ../cli/src/settings.c:1144
-#: ../cli/src/settings.c:1145 ../cli/src/settings.c:1146
-#: ../cli/src/settings.c:1147 ../cli/src/settings.c:1148
-#: ../cli/src/settings.c:1149 ../cli/src/settings.c:1224
+#: ../cli/src/connections.c:467 ../cli/src/connections.c:468
+#: ../cli/src/connections.c:705 ../cli/src/connections.c:706
+#: ../cli/src/connections.c:708 ../cli/src/devices.c:595
+#: ../cli/src/devices.c:648 ../cli/src/devices.c:762 ../cli/src/devices.c:763
+#: ../cli/src/devices.c:795 ../cli/src/devices.c:821 ../cli/src/devices.c:822
+#: ../cli/src/devices.c:823 ../cli/src/devices.c:824 ../cli/src/devices.c:825
+#: ../cli/src/settings.c:657 ../cli/src/settings.c:659
+#: ../cli/src/settings.c:727 ../cli/src/settings.c:847
+#: ../cli/src/settings.c:1129 ../cli/src/settings.c:1130
+#: ../cli/src/settings.c:1132 ../cli/src/settings.c:1134
+#: ../cli/src/settings.c:1135 ../cli/src/settings.c:1263
+#: ../cli/src/settings.c:1264 ../cli/src/settings.c:1265
+#: ../cli/src/settings.c:1266 ../cli/src/settings.c:1341
+#: ../cli/src/settings.c:1342 ../cli/src/settings.c:1343
+#: ../cli/src/settings.c:1344 ../cli/src/settings.c:1345
+#: ../cli/src/settings.c:1346 ../cli/src/settings.c:1347
+#: ../cli/src/settings.c:1348 ../cli/src/settings.c:1349
+#: ../cli/src/settings.c:1350 ../cli/src/settings.c:1351
+#: ../cli/src/settings.c:1352 ../cli/src/settings.c:1353
+#: ../cli/src/settings.c:1424
 msgid "no"
 msgstr "ne"
 
-#: ../cli/src/connections.c:461 ../cli/src/connections.c:504
-msgid "System connections"
-msgstr "Sistemos ryšiai"
+#: ../cli/src/connections.c:542
+msgid "Connection list"
+msgstr "Ryšių sąrašas"
 
-#: ../cli/src/connections.c:466 ../cli/src/connections.c:517
-msgid "User connections"
-msgstr "Naudotojo ryšiai"
-
-#: ../cli/src/connections.c:478 ../cli/src/connections.c:1338
-#: ../cli/src/connections.c:1354 ../cli/src/connections.c:1363
-#: ../cli/src/connections.c:1374 ../cli/src/connections.c:1459
-#: ../cli/src/devices.c:962 ../cli/src/devices.c:972 ../cli/src/devices.c:1074
-#: ../cli/src/devices.c:1081
+#: ../cli/src/connections.c:555 ../cli/src/connections.c:1088
+#: ../cli/src/connections.c:1456 ../cli/src/connections.c:1471
+#: ../cli/src/connections.c:1480 ../cli/src/connections.c:1490
+#: ../cli/src/connections.c:1502 ../cli/src/connections.c:1601
+#: ../cli/src/connections.c:1703 ../cli/src/devices.c:1202
+#: ../cli/src/devices.c:1212 ../cli/src/devices.c:1326
+#: ../cli/src/devices.c:1334 ../cli/src/devices.c:1547
+#: ../cli/src/devices.c:1554
 #, c-format
 msgid "Error: %s argument is missing."
 msgstr "Klaida: trūksta argumento %s."
 
-#: ../cli/src/connections.c:491
+#: ../cli/src/connections.c:568
 #, c-format
 msgid "Error: %s - no such connection."
 msgstr "Klaida: ryšio %s nėra."
 
-#: ../cli/src/connections.c:523 ../cli/src/connections.c:1387
-#: ../cli/src/connections.c:1477 ../cli/src/devices.c:785
-#: ../cli/src/devices.c:852 ../cli/src/devices.c:986 ../cli/src/devices.c:1087
+#: ../cli/src/connections.c:574 ../cli/src/connections.c:1515
+#: ../cli/src/connections.c:1618 ../cli/src/connections.c:1710
+#: ../cli/src/devices.c:999 ../cli/src/devices.c:1079
+#: ../cli/src/devices.c:1226 ../cli/src/devices.c:1340
+#: ../cli/src/devices.c:1560
 #, c-format
 msgid "Unknown parameter: %s\n"
 msgstr "Nežinomas parametras: %s\n"
 
-#: ../cli/src/connections.c:532
+#: ../cli/src/connections.c:583
 #, c-format
 msgid "Error: no valid parameter specified."
 msgstr "Klaida: nenurodyta tinkamų parametrų."
 
-#: ../cli/src/connections.c:547 ../cli/src/connections.c:1580
-#: ../cli/src/devices.c:1293 ../cli/src/network-manager.c:359
+#: ../cli/src/connections.c:598 ../cli/src/connections.c:1803
+#: ../cli/src/devices.c:1768 ../cli/src/network-manager.c:456
 #, c-format
 msgid "Error: %s."
 msgstr "Klaida: %s"
 
-#: ../cli/src/connections.c:653
-#, c-format
-msgid "Error: 'con status': %s"
-msgstr "Klaida: „con status“: %s"
-
-#: ../cli/src/connections.c:655
-#, c-format
-msgid "Error: 'con status': %s; allowed fields: %s"
-msgstr "Klaida: „con status“: %s; leidžiami laukai: %s"
-
-#: ../cli/src/connections.c:662
-msgid "Active connections"
-msgstr "Aktyvūs ryšiai"
-
-#: ../cli/src/connections.c:1030
-#, c-format
-msgid "no active connection on device '%s'"
-msgstr "nėra aktyvaus ryšio įrenginyje „%s“"
-
-#: ../cli/src/connections.c:1038
-#, c-format
-msgid "no active connection or device"
-msgstr "nėra aktyvaus ryšio įrenginyje"
-
-#: ../cli/src/connections.c:1088
-#, c-format
-msgid "device '%s' not compatible with connection '%s'"
-msgstr "įrenginys „%s“ nesuderinamas su ryšiu „%s“"
-
-#: ../cli/src/connections.c:1090
-#, c-format
-msgid "no device found for connection '%s'"
-msgstr "nerastas įrenginys ryšiui „%s“"
-
-#: ../cli/src/connections.c:1101
+#: ../cli/src/connections.c:611
 msgid "activating"
 msgstr "aktyvuojama"
 
-#: ../cli/src/connections.c:1103
+#: ../cli/src/connections.c:613
 msgid "activated"
 msgstr "aktyvuota"
 
-#: ../cli/src/connections.c:1106 ../cli/src/connections.c:1129
-#: ../cli/src/connections.c:1162 ../cli/src/devices.c:246
-#: ../cli/src/devices.c:558 ../cli/src/network-manager.c:94
-#: ../cli/src/network-manager.c:149 ../cli/src/settings.c:473
+#: ../cli/src/connections.c:615 ../cli/src/devices.c:263
+msgid "deactivating"
+msgstr "deaktyvuojama"
+
+#: ../cli/src/connections.c:618 ../cli/src/connections.c:641
+#: ../cli/src/connections.c:1327 ../cli/src/devices.c:267
+#: ../cli/src/devices.c:796 ../cli/src/network-manager.c:111
+#: ../cli/src/network-manager.c:173 ../cli/src/network-manager.c:176
+#: ../cli/src/network-manager.c:185 ../cli/src/network-manager.c:291
+#: ../cli/src/network-manager.c:346 ../cli/src/network-manager.c:384
+#: ../cli/src/network-manager.c:423 ../cli/src/settings.c:563
+#: ../cli/src/settings.c:591 ../cli/src/utils.c:499 ../src/main.c:458
+#: ../src/main.c:477
 msgid "unknown"
 msgstr "nežinoma"
 
-#: ../cli/src/connections.c:1115
+#: ../cli/src/connections.c:627
 msgid "VPN connecting (prepare)"
 msgstr "VPN jungiamasi (ruošiama)"
 
-#: ../cli/src/connections.c:1117
+#: ../cli/src/connections.c:629
 msgid "VPN connecting (need authentication)"
 msgstr "VPN jungiamasi (reikia nustatyti tapatybę)"
 
-#: ../cli/src/connections.c:1119
+#: ../cli/src/connections.c:631
 msgid "VPN connecting"
 msgstr "VPN jungiamasi"
 
-#: ../cli/src/connections.c:1121
+#: ../cli/src/connections.c:633
 msgid "VPN connecting (getting IP configuration)"
 msgstr "VPN jungiamasi (gaunama IP konfigūracija)"
 
-#: ../cli/src/connections.c:1123
+#: ../cli/src/connections.c:635
 msgid "VPN connected"
 msgstr "VPN prisijungta"
 
-#: ../cli/src/connections.c:1125
+#: ../cli/src/connections.c:637
 msgid "VPN connection failed"
 msgstr "VPN prisijungti nepavyko"
 
-#: ../cli/src/connections.c:1127
+#: ../cli/src/connections.c:639
 msgid "VPN disconnected"
 msgstr "VPN atsijungta"
 
-#: ../cli/src/connections.c:1138
+#: ../cli/src/connections.c:892 ../cli/src/connections.c:1116
+#, c-format
+msgid "Error: 'con status': %s"
+msgstr "Klaida: „con status“: %s"
+
+#: ../cli/src/connections.c:894 ../cli/src/connections.c:1118
+#, c-format
+msgid "Error: 'con status': %s; allowed fields: %s"
+msgstr "Klaida: „con status“: %s; leidžiami laukai: %s"
+
+#: ../cli/src/connections.c:902
+msgid "Active connection details"
+msgstr "Aktyvaus ryšio detalės"
+
+#: ../cli/src/connections.c:1038 ../cli/src/connections.c:1530
+#: ../cli/src/connections.c:1633 ../cli/src/connections.c:1724
+#: ../cli/src/devices.c:1026 ../cli/src/devices.c:1088
+#: ../cli/src/devices.c:1241 ../cli/src/devices.c:1370
+#: ../cli/src/devices.c:1589
+#, c-format
+msgid "Error: Can't find out if NetworkManager is running: %s."
+msgstr "Klaida: nepavyko nustatyti ar veikia NetworkManager: %s."
+
+#: ../cli/src/connections.c:1042 ../cli/src/connections.c:1534
+#: ../cli/src/connections.c:1637 ../cli/src/connections.c:1728
+#: ../cli/src/devices.c:1030 ../cli/src/devices.c:1092
+#: ../cli/src/devices.c:1245 ../cli/src/devices.c:1374
+#: ../cli/src/devices.c:1593
+#, c-format
+msgid "Error: NetworkManager is not running."
+msgstr "Klaida: NetworkManager neveikia."
+
+#: ../cli/src/connections.c:1074
+msgid "Active connections"
+msgstr "Aktyvūs ryšiai"
+
+#: ../cli/src/connections.c:1099
+#, c-format
+msgid "Error: '%s' is not an active connection."
+msgstr "Klaida: „%s“ nėra aktyvus ryšys."
+
+#: ../cli/src/connections.c:1104
+#, c-format
+msgid "Error: unknown parameter: %s"
+msgstr "Klaida: nežinomas parametras: %s"
+
+#: ../cli/src/connections.c:1211
+#, c-format
+msgid "no active connection on device '%s'"
+msgstr "nėra aktyvaus ryšio įrenginyje „%s“"
+
+#: ../cli/src/connections.c:1219
+#, c-format
+msgid "no active connection or device"
+msgstr "nėra aktyvaus ryšio įrenginyje"
+
+#: ../cli/src/connections.c:1290
+#, c-format
+msgid "device '%s' not compatible with connection '%s'"
+msgstr "įrenginys „%s“ nesuderinamas su ryšiu „%s“"
+
+#: ../cli/src/connections.c:1292
+#, c-format
+msgid "no device found for connection '%s'"
+msgstr "nerastas įrenginys ryšiui „%s“"
+
+#: ../cli/src/connections.c:1303
 msgid "unknown reason"
 msgstr "nežinoma priežastis"
 
-#: ../cli/src/connections.c:1140
+#: ../cli/src/connections.c:1305
 msgid "none"
 msgstr "jokia"
 
-#: ../cli/src/connections.c:1142
+#: ../cli/src/connections.c:1307
 msgid "the user was disconnected"
 msgstr "naudotojas buvo atjungtas"
 
-#: ../cli/src/connections.c:1144
+#: ../cli/src/connections.c:1309
 msgid "the base network connection was interrupted"
 msgstr "bazinis tinklo ryšys buvo pertrauktas"
 
-#: ../cli/src/connections.c:1146
+#: ../cli/src/connections.c:1311
 msgid "the VPN service stopped unexpectedly"
 msgstr "VPN tarnyba netikėtai sustojo"
 
-#: ../cli/src/connections.c:1148
+#: ../cli/src/connections.c:1313
 msgid "the VPN service returned invalid configuration"
 msgstr "VPN tarnyba grąžino netinkamą konfigūraciją"
 
-#: ../cli/src/connections.c:1150
+#: ../cli/src/connections.c:1315
 msgid "the connection attempt timed out"
 msgstr "bandymo jungtis laikas baigėsi"
 
-#: ../cli/src/connections.c:1152
+#: ../cli/src/connections.c:1317
 msgid "the VPN service did not start in time"
 msgstr "VPN tarnyba nebuvo paleista laiku"
 
-#: ../cli/src/connections.c:1154
+#: ../cli/src/connections.c:1319
 msgid "the VPN service failed to start"
 msgstr "nepavyko paleisti VPN tarnybos"
 
-#: ../cli/src/connections.c:1156
+#: ../cli/src/connections.c:1321
 msgid "no valid VPN secrets"
 msgstr "nėra tinkamų VPN paslapčių"
 
-#: ../cli/src/connections.c:1158
+#: ../cli/src/connections.c:1323
 msgid "invalid VPN secrets"
 msgstr "netinkamos VPN paslaptys"
 
-#: ../cli/src/connections.c:1160
+#: ../cli/src/connections.c:1325
 msgid "the connection was removed"
 msgstr "ryšys buvo pašalintas"
 
-#: ../cli/src/connections.c:1174
+#: ../cli/src/connections.c:1339
 #, c-format
 msgid "state: %s\n"
 msgstr "būsena: %s\n"
 
-#: ../cli/src/connections.c:1177 ../cli/src/connections.c:1203
+#: ../cli/src/connections.c:1342 ../cli/src/connections.c:1368
 #, c-format
 msgid "Connection activated\n"
 msgstr "Ryšys aktyvuotas\n"
 
-#: ../cli/src/connections.c:1180
+#: ../cli/src/connections.c:1345
 #, c-format
 msgid "Error: Connection activation failed."
 msgstr "Klaida: nepavyko aktyvuoti ryšio."
 
-#: ../cli/src/connections.c:1199
+#: ../cli/src/connections.c:1364
 #, c-format
 msgid "state: %s (%d)\n"
 msgstr "būsena: %s (%d)\n"
 
-#: ../cli/src/connections.c:1209
+#: ../cli/src/connections.c:1374
 #, c-format
 msgid "Error: Connection activation failed: %s."
 msgstr "Klaida: nepavyko aktyvuoti ryšio: %s."
 
-#: ../cli/src/connections.c:1226 ../cli/src/devices.c:909
+#: ../cli/src/connections.c:1391 ../cli/src/devices.c:1148
 #, c-format
 msgid "Error: Timeout %d sec expired."
 msgstr "Klaida: baigėsi %d sek. laikas."
 
-#: ../cli/src/connections.c:1269
+#: ../cli/src/connections.c:1404
 #, c-format
 msgid "Error: Connection activation failed: %s"
 msgstr "Klaida: nepavyko aktyvuoti ryšio: %s"
 
-#: ../cli/src/connections.c:1283
-#, c-format
-msgid "Error: Obtaining active connection for '%s' failed."
-msgstr "Klaida: nepavyko „%s“ gauti aktyvaus ryšio."
-
-#: ../cli/src/connections.c:1292
+#: ../cli/src/connections.c:1410
 #, c-format
 msgid "Active connection state: %s\n"
 msgstr "Aktyvaus ryšio būsena: %s\n"
 
-#: ../cli/src/connections.c:1293
+#: ../cli/src/connections.c:1411
 #, c-format
 msgid "Active connection path: %s\n"
 msgstr "Aktyvaus ryšio kelias: %s\n"
 
-#: ../cli/src/connections.c:1347 ../cli/src/connections.c:1468
+#: ../cli/src/connections.c:1464 ../cli/src/connections.c:1609
+#: ../cli/src/connections.c:1737
 #, c-format
 msgid "Error: Unknown connection: %s."
 msgstr "Klaida: nežinomas ryšys: %s"
 
-#: ../cli/src/connections.c:1382 ../cli/src/devices.c:980
+#: ../cli/src/connections.c:1510 ../cli/src/devices.c:1220
 #, c-format
 msgid "Error: timeout value '%s' is not valid."
 msgstr "Klaida: netinkama laukimo laiko reikšmė „%s“."
 
-#: ../cli/src/connections.c:1395 ../cli/src/connections.c:1485
+#: ../cli/src/connections.c:1523 ../cli/src/connections.c:1626
+#: ../cli/src/connections.c:1717
 #, c-format
 msgid "Error: id or uuid has to be specified."
 msgstr "Klaida: id arba uuid turi būti nurodytas."
 
-#: ../cli/src/connections.c:1415
+#: ../cli/src/connections.c:1555
 #, c-format
 msgid "Error: No suitable device found: %s."
 msgstr "Klaida: nerastas tinkamas įrenginys: %s."
 
-#: ../cli/src/connections.c:1417
+#: ../cli/src/connections.c:1557
 #, c-format
 msgid "Error: No suitable device found."
 msgstr "Klaida: nerastas tinkamas įrenginys."
 
-#: ../cli/src/connections.c:1512
+#: ../cli/src/connections.c:1662
 #, c-format
 msgid "Warning: Connection not active\n"
 msgstr "Įspėjimas: ryšys neaktyvus\n"
 
-#: ../cli/src/connections.c:1569
+#: ../cli/src/connections.c:1676
+#, c-format
+msgid "Error: Connection deletion failed: %s"
+msgstr "Klaida: nepavyko ištrinti ryšio: %s"
+
+#: ../cli/src/connections.c:1794
 #, c-format
 msgid "Error: 'con' command '%s' is not valid."
 msgstr "Klaida: netinkama „con“ komanda „%s“."
 
-#: ../cli/src/connections.c:1605
+#: ../cli/src/connections.c:1859
 #, c-format
 msgid "Error: could not connect to D-Bus."
 msgstr "Klaida: nepavyko prisijungti prie D-Bus."
 
-#: ../cli/src/connections.c:1612
+#: ../cli/src/connections.c:1867
 #, c-format
 msgid "Error: Could not get system settings."
 msgstr "Klaida: nepavyko gauti sistemos nustatymų."
 
-#: ../cli/src/connections.c:1620
+#: ../cli/src/connections.c:1877
 #, c-format
-msgid "Error: Could not get user settings."
-msgstr "Klaida: nepavyko gauti naudotojo nustatymų."
-
-#: ../cli/src/connections.c:1630
-#, c-format
-msgid "Error: Can't obtain connections: settings services are not running."
-msgstr "Klaida: nepavyko gauti ryšių: nustatymų tarnybos neveikia."
+msgid "Error: Can't obtain connections: settings service is not running."
+msgstr "Klaida: nepavyko gauti ryšių: nustatymų tarnyba neveikia."
 
 #. 0
 #. 9
-#: ../cli/src/devices.c:61 ../cli/src/devices.c:89 ../cli/src/devices.c:184
+#. 3
+#: ../cli/src/devices.c:67 ../cli/src/devices.c:103 ../cli/src/devices.c:181
+#: ../cli/src/devices.c:197
 msgid "DEVICE"
 msgstr "ĮRENGINYS"
 
-#. 1
-#. 4
 #. 0
-#: ../cli/src/devices.c:63 ../cli/src/devices.c:93
-#: ../cli/src/network-manager.c:36
-msgid "STATE"
-msgstr "BŪSENA"
-
-#: ../cli/src/devices.c:72
-msgid "GENERAL"
-msgstr "BENDRA"
-
-#. 0
-#: ../cli/src/devices.c:73
+#: ../cli/src/devices.c:80
 msgid "CAPABILITIES"
 msgstr "GEBOS"
 
 #. 1
-#: ../cli/src/devices.c:74
+#: ../cli/src/devices.c:81
 msgid "WIFI-PROPERTIES"
 msgstr "WIFI-SAVYBĖS"
 
 #. 2
-#: ../cli/src/devices.c:75
+#: ../cli/src/devices.c:82
 msgid "AP"
 msgstr "AP"
 
 #. 3
-#: ../cli/src/devices.c:76
+#: ../cli/src/devices.c:83
 msgid "WIRED-PROPERTIES"
 msgstr "LAIDINIO-TINKLO-SAVYBĖS"
 
 #. 4
-#: ../cli/src/devices.c:77
-msgid "IP4-SETTINGS"
-msgstr "IP4-PARAMETRAI"
+#: ../cli/src/devices.c:84
+msgid "WIMAX-PROPERTIES"
+msgstr "WIMAX-SAVYBĖS"
 
 #. 5
-#: ../cli/src/devices.c:78
-msgid "IP4-DNS"
-msgstr "IP4-DNS"
+#. 0
+#: ../cli/src/devices.c:85 ../cli/src/devices.c:194
+msgid "NSP"
+msgstr "NSP"
 
 #. 6
-#: ../cli/src/devices.c:79
-#| msgid "IP4-SETTINGS"
-msgid "IP6-SETTINGS"
-msgstr "IP6-PARAMETRAI"
+#: ../cli/src/devices.c:86
+msgid "IP4"
+msgstr "IP4"
 
 #. 7
-#: ../cli/src/devices.c:80
-#| msgid "IP4-DNS"
-msgid "IP6-DNS"
-msgstr "IP6-DNS"
+#: ../cli/src/devices.c:87
+msgid "DHCP4"
+msgstr "DHCP4"
+
+#. 8
+#: ../cli/src/devices.c:88
+msgid "IP6"
+msgstr "IP6"
+
+#. 9
+#: ../cli/src/devices.c:89
+msgid "DHCP6"
+msgstr "DHCP6"
 
 #. 2
-#: ../cli/src/devices.c:91
+#: ../cli/src/devices.c:105
+msgid "VENDOR"
+msgstr "GAMINTOJAS"
+
+#. 3
+#: ../cli/src/devices.c:106
+msgid "PRODUCT"
+msgstr "PRODUKTAS"
+
+#. 4
+#: ../cli/src/devices.c:107
 msgid "DRIVER"
 msgstr "TVARKYKLĖ"
 
-#. 3
-#: ../cli/src/devices.c:92
+#. 5
+#: ../cli/src/devices.c:108
 msgid "HWADDR"
 msgstr "APARATINIS-ADRESAS"
 
+#. 7
+#: ../cli/src/devices.c:110
+msgid "REASON"
+msgstr "PRIEŽASTIS"
+
+#. 8
+#: ../cli/src/devices.c:111
+msgid "UDI"
+msgstr "UDI"
+
+#. 9
+#: ../cli/src/devices.c:112
+msgid "IP-IFACE"
+msgstr "IP-IFACE"
+
+#. 10
+#: ../cli/src/devices.c:113
+msgid "NM-MANAGED"
+msgstr "NM-VALDOMAS"
+
+#. 11
+#: ../cli/src/devices.c:114
+msgid "FIRMWARE-MISSING"
+msgstr "TRŪKSTA-APĮRANGOS"
+
+#. 12
+#: ../cli/src/devices.c:115
+msgid "CONNECTION"
+msgstr "PRISIJUNGIMAS"
+
 #. 0
-#: ../cli/src/devices.c:102
+#: ../cli/src/devices.c:124
 msgid "CARRIER-DETECT"
 msgstr "NEŠLIO-APTIKIMAS"
 
 #. 1
-#: ../cli/src/devices.c:103
+#: ../cli/src/devices.c:125
 msgid "SPEED"
 msgstr "SPARTA"
 
 #. 0
-#: ../cli/src/devices.c:112
+#: ../cli/src/devices.c:134
 msgid "CARRIER"
 msgstr "NEŠLYS"
 
 #. 0
-#: ../cli/src/devices.c:122
+#: ../cli/src/devices.c:144
 msgid "WEP"
 msgstr "WEP"
 
 #. 1
-#: ../cli/src/devices.c:123
+#: ../cli/src/devices.c:145
 msgid "WPA"
 msgstr "WPA"
 
 #. 2
-#: ../cli/src/devices.c:124
+#: ../cli/src/devices.c:146
 msgid "WPA2"
 msgstr "WPA2"
 
 #. 3
-#: ../cli/src/devices.c:125
+#: ../cli/src/devices.c:147
 msgid "TKIP"
 msgstr "TKIP"
 
 #. 4
-#: ../cli/src/devices.c:126
+#: ../cli/src/devices.c:148
 msgid "CCMP"
 msgstr "CCMP"
 
 #. 0
-#: ../cli/src/devices.c:135 ../cli/src/devices.c:146
-msgid "ADDRESS"
-msgstr "ADRESAS"
+#: ../cli/src/devices.c:158
+msgid "CTR-FREQ"
+msgstr "CTR DAŽNIS"
 
 #. 1
-#: ../cli/src/devices.c:136 ../cli/src/devices.c:147
-msgid "PREFIX"
-msgstr "PRIEŠDĖLIS"
+#: ../cli/src/devices.c:159
+msgid "RSSI"
+msgstr "RSSI"
 
 #. 2
-#: ../cli/src/devices.c:137 ../cli/src/devices.c:148
-msgid "GATEWAY"
-msgstr "ŠLIUZAS"
+#: ../cli/src/devices.c:160
+msgid "CINR"
+msgstr "CINR"
 
-#. 0
-#: ../cli/src/devices.c:157 ../cli/src/devices.c:166
-msgid "DNS"
-msgstr "DNS"
+#. 3
+#: ../cli/src/devices.c:161
+msgid "TX-POW"
+msgstr "TX-POW"
+
+#. 4
+#: ../cli/src/devices.c:162
+msgid "BSID"
+msgstr "BSID"
 
 #. 0
-#: ../cli/src/devices.c:175
+#: ../cli/src/devices.c:172
 msgid "SSID"
 msgstr "SSID"
 
 #. 1
-#: ../cli/src/devices.c:176
+#: ../cli/src/devices.c:173
 msgid "BSSID"
 msgstr "BSSID"
 
 #. 2
-#: ../cli/src/devices.c:177
+#: ../cli/src/devices.c:174
 msgid "MODE"
 msgstr "VEIKSENA"
 
 #. 3
-#: ../cli/src/devices.c:178
+#: ../cli/src/devices.c:175
 msgid "FREQ"
 msgstr "DAŽNIS"
 
 #. 4
-#: ../cli/src/devices.c:179
+#: ../cli/src/devices.c:176
 msgid "RATE"
 msgstr "DAŽNUMAS"
 
 #. 5
-#: ../cli/src/devices.c:180
-
+#. 1
+#: ../cli/src/devices.c:177 ../cli/src/devices.c:195
 msgid "SIGNAL"
 msgstr "SIGNALAS"
 
 #. 6
-#: ../cli/src/devices.c:181
+#: ../cli/src/devices.c:178
 msgid "SECURITY"
 msgstr "SAUGA"
 
 #. 7
-#: ../cli/src/devices.c:182
+#: ../cli/src/devices.c:179
 msgid "WPA-FLAGS"
 msgstr "WPA-ŽYMOS"
 
 #. 8
-#: ../cli/src/devices.c:183
+#: ../cli/src/devices.c:180
 msgid "RSN-FLAGS"
 msgstr "RSN-ŽYMOS"
 
 #. 10
-#: ../cli/src/devices.c:185
+#. 4
+#: ../cli/src/devices.c:182 ../cli/src/devices.c:198
 msgid "ACTIVE"
 msgstr "AKTYVUS"
 
-#: ../cli/src/devices.c:208
+#: ../cli/src/devices.c:215
 #, c-format
 msgid ""
 "Usage: nmcli dev { COMMAND | help }\n"
 "\n"
+"  COMMAND := { status | list | disconnect | wifi | wimax }\n"
+"\n"
 "  COMMAND := { status | list | disconnect | wifi }\n"
 "\n"
 "  status\n"
 "  list [iface <iface>]\n"
 "  disconnect iface <iface> [--nowait] [--timeout <timeout>]\n"
-"  wifi [list [iface <iface>] [hwaddr <hwaddr>]]\n"
+"  wifi [list [iface <iface>] [bssid <BSSID>]]\n"
+"  wimax [list [iface <iface>] [nsp <name>]]\n"
 "\n"
 msgstr ""
 "Naudojimas: nmcli dev { KOMANDA | help }\n"
 "\n"
+"  KOMANDA := { status | list | disconnect | wifi | wimax}\n"
+"\n"
 "  KOMANDA := { status | list | disconnect | wifi }\n"
 "\n"
 "  status\n"
 "  list [iface <iface>]\n"
 "  disconnect iface <iface> [--nowait] [--timeout <timeout>]\n"
-"  wifi [list [iface <iface>] [hwaddr <hwaddr>]]\n"
+"  wifi [list [iface <iface>] [bssid <BSSID>]]\n"
+"  wimax [list [iface <iface>] [nsp <name>]]\n"
 "\n"
 
-#: ../cli/src/devices.c:228
+#: ../cli/src/devices.c:243
 msgid "unmanaged"
 msgstr "nevaldomas"
 
-#: ../cli/src/devices.c:230
+#: ../cli/src/devices.c:245
 msgid "unavailable"
 msgstr "neprieinamas"
 
-#: ../cli/src/devices.c:232 ../cli/src/network-manager.c:91
+#: ../cli/src/devices.c:247 ../cli/src/network-manager.c:108
 msgid "disconnected"
 msgstr "atjungtas"
 
-#: ../cli/src/devices.c:234
+#: ../cli/src/devices.c:249
 msgid "connecting (prepare)"
 msgstr "jungiamasi (ruošiama)"
 
-#: ../cli/src/devices.c:236
+#: ../cli/src/devices.c:251
 msgid "connecting (configuring)"
 msgstr "jungiamasi (konfigūruojama)"
 
-#: ../cli/src/devices.c:238
+#: ../cli/src/devices.c:253
 msgid "connecting (need authentication)"
 msgstr "jungiamasi (reikia nustatyti tapatybę)"
 
-#: ../cli/src/devices.c:240
+#: ../cli/src/devices.c:255
 msgid "connecting (getting IP configuration)"
 msgstr "jungiamasi (gaunama IP konfigūracija)"
 
-#: ../cli/src/devices.c:242 ../cli/src/network-manager.c:89
+#: ../cli/src/devices.c:257
+msgid "connecting (checking IP connectivity)"
+msgstr "jungiamasi (tikrinamas IP jungiamumas)"
+
+#: ../cli/src/devices.c:259
+msgid "connecting (starting secondary connections)"
+msgstr "jungiamasi (paleidžiami antriniai prisijungimai)"
+
+#: ../cli/src/devices.c:261 ../cli/src/network-manager.c:104
 msgid "connected"
 msgstr "prisijungta"
 
-#: ../cli/src/devices.c:244
+#: ../cli/src/devices.c:265
 msgid "connection failed"
 msgstr "prisijungti nepavyko"
 
-#: ../cli/src/devices.c:267 ../cli/src/devices.c:424
+#: ../cli/src/devices.c:276
+msgid "No reason given"
+msgstr "Nenurodyta priežastis"
+
+#: ../cli/src/devices.c:279
+msgid "Unknown error"
+msgstr "Nežinoma klaida"
+
+#: ../cli/src/devices.c:282
+msgid "Device is now managed"
+msgstr "Įrenginys dabar yra valdomas"
+
+#: ../cli/src/devices.c:285
+msgid "Device is now unmanaged"
+msgstr "Įrenginys dabar yra nevaldomas"
+
+#: ../cli/src/devices.c:288
+msgid "The device could not be readied for configuration"
+msgstr "Nepavyko paruošti įrenginio konfigūravimui"
+
+#: ../cli/src/devices.c:291
+msgid ""
+"IP configuration could not be reserved (no available address, timeout, etc)"
+msgstr ""
+"Nepavyko rezervuoti IP konfigūracijos (nėra galimo adreso, baigėsi laikas ir "
+"kt.)"
+
+#: ../cli/src/devices.c:294
+msgid "The IP configuration is no longer valid"
+msgstr "IP konfigūracija nebeteisinga"
+
+#: ../cli/src/devices.c:297
+msgid "Secrets were required, but not provided"
+msgstr "Reikalingos bet nepateiktos paslaptys"
+
+#: ../cli/src/devices.c:300
+msgid "802.1X supplicant disconnected"
+msgstr "802.1X prašytojas atjungtas"
+
+#: ../cli/src/devices.c:303
+msgid "802.1X supplicant configuration failed"
+msgstr "802.1X prašytojo konfigūracija nepavyko"
+
+#: ../cli/src/devices.c:306
+msgid "802.1X supplicant failed"
+msgstr "802.1X prašytojas dingo"
+
+#: ../cli/src/devices.c:309
+msgid "802.1X supplicant took too long to authenticate"
+msgstr "802.1X prašytojui per ilgai užtruko patvirtinti tapatybę"
+
+#: ../cli/src/devices.c:312
+msgid "PPP service failed to start"
+msgstr "nepavyko paleisti PPP tarnybos"
+
+#: ../cli/src/devices.c:315
+msgid "PPP service disconnected"
+msgstr "PPP tarnyba atjungta"
+
+#: ../cli/src/devices.c:318
+msgid "PPP failed"
+msgstr "PPP nepavyko"
+
+#: ../cli/src/devices.c:321
+msgid "DHCP client failed to start"
+msgstr "nepavyko paleisti DHCP kliento"
+
+#: ../cli/src/devices.c:324
+msgid "DHCP client error"
+msgstr "DHCO kliento klaida"
+
+#: ../cli/src/devices.c:327
+msgid "DHCP client failed"
+msgstr "DHCP klientas dingo"
+
+#: ../cli/src/devices.c:330
+msgid "Shared connection service failed to start"
+msgstr "Bendro ryšio tarnybos nepavyko paleisti"
+
+#: ../cli/src/devices.c:333
+msgid "Shared connection service failed"
+msgstr "Nepavyko bendro ryšio tarnybos paleidimas"
+
+#: ../cli/src/devices.c:336
+msgid "AutoIP service failed to start"
+msgstr "AutoIP tarnybos nepavyko paleisti"
+
+#: ../cli/src/devices.c:339
+msgid "AutoIP service error"
+msgstr "AutoIP tarnybos klaida"
+
+#: ../cli/src/devices.c:342
+msgid "AutoIP service failed"
+msgstr "Nepavyko AutoIP tarnybos paleidimas"
+
+#: ../cli/src/devices.c:345
+msgid "The line is busy"
+msgstr "Linija užimta"
+
+#: ../cli/src/devices.c:348
+msgid "No dial tone"
+msgstr "Nėra skambinimo tono"
+
+#: ../cli/src/devices.c:351
+msgid "No carrier could be established"
+msgstr "Nepavyko nustatyti pernešėjo"
+
+#: ../cli/src/devices.c:354
+msgid "The dialing request timed out"
+msgstr "Skambinimo užklausos laikas baigėsi"
+
+#: ../cli/src/devices.c:357
+msgid "The dialing attempt failed"
+msgstr "Mėginimas skambinti nepavyko"
+
+#: ../cli/src/devices.c:360
+msgid "Modem initialization failed"
+msgstr "Nepavyko inicializuoti modemo"
+
+#: ../cli/src/devices.c:363
+msgid "Failed to select the specified APN"
+msgstr "Nepavyko pasirinkti nurodyto APN"
+
+#: ../cli/src/devices.c:366
+msgid "Not searching for networks"
+msgstr "Neieškoma tinklų"
+
+#: ../cli/src/devices.c:369
+msgid "Network registration denied"
+msgstr "Tinklo registracija draudžiama"
+
+#: ../cli/src/devices.c:372
+msgid "Network registration timed out"
+msgstr "Baigėsi tinklo registracijos laikas"
+
+#: ../cli/src/devices.c:375
+msgid "Failed to register with the requested network"
+msgstr "Nepavyko registruoti su prašomu tinklu"
+
+#: ../cli/src/devices.c:378
+msgid "PIN check failed"
+msgstr "Nepavyko patikrinti PIN"
+
+#: ../cli/src/devices.c:381
+msgid "Necessary firmware for the device may be missing"
+msgstr "Trūksta įrenginiui reikalingos aparatinės programinės įrangos"
+
+#: ../cli/src/devices.c:384
+msgid "The device was removed"
+msgstr "Įrenginys buvo pašalintas"
+
+#: ../cli/src/devices.c:387
+msgid "NetworkManager went to sleep"
+msgstr "NetworkManager užmigo"
+
+#: ../cli/src/devices.c:390
+msgid "The device's active connection disappeared"
+msgstr "Įrenginio aktyvus ryšys dingo"
+
+#: ../cli/src/devices.c:393
+msgid "Device disconnected by user or client"
+msgstr "Įrenginys atjungtas naudotojo arba kliento"
+
+#: ../cli/src/devices.c:396
+msgid "Carrier/link changed"
+msgstr "Pernešėjas/saitas pasikeitė"
+
+#: ../cli/src/devices.c:399
+msgid "The device's existing connection was assumed"
+msgstr "Įrenginio esamas ryšys buvo priimtas"
+
+#: ../cli/src/devices.c:402
+msgid "The supplicant is now available"
+msgstr "Prašytojas dabar yra prieinamas"
+
+#: ../cli/src/devices.c:405
+msgid "The modem could not be found"
+msgstr "Nepavyko rasti modemo"
+
+#: ../cli/src/devices.c:408
+msgid "The Bluetooth connection failed or timed out"
+msgstr "Bluetooth ryšys nepavyko arba baigėsi laikas"
+
+#: ../cli/src/devices.c:411
+msgid "GSM Modem's SIM card not inserted"
+msgstr "GSM modemo SIM kortelė neįdėta"
+
+#: ../cli/src/devices.c:414
+msgid "GSM Modem's SIM PIN required"
+msgstr "Reikalingas GSM modemo SIM kortelės PIN"
+
+#: ../cli/src/devices.c:417
+msgid "GSM Modem's SIM PUK required"
+msgstr "Reikalingas GSM modemo SIM kortelės PUK"
+
+#: ../cli/src/devices.c:420
+msgid "GSM Modem's SIM wrong"
+msgstr "Neteisinga GSM modemo SIM"
+
+#: ../cli/src/devices.c:423
+msgid "InfiniBand device does not support connected mode"
+msgstr "InfiniBand įrenginys nepalaiko ryšio veiksenos"
+
+#: ../cli/src/devices.c:426
+msgid "A dependency of the connection failed"
+msgstr "Ryšio priklausomybė nepavyko"
+
+#: ../cli/src/devices.c:428 ../cli/src/devices.c:451 ../cli/src/devices.c:467
+#: ../cli/src/devices.c:587 ../cli/src/devices.c:631
 msgid "Unknown"
 msgstr "Nežinoma"
 
-#: ../cli/src/devices.c:299
+#: ../cli/src/devices.c:500
 msgid "(none)"
 msgstr "(jokios)"
 
-#: ../cli/src/devices.c:324
-#, c-format
-msgid "%s: error converting IP4 address 0x%X"
-msgstr "%s: klaida konvertuojant IP4 adresą 0x%X"
-
-#: ../cli/src/devices.c:393
+#: ../cli/src/devices.c:556
 #, c-format
 msgid "%u MHz"
 msgstr "%u MHz"
 
-#: ../cli/src/devices.c:394
+#: ../cli/src/devices.c:557
 #, c-format
 msgid "%u MB/s"
 msgstr "%u MB/s"
 
-#: ../cli/src/devices.c:403
+#: ../cli/src/devices.c:566
 msgid "Encrypted: "
 msgstr "Šifruota: "
 
-#: ../cli/src/devices.c:408
+#: ../cli/src/devices.c:571
 msgid "WEP "
 msgstr "WEP"
 
-#: ../cli/src/devices.c:410
+#: ../cli/src/devices.c:573
 msgid "WPA "
 msgstr "WPA"
 
-#: ../cli/src/devices.c:412
+#: ../cli/src/devices.c:575
 msgid "WPA2 "
 msgstr "WPA2"
 
-#: ../cli/src/devices.c:415
+#: ../cli/src/devices.c:578
 msgid "Enterprise "
 msgstr "Kompanija "
 
-#: ../cli/src/devices.c:424
+#: ../cli/src/devices.c:587
 msgid "Ad-Hoc"
 msgstr "Ad-Hoc"
 
-#: ../cli/src/devices.c:424
+#: ../cli/src/devices.c:587
 msgid "Infrastructure"
 msgstr "Infrastruktūra"
 
-#: ../cli/src/devices.c:486
+#: ../cli/src/devices.c:622
+msgid "Home"
+msgstr "Namai"
+
+#: ../cli/src/devices.c:625
+msgid "Partner"
+msgstr "Partneris"
+
+#: ../cli/src/devices.c:628
+msgid "Roaming"
+msgstr "Tarptinklinio ryšio tinklas"
+
+#: ../cli/src/devices.c:700
 #, c-format
 msgid "Error: 'dev list': %s"
 msgstr "Klaida: „dev list“: %s"
 
-#: ../cli/src/devices.c:488
+#: ../cli/src/devices.c:702
 #, c-format
 msgid "Error: 'dev list': %s; allowed fields: %s"
 msgstr "Klaida: „dev list“: %s; leidžiami laukai: %s"
 
-#: ../cli/src/devices.c:497
+#: ../cli/src/devices.c:711
 msgid "Device details"
 msgstr "Įrenginio informacija"
 
-#: ../cli/src/devices.c:527 ../cli/src/devices.c:925
+#: ../cli/src/devices.c:756 ../cli/src/devices.c:757 ../cli/src/devices.c:1164
+#: ../cli/src/utils.c:445
 msgid "(unknown)"
 msgstr "(nežinoma)"
 
-#: ../cli/src/devices.c:528
-msgid "unknown)"
-msgstr "nežinoma)"
+#: ../cli/src/devices.c:765
+msgid "not connected"
+msgstr "neprisijungta"
 
-#: ../cli/src/devices.c:554
+#: ../cli/src/devices.c:792
 #, c-format
 msgid "%u Mb/s"
 msgstr "%u Mb/s"
 
 #. Print header
 #. "WIRED-PROPERTIES"
-#: ../cli/src/devices.c:627
+#: ../cli/src/devices.c:865
 msgid "on"
 msgstr "įjungta"
 
-#: ../cli/src/devices.c:627
+#: ../cli/src/devices.c:865
 msgid "off"
 msgstr "išjungta"
 
-#: ../cli/src/devices.c:808
+#: ../cli/src/devices.c:1016
 #, c-format
 msgid "Error: 'dev status': %s"
 msgstr "Klaida: „dev status“: %s"
 
-#: ../cli/src/devices.c:810
+#: ../cli/src/devices.c:1018
 #, c-format
 msgid "Error: 'dev status': %s; allowed fields: %s"
 msgstr "Klaida: „dev status“: %s; leidžiami laukai: %s"
 
-#: ../cli/src/devices.c:817
+#: ../cli/src/devices.c:1041
 msgid "Status of devices"
 msgstr "Įrenginių būsena"
 
-#: ../cli/src/devices.c:845
+#: ../cli/src/devices.c:1072
 #, c-format
 msgid "Error: '%s' argument is missing."
 msgstr "Klaida: trūksta argumento „%s“."
 
-#: ../cli/src/devices.c:874 ../cli/src/devices.c:1013
-#: ../cli/src/devices.c:1136
+#: ../cli/src/devices.c:1113 ../cli/src/devices.c:1265
+#: ../cli/src/devices.c:1402 ../cli/src/devices.c:1621
 #, c-format
 msgid "Error: Device '%s' not found."
 msgstr "Klaida: nerastas įrenginys „%s“."
 
-#: ../cli/src/devices.c:897
+#: ../cli/src/devices.c:1136
 #, c-format
 msgid "Success: Device '%s' successfully disconnected."
 msgstr "Pavyko: sėkmingai atjungtas įrenginys „%s“."
 
-#: ../cli/src/devices.c:922
+#: ../cli/src/devices.c:1161
 #, c-format
 msgid "Error: Device '%s' (%s) disconnecting failed: %s"
 msgstr "Klaida: įrenginio „%s“ (%s) atjungti nepavyko: %s"
 
-#: ../cli/src/devices.c:930
+#: ../cli/src/devices.c:1169
 #, c-format
 msgid "Device state: %d (%s)\n"
 msgstr "Įrenginio būsena: %d (%s)\n"
 
-#: ../cli/src/devices.c:994
+#: ../cli/src/devices.c:1234
 #, c-format
 msgid "Error: iface has to be specified."
 msgstr "Klaida: turi būti nurodytas iface."
 
-#: ../cli/src/devices.c:1112
+#: ../cli/src/devices.c:1360
 #, c-format
 msgid "Error: 'dev wifi': %s"
 msgstr "Klaida: „dev wifi“: %s"
 
-#: ../cli/src/devices.c:1114
+#: ../cli/src/devices.c:1362
 #, c-format
 msgid "Error: 'dev wifi': %s; allowed fields: %s"
 msgstr "Klaida: „dev wifi“: %s; leidžiami laukai: %s"
 
-#: ../cli/src/devices.c:1121
+#: ../cli/src/devices.c:1385
 msgid "WiFi scan list"
 msgstr "WiFi skenavimo sąrašas"
 
-#: ../cli/src/devices.c:1156 ../cli/src/devices.c:1210
+#: ../cli/src/devices.c:1422 ../cli/src/devices.c:1476
 #, c-format
-msgid "Error: Access point with hwaddr '%s' not found."
-msgstr "Klaida: nerastas prieigos taškas su hwaddr „%s“."
+msgid "Error: Access point with bssid '%s' not found."
+msgstr "Klaida: prieigos taškas su bssid „%s“ nerastas"
 
-#: ../cli/src/devices.c:1173
+#: ../cli/src/devices.c:1439
 #, c-format
 msgid "Error: Device '%s' is not a WiFi device."
 msgstr "Klaida: „%s“ nėra WiFi įrenginys "
 
-#: ../cli/src/devices.c:1237
+#: ../cli/src/devices.c:1503
 #, c-format
 msgid "Error: 'dev wifi' command '%s' is not valid."
 msgstr "Klaida: netinkama „dev wifi“ komanda „%s“."
 
-#: ../cli/src/devices.c:1284
+#: ../cli/src/devices.c:1579
+#, c-format
+msgid "Error: 'dev wimax': %s"
+msgstr "Klaida: „dev wimax“: %s"
+
+#: ../cli/src/devices.c:1581
+#, c-format
+msgid "Error: 'dev wimax': %s; allowed fields: %s"
+msgstr "Klaida: „dev wimax“: %s; leidžiami laukai: %s"
+
+#: ../cli/src/devices.c:1604
+msgid "WiMAX NSP list"
+msgstr "WiMAX NSP sąrašas"
+
+#: ../cli/src/devices.c:1641
+#, c-format
+msgid "Error: NSP with name '%s' not found."
+msgstr "Klaida: NSP pavadintas „%s“ nerastas."
+
+#: ../cli/src/devices.c:1652
+#, c-format
+msgid "Error: Device '%s' is not a WiMAX device."
+msgstr "Klaida: „%s“ nėra WiMAX įrenginys "
+
+#: ../cli/src/devices.c:1683
+#, c-format
+msgid "Error: Access point with nsp '%s' not found."
+msgstr "Klaida: prieigos su nsp „%s“ taškas nerastas."
+
+#: ../cli/src/devices.c:1710
+#, c-format
+msgid "Error: 'dev wimax' command '%s' is not valid."
+msgstr "Klaida: netinkama „dev wimax“ komanda „%s“."
+
+#: ../cli/src/devices.c:1760
 #, c-format
 msgid "Error: 'dev' command '%s' is not valid."
 msgstr "Klaida: netinkama „dev“ komanda „%s“."
 
-#: ../cli/src/network-manager.c:35
+#: ../cli/src/network-manager.c:37
 msgid "RUNNING"
 msgstr "VEIKIA"
 
-#. 1
-#: ../cli/src/network-manager.c:37
+#. 0
+#: ../cli/src/network-manager.c:38
+msgid "VERSION"
+msgstr "VERSIJA"
+
+#. 2
+#: ../cli/src/network-manager.c:40
 msgid "NET-ENABLED"
 msgstr "TINKLAS-ĮJUNGTAS"
 
-#. 2
-#: ../cli/src/network-manager.c:38
+#. 3
+#: ../cli/src/network-manager.c:41
 msgid "WIFI-HARDWARE"
 msgstr "WIFI-APARATINĖ-ĮRANGA"
 
-#. 3
-#: ../cli/src/network-manager.c:39
+#. 4
+#: ../cli/src/network-manager.c:42
 msgid "WIFI"
 msgstr "WIFI"
 
-#. 4
-#: ../cli/src/network-manager.c:40
+#. 5
+#: ../cli/src/network-manager.c:43
 msgid "WWAN-HARDWARE"
 msgstr "WWAN-APARATINĖ-ĮRANGA"
 
-#. 5
-#: ../cli/src/network-manager.c:41
+#. 6
+#: ../cli/src/network-manager.c:44
 msgid "WWAN"
 msgstr "WWAN"
 
-#: ../cli/src/network-manager.c:64
-#, c-format
-#| msgid ""
-#| "Usage: nmcli nm { COMMAND | help }\n"
-#| "\n"
-#| "  COMMAND := { status | sleep | wakeup | wifi | wwan }\n"
-#| "\n"
-#| "  status\n"
-#| "  sleep\n"
-#| "  wakeup\n"
-#| "  wifi [on|off]\n"
-#| "  wwan [on|off]\n"
-#| "\n"
+#. 7
+#: ../cli/src/network-manager.c:45
+msgid "WIMAX-HARDWARE"
+msgstr "WIMAX-APARATINĖ-ĮRANGA"
+
+#. 8
+#: ../cli/src/network-manager.c:46
+msgid "WIMAX"
+msgstr "WIMAX"
+
+#: ../cli/src/network-manager.c:67
+#, c-format
 msgid ""
 "Usage: nmcli nm { COMMAND | help }\n"
 "\n"
+"  COMMAND := { status | enable | sleep | wifi | wwan | wimax }\n"
+"\n"
 "  COMMAND := { status | enable | sleep | wifi | wwan }\n"
 "\n"
 "  status\n"
@@ -914,137 +1373,160 @@ msgid ""
 "  sleep [true|false]\n"
 "  wifi [on|off]\n"
 "  wwan [on|off]\n"
+"  wimax [on|off]\n"
 "\n"
 msgstr ""
 "Naudojimas: nmcli nm { KOMANDA | help }\n"
 "\n"
+"  KOMANDA := { status | enable | sleep | wifi | wwan | wimax}\n"
+"\n"
 "  KOMANDA := { status | enable | sleep | wifi | wwan }\n"
 "\n"
 "  status\n"
-"  enable [on|off]\n"
-"  sleep [on|off]\n"
+"  enable [true|false]\n"
+"  sleep [true|false]\n"
 "  wifi [on|off]\n"
 "  wwan [on|off]\n"
+"  wimax [on|off]\n"
 "\n"
 
-#: ../cli/src/network-manager.c:85
+#: ../cli/src/network-manager.c:96
 msgid "asleep"
 msgstr "miegantis"
 
-#: ../cli/src/network-manager.c:87
+#: ../cli/src/network-manager.c:98
 msgid "connecting"
 msgstr "jungiamasi"
 
-#: ../cli/src/network-manager.c:128
+#: ../cli/src/network-manager.c:100
+msgid "connected (local only)"
+msgstr "prisijungta (vietinis)"
+
+#: ../cli/src/network-manager.c:102
+msgid "connected (site only)"
+msgstr "prisijungta (tik puslapyje)"
+
+#: ../cli/src/network-manager.c:106
+msgid "disconnecting"
+msgstr "atsijungiama"
+
+#: ../cli/src/network-manager.c:146
 #, c-format
 msgid "Error: 'nm status': %s"
 msgstr "Klaida: „nm status“: %s"
 
-#: ../cli/src/network-manager.c:130
+#: ../cli/src/network-manager.c:148
 #, c-format
 msgid "Error: 'nm status': %s; allowed fields: %s"
 msgstr "Klaida: „nm status“: %s; leidžiami laukai: %s"
 
-#: ../cli/src/network-manager.c:137
-msgid "NetworkManager status"
-msgstr "NetworkManager būsena"
-
-#. Print header
-#: ../cli/src/network-manager.c:144 ../cli/src/network-manager.c:145
-#: ../cli/src/network-manager.c:146 ../cli/src/network-manager.c:147
-#: ../cli/src/network-manager.c:154 ../cli/src/network-manager.c:247
-#: ../cli/src/network-manager.c:296 ../cli/src/network-manager.c:328
+#. create NMClient
+#: ../cli/src/network-manager.c:161 ../cli/src/network-manager.c:162
+#: ../cli/src/network-manager.c:163 ../cli/src/network-manager.c:164
+#: ../cli/src/network-manager.c:165 ../cli/src/network-manager.c:167
+#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:289
+#: ../cli/src/network-manager.c:344 ../cli/src/network-manager.c:382
+#: ../cli/src/network-manager.c:421
 msgid "enabled"
 msgstr "įjungta"
 
-#: ../cli/src/network-manager.c:144 ../cli/src/network-manager.c:145
-#: ../cli/src/network-manager.c:146 ../cli/src/network-manager.c:147
-#: ../cli/src/network-manager.c:154 ../cli/src/network-manager.c:247
-#: ../cli/src/network-manager.c:296 ../cli/src/network-manager.c:328
+#: ../cli/src/network-manager.c:161 ../cli/src/network-manager.c:162
+#: ../cli/src/network-manager.c:163 ../cli/src/network-manager.c:164
+#: ../cli/src/network-manager.c:165 ../cli/src/network-manager.c:167
+#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:289
+#: ../cli/src/network-manager.c:344 ../cli/src/network-manager.c:382
+#: ../cli/src/network-manager.c:421
 msgid "disabled"
 msgstr "išjungta"
 
-#: ../cli/src/network-manager.c:152
+#: ../cli/src/network-manager.c:181
+msgid "NetworkManager status"
+msgstr "NetworkManager būsena"
+
+#. Print header
+#: ../cli/src/network-manager.c:184
 msgid "running"
 msgstr "veikia"
 
-#: ../cli/src/network-manager.c:152
+#: ../cli/src/network-manager.c:184
 msgid "not running"
 msgstr "neveikia"
 
-#: ../cli/src/network-manager.c:175
+#: ../cli/src/network-manager.c:215 ../cli/src/utils.c:425
 #, c-format
-#| msgid "Error: could not connect to D-Bus."
 msgid "Error: Couldn't connect to system bus: %s"
 msgstr "Klaida: nepavyko prisijungti prie sistemos magistralės: %s"
 
-#: ../cli/src/network-manager.c:186
+#: ../cli/src/network-manager.c:226
 #, c-format
-#| msgid "Error: could not connect to D-Bus."
 msgid "Error: Couldn't create D-Bus object proxy."
 msgstr "Klaida: nepavyko sukurti D-Bus tarpinio objekto."
 
-#: ../cli/src/network-manager.c:192
+#: ../cli/src/network-manager.c:232
 #, c-format
-#| msgid "Error: 'con list': %s"
 msgid "Error in sleep: %s"
 msgstr "Klaida užmigdant: %s"
 
-#: ../cli/src/network-manager.c:237 ../cli/src/network-manager.c:286
-#: ../cli/src/network-manager.c:318
+#: ../cli/src/network-manager.c:276 ../cli/src/network-manager.c:331
+#: ../cli/src/network-manager.c:369 ../cli/src/network-manager.c:408
 #, c-format
 msgid "Error: '--fields' value '%s' is not valid here; allowed fields: %s"
 msgstr "Klaida: „--fields“ reikšmė „%s“ čia netinkama; leidžiami laukai: %s"
 
-#: ../cli/src/network-manager.c:245
-#| msgid "WiFi enabled"
+#: ../cli/src/network-manager.c:284
 msgid "Networking enabled"
 msgstr "Tinklas įjungtas"
 
-#: ../cli/src/network-manager.c:256
+#: ../cli/src/network-manager.c:300
 #, c-format
-#| msgid "Error: invalid 'wwan' parameter: '%s'."
 msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'."
 msgstr ""
 "Klaida: netinkamas „enable“ parametras: „%s“; naudokite „true“ arba „false“."
 
-#: ../cli/src/network-manager.c:265
+#: ../cli/src/network-manager.c:310
 #, c-format
-#| msgid "Error: Could not connect to NetworkManager."
 msgid "Error: Sleeping status is not exported by NetworkManager."
 msgstr "Klaida: „NetworkManager“ nepateikia informacijos apie miego būseną."
 
-#: ../cli/src/network-manager.c:273
+#: ../cli/src/network-manager.c:318
 #, c-format
-#| msgid "Error: invalid 'wifi' parameter: '%s'."
 msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'."
 msgstr ""
 "Klaida: netinkamas „sleep“ parametras: „%s“; naudokite „true“ arba „false“."
 
-#: ../cli/src/network-manager.c:294
+#: ../cli/src/network-manager.c:339
 msgid "WiFi enabled"
 msgstr "WiFi įjungtas"
 
-#: ../cli/src/network-manager.c:305
+#: ../cli/src/network-manager.c:355
 #, c-format
 msgid "Error: invalid 'wifi' parameter: '%s'."
 msgstr "Klaida: netinkamas „wifi“ parametras: „%s“."
 
-#: ../cli/src/network-manager.c:326
+#: ../cli/src/network-manager.c:377
 msgid "WWAN enabled"
 msgstr "WWAN įjungta"
 
-#: ../cli/src/network-manager.c:337
+#: ../cli/src/network-manager.c:393
 #, c-format
 msgid "Error: invalid 'wwan' parameter: '%s'."
 msgstr "Klaida: netinkamas „wwan“ parametras: „%s“."
 
-#: ../cli/src/network-manager.c:348
+#: ../cli/src/network-manager.c:416
+msgid "WiMAX enabled"
+msgstr "WiMAX įjungtas"
+
+#: ../cli/src/network-manager.c:432
+#, c-format
+msgid "Error: invalid 'wimax' parameter: '%s'."
+msgstr "Klaida: netinkamas „wimax“ parametras: „%s“."
+
+#: ../cli/src/network-manager.c:445
 #, c-format
 msgid "Error: 'nm' command '%s' is not valid."
 msgstr "Klaida: netinkama „nm“ komanda „%s“."
 
-#: ../cli/src/nmcli.c:69
+#: ../cli/src/nmcli.c:64
 #, c-format
 msgid ""
 "Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n"
@@ -1056,6 +1538,8 @@ msgid ""
 "  -f[ields] <field1,field2,...>|all|common   specify fields to output\n"
 "  -e[scape] yes|no                           escape columns separators in "
 "values\n"
+"  -n[ocheck]                                 don't check nmcli and "
+"NetworkManager versions\n"
 "  -v[ersion]                                 show program version\n"
 "  -h[elp]                                    print this help\n"
 "\n"
@@ -1074,6 +1558,8 @@ msgstr ""
 "  -f[fields] <field1,field2,...>|all|common  nurodyti išvedamus laukus\n"
 "  -e[scape] yes|no                           atlikti stulpelių skirtukų "
 "kaitą\n"
+"  -n[ocheck]                                 netikrinti nmcli ir "
+"NetworkManager versijų\n"
 "  -v[ersion]                                 rodyti programos versiją\n"
 "  -h[elp]                                    išvesti šią pagalbą\n"
 "\n"
@@ -1083,566 +1569,612 @@ msgstr ""
 "  dev         NetworkManager valdomi įrenginiai\n"
 "\n"
 
-#: ../cli/src/nmcli.c:113
+#: ../cli/src/nmcli.c:109
 #, c-format
 msgid "Error: Object '%s' is unknown, try 'nmcli help'."
 msgstr "Klaida: nežinomas objektas „%s“, bandykite „nmcli help“."
 
-#: ../cli/src/nmcli.c:143
+#: ../cli/src/nmcli.c:139
 #, c-format
 msgid "Error: Option '--terse' is specified the second time."
 msgstr "Klaida: parinktis „--terse“ nurodyta antrą kartą."
 
-#: ../cli/src/nmcli.c:148
+#: ../cli/src/nmcli.c:144
 #, c-format
 msgid "Error: Option '--terse' is mutually exclusive with '--pretty'."
 msgstr ""
 "Klaida: parinktis „--terse“ yra tarpusavyje nesuderinama su „--pretty“."
 
-#: ../cli/src/nmcli.c:156
+#: ../cli/src/nmcli.c:152
 #, c-format
 msgid "Error: Option '--pretty' is specified the second time."
 msgstr "Klaida: parinktis „--pretty“ nurodyta antrą kartą."
 
-#: ../cli/src/nmcli.c:161
+#: ../cli/src/nmcli.c:157
 #, c-format
 msgid "Error: Option '--pretty' is mutually exclusive with '--terse'."
 msgstr ""
 "Klaida: parinktis „--pretty“ yra tarpusavyje nesuderinama su „--terse“."
 
-#: ../cli/src/nmcli.c:171 ../cli/src/nmcli.c:187
+#: ../cli/src/nmcli.c:167 ../cli/src/nmcli.c:183
 #, c-format
 msgid "Error: missing argument for '%s' option."
 msgstr "Klaida: trūksta argumento parinkčiai „%s“."
 
-#: ../cli/src/nmcli.c:180 ../cli/src/nmcli.c:196
+#: ../cli/src/nmcli.c:176 ../cli/src/nmcli.c:192
 #, c-format
 msgid "Error: '%s' is not valid argument for '%s' option."
 msgstr "Klaida: „%s“ yra netinkamas argumentas parinkčiai „%s“."
 
-#: ../cli/src/nmcli.c:203
+#: ../cli/src/nmcli.c:199
 #, c-format
 msgid "Error: fields for '%s' options are missing."
 msgstr "Klaida: trūksta laukų parinktims „%s“."
 
-#: ../cli/src/nmcli.c:209
+#: ../cli/src/nmcli.c:207
 #, c-format
 msgid "nmcli tool, version %s\n"
 msgstr "nmcli įrankis, versija %s\n"
 
-#: ../cli/src/nmcli.c:215
+#: ../cli/src/nmcli.c:213
 #, c-format
 msgid "Error: Option '%s' is unknown, try 'nmcli -help'."
 msgstr "Klaida: nežinoma parinktis „%s“, bandykite „nmcli -help“."
 
-#: ../cli/src/nmcli.c:234
+#: ../cli/src/nmcli.c:232
 #, c-format
 msgid "Caught signal %d, shutting down..."
 msgstr "Gautas signalas %d, išjungiama..."
 
-#: ../cli/src/nmcli.c:259
-#, c-format
-msgid "Error: Could not connect to NetworkManager."
-msgstr "Klaida: nepavyko prisijungti prie NetworkManager."
+#: ../cli/src/nmcli.c:257
+msgid "Error: Could not create NMClient object."
+msgstr "Klaida: nepavyko sukurti NMClient objekto."
 
-#: ../cli/src/nmcli.c:275
+#: ../cli/src/nmcli.c:273
 msgid "Success"
 msgstr "Pavyko"
 
-#: ../cli/src/settings.c:411
+#: ../cli/src/settings.c:497
 #, c-format
 msgid "%d (hex-ascii-key)"
 msgstr "%d (šešioliktainis ascii raktas)"
 
-#: ../cli/src/settings.c:413
+#: ../cli/src/settings.c:499
 #, c-format
 msgid "%d (104/128-bit passphrase)"
 msgstr "%d (104/128 bitų slaptažodis)"
 
-#: ../cli/src/settings.c:416
+#: ../cli/src/settings.c:502
 #, c-format
 msgid "%d (unknown)"
 msgstr "%d (nežinoma)"
 
-#: ../cli/src/settings.c:442
+#: ../cli/src/settings.c:528
 msgid "0 (unknown)"
 msgstr "0 (nežinoma)"
 
-#: ../cli/src/settings.c:448
+#: ../cli/src/settings.c:534
 msgid "any, "
 msgstr "bet koks, "
 
-#: ../cli/src/settings.c:450
+#: ../cli/src/settings.c:536
 msgid "900 MHz, "
 msgstr "900 MHz, "
 
-#: ../cli/src/settings.c:452
+#: ../cli/src/settings.c:538
 msgid "1800 MHz, "
 msgstr "1800 MHz, "
 
-#: ../cli/src/settings.c:454
+#: ../cli/src/settings.c:540
 msgid "1900 MHz, "
 msgstr "1900 MHz, "
 
-#: ../cli/src/settings.c:456
+#: ../cli/src/settings.c:542
 msgid "850 MHz, "
 msgstr "850 MHz, "
 
-#: ../cli/src/settings.c:458
+#: ../cli/src/settings.c:544
 msgid "WCDMA 3GPP UMTS 2100 MHz, "
 msgstr "WCDMA 3GPP UMTS 2100 MHz, "
 
-#: ../cli/src/settings.c:460
+#: ../cli/src/settings.c:546
 msgid "WCDMA 3GPP UMTS 1800 MHz, "
 msgstr "WCDMA 3GPP UMTS 1800 MHz, "
 
-#: ../cli/src/settings.c:462
+#: ../cli/src/settings.c:548
 msgid "WCDMA 3GPP UMTS 1700/2100 MHz, "
 msgstr "WCDMA 3GPP UMTS 1700/2100 MHz, "
 
-#: ../cli/src/settings.c:464
+#: ../cli/src/settings.c:550
 msgid "WCDMA 3GPP UMTS 800 MHz, "
 msgstr "WCDMA 3GPP UMTS 800 MHz, "
 
-#: ../cli/src/settings.c:466
+#: ../cli/src/settings.c:552
 msgid "WCDMA 3GPP UMTS 850 MHz, "
 msgstr "WCDMA 3GPP UMTS 850 MHz, "
 
-#: ../cli/src/settings.c:468
+#: ../cli/src/settings.c:554
 msgid "WCDMA 3GPP UMTS 900 MHz, "
 msgstr "WCDMA 3GPP UMTS 900 MHz, "
 
-#: ../cli/src/settings.c:470
+#: ../cli/src/settings.c:556
 msgid "WCDMA 3GPP UMTS 1700 MHz, "
 msgstr "WCDMA 3GPP UMTS 1700 MHz, "
 
-#: ../cli/src/settings.c:554 ../cli/src/settings.c:721
+#: ../cli/src/settings.c:558
+msgid "WCDMA 3GPP UMTS 1900 MHz, "
+msgstr "WCDMA 3GPP UMTS 1900 MHz, "
+
+#: ../cli/src/settings.c:560
+msgid "WCDMA 3GPP UMTS 2600 MHz, "
+msgstr "WCDMA 3GPP UMTS 2600 MHz, "
+
+#: ../cli/src/settings.c:578
+msgid "0 (NONE)"
+msgstr "0 (JOKS)"
+
+#: ../cli/src/settings.c:584
+msgid "REORDER_HEADERS, "
+msgstr "PERRIKIUOTI_ANTRAŠTES, "
+
+#: ../cli/src/settings.c:586
+msgid "GVRP, "
+msgstr "GVRP, "
+
+#: ../cli/src/settings.c:588
+msgid "LOOSE_BINDING, "
+msgstr "PRARASTI_SUSIEJIMĄ, "
+
+#: ../cli/src/settings.c:731 ../cli/src/settings.c:927
+#: ../cli/src/settings.c:1631
 msgid "auto"
 msgstr "automatinis"
 
-#: ../cli/src/settings.c:716 ../cli/src/settings.c:719
-#: ../cli/src/settings.c:720 ../cli/src/utils.c:172
+#: ../cli/src/settings.c:921 ../cli/src/settings.c:924
+#: ../cli/src/settings.c:925 ../cli/src/utils.c:247
 msgid "not set"
 msgstr "nenustatyta"
 
-#: ../cli/src/utils.c:124
+#: ../cli/src/utils.c:103
+#, c-format
+msgid "Error converting IP4 address '0x%X' to text form"
+msgstr "Klaida konvertuojant IP4 adresą „0x%X“ į tekstinę formą"
+
+#: ../cli/src/utils.c:131
+#, c-format
+msgid "Error converting IP6 address '%s' to text form"
+msgstr "Klaida konvertuojant IP6 adresą „%s“ į tekstinę formą"
+
+#: ../cli/src/utils.c:200
 #, c-format
 msgid "field '%s' has to be alone"
 msgstr "laukas „%s“ turi būti vienintelis"
 
-#: ../cli/src/utils.c:127
+#: ../cli/src/utils.c:203
 #, c-format
 msgid "invalid field '%s'"
 msgstr "netinkamas laukas „%s“"
 
-#: ../cli/src/utils.c:146
+#: ../cli/src/utils.c:222
 #, c-format
 msgid "Option '--terse' requires specifying '--fields'"
 msgstr "Parinktis „--terse“ reikalauja nurodyti „--fields“"
 
-#: ../cli/src/utils.c:150
+#: ../cli/src/utils.c:226
 #, c-format
 msgid "Option '--terse' requires specific '--fields' option values , not '%s'"
 msgstr ""
 "Parinktis „--terse“ reikalauja konkrečių parinkties „--fields“ reikšmių, ne "
 "„%s“"
 
-#: ../libnm-util/crypto.c:120
+#: ../cli/src/utils.c:436
+#, c-format
+msgid "Error: Couldn't create D-Bus object proxy for org.freedesktop.DBus"
+msgstr ""
+"Klaida: nepavyko sukurti D-Bus tarpinio objekto skirto org.freedesktop.DBus"
+
+#: ../cli/src/utils.c:444
+#, c-format
+msgid "Error: NameHasOwner request failed: %s"
+msgstr "Klaida: NameHasOwner užklausa nepavyko: %s"
+
+#: ../cli/src/utils.c:489
+#, c-format
+msgid ""
+"Warning: nmcli (%s) and NetworkManager (%s) versions don't match. Use --"
+"nocheck to suppress the warning.\n"
+msgstr ""
+"Įspėjimas: nmcli (%s) ir NetworkManager (%s) versijos neatitinka. Naudokite "
+"--nocheck įspėjimui nerodyti.\n"
+
+#: ../cli/src/utils.c:498
+#, c-format
+msgid ""
+"Error: nmcli (%s) and NetworkManager (%s) versions don't match. Force "
+"execution using --nocheck, but the results are unpredictable."
+msgstr ""
+"Klaida: nmcli (%s) ir NetworkManager (%s) versijos neatitinka. Priverskite "
+"vykdymą naudodami --nocheck, bet rezultatai yra nenuspėjami."
+
+#: ../libnm-util/crypto.c:133
 #, c-format
 msgid "PEM key file had no end tag '%s'."
 msgstr "PEM rakto faile nėra pabaigos gairės „%s“."
 
-#: ../libnm-util/crypto.c:130
+#: ../libnm-util/crypto.c:146
 #, c-format
 msgid "Doesn't look like a PEM private key file."
 msgstr "Nepanašu į PEM asmeninio rakto failą."
 
-#: ../libnm-util/crypto.c:138
+#: ../libnm-util/crypto.c:154
 #, c-format
 msgid "Not enough memory to store PEM file data."
 msgstr "Nepakanka atminties PEM failo duomenų saugojimui."
 
-#: ../libnm-util/crypto.c:154
+#: ../libnm-util/crypto.c:170
 #, c-format
 msgid "Malformed PEM file: Proc-Type was not first tag."
 msgstr "Netinkamai suformuotas PEM failas: Proc-Type buvo ne pirma gairė."
 
-#: ../libnm-util/crypto.c:162
+#: ../libnm-util/crypto.c:178
 #, c-format
 msgid "Malformed PEM file: unknown Proc-Type tag '%s'."
 msgstr "Netinkamai suformuotas PEM failas: nežinoma Proc-Type gairė „%s“."
 
-#: ../libnm-util/crypto.c:172
+#: ../libnm-util/crypto.c:188
 #, c-format
 msgid "Malformed PEM file: DEK-Info was not the second tag."
 msgstr "Netinkamai suformuotas PEM failas: DEK-Info buvo ne antra gairė."
 
-#: ../libnm-util/crypto.c:183
+#: ../libnm-util/crypto.c:199
 #, c-format
 msgid "Malformed PEM file: no IV found in DEK-Info tag."
 msgstr "Netinkamai suformuotas PEM failas: DEK-Info gairėje nerasta IV."
 
-#: ../libnm-util/crypto.c:190
+#: ../libnm-util/crypto.c:206
 #, c-format
 msgid "Malformed PEM file: invalid format of IV in DEK-Info tag."
 msgstr ""
 "Netinkamai suformuotas PEM failas: DEK-Info gairėje netinkamas IV formatas."
 
-#: ../libnm-util/crypto.c:203
+#: ../libnm-util/crypto.c:219
 #, c-format
 msgid "Malformed PEM file: unknown private key cipher '%s'."
 msgstr ""
 "Netinkamai suformuotas PEM failas: nežinomas asmeninio rakto šifras „%s“."
 
-#: ../libnm-util/crypto.c:222
+#: ../libnm-util/crypto.c:238
 #, c-format
 msgid "Could not decode private key."
 msgstr "Nepavyko iškoduoti asmeninio rakto."
 
-#: ../libnm-util/crypto.c:267
-#, c-format
-msgid "PEM certificate '%s' had no end tag '%s'."
-msgstr "PEM liudijime „%s“ nėra pabaigos gairės „%s“."
+#: ../libnm-util/crypto.c:284
+msgid "Failed to find expected PKCS#8 start tag."
+msgstr "Nepavyko rasti laukiamos PKCS#8 pradžios žymos."
 
-#: ../libnm-util/crypto.c:277
+#: ../libnm-util/crypto.c:292
 #, c-format
-msgid "Failed to decode certificate."
-msgstr "Nepavyko iškoduoti liudijimo."
+msgid "Failed to find expected PKCS#8 end tag '%s'."
+msgstr "Nepavyko rasti laukiamos PKCS#8 pabaigos žymos „%s“."
 
-#: ../libnm-util/crypto.c:286
-#, c-format
-msgid "Not enough memory to store certificate data."
-msgstr "Nepakanka atminties liudijimo duomnų saugojimui."
+#: ../libnm-util/crypto.c:312
+msgid "Not enough memory to store private key data."
+msgstr "Nepakanka atminties išsaugoti privataus rakto duomenis."
 
-#: ../libnm-util/crypto.c:294
+#: ../libnm-util/crypto.c:317
+msgid "Failed to decode PKCS#8 private key."
+msgstr "Nepavyko iššifruoti PKCS#8 asmeninio rakto."
+
+#: ../libnm-util/crypto.c:339 ../libnm-util/crypto.c:625
 #, c-format
-msgid "Not enough memory to store file data."
-msgstr "Nepakanka atminties įrašyti failo duomenis."
+msgid "Not enough memory to store certificate data."
+msgstr "Nepakanka atminties liudijimo duomenų saugojimui."
 
-#: ../libnm-util/crypto.c:324
+#: ../libnm-util/crypto.c:365
 #, c-format
 msgid "IV must be an even number of bytes in length."
 msgstr "IV ilgis turi būti lyginis baitų skaičius."
 
-#: ../libnm-util/crypto.c:333
+#: ../libnm-util/crypto.c:374
 #, c-format
 msgid "Not enough memory to store the IV."
 msgstr "Nepakanka atminties IV saugojimui."
 
-#: ../libnm-util/crypto.c:344
+#: ../libnm-util/crypto.c:385
 #, c-format
 msgid "IV contains non-hexadecimal digits."
 msgstr "IV yra ne šešioliktainių skaitmenų."
 
-#: ../libnm-util/crypto.c:382 ../libnm-util/crypto_gnutls.c:148
-#: ../libnm-util/crypto_gnutls.c:266 ../libnm-util/crypto_nss.c:171
-#: ../libnm-util/crypto_nss.c:336
+#: ../libnm-util/crypto.c:423 ../libnm-util/crypto_gnutls.c:147
+#: ../libnm-util/crypto_gnutls.c:265 ../libnm-util/crypto_nss.c:167
+#: ../libnm-util/crypto_nss.c:332
 #, c-format
 msgid "Private key cipher '%s' was unknown."
 msgstr "Asmeninio rakto šifras „%s“ nežinomas."
 
-#: ../libnm-util/crypto.c:391
+#: ../libnm-util/crypto.c:432
 #, c-format
 msgid "Not enough memory to decrypt private key."
 msgstr "Nepakanka atminties iššifruoti asmeninį raktą."
 
-#: ../libnm-util/crypto.c:511
+#: ../libnm-util/crypto.c:497
+#, c-format
+msgid "Not enough memory to store decrypted private key."
+msgstr "Nepakanka atminties iššifruoto asmeninio rakto saugojimui."
+
+#: ../libnm-util/crypto.c:542
 #, c-format
 msgid "Unable to determine private key type."
 msgstr "Nepavyko nustatyti asmeninio rakto tipo."
 
-#: ../libnm-util/crypto.c:530
+#: ../libnm-util/crypto.c:597
 #, c-format
-msgid "Not enough memory to store decrypted private key."
-msgstr "Nepakanka atminties iššifruoto asmeninio rakto saugojimui."
+msgid "PEM certificate had no start tag '%s'."
+msgstr "PEM liudijime nėra pradžios gairės „%s“."
+
+#: ../libnm-util/crypto.c:606
+#, c-format
+msgid "PEM certificate had no end tag '%s'."
+msgstr "PEM liudijime nėra pabaigos gairės „%s“."
 
-#: ../libnm-util/crypto_gnutls.c:49
+#: ../libnm-util/crypto.c:630
+#, c-format
+msgid "Failed to decode certificate."
+msgstr "Nepavyko iškoduoti liudijimo."
+
+#: ../libnm-util/crypto_gnutls.c:50
 msgid "Failed to initialize the crypto engine."
 msgstr "Nepavyko inicijuoti šifravimo posistemės."
 
-#: ../libnm-util/crypto_gnutls.c:93
+#: ../libnm-util/crypto_gnutls.c:92
 #, c-format
 msgid "Failed to initialize the MD5 engine: %s / %s."
 msgstr "Nepavyko inicijuoti MD5 posistemės: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:156
+#: ../libnm-util/crypto_gnutls.c:155
 #, c-format
 msgid "Invalid IV length (must be at least %zd)."
 msgstr "Netinkamas IV ilgis (turi būti bent %zd)."
 
-#: ../libnm-util/crypto_gnutls.c:165 ../libnm-util/crypto_nss.c:188
+#: ../libnm-util/crypto_gnutls.c:164 ../libnm-util/crypto_nss.c:184
 #, c-format
 msgid "Not enough memory for decrypted key buffer."
 msgstr "Nepakanka atminties iššifruoto rakto buferiui."
 
-#: ../libnm-util/crypto_gnutls.c:173
+#: ../libnm-util/crypto_gnutls.c:172
 #, c-format
 msgid "Failed to initialize the decryption cipher context: %s / %s."
 msgstr "Nepavyko inicijuoti iššifravimo šifro konteksto: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:182
+#: ../libnm-util/crypto_gnutls.c:181
 #, c-format
 msgid "Failed to set symmetric key for decryption: %s / %s."
 msgstr "Nepavyko iššifravimui nustatyti simetriško rakto: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:191
+#: ../libnm-util/crypto_gnutls.c:190
 #, c-format
 msgid "Failed to set IV for decryption: %s / %s."
 msgstr "Nepavyko iššifravimui nustatyti IV: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:200
+#: ../libnm-util/crypto_gnutls.c:199
 #, c-format
 msgid "Failed to decrypt the private key: %s / %s."
 msgstr "Nepavyko iššifruoti asmeninio rakto: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:210 ../libnm-util/crypto_nss.c:267
+#: ../libnm-util/crypto_gnutls.c:209 ../libnm-util/crypto_nss.c:263
 #, c-format
 msgid "Failed to decrypt the private key: unexpected padding length."
 msgstr "Nepavyko iššifruoti asmeninio rakto: netikėtas užpildo ilgis."
 
-#: ../libnm-util/crypto_gnutls.c:221 ../libnm-util/crypto_nss.c:278
+#: ../libnm-util/crypto_gnutls.c:220 ../libnm-util/crypto_nss.c:274
 #, c-format
 msgid "Failed to decrypt the private key."
 msgstr "Nepavyko iššifruoti asmeninio rakto."
 
-#: ../libnm-util/crypto_gnutls.c:286 ../libnm-util/crypto_nss.c:356
+#: ../libnm-util/crypto_gnutls.c:285 ../libnm-util/crypto_nss.c:352
 #, c-format
 msgid "Could not allocate memory for encrypting."
 msgstr "Nepavyko išskirti atminties šifravimui."
 
-#: ../libnm-util/crypto_gnutls.c:294
+#: ../libnm-util/crypto_gnutls.c:293
 #, c-format
 msgid "Failed to initialize the encryption cipher context: %s / %s."
 msgstr "Nepavyko inicijuoti šifravimo šifro konteksto: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:303
+#: ../libnm-util/crypto_gnutls.c:302
 #, c-format
 msgid "Failed to set symmetric key for encryption: %s / %s."
 msgstr "Nepavyko šifravimui nustatyti simetriško rakto: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:313
+#: ../libnm-util/crypto_gnutls.c:312
 #, c-format
 msgid "Failed to set IV for encryption: %s / %s."
 msgstr "Nepavyko šifravimui nustatyti IV: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:322
+#: ../libnm-util/crypto_gnutls.c:321
 #, c-format
 msgid "Failed to encrypt the data: %s / %s."
 msgstr "Nepavyko šifruoti duomenų: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:362
+#: ../libnm-util/crypto_gnutls.c:361
 #, c-format
 msgid "Error initializing certificate data: %s"
 msgstr "Klaida inicijuojant liudijimo duomenis: %s"
 
-#: ../libnm-util/crypto_gnutls.c:384
+#: ../libnm-util/crypto_gnutls.c:383
 #, c-format
 msgid "Couldn't decode certificate: %s"
 msgstr "Nepavyko iškoduoti liudijimo: %s"
 
-#: ../libnm-util/crypto_gnutls.c:408
+#: ../libnm-util/crypto_gnutls.c:407
 #, c-format
 msgid "Couldn't initialize PKCS#12 decoder: %s"
 msgstr "Nepavyko inicializuoti PKCS#12 dekoderio: %s"
 
-#: ../libnm-util/crypto_gnutls.c:421
+#: ../libnm-util/crypto_gnutls.c:420
 #, c-format
 msgid "Couldn't decode PKCS#12 file: %s"
 msgstr "Nepavyko iškoduoti PKCS#12 failo: %s"
 
-#: ../libnm-util/crypto_gnutls.c:433
+#: ../libnm-util/crypto_gnutls.c:432
 #, c-format
 msgid "Couldn't verify PKCS#12 file: %s"
 msgstr "Nepavyko patvirtinti PKCS#12 failo: %s"
 
+#: ../libnm-util/crypto_gnutls.c:460
+#, c-format
+msgid "Couldn't initialize PKCS#8 decoder: %s"
+msgstr "Nepavyko inicializuoti PKCS#8 dekoderio: %s"
+
+#: ../libnm-util/crypto_gnutls.c:483
+#, c-format
+msgid "Couldn't decode PKCS#8 file: %s"
+msgstr "Nepavyko iškoduoti PKCS#8 failo: %s"
+
 #: ../libnm-util/crypto_nss.c:56
 #, c-format
 msgid "Failed to initialize the crypto engine: %d."
 msgstr "Nepavyko inicijuoti šifravimo posistemės: %d."
 
-#: ../libnm-util/crypto_nss.c:111
+#: ../libnm-util/crypto_nss.c:107
 #, c-format
 msgid "Failed to initialize the MD5 context: %d."
 msgstr "Nepavyko inicijuoti MD5 konteksto: %d."
 
-#: ../libnm-util/crypto_nss.c:179
+#: ../libnm-util/crypto_nss.c:175
 #, c-format
 msgid "Invalid IV length (must be at least %d)."
 msgstr "Netinkamas IV ilgis (turi būti bent %d)."
 
-#: ../libnm-util/crypto_nss.c:196
+#: ../libnm-util/crypto_nss.c:192
 #, c-format
 msgid "Failed to initialize the decryption cipher slot."
 msgstr "Nepavyko inicijuoti iššifravimo šifro lizdo."
 
-#: ../libnm-util/crypto_nss.c:206
+#: ../libnm-util/crypto_nss.c:202
 #, c-format
 msgid "Failed to set symmetric key for decryption."
 msgstr "Nepavyko iššifravimui nustatyti simetriško rakto."
 
-#: ../libnm-util/crypto_nss.c:216
+#: ../libnm-util/crypto_nss.c:212
 #, c-format
 msgid "Failed to set IV for decryption."
 msgstr "Nepavyko iššifravimui nustatyti IV."
 
-#: ../libnm-util/crypto_nss.c:224
+#: ../libnm-util/crypto_nss.c:220
 #, c-format
 msgid "Failed to initialize the decryption context."
 msgstr "Nepavyko inicijuoti iššifravimo konteksto."
 
-#: ../libnm-util/crypto_nss.c:237
+#: ../libnm-util/crypto_nss.c:233
 #, c-format
 msgid "Failed to decrypt the private key: %d."
 msgstr "Nepavyko iššifruoti asmeninio rakto: %d."
 
-#: ../libnm-util/crypto_nss.c:245
+#: ../libnm-util/crypto_nss.c:241
 #, c-format
 msgid "Failed to decrypt the private key: decrypted data too large."
 msgstr "Nepavyko iššifruoti asmeninio rakto: iššifruoti duomenys per dideli."
 
-#: ../libnm-util/crypto_nss.c:256
+#: ../libnm-util/crypto_nss.c:252
 #, c-format
 msgid "Failed to finalize decryption of the private key: %d."
 msgstr "Nepavyko baigti asmeninio rakto iššifravimo: %d."
 
-#: ../libnm-util/crypto_nss.c:364
+#: ../libnm-util/crypto_nss.c:360
 #, c-format
 msgid "Failed to initialize the encryption cipher slot."
 msgstr "Nepavyko inicijuoti šifravimo šifro lizdo."
 
-#: ../libnm-util/crypto_nss.c:372
+#: ../libnm-util/crypto_nss.c:368
 #, c-format
 msgid "Failed to set symmetric key for encryption."
 msgstr "Nepavyko šifravimui nustatyti simetriško rakto."
 
-#: ../libnm-util/crypto_nss.c:380
+#: ../libnm-util/crypto_nss.c:376
 #, c-format
 msgid "Failed to set IV for encryption."
 msgstr "Nepavyko šifravimui nustatyti IV."
 
-#: ../libnm-util/crypto_nss.c:388
+#: ../libnm-util/crypto_nss.c:384
 #, c-format
 msgid "Failed to initialize the encryption context."
 msgstr "Nepavyko inicijuoti šifravimo konteksto."
 
-#: ../libnm-util/crypto_nss.c:396
+#: ../libnm-util/crypto_nss.c:392
 #, c-format
 msgid "Failed to encrypt: %d."
 msgstr "Nepavyko šifruoti: %d."
 
-#: ../libnm-util/crypto_nss.c:404
+#: ../libnm-util/crypto_nss.c:400
 #, c-format
 msgid "Unexpected amount of data after encrypting."
 msgstr "Netikėtas duomenų kiekis po šifravimo."
 
-#: ../libnm-util/crypto_nss.c:447
+#: ../libnm-util/crypto_nss.c:443
 #, c-format
 msgid "Couldn't decode certificate: %d"
 msgstr "Nepavyko iškoduoti liudijimo: %d"
 
-#: ../libnm-util/crypto_nss.c:482
+#: ../libnm-util/crypto_nss.c:478
 #, c-format
 msgid "Couldn't convert password to UCS2: %d"
 msgstr "Nepavyko konvertuoti slaptažodžio į UCS-2: %d"
 
-#: ../libnm-util/crypto_nss.c:510
+#: ../libnm-util/crypto_nss.c:506
 #, c-format
 msgid "Couldn't initialize PKCS#12 decoder: %d"
 msgstr "Nepavyko inicializuoti PKCS#12 dekoderio: %d"
 
-#: ../libnm-util/crypto_nss.c:519
+#: ../libnm-util/crypto_nss.c:515
 #, c-format
 msgid "Couldn't decode PKCS#12 file: %d"
 msgstr "Nepavyko iškoduoti PKCS#12 failo: %d"
 
-#: ../libnm-util/crypto_nss.c:528
+#: ../libnm-util/crypto_nss.c:524
 #, c-format
 msgid "Couldn't verify PKCS#12 file: %d"
 msgstr "Nepavyko patvirtinti PKCS#12 failo: %d"
 
-#: ../libnm-util/crypto_nss.c:557
+#: ../libnm-util/crypto_nss.c:568
 msgid "Could not generate random data."
 msgstr "Nepavyko sugeneruoti atsitiktinių duomenų."
 
-#: ../libnm-util/nm-utils.c:1975
+#: ../libnm-util/nm-utils.c:2040
 #, c-format
 msgid "Not enough memory to make encryption key."
 msgstr "Nepakanka atminties šifravimo raktui sukurti."
 
-#: ../libnm-util/nm-utils.c:2085
+#: ../libnm-util/nm-utils.c:2150
 msgid "Could not allocate memory for PEM file creation."
 msgstr "Nepakanka atminties PEM failui sukurti."
 
-#: ../libnm-util/nm-utils.c:2097
+#: ../libnm-util/nm-utils.c:2162
 #, c-format
 msgid "Could not allocate memory for writing IV to PEM file."
 msgstr "Nepakanka atminties IV įrašyti į PEM failą."
 
-#: ../libnm-util/nm-utils.c:2109
+#: ../libnm-util/nm-utils.c:2174
 #, c-format
 msgid "Could not allocate memory for writing encrypted key to PEM file."
 msgstr "Nepakanka atminties šifruotam raktui įrašyti į PEM failą."
 
-#: ../libnm-util/nm-utils.c:2128
+#: ../libnm-util/nm-utils.c:2193
 #, c-format
 msgid "Could not allocate memory for PEM file data."
 msgstr "Nepakanka atminties PEM failo duomenims."
 
-#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:1
-msgid "Connection sharing via a protected WiFi network"
-msgstr "Dalijimasis ryšiu naudojant apsaugotą WiFi tinklą"
-
-#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:2
-msgid "Connection sharing via an open WiFi network"
-msgstr "Dalijimasis ryšiu naudojant atvirą WiFi tinklą"
-
-#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:3
-msgid "Modify persistent system hostname"
-msgstr "Keisti pastovų sistemos vardą"
-
-#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:4
-msgid "Modify system connections"
-msgstr "Keisti sistemos ryšius"
-
-#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:5
-msgid "System policy prevents modification of system settings"
-msgstr "Sistemos politika neleidžia keisti sistemos nustatymų"
-
-#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:6
-msgid "System policy prevents modification of the persistent system hostname"
-msgstr "Sistemos politika neleidžia keisti įsiminto sistemos vardo"
-
-#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:7
-msgid "System policy prevents sharing connections via a protected WiFi network"
-msgstr ""
-"Sistemos politika nelaidžia dalytis ryšiais naudojant apsaugotą WiFi tinklą"
-
-#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:8
-msgid "System policy prevents sharing connections via an open WiFi network"
-msgstr ""
-"Sistemos politika neleidžia dalytis ryšiais naudojant atvirą WiFi tinklą"
-
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:1
-msgid "Allow control of network connections"
-msgstr "Leisti valdyti tinklo ryšius"
+msgid "Enable or disable system networking"
+msgstr "Įjungti arba išjungti sistemos prieigą prie tinklo"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:2
-msgid "Allow use of user-specific connections"
-msgstr "Leisti naudoti pasirinktinius naudotojo ryšius"
+msgid "System policy prevents enabling or disabling system networking"
+msgstr ""
+"Sistemos politika neleidžia įjungti arba išjungti sistemos prieigos prie "
+"tinklo"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:3
-msgid "Enable or disable WiFi devices"
-msgstr "Įjungti arba išjungti WiFi įrenginius"
-
-#: ../policy/org.freedesktop.NetworkManager.policy.in.h:4
-msgid "Enable or disable mobile broadband devices"
-msgstr "Įjungti arba išjungti mobiliojo plačiajuosčio ryšio įrenginius"
-
-#: ../policy/org.freedesktop.NetworkManager.policy.in.h:5
-msgid "Enable or disable system networking"
-msgstr "Įjungti arba išjungti sistemos prieigą prie tinklo"
-
-#: ../policy/org.freedesktop.NetworkManager.policy.in.h:6
 msgid ""
 "Put NetworkManager to sleep or wake it up (should only be used by system "
 "power management)"
@@ -1650,91 +2182,245 @@ msgstr ""
 "Užmigdyti arba pažadinti NetworkManager (tai turėtų naudoti tik sistemos "
 "energijos valdymo posistemė)"
 
-#: ../policy/org.freedesktop.NetworkManager.policy.in.h:7
-msgid "System policy prevents control of network connections"
-msgstr "Sistemos politika neleidžia valdyti tinklo ryšių"
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:4
+msgid "System policy prevents putting NetworkManager to sleep or waking it up"
+msgstr "Sistemos politika neleidžia užmigdyti arba pažadinti NetworkManager"
 
-#: ../policy/org.freedesktop.NetworkManager.policy.in.h:8
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:5
+msgid "Enable or disable WiFi devices"
+msgstr "Įjungti arba išjungti WiFi įrenginius"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:6
 msgid "System policy prevents enabling or disabling WiFi devices"
 msgstr "Sistemos politika neleidžia įjungti arba išjungti WiFi įrenginių"
 
-#: ../policy/org.freedesktop.NetworkManager.policy.in.h:9
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:7
+msgid "Enable or disable mobile broadband devices"
+msgstr "Įjungti arba išjungti mobiliojo plačiajuosčio ryšio įrenginius"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:8
 msgid "System policy prevents enabling or disabling mobile broadband devices"
 msgstr ""
 "Sistemos politika neleidžia įjungti arba išjungti mobiliojo plačiajuosčio "
 "ryšio įrenginių"
 
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:9
+msgid "Enable or disable WiMAX mobile broadband devices"
+msgstr "Įjungti arba išjungti WiMAX mobiliojo plačiajuosčio ryšio įrenginius"
+
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:10
-msgid "System policy prevents enabling or disabling system networking"
+msgid ""
+"System policy prevents enabling or disabling WiMAX mobile broadband devices"
 msgstr ""
-"Sistemos politika neleidžia įjungti arba išjungti sistemos prieigos prie "
-"tinklo"
+"Sistemos politika neleidžia įjungti arba išjungti WiMAX mobiliojo "
+"plačiajuosčio ryšio įrenginių"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:11
-msgid "System policy prevents putting NetworkManager to sleep or waking it up"
-msgstr "Sistemos politika neleidžia užmigdyti arba pažadinti NetworkManager"
+msgid "Allow control of network connections"
+msgstr "Leisti valdyti tinklo ryšius"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:12
-msgid "System policy prevents use of user-specific connections"
-msgstr "Sistemos politika neleidžia naudoti pasirinktinių naudotojo ryšių"
+msgid "System policy prevents control of network connections"
+msgstr "Sistemos politika neleidžia valdyti tinklo ryšių"
 
-#: ../src/nm-netlink-monitor.c:100 ../src/nm-netlink-monitor.c:231
-#: ../src/nm-netlink-monitor.c:653
-#, c-format
-msgid "error processing netlink message: %s"
-msgstr "klaida apdorojant netlink pranešimą: %s"
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:13
+msgid "Connection sharing via a protected WiFi network"
+msgstr "Dalijimasis ryšiu naudojant apsaugotą WiFi tinklą"
 
-#: ../src/nm-netlink-monitor.c:214
-msgid "error occurred while waiting for data on socket"
-msgstr "laukiant lizde duomenų įvyko klaida"
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:14
+msgid "System policy prevents sharing connections via a protected WiFi network"
+msgstr ""
+"Sistemos politika nelaidžia dalytis ryšiais naudojant apsaugotą WiFi tinklą"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:15
+msgid "Connection sharing via an open WiFi network"
+msgstr "Dalijimasis ryšiu naudojant atvirą WiFi tinklą"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:16
+msgid "System policy prevents sharing connections via an open WiFi network"
+msgstr ""
+"Sistemos politika neleidžia dalytis ryšiais naudojant atvirą WiFi tinklą"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:17
+msgid "Modify personal network connections"
+msgstr "Keisti asmeninius tinklo ryšius"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:18
+msgid "System policy prevents modification of personal network settings"
+msgstr "Sistemos politika neleidžia keisti asmeninių tinklų nustatymų"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:19
+msgid "Modify network connections for all users"
+msgstr "Keisti visų naudotojų tinklo ryšius"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:20
+msgid "System policy prevents modification of network settings for all users"
+msgstr ""
+"Sistemos politika neleidžia keisti tinklo nustatymų, skirtų visiems "
+"naudotojams"
 
-#: ../src/nm-netlink-monitor.c:254
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:21
+msgid "Modify persistent system hostname"
+msgstr "Keisti pastovų sistemos vardą"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:22
+msgid "System policy prevents modification of the persistent system hostname"
+msgstr "Sistemos politika neleidžia keisti įsiminto sistemos vardo"
+
+#: ../src/main.c:156
 #, c-format
-msgid "unable to connect to netlink for monitoring link status: %s"
-msgstr "nepavyko prisijungti prie netlink saito būsenai stebėti: %s"
+msgid "Failed to set signal mask: %d"
+msgstr "Nepavyko nustatyti signalo kaukės: %d"
 
-#: ../src/nm-netlink-monitor.c:265
+#: ../src/main.c:163
 #, c-format
-msgid "unable to enable netlink handle credential passing: %s"
-msgstr "nepavyko įjungti netlink valdiklio įgaliojimams perduoti: %s"
+msgid "Failed to create signal handling thread: %d"
+msgstr "Nepavyko sukurti signalo apdorojimo gijos: %d"
 
-#: ../src/nm-netlink-monitor.c:291 ../src/nm-netlink-monitor.c:353
+#: ../src/main.c:178
 #, c-format
-msgid "unable to allocate netlink handle for monitoring link status: %s"
-msgstr "nepavyko rezervuoti netlink valdiklio saito būsenai stebėti: %s"
+msgid "Opening %s failed: %s\n"
+msgstr "Nepavyko atverti %s: %s\n"
 
-#: ../src/nm-netlink-monitor.c:376
+#: ../src/main.c:184
 #, c-format
-msgid "unable to allocate netlink link cache for monitoring link status: %s"
-msgstr "nepavyko rezervuoti netlink saito podėlio saito būsenai stebėti: %s"
+msgid "Writing to %s failed: %s\n"
+msgstr "Nepavyko rašymas į %s: %s\n"
 
-#: ../src/nm-netlink-monitor.c:502
+#: ../src/main.c:189
 #, c-format
-msgid "unable to join netlink group: %s"
-msgstr "nepavyko prisijungti prie netlink grupės: %s"
+msgid "Closing %s failed: %s\n"
+msgstr "Nepavyko užverti %s: %s\n"
 
-#: ../src/nm-netlink-monitor.c:629 ../src/nm-netlink-monitor.c:642
+#: ../src/main.c:232
 #, c-format
-msgid "error updating link cache: %s"
-msgstr "klaida atnaujinant saito podėlį: %s"
+msgid "NetworkManager is already running (pid %ld)\n"
+msgstr "NetworkManager jau veikia „pid %ld)\n"
+
+#: ../src/main.c:372
+msgid "Print NetworkManager version and exit"
+msgstr "Parodyti NetworkManager versiją ir išeiti"
+
+#: ../src/main.c:373
+msgid "Don't become a daemon"
+msgstr "Netapti demonu"
 
-#: ../src/main.c:499
+#: ../src/main.c:374
+msgid "Make all warnings fatal"
+msgstr "Paversti visus įspėjimus lemtingais"
+
+#: ../src/main.c:375
+msgid "Specify the location of a PID file"
+msgstr "Nurodykite PID failo vietą"
+
+#: ../src/main.c:375
+msgid "filename"
+msgstr "failo pavadinimas"
+
+#: ../src/main.c:376
+msgid "State file location"
+msgstr "Būsenos failo vieta"
+
+#: ../src/main.c:376
+msgid "/path/to/state.file"
+msgstr "/kelias/iki/būsenos.failo"
+
+#: ../src/main.c:377
+msgid "Config file location"
+msgstr "Konfigūracijos failo vieta"
+
+#: ../src/main.c:377
+msgid "/path/to/config.file"
+msgstr "/kelias/iki/konfigūracijos.failo"
+
+#: ../src/main.c:378
+msgid "List of plugins separated by ','"
+msgstr "Įskiepių sąrašas skiriant „,“"
+
+#: ../src/main.c:378
+msgid "plugin1,plugin2"
+msgstr "įskiepis1,įskiepis2"
+
+#. Translators: Do not translate the values in the square brackets
+#: ../src/main.c:380
+msgid "Log level: one of [ERR, WARN, INFO, DEBUG]"
+msgstr "Žurnalo lygis: vienas iš [ERR, WARN, INFO, DEBUG]"
+
+#. Translators: Do not translate the values in the square brackets
+#: ../src/main.c:383
+msgid ""
+"Log domains separated by ',': any combination of\n"
+"                                          [NONE,HW,RFKILL,ETHER,WIFI,BT,MB,"
+"DHCP4,DHCP6,PPP,\n"
+"                                           WIFI_SCAN,IP4,IP6,AUTOIP4,DNS,VPN,"
+"SHARING,SUPPLICANT,\n"
+"                                           AGENTS,SETTINGS,SUSPEND,CORE,"
+"DEVICE,OLPC,WIMAX,\n"
+"                                           INFINIBAND,FIREWALL]"
+msgstr ""
+"Žurnalo sritys skiriamos „,“: bet kokia reikšmių kombinacija\n"
+"                                          [NONE,HW,RFKILL,ETHER,WIFI,BT,MB,"
+"DHCP4,DHCP6,PPP,\n"
+"                                           WIFI_SCAN,IP4,IP6,AUTOIP4,DNS,VPN,"
+"SHARING,SUPPLICANT,\n"
+"                                           AGENTS,SETTINGS,SUSPEND,CORE,"
+"DEVICE,OLPC,WIMAX,\n"
+"                                           INFINIBAND,FIREWALL]"
+
+#: ../src/main.c:396
+#, c-format
+msgid "GModules are not supported on your platform!\n"
+msgstr "GModules nepalaikomi jūsų platformoje\n"
+
+#: ../src/main.c:419
+msgid ""
+"NetworkManager monitors all network connections and automatically\n"
+"chooses the best connection to use.  It also allows the user to\n"
+"specify wireless access points which wireless cards in the computer\n"
+"should associate with."
+msgstr ""
+"NetworkManager stebi visus tinklo ryšius ir automatiškai\n"
+"pasirenka geriausią ryšį. Jis taip pat leidžia naudotojui\n"
+"nurodyti belaidžio ryšio prieigos taškus, su kuriais susieti\n"
+"jūsų kompiuterio belaidžio ryšio kortas."
+
+#: ../src/main.c:425
 #, c-format
 msgid "Invalid option.  Please use --help to see a list of valid options.\n"
 msgstr ""
 "Netinkama parinktis. Galimų parinkčių sąrašą galite pamatyti naudodami "
 "parametrą --help.\n"
 
-#: ../src/main.c:570
+#: ../src/main.c:435
+#, c-format
+msgid "You must be root to run NetworkManager!\n"
+msgstr "Jūs turite būti root, kad paleistumėte NetworkManager!\n"
+
+#: ../src/main.c:456
+#, c-format
+msgid "Failed to read configuration: (%d) %s\n"
+msgstr "Nepavyko perskaityti konfigūracijos: (%d) %s\n"
+
+#: ../src/main.c:467
 #, c-format
 msgid "%s.  Please use --help to see a list of valid options.\n"
 msgstr "%s.  Naudokite --help, galimų parinkčių sąrašui gauti.\n"
 
-#: ../src/dhcp-manager/nm-dhcp-dhclient.c:328
+#: ../src/main.c:474
+#, c-format
+msgid "State file %s parsing failed: (%d) %s\n"
+msgstr "Nepavyko perskaityti būsenos failo %s: (%d) %s\n"
+
+#: ../src/main.c:491
+#, c-format
+msgid "Could not daemonize: %s [error %u]\n"
+msgstr "Nepavyko tapri demonu: %s [klaida %u]\n"
+
+#: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:62
 msgid "# Created by NetworkManager\n"
 msgstr "# Sukurta NetworkManager programos\n"
 
-#: ../src/dhcp-manager/nm-dhcp-dhclient.c:344
+#: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:69
 #, c-format
 msgid ""
 "# Merged from %s\n"
@@ -1743,204 +2429,169 @@ msgstr ""
 "# Sulieta iš %s\n"
 "\n"
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:284
+#: ../src/dhcp-manager/nm-dhcp-manager.c:266
 msgid "no usable DHCP client could be found."
 msgstr "nerastas veikiantis DHCP klientas."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:293
+#: ../src/dhcp-manager/nm-dhcp-manager.c:275
 msgid "'dhclient' could be found."
 msgstr "nerastas „dhclient“."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:303
+#: ../src/dhcp-manager/nm-dhcp-manager.c:285
 msgid "'dhcpcd' could be found."
 msgstr "nerastas „dhcpcd“."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:311
+#: ../src/dhcp-manager/nm-dhcp-manager.c:293
 #, c-format
 msgid "unsupported DHCP client '%s'"
 msgstr "nepalaikomas DHCP klientas „%s“."
 
-#: ../src/logging/nm-logging.c:146
-#, c-format
-msgid "Unknown log level '%s'"
-msgstr "Nežinomas žurnalo vedimo lygis „%s“"
-
-#: ../src/logging/nm-logging.c:171
-#, c-format
-msgid "Unknown log domain '%s'"
-msgstr "Nežinoma žurnalo sritis „%s“"
-
-#: ../src/dns-manager/nm-dns-manager.c:384
+#: ../src/dns-manager/nm-dns-manager.c:376
 msgid "NOTE: the libc resolver may not support more than 3 nameservers."
 msgstr ""
 "PASTABA: libc adresų nustatymo funkcija gali nepalaikyti daugiau nei 3 vardų "
 "serverių."
 
-#: ../src/dns-manager/nm-dns-manager.c:386
+#: ../src/dns-manager/nm-dns-manager.c:378
 msgid "The nameservers listed below may not be recognized."
 msgstr "Žemiau pateikti vardų serveriai gali būti neatpažinti."
 
-#: ../src/settings/nm-default-wired-connection.c:157
+#: ../src/logging/nm-logging.c:130
 #, c-format
-msgid "Auto %s"
-msgstr "Automatinis %s"
-
-#: ../system-settings/plugins/ifcfg-rh/reader.c:3412
-#: ../system-settings/plugins/ifnet/connection_parser.c:49
-msgid "System"
-msgstr "Sistema"
-
-#~ msgid "Type"
-#~ msgstr "Tipas"
-
-#~ msgid "Name"
-#~ msgstr "Pavadinimas"
-
-#~ msgid "User connections:\n"
-#~ msgstr "Naudotojo ryšiai:\n"
-
-#~ msgid "System-wide connections"
-#~ msgstr "Sistemos ryšiai"
-
-#~ msgid "Default"
-#~ msgstr "Numatyta"
-
-#~ msgid "Service"
-#~ msgstr "Tarnyba"
-
-#~ msgid "%s, %s, Freq %d MHz, Rate %d Mb/s, Strength %d"
-#~ msgstr "%s, %s, dažnis %d MHz, sparta %d Mb/s, stiprumas %d"
-
-#~ msgid "Device"
-#~ msgstr "Įrenginys"
-
-#~ msgid "Driver"
-#~ msgstr "Tvarkyklė"
-
-#~ msgid "State"
-#~ msgstr "Būsena"
-
-#~ msgid "HW Address"
-#~ msgstr "Aparatinis adresas"
-
-#~ msgid ""
-#~ "\n"
-#~ "  Capabilities:\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Galimybės:\n"
-
-#~ msgid "Carrier Detect"
-#~ msgstr "Perdavimo aptikimas"
-
-#~ msgid "Speed"
-#~ msgstr "Sparta"
+msgid "Unknown log level '%s'"
+msgstr "Nežinomas žurnalo vedimo lygis „%s“"
 
-#~ msgid ""
-#~ "\n"
-#~ "  Wireless Properties\n"
-#~ msgstr ""
-#~ "\n"
-#~ "  Belaidžio ryšio savybės\n"
+#: ../src/logging/nm-logging.c:155
+#, c-format
+msgid "Unknown log domain '%s'"
+msgstr "Nežinoma žurnalo sritis „%s“"
 
-#~ msgid "WEP Encryption"
-#~ msgstr "WEP šifravimas"
+#: ../src/modem-manager/nm-modem-cdma.c:279 ../src/nm-device-bt.c:325
+#, c-format
+msgid "CDMA connection %d"
+msgstr "CDMA ryšys %d"
 
-#~ msgid "WPA Encryption"
-#~ msgstr "WPA šifravimas"
+#: ../src/modem-manager/nm-modem-gsm.c:547 ../src/nm-device-bt.c:321
+#, c-format
+msgid "GSM connection %d"
+msgstr "GSM ryšys %d"
 
-#~ msgid "WPA2 Encryption"
-#~ msgstr "WPA2 šifravimas"
+#: ../src/nm-device-bond.c:191
+#, c-format
+msgid "Bond connection %d"
+msgstr "Susieti ryšį %d"
 
-#~ msgid "TKIP cipher"
-#~ msgstr "TKIP šifras"
+#: ../src/nm-device-bt.c:296
+#, c-format
+msgid "PAN connection %d"
+msgstr "PAN ryšys %d"
 
-#~ msgid "CCMP cipher"
-#~ msgstr "CCMP šifras"
+#: ../src/nm-device-bt.c:329
+#, c-format
+msgid "DUN connection %d"
+msgstr "DUN ryšys %d"
 
-#~ msgid ""
-#~ "\n"
-#~ "  Wireless Access Points %s\n"
-#~ msgstr ""
-#~ "\n"
-#~ "  Belaidžiai prieigos taškai %s\n"
+#: ../src/nm-device-ethernet.c:1326
+#, c-format
+msgid "PPPoE connection %d"
+msgstr "PPPoE ryšys %d"
 
-#~ msgid "(* = current AP)"
-#~ msgstr "(* = dabartinis prieigos taškas)"
+#: ../src/nm-device-ethernet.c:1326 ../src/settings/nm-settings-utils.c:50
+#, c-format
+msgid "Wired connection %d"
+msgstr "Laidinis ryšys %d"
 
-#~ msgid ""
-#~ "\n"
-#~ "  Wired Properties\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Laidinio ryšio savybės\n"
+#: ../src/nm-device-infiniband.c:303
+#, c-format
+msgid "InfiniBand connection %d"
+msgstr "InfiniBand ryšys %d"
 
-#~ msgid "Carrier"
-#~ msgstr "Perdavimas"
+#: ../src/nm-device-olpc-mesh.c:293
+#, c-format
+msgid "Mesh %d"
+msgstr "Susiejimas %d"
 
-#~ msgid ""
-#~ "\n"
-#~ "  IPv4 Settings:\n"
-#~ msgstr ""
-#~ "\n"
-#~ "  IPv4 nustatymai:\n"
+#: ../src/nm-device-vlan.c:362
+#, c-format
+msgid "VLAN connection %d"
+msgstr "VLAN ryšys %d"
 
-#~ msgid "Address"
-#~ msgstr "Adresas"
+#: ../src/nm-manager.c:661
+#, c-format
+msgid "VPN connection %d"
+msgstr "VPN ryšys %d"
 
-#~ msgid "Prefix"
-#~ msgstr "Priešdėlis"
+#: ../src/nm-netlink-monitor.c:148 ../src/nm-netlink-monitor.c:272
+#: ../src/nm-netlink-monitor.c:695
+#, c-format
+msgid "error processing netlink message: %s"
+msgstr "klaida apdorojant netlink pranešimą: %s"
 
-#~ msgid "Gateway"
-#~ msgstr "Šliuzas"
+#: ../src/nm-netlink-monitor.c:251
+msgid "error occurred while waiting for data on socket"
+msgstr "laukiant lizde duomenų įvyko klaida"
 
-#~ msgid "Device:"
-#~ msgstr "Įrenginys:"
+#: ../src/nm-netlink-monitor.c:296
+#, c-format
+msgid "unable to connect to netlink for monitoring link status: %s"
+msgstr "nepavyko prisijungti prie netlink saito būsenai stebėti: %s"
 
-#~ msgid "Error: hwaddr has to be specified."
-#~ msgstr "Klaida: turi būti nurodytas hwaddr."
+#: ../src/nm-netlink-monitor.c:307
+#, c-format
+msgid "unable to enable netlink handle credential passing: %s"
+msgstr "nepavyko įjungti netlink valdiklio įgaliojimams perduoti: %s"
 
-#~ msgid "AP parameters"
-#~ msgstr "Prieigos taško parametrai"
+#: ../src/nm-netlink-monitor.c:330 ../src/nm-netlink-monitor.c:390
+#, c-format
+msgid "unable to allocate netlink handle for monitoring link status: %s"
+msgstr "nepavyko rezervuoti netlink valdiklio saito būsenai stebėti: %s"
 
-#~ msgid "Frequency:"
-#~ msgstr "Dažnis:"
+#: ../src/nm-netlink-monitor.c:415
+#, c-format
+msgid "unable to allocate netlink link cache for monitoring link status: %s"
+msgstr "nepavyko rezervuoti netlink saito podėlio saito būsenai stebėti: %s"
 
-#~ msgid "Mode:"
-#~ msgstr "Veiksena:"
+#: ../src/nm-netlink-monitor.c:542
+#, c-format
+msgid "unable to join netlink group: %s"
+msgstr "nepavyko prisijungti prie netlink grupės: %s"
 
-#~ msgid "Ad-hoc"
-#~ msgstr "Ad-hoc"
+#: ../src/nm-netlink-monitor.c:671 ../src/nm-netlink-monitor.c:684
+#, c-format
+msgid "error updating link cache: %s"
+msgstr "klaida atnaujinant saito podėlį: %s"
 
-#~ msgid "Maximal bitrate:"
-#~ msgstr "Didžiausias galimas bitų dažnis:"
+#: ../src/settings/plugins/ifcfg-rh/reader.c:93
+msgid "System"
+msgstr "Sistema"
 
-#~ msgid "Strength:"
-#~ msgstr "Stiprumas:"
+#: ../src/settings/plugins/ifcfg-rh/reader.c:3634
+msgid "Bond"
+msgstr "Susieti"
 
-#~ msgid "Flags:"
-#~ msgstr "Požymiai:"
+#~ msgid "SCOPE"
+#~ msgstr "SRITIS"
 
-#~ msgid "privacy"
-#~ msgstr "privatumas"
+#~ msgid "DBUS-SERVICE"
+#~ msgstr "DBUS-TARNYBA"
 
-#~ msgid "WPA flags:"
-#~ msgstr "WPA požymiai:"
+#~ msgid "system"
+#~ msgstr "sisteminis"
 
-#~ msgid "RSN flags:"
-#~ msgstr "RSN požymiai:"
+#~ msgid "user"
+#~ msgstr "naudotojo"
 
-#~ msgid "NM running:"
-#~ msgstr "NM veikimas:"
+#~ msgid "System connections"
+#~ msgstr "Sistemos ryšiai"
 
-#~ msgid "NM state:"
-#~ msgstr "NM būsena"
+#~ msgid "User connections"
+#~ msgstr "Naudotojo ryšiai"
 
-#~ msgid "NM wireless hardware:"
-#~ msgstr "NM belaidė įranga:"
+#~ msgid "Error: Obtaining active connection for '%s' failed."
+#~ msgstr "Klaida: nepavyko „%s“ gauti aktyvaus ryšio."
 
-#~ msgid "NM wireless:"
-#~ msgstr "NM belaidis:"
+#~ msgid "Error: Could not get user settings."
+#~ msgstr "Klaida: nepavyko gauti naudotojo nustatymų."
 
-#~ msgid "NM WWAN hardware:"
-#~ msgstr "NM WWAN įranga:"
+#~ msgid "IP4-SETTINGS"
+#~ msgstr "IP4-PARAMETRAI"
diff --git a/po/pl.po b/po/pl.po
index 4ad67c92..7df64295 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -9,8 +9,8 @@ msgstr ""
 "Project-Id-Version: NetworkManager\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
 "product=NetworkManager&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2012-02-24 15:25+0000\n"
-"PO-Revision-Date: 2012-02-24 22:06+0100\n"
+"POT-Creation-Date: 2012-05-10 03:24+0000\n"
+"PO-Revision-Date: 2012-05-10 20:20+0200\n"
 "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
 "Language-Team: Polish <gnomepl@aviary.pl>\n"
 "Language: pl\n"
@@ -23,8 +23,8 @@ msgstr ""
 "X-Poedit-Country: Poland\n"
 
 #: ../cli/src/common.c:32 ../cli/src/common.c:44 ../cli/src/common.c:52
-#: ../cli/src/common.c:63 ../cli/src/connections.c:119
-#: ../cli/src/connections.c:153
+#: ../cli/src/common.c:63 ../cli/src/connections.c:125
+#: ../cli/src/connections.c:159
 msgid "GROUP"
 msgstr "GRUPA"
 
@@ -58,18 +58,292 @@ msgstr "WINS"
 msgid "OPTION"
 msgstr "OPCJA"
 
+#: ../cli/src/common.c:366
+msgid "unmanaged"
+msgstr "niezarządzane"
+
+#: ../cli/src/common.c:368
+msgid "unavailable"
+msgstr "niedostępne"
+
+#: ../cli/src/common.c:370 ../cli/src/network-manager.c:120
+msgid "disconnected"
+msgstr "rozłączono"
+
+#: ../cli/src/common.c:372
+msgid "connecting (prepare)"
+msgstr "łączenie (przygotowanie)"
+
+#: ../cli/src/common.c:374
+msgid "connecting (configuring)"
+msgstr "łączenie (konfigurowanie)"
+
+#: ../cli/src/common.c:376
+msgid "connecting (need authentication)"
+msgstr "łączenie (wymaga uwierzytelnienia)"
+
+#: ../cli/src/common.c:378
+msgid "connecting (getting IP configuration)"
+msgstr "łączenie (pobieranie konfiguracji adresu IP)"
+
+#: ../cli/src/common.c:380
+msgid "connecting (checking IP connectivity)"
+msgstr "łączenie (sprawdzanie łączności IP)"
+
+#: ../cli/src/common.c:382
+msgid "connecting (starting secondary connections)"
+msgstr "łączenie (uruchamianie drugorzędnych połączeń)"
+
+#: ../cli/src/common.c:384 ../cli/src/network-manager.c:116
+msgid "connected"
+msgstr "połączono"
+
+#: ../cli/src/common.c:386 ../cli/src/connections.c:621
+msgid "deactivating"
+msgstr "deaktywowanie"
+
+#: ../cli/src/common.c:388
+msgid "connection failed"
+msgstr "połączenie się nie powiodło"
+
+#: ../cli/src/common.c:390 ../cli/src/connections.c:624
+#: ../cli/src/connections.c:647 ../cli/src/connections.c:1333
+#: ../cli/src/devices.c:612 ../cli/src/network-manager.c:123
+#: ../cli/src/network-manager.c:185 ../cli/src/network-manager.c:188
+#: ../cli/src/network-manager.c:197 ../cli/src/network-manager.c:257
+#: ../cli/src/network-manager.c:273 ../cli/src/network-manager.c:431
+#: ../cli/src/network-manager.c:486 ../cli/src/network-manager.c:524
+#: ../cli/src/network-manager.c:563 ../cli/src/settings.c:563
+#: ../cli/src/settings.c:591 ../cli/src/utils.c:531 ../src/main.c:458
+#: ../src/main.c:477
+msgid "unknown"
+msgstr "nieznane"
+
+#: ../cli/src/common.c:399
+msgid "No reason given"
+msgstr "Nie podano przyczyny"
+
+#: ../cli/src/common.c:402
+msgid "Unknown error"
+msgstr "Nieznany błąd"
+
+#: ../cli/src/common.c:405
+msgid "Device is now managed"
+msgstr "Urządzenie jest teraz zarządzane"
+
+#: ../cli/src/common.c:408
+msgid "Device is now unmanaged"
+msgstr "Urządzenie nie jest teraz zarządzane"
+
+#: ../cli/src/common.c:411
+msgid "The device could not be readied for configuration"
+msgstr "Urządzenie nie może zostać odczytane do konfiguracji"
+
+#: ../cli/src/common.c:414
+msgid ""
+"IP configuration could not be reserved (no available address, timeout, etc)"
+msgstr ""
+"Konfiguracja IP nie mogła zostać zastrzeżona (brak dostępnego adresu, czasu "
+"oczekiwania itp.)"
+
+#: ../cli/src/common.c:417
+msgid "The IP configuration is no longer valid"
+msgstr "Konfiguracja IP nie jest już prawidłowa"
+
+#: ../cli/src/common.c:420
+msgid "Secrets were required, but not provided"
+msgstr "Hasła są wymagane, ale nie zostały podane"
+
+#: ../cli/src/common.c:423
+msgid "802.1X supplicant disconnected"
+msgstr "Suplikant 802.1X został rozłączony"
+
+#: ../cli/src/common.c:426
+msgid "802.1X supplicant configuration failed"
+msgstr "Konfiguracja suplikanta 802.1X się nie powiodła"
+
+#: ../cli/src/common.c:429
+msgid "802.1X supplicant failed"
+msgstr "Suplikant 802.1X się nie powiódł"
+
+#: ../cli/src/common.c:432
+msgid "802.1X supplicant took too long to authenticate"
+msgstr "Suplikant 802.1X za długo się uwierzytelniał"
+
+#: ../cli/src/common.c:435
+msgid "PPP service failed to start"
+msgstr "uruchomienie usługi PPP się nie powiodło"
+
+#: ../cli/src/common.c:438
+msgid "PPP service disconnected"
+msgstr "Rozłączono z usługą PPP"
+
+#: ../cli/src/common.c:441
+msgid "PPP failed"
+msgstr "Usługa PPP się nie powiodła"
+
+#: ../cli/src/common.c:444
+msgid "DHCP client failed to start"
+msgstr "uruchomienie klienta DHCP się nie powiodło"
+
+#: ../cli/src/common.c:447
+msgid "DHCP client error"
+msgstr "Błąd klienta DHCP"
+
+#: ../cli/src/common.c:450
+msgid "DHCP client failed"
+msgstr "Klient DHCP się nie powiódł"
+
+#: ../cli/src/common.c:453
+msgid "Shared connection service failed to start"
+msgstr "Uruchomienie usługi współdzielenia połączenia się nie powiodło"
+
+#: ../cli/src/common.c:456
+msgid "Shared connection service failed"
+msgstr "Usługa współdzielenia połączenia się nie powiodła"
+
+#: ../cli/src/common.c:459
+msgid "AutoIP service failed to start"
+msgstr "Uruchomienie usługi AutoIP się nie powiodło"
+
+#: ../cli/src/common.c:462
+msgid "AutoIP service error"
+msgstr "Błąd usługi AutoIP"
+
+#: ../cli/src/common.c:465
+msgid "AutoIP service failed"
+msgstr "Usługa AutoIP się nie powiodła"
+
+#: ../cli/src/common.c:468
+msgid "The line is busy"
+msgstr "Linia jest zajęta"
+
+#: ../cli/src/common.c:471
+msgid "No dial tone"
+msgstr "Brak sygnału telefonicznego"
+
+#: ../cli/src/common.c:474
+msgid "No carrier could be established"
+msgstr "Nie można ustanowić operatora"
+
+#: ../cli/src/common.c:477
+msgid "The dialing request timed out"
+msgstr "Żądanie zadzwonienia przekroczyło czas oczekiwania"
+
+#: ../cli/src/common.c:480
+msgid "The dialing attempt failed"
+msgstr "Próba zadzwonienia się nie powiodła"
+
+#: ../cli/src/common.c:483
+msgid "Modem initialization failed"
+msgstr "Zainicjowanie modemu się nie powiodło"
+
+#: ../cli/src/common.c:486
+msgid "Failed to select the specified APN"
+msgstr "Wybranie podanego APN się nie powiodło"
+
+#: ../cli/src/common.c:489
+msgid "Not searching for networks"
+msgstr "Sieci nie są wyszukiwane"
+
+#: ../cli/src/common.c:492
+msgid "Network registration denied"
+msgstr "Odmówiono rejestracji sieci"
+
+#: ../cli/src/common.c:495
+msgid "Network registration timed out"
+msgstr "Przekroczono czas oczekiwania rejestracji sieci"
+
+#: ../cli/src/common.c:498
+msgid "Failed to register with the requested network"
+msgstr "Zarejestrowanie w żądanej sieci się nie powiodło"
+
+#: ../cli/src/common.c:501
+msgid "PIN check failed"
+msgstr "Sprawdzenie kodu PIN się nie powiodło"
+
+#: ../cli/src/common.c:504
+msgid "Necessary firmware for the device may be missing"
+msgstr "Brak wymaganego oprogramowania sprzętowego dla urządzenia"
+
+#: ../cli/src/common.c:507
+msgid "The device was removed"
+msgstr "Urządzenie zostało usunięte"
+
+#: ../cli/src/common.c:510
+msgid "NetworkManager went to sleep"
+msgstr "Usługa NetworkManager została uśpiona"
+
+#: ../cli/src/common.c:513
+msgid "The device's active connection disappeared"
+msgstr "Aktywne połączenie urządzenia zniknęło"
+
+#: ../cli/src/common.c:516
+msgid "Device disconnected by user or client"
+msgstr "Urządzenie zostało rozłączone przez użytkownika lub klienta"
+
+#: ../cli/src/common.c:519
+msgid "Carrier/link changed"
+msgstr "Zmieniono operatora/łącze"
+
+#: ../cli/src/common.c:522
+msgid "The device's existing connection was assumed"
+msgstr "Przyjęto istniejące połączenie urządzenia"
+
+#: ../cli/src/common.c:525
+msgid "The supplicant is now available"
+msgstr "Suplikant jest teraz dostępny"
+
+#: ../cli/src/common.c:528
+msgid "The modem could not be found"
+msgstr "Nie można odnaleźć modemu"
+
+#: ../cli/src/common.c:531
+msgid "The Bluetooth connection failed or timed out"
+msgstr ""
+"Połączenie Bluetooth się nie powiodło lub przekroczyło czas oczekiwania"
+
+#: ../cli/src/common.c:534
+msgid "GSM Modem's SIM card not inserted"
+msgstr "Karta SIM modemu GSM nie została włożona"
+
+#: ../cli/src/common.c:537
+msgid "GSM Modem's SIM PIN required"
+msgstr "Wymagany jest kod PIN karty SIM modemu GSM"
+
+#: ../cli/src/common.c:540
+msgid "GSM Modem's SIM PUK required"
+msgstr "Wymagany jest kod PUK karty SIM modemu GSM"
+
+#: ../cli/src/common.c:543
+msgid "GSM Modem's SIM wrong"
+msgstr "Karta SIM modemu GSM jest błędna"
+
+#: ../cli/src/common.c:546
+msgid "InfiniBand device does not support connected mode"
+msgstr "Urządzenie InfiniBand nie obsługuje trybu połączonego"
+
+#: ../cli/src/common.c:549
+msgid "A dependency of the connection failed"
+msgstr "Zależność połączenia się nie powiodła"
+
+#: ../cli/src/common.c:551 ../cli/src/devices.c:267 ../cli/src/devices.c:283
+#: ../cli/src/devices.c:403 ../cli/src/devices.c:447
+msgid "Unknown"
+msgstr "Nieznane"
+
 #. 0
 #. used only for 'GENERAL' group listing
-#: ../cli/src/connections.c:56 ../cli/src/connections.c:120
-#: ../cli/src/devices.c:100 ../cli/src/devices.c:121 ../cli/src/devices.c:131
-#: ../cli/src/devices.c:141 ../cli/src/devices.c:155 ../cli/src/devices.c:169
-#: ../cli/src/devices.c:191
+#: ../cli/src/connections.c:58 ../cli/src/connections.c:126
+#: ../cli/src/devices.c:103 ../cli/src/devices.c:124 ../cli/src/devices.c:134
+#: ../cli/src/devices.c:144 ../cli/src/devices.c:158 ../cli/src/devices.c:172
+#: ../cli/src/devices.c:194
 msgid "NAME"
 msgstr "NAZWA"
 
 #. 0
 #. 1
-#: ../cli/src/connections.c:57 ../cli/src/connections.c:121
+#: ../cli/src/connections.c:59 ../cli/src/connections.c:127
 msgid "UUID"
 msgstr "UUID"
 
@@ -77,28 +351,28 @@ msgstr "UUID"
 #. 0
 #. 1
 #. 2
-#: ../cli/src/connections.c:58 ../cli/src/connections.c:154
-#: ../cli/src/devices.c:66 ../cli/src/devices.c:102 ../cli/src/devices.c:194
+#: ../cli/src/connections.c:60 ../cli/src/connections.c:160
+#: ../cli/src/devices.c:69 ../cli/src/devices.c:105 ../cli/src/devices.c:197
 msgid "TYPE"
 msgstr "TYP"
 
 #. 2
-#: ../cli/src/connections.c:59
+#: ../cli/src/connections.c:61
 msgid "TIMESTAMP"
 msgstr "OKRES-CZASU"
 
 #. 3
-#: ../cli/src/connections.c:60
+#: ../cli/src/connections.c:62
 msgid "TIMESTAMP-REAL"
 msgstr "RZECZYWISTY-OKRES-CZASU"
 
 #. 4
-#: ../cli/src/connections.c:61
+#: ../cli/src/connections.c:63
 msgid "AUTOCONNECT"
 msgstr "ŁĄCZENIE-AUTOMATYCZNE"
 
 #. 5
-#: ../cli/src/connections.c:62
+#: ../cli/src/connections.c:64
 msgid "READONLY"
 msgstr "TYLKO-DO-ODCZYTU"
 
@@ -107,13 +381,13 @@ msgstr "TYLKO-DO-ODCZYTU"
 #. 2
 #. 11
 #. 5
-#: ../cli/src/connections.c:63 ../cli/src/connections.c:128
-#: ../cli/src/devices.c:68 ../cli/src/devices.c:181 ../cli/src/devices.c:197
+#: ../cli/src/connections.c:65 ../cli/src/connections.c:134
+#: ../cli/src/devices.c:71 ../cli/src/devices.c:184 ../cli/src/devices.c:200
 msgid "DBUS-PATH"
 msgstr "ŚCIEŻKA-DO-DBUS"
 
 #. 2
-#: ../cli/src/connections.c:122
+#: ../cli/src/connections.c:128
 msgid "DEVICES"
 msgstr "URZĄDZENIA"
 
@@ -121,82 +395,82 @@ msgstr "URZĄDZENIA"
 #. 1
 #. 6
 #. 1
-#: ../cli/src/connections.c:123 ../cli/src/devices.c:67
-#: ../cli/src/devices.c:107 ../cli/src/network-manager.c:39
+#: ../cli/src/connections.c:129 ../cli/src/devices.c:70
+#: ../cli/src/devices.c:110 ../cli/src/network-manager.c:39
 msgid "STATE"
 msgstr "STAN"
 
 #. 4
-#: ../cli/src/connections.c:124
+#: ../cli/src/connections.c:130
 msgid "DEFAULT"
 msgstr "DOMYŚLNE"
 
 #. 5
-#: ../cli/src/connections.c:125
+#: ../cli/src/connections.c:131
 msgid "DEFAULT6"
 msgstr "DOMYŚLNE6"
 
 #. 6
-#: ../cli/src/connections.c:126
+#: ../cli/src/connections.c:132
 msgid "SPEC-OBJECT"
 msgstr "KONKRETNY-OBIEKT"
 
 #. 7
 #. 1
-#: ../cli/src/connections.c:127 ../cli/src/connections.c:141
+#: ../cli/src/connections.c:133 ../cli/src/connections.c:147
 msgid "VPN"
 msgstr "VPN"
 
 #. 9
-#: ../cli/src/connections.c:129
+#: ../cli/src/connections.c:135
 msgid "CON-PATH"
 msgstr "ŚCIEŻKA-DO-POŁĄCZENIA"
 
 #. 10
-#: ../cli/src/connections.c:130
+#: ../cli/src/connections.c:136
 msgid "ZONE"
 msgstr "STREFA"
 
 #. 11
-#: ../cli/src/connections.c:131
+#: ../cli/src/connections.c:137
 msgid "MASTER-PATH"
 msgstr "GŁÓWNA-ŚCIEŻKA"
 
-#: ../cli/src/connections.c:139 ../cli/src/devices.c:77
+#: ../cli/src/connections.c:145 ../cli/src/devices.c:80
 msgid "GENERAL"
 msgstr "OGÓLNE"
 
 #. 0
-#: ../cli/src/connections.c:140
+#: ../cli/src/connections.c:146
 msgid "IP"
 msgstr "IP"
 
 #. 1
-#: ../cli/src/connections.c:155
+#: ../cli/src/connections.c:161
 msgid "USERNAME"
 msgstr "NAZWA-UŻYTKOWNIKA"
 
 #. 2
-#: ../cli/src/connections.c:156
+#: ../cli/src/connections.c:162
 msgid "GATEWAY"
 msgstr "BRAMA"
 
 #. 3
-#: ../cli/src/connections.c:157
+#: ../cli/src/connections.c:163
 msgid "BANNER"
 msgstr "BANER"
 
 #. 4
-#: ../cli/src/connections.c:158
+#: ../cli/src/connections.c:164
 msgid "VPN-STATE"
 msgstr "STAN-VPN"
 
 #. 5
-#: ../cli/src/connections.c:159
+#: ../cli/src/connections.c:165
 msgid "CFG"
 msgstr "KONFIGURACJA"
 
-#: ../cli/src/connections.c:180
+#: ../cli/src/connections.c:187
 #, c-format
 msgid ""
 "Usage: nmcli con { COMMAND | help }\n"
@@ -223,377 +497,355 @@ msgstr ""
 "  down id <identyfikator> | uuid <identyfikator>\n"
 "  delete id <identyfikator> | uuid <identyfikator>\n"
 
-#: ../cli/src/connections.c:234 ../cli/src/connections.c:567
+#: ../cli/src/connections.c:246 ../cli/src/connections.c:597
 #, c-format
 msgid "Error: 'con list': %s"
 msgstr "Błąd: \"con list\": %s"
 
-#: ../cli/src/connections.c:236 ../cli/src/connections.c:569
+#: ../cli/src/connections.c:248 ../cli/src/connections.c:599
 #, c-format
 msgid "Error: 'con list': %s; allowed fields: %s"
 msgstr "Błąd: \"con list\": %s; dozwolone pola: %s"
 
-#: ../cli/src/connections.c:244
+#: ../cli/src/connections.c:256
 msgid "Connection details"
 msgstr "Szczegóły połączenia"
 
-#: ../cli/src/connections.c:442
+#: ../cli/src/connections.c:472
 msgid "never"
 msgstr "nigdy"
 
 #. "CAPABILITIES"
 #. Print header
 #. "WIFI-PROPERTIES"
-#: ../cli/src/connections.c:443 ../cli/src/connections.c:444
-#: ../cli/src/connections.c:681 ../cli/src/connections.c:682
-#: ../cli/src/connections.c:684 ../cli/src/devices.c:586
-#: ../cli/src/devices.c:639 ../cli/src/devices.c:750 ../cli/src/devices.c:751
-#: ../cli/src/devices.c:783 ../cli/src/devices.c:809 ../cli/src/devices.c:810
-#: ../cli/src/devices.c:811 ../cli/src/devices.c:812 ../cli/src/devices.c:813
-#: ../cli/src/settings.c:576 ../cli/src/settings.c:646
-#: ../cli/src/settings.c:766 ../cli/src/settings.c:1048
-#: ../cli/src/settings.c:1049 ../cli/src/settings.c:1051
-#: ../cli/src/settings.c:1053 ../cli/src/settings.c:1054
-#: ../cli/src/settings.c:1182 ../cli/src/settings.c:1183
-#: ../cli/src/settings.c:1184 ../cli/src/settings.c:1185
-#: ../cli/src/settings.c:1260 ../cli/src/settings.c:1261
-#: ../cli/src/settings.c:1262 ../cli/src/settings.c:1263
+#: ../cli/src/connections.c:473 ../cli/src/connections.c:474
+#: ../cli/src/connections.c:711 ../cli/src/connections.c:712
+#: ../cli/src/connections.c:714 ../cli/src/devices.c:411
+#: ../cli/src/devices.c:464 ../cli/src/devices.c:578 ../cli/src/devices.c:579
+#: ../cli/src/devices.c:611 ../cli/src/devices.c:637 ../cli/src/devices.c:638
+#: ../cli/src/devices.c:639 ../cli/src/devices.c:640 ../cli/src/devices.c:641
+#: ../cli/src/network-manager.c:267 ../cli/src/settings.c:657
+#: ../cli/src/settings.c:727 ../cli/src/settings.c:847
+#: ../cli/src/settings.c:1129 ../cli/src/settings.c:1130
+#: ../cli/src/settings.c:1132 ../cli/src/settings.c:1134
+#: ../cli/src/settings.c:1135 ../cli/src/settings.c:1263
 #: ../cli/src/settings.c:1264 ../cli/src/settings.c:1265
-#: ../cli/src/settings.c:1266 ../cli/src/settings.c:1267
-#: ../cli/src/settings.c:1268 ../cli/src/settings.c:1269
-#: ../cli/src/settings.c:1270 ../cli/src/settings.c:1271
-#: ../cli/src/settings.c:1272 ../cli/src/settings.c:1343
+#: ../cli/src/settings.c:1266 ../cli/src/settings.c:1341
+#: ../cli/src/settings.c:1342 ../cli/src/settings.c:1343
+#: ../cli/src/settings.c:1344 ../cli/src/settings.c:1345
+#: ../cli/src/settings.c:1346 ../cli/src/settings.c:1347
+#: ../cli/src/settings.c:1348 ../cli/src/settings.c:1349
+#: ../cli/src/settings.c:1350 ../cli/src/settings.c:1351
+#: ../cli/src/settings.c:1352 ../cli/src/settings.c:1353
+#: ../cli/src/settings.c:1424
 msgid "yes"
 msgstr "tak"
 
-#: ../cli/src/connections.c:443 ../cli/src/connections.c:444
-#: ../cli/src/connections.c:681 ../cli/src/connections.c:682
-#: ../cli/src/connections.c:684 ../cli/src/devices.c:586
-#: ../cli/src/devices.c:639 ../cli/src/devices.c:750 ../cli/src/devices.c:751
-#: ../cli/src/devices.c:783 ../cli/src/devices.c:809 ../cli/src/devices.c:810
-#: ../cli/src/devices.c:811 ../cli/src/devices.c:812 ../cli/src/devices.c:813
-#: ../cli/src/settings.c:576 ../cli/src/settings.c:578
-#: ../cli/src/settings.c:646 ../cli/src/settings.c:766
-#: ../cli/src/settings.c:1048 ../cli/src/settings.c:1049
-#: ../cli/src/settings.c:1051 ../cli/src/settings.c:1053
-#: ../cli/src/settings.c:1054 ../cli/src/settings.c:1182
-#: ../cli/src/settings.c:1183 ../cli/src/settings.c:1184
-#: ../cli/src/settings.c:1185 ../cli/src/settings.c:1260
-#: ../cli/src/settings.c:1261 ../cli/src/settings.c:1262
+#: ../cli/src/connections.c:473 ../cli/src/connections.c:474
+#: ../cli/src/connections.c:711 ../cli/src/connections.c:712
+#: ../cli/src/connections.c:714 ../cli/src/devices.c:411
+#: ../cli/src/devices.c:464 ../cli/src/devices.c:578 ../cli/src/devices.c:579
+#: ../cli/src/devices.c:611 ../cli/src/devices.c:637 ../cli/src/devices.c:638
+#: ../cli/src/devices.c:639 ../cli/src/devices.c:640 ../cli/src/devices.c:641
+#: ../cli/src/network-manager.c:269 ../cli/src/settings.c:657
+#: ../cli/src/settings.c:659 ../cli/src/settings.c:727
+#: ../cli/src/settings.c:847 ../cli/src/settings.c:1129
+#: ../cli/src/settings.c:1130 ../cli/src/settings.c:1132
+#: ../cli/src/settings.c:1134 ../cli/src/settings.c:1135
 #: ../cli/src/settings.c:1263 ../cli/src/settings.c:1264
 #: ../cli/src/settings.c:1265 ../cli/src/settings.c:1266
-#: ../cli/src/settings.c:1267 ../cli/src/settings.c:1268
-#: ../cli/src/settings.c:1269 ../cli/src/settings.c:1270
-#: ../cli/src/settings.c:1271 ../cli/src/settings.c:1272
-#: ../cli/src/settings.c:1343
+#: ../cli/src/settings.c:1341 ../cli/src/settings.c:1342
+#: ../cli/src/settings.c:1343 ../cli/src/settings.c:1344
+#: ../cli/src/settings.c:1345 ../cli/src/settings.c:1346
+#: ../cli/src/settings.c:1347 ../cli/src/settings.c:1348
+#: ../cli/src/settings.c:1349 ../cli/src/settings.c:1350
+#: ../cli/src/settings.c:1351 ../cli/src/settings.c:1352
+#: ../cli/src/settings.c:1353 ../cli/src/settings.c:1424
 msgid "no"
 msgstr "nie"
 
-#: ../cli/src/connections.c:518
+#: ../cli/src/connections.c:548
 msgid "Connection list"
 msgstr "Lista połączeń"
 
-#: ../cli/src/connections.c:531 ../cli/src/connections.c:1064
-#: ../cli/src/connections.c:1808 ../cli/src/connections.c:1823
-#: ../cli/src/connections.c:1832 ../cli/src/connections.c:1842
-#: ../cli/src/connections.c:1854 ../cli/src/connections.c:1949
-#: ../cli/src/connections.c:2051 ../cli/src/devices.c:1190
-#: ../cli/src/devices.c:1200 ../cli/src/devices.c:1314
-#: ../cli/src/devices.c:1322 ../cli/src/devices.c:1535
-#: ../cli/src/devices.c:1542
+#: ../cli/src/connections.c:561 ../cli/src/connections.c:1094
+#: ../cli/src/connections.c:1630 ../cli/src/connections.c:1645
+#: ../cli/src/connections.c:1654 ../cli/src/connections.c:1664
+#: ../cli/src/connections.c:1676 ../cli/src/connections.c:1784
+#: ../cli/src/connections.c:1886 ../cli/src/devices.c:1031
+#: ../cli/src/devices.c:1041 ../cli/src/devices.c:1159
+#: ../cli/src/devices.c:1167 ../cli/src/devices.c:1531
+#: ../cli/src/devices.c:1538 ../cli/src/devices.c:1552
+#: ../cli/src/devices.c:1559 ../cli/src/devices.c:1576
+#: ../cli/src/devices.c:1587 ../cli/src/devices.c:1808
+#: ../cli/src/devices.c:1815
 #, c-format
 msgid "Error: %s argument is missing."
 msgstr "Błąd: brak parametru %s."
 
-#: ../cli/src/connections.c:544
+#: ../cli/src/connections.c:574
 #, c-format
 msgid "Error: %s - no such connection."
 msgstr "Błąd: %s - nie ma takiego połączenia."
 
-#: ../cli/src/connections.c:550 ../cli/src/connections.c:1867
-#: ../cli/src/connections.c:1966 ../cli/src/connections.c:2058
-#: ../cli/src/devices.c:987 ../cli/src/devices.c:1067
-#: ../cli/src/devices.c:1214 ../cli/src/devices.c:1328
-#: ../cli/src/devices.c:1548
+#: ../cli/src/connections.c:580 ../cli/src/connections.c:1689
+#: ../cli/src/connections.c:1801 ../cli/src/connections.c:1893
+#: ../cli/src/devices.c:815 ../cli/src/devices.c:895 ../cli/src/devices.c:1055
+#: ../cli/src/devices.c:1173 ../cli/src/devices.c:1600
+#: ../cli/src/devices.c:1821
 #, c-format
 msgid "Unknown parameter: %s\n"
 msgstr "Nieznany parametr: %s\n"
 
-#: ../cli/src/connections.c:559
+#: ../cli/src/connections.c:589
 #, c-format
 msgid "Error: no valid parameter specified."
 msgstr "Błąd: nie podano prawidłowego parametru."
 
-#: ../cli/src/connections.c:574 ../cli/src/connections.c:2151
-#: ../cli/src/devices.c:1756 ../cli/src/network-manager.c:456
+#: ../cli/src/connections.c:604 ../cli/src/connections.c:1986
+#: ../cli/src/devices.c:2029 ../cli/src/network-manager.c:596
 #, c-format
 msgid "Error: %s."
 msgstr "Błąd: %s."
 
-#: ../cli/src/connections.c:587
+#: ../cli/src/connections.c:617
 msgid "activating"
 msgstr "aktywowanie"
 
-#: ../cli/src/connections.c:589
+#: ../cli/src/connections.c:619
 msgid "activated"
 msgstr "aktywowano"
 
-#: ../cli/src/connections.c:591 ../cli/src/devices.c:261
-msgid "deactivating"
-msgstr "deaktywowanie"
-
-#: ../cli/src/connections.c:594 ../cli/src/connections.c:617
-#: ../cli/src/connections.c:1680 ../cli/src/devices.c:265
-#: ../cli/src/devices.c:784 ../cli/src/network-manager.c:111
-#: ../cli/src/network-manager.c:173 ../cli/src/network-manager.c:176
-#: ../cli/src/network-manager.c:185 ../cli/src/network-manager.c:291
-#: ../cli/src/network-manager.c:346 ../cli/src/network-manager.c:384
-#: ../cli/src/network-manager.c:423 ../cli/src/settings.c:531
-#: ../cli/src/utils.c:499 ../src/main.c:443 ../src/main.c:462
-msgid "unknown"
-msgstr "nieznane"
-
-#: ../cli/src/connections.c:603
+#: ../cli/src/connections.c:633
 msgid "VPN connecting (prepare)"
 msgstr "Łączenie z VPN (przygotowanie)"
 
-#: ../cli/src/connections.c:605
+#: ../cli/src/connections.c:635
 msgid "VPN connecting (need authentication)"
 msgstr "Łączenie z VPN (wymaga uwierzytelnienia)"
 
-#: ../cli/src/connections.c:607
+#: ../cli/src/connections.c:637
 msgid "VPN connecting"
 msgstr "Łączenie z VPN"
 
-#: ../cli/src/connections.c:609
+#: ../cli/src/connections.c:639
 msgid "VPN connecting (getting IP configuration)"
 msgstr "Łączenie z VPN (pobieranie konfiguracji adresu IP)"
 
-#: ../cli/src/connections.c:611
+#: ../cli/src/connections.c:641
 msgid "VPN connected"
 msgstr "Połączono z VPN"
 
-#: ../cli/src/connections.c:613
+#: ../cli/src/connections.c:643
 msgid "VPN connection failed"
 msgstr "Połączenie z VPN się nie powiodło"
 
-#: ../cli/src/connections.c:615
+#: ../cli/src/connections.c:645
 msgid "VPN disconnected"
 msgstr "Rozłączono z VPN"
 
-#: ../cli/src/connections.c:868 ../cli/src/connections.c:1092
+#: ../cli/src/connections.c:898 ../cli/src/connections.c:1122
 #, c-format
 msgid "Error: 'con status': %s"
 msgstr "Błąd: \"con status\": %s"
 
-#: ../cli/src/connections.c:870 ../cli/src/connections.c:1094
+#: ../cli/src/connections.c:900 ../cli/src/connections.c:1124
 #, c-format
 msgid "Error: 'con status': %s; allowed fields: %s"
 msgstr "Błąd: \"con status\": %s; dozwolone pola: %s"
 
-#: ../cli/src/connections.c:878
+#: ../cli/src/connections.c:908
 msgid "Active connection details"
 msgstr "Szczegóły aktywnego połączenia"
 
-#: ../cli/src/connections.c:1014 ../cli/src/connections.c:1882
-#: ../cli/src/connections.c:1981 ../cli/src/connections.c:2072
-#: ../cli/src/devices.c:1014 ../cli/src/devices.c:1076
-#: ../cli/src/devices.c:1229 ../cli/src/devices.c:1358
-#: ../cli/src/devices.c:1577
+#: ../cli/src/connections.c:1044 ../cli/src/connections.c:1704
+#: ../cli/src/connections.c:1816 ../cli/src/connections.c:1907
+#: ../cli/src/devices.c:842 ../cli/src/devices.c:904 ../cli/src/devices.c:1070
+#: ../cli/src/devices.c:1203 ../cli/src/devices.c:1622
+#: ../cli/src/devices.c:1850 ../cli/src/network-manager.c:311
 #, c-format
 msgid "Error: Can't find out if NetworkManager is running: %s."
 msgstr ""
 "Błąd: nie można ustalić, czy usługa NetworkManager jest uruchomiona: %s."
 
-#: ../cli/src/connections.c:1018 ../cli/src/connections.c:1886
-#: ../cli/src/connections.c:1985 ../cli/src/connections.c:2076
-#: ../cli/src/devices.c:1018 ../cli/src/devices.c:1080
-#: ../cli/src/devices.c:1233 ../cli/src/devices.c:1362
-#: ../cli/src/devices.c:1581
+#: ../cli/src/connections.c:1048 ../cli/src/connections.c:1708
+#: ../cli/src/connections.c:1820 ../cli/src/connections.c:1911
+#: ../cli/src/devices.c:846 ../cli/src/devices.c:908 ../cli/src/devices.c:1074
+#: ../cli/src/devices.c:1207 ../cli/src/devices.c:1626
+#: ../cli/src/devices.c:1854 ../cli/src/network-manager.c:315
 #, c-format
 msgid "Error: NetworkManager is not running."
 msgstr "Błąd: usługa NetworkManager nie jest uruchomiona."
 
-#: ../cli/src/connections.c:1050
+#: ../cli/src/connections.c:1080
 msgid "Active connections"
 msgstr "Aktywne połączenia"
 
-#: ../cli/src/connections.c:1075
+#: ../cli/src/connections.c:1105
 #, c-format
 msgid "Error: '%s' is not an active connection."
 msgstr "Błąd: \"%s\" nie jest aktywnym połączeniem."
 
-#: ../cli/src/connections.c:1080
+#: ../cli/src/connections.c:1110
 #, c-format
 msgid "Error: unknown parameter: %s"
 msgstr "Błąd nieznany parametr: %s"
 
-#: ../cli/src/connections.c:1564
+#: ../cli/src/connections.c:1217
 #, c-format
 msgid "no active connection on device '%s'"
 msgstr "brak aktywnych połączeń na urządzeniu \"%s\""
 
-#: ../cli/src/connections.c:1572
+#: ../cli/src/connections.c:1225
 #, c-format
 msgid "no active connection or device"
 msgstr "brak aktywnych połączeń na urządzeń"
 
-#: ../cli/src/connections.c:1643
+#: ../cli/src/connections.c:1296
 #, c-format
 msgid "device '%s' not compatible with connection '%s'"
 msgstr "urządzenie \"%s\" nie jest zgodne z połączeniem \"%s\""
 
-#: ../cli/src/connections.c:1645
+#: ../cli/src/connections.c:1298
 #, c-format
 msgid "no device found for connection '%s'"
 msgstr "nie odnaleziono urządzenia dla połączenia \"%s\""
 
-#: ../cli/src/connections.c:1656
+#: ../cli/src/connections.c:1309
 msgid "unknown reason"
 msgstr "nieznany powód"
 
-#: ../cli/src/connections.c:1658
+#: ../cli/src/connections.c:1311
 msgid "none"
 msgstr "brak"
 
-#: ../cli/src/connections.c:1660
+#: ../cli/src/connections.c:1313
 msgid "the user was disconnected"
 msgstr "użytkownik został rozłączony"
 
-#: ../cli/src/connections.c:1662
+#: ../cli/src/connections.c:1315
 msgid "the base network connection was interrupted"
 msgstr "podstawowe połączenie sieciowe zostało przerwane"
 
-#: ../cli/src/connections.c:1664
+#: ../cli/src/connections.c:1317
 msgid "the VPN service stopped unexpectedly"
 msgstr "usługa VPN została nieoczekiwanie zatrzymana"
 
-#: ../cli/src/connections.c:1666
+#: ../cli/src/connections.c:1319
 msgid "the VPN service returned invalid configuration"
 msgstr "usługa VPN zwróciła nieprawidłową konfigurację"
 
-#: ../cli/src/connections.c:1668
+#: ../cli/src/connections.c:1321
 msgid "the connection attempt timed out"
 msgstr "próba połączenia przekroczyła czas oczekiwania"
 
-#: ../cli/src/connections.c:1670
+#: ../cli/src/connections.c:1323
 msgid "the VPN service did not start in time"
 msgstr "usługa VPN nie została uruchomiona w czasie"
 
-#: ../cli/src/connections.c:1672
+#: ../cli/src/connections.c:1325
 msgid "the VPN service failed to start"
 msgstr "uruchomienie usługi VPN się nie powiodło"
 
-#: ../cli/src/connections.c:1674
+#: ../cli/src/connections.c:1327
 msgid "no valid VPN secrets"
 msgstr "brak prawidłowych haseł VPN"
 
-#: ../cli/src/connections.c:1676
+#: ../cli/src/connections.c:1329
 msgid "invalid VPN secrets"
 msgstr "nieprawidłowe hasła VPN"
 
-#: ../cli/src/connections.c:1678
+#: ../cli/src/connections.c:1331
 msgid "the connection was removed"
 msgstr "połączenie zostało usunięte"
 
-#: ../cli/src/connections.c:1692
-#, c-format
-msgid "state: %s\n"
-msgstr "stan: %s\n"
-
-#: ../cli/src/connections.c:1695 ../cli/src/connections.c:1721
+#: ../cli/src/connections.c:1348 ../cli/src/connections.c:1553
 #, c-format
-msgid "Connection activated\n"
-msgstr "Aktywowano połączenie\n"
+msgid "Connection successfully activated (D-Bus active path: %s)\n"
+msgstr ""
+"Połączenie zostało pomyślnie aktywowane (ścieżka aktywacji D-Bus: %s)\n"
 
-#: ../cli/src/connections.c:1698
+#. Active connection failed and dissapeared, quit.
+#: ../cli/src/connections.c:1353 ../cli/src/connections.c:1454
 #, c-format
 msgid "Error: Connection activation failed."
 msgstr "Błąd: aktywacja połączenia się nie powiodła."
 
-#: ../cli/src/connections.c:1717
+#: ../cli/src/connections.c:1378
 #, c-format
-msgid "state: %s (%d)\n"
-msgstr "stan: %s (%d)\n"
+msgid "VPN connection successfully activated (D-Bus active path: %s)\n"
+msgstr ""
+"Połączenie VPN zostało pomyślnie aktywowane (ścieżka aktywacji D-Bus: %s)\n"
 
-#: ../cli/src/connections.c:1727
+#: ../cli/src/connections.c:1386
 #, c-format
 msgid "Error: Connection activation failed: %s."
 msgstr "Błąd: aktywacja połączenia się nie powiodła: %s."
 
-#: ../cli/src/connections.c:1744 ../cli/src/devices.c:1136
+#: ../cli/src/connections.c:1483 ../cli/src/devices.c:964
 #, c-format
 msgid "Error: Timeout %d sec expired."
 msgstr "Błąd: przekroczono czas oczekiwania o %d sekund."
 
-#: ../cli/src/connections.c:1757
+#: ../cli/src/connections.c:1544
 #, c-format
 msgid "Error: Connection activation failed: %s"
 msgstr "Błąd: aktywacja połączenia się nie powiodła: %s"
 
-#: ../cli/src/connections.c:1763
-#, c-format
-msgid "Active connection state: %s\n"
-msgstr "Stan aktywnego połączenia: %s\n"
-
-#: ../cli/src/connections.c:1764
-#, c-format
-msgid "Active connection path: %s\n"
-msgstr "Ścieżka aktywnego połączenia: %s\n"
-
-#: ../cli/src/connections.c:1816 ../cli/src/connections.c:1957
-#: ../cli/src/connections.c:2085
+#: ../cli/src/connections.c:1638 ../cli/src/connections.c:1792
+#: ../cli/src/connections.c:1920
 #, c-format
 msgid "Error: Unknown connection: %s."
 msgstr "Błąd: nieznane połączenie: %s."
 
-#: ../cli/src/connections.c:1862 ../cli/src/devices.c:1208
+#: ../cli/src/connections.c:1684 ../cli/src/devices.c:1049
+#: ../cli/src/devices.c:1595
 #, c-format
 msgid "Error: timeout value '%s' is not valid."
 msgstr "Błąd: wartość czasu oczekiwania \"%s\" jest nieprawidłowa."
 
-#: ../cli/src/connections.c:1875 ../cli/src/connections.c:1974
-#: ../cli/src/connections.c:2065
+#: ../cli/src/connections.c:1697 ../cli/src/connections.c:1809
+#: ../cli/src/connections.c:1900
 #, c-format
 msgid "Error: id or uuid has to be specified."
 msgstr "Błąd: należy podać identyfikator lub UUID."
 
-#: ../cli/src/connections.c:1903
+#: ../cli/src/connections.c:1729
 #, c-format
 msgid "Error: No suitable device found: %s."
 msgstr "Błąd: nie odnaleziono odpowiedniego urządzenia: %s"
 
-#: ../cli/src/connections.c:1905
+#: ../cli/src/connections.c:1731
 #, c-format
 msgid "Error: No suitable device found."
 msgstr "Błąd: nie odnaleziono odpowiedniego urządzenia."
 
-#: ../cli/src/connections.c:2010
+#: ../cli/src/connections.c:1845
 #, c-format
 msgid "Warning: Connection not active\n"
 msgstr "Ostrzeżenie: połączenie nie jest aktywne\n"
 
-#: ../cli/src/connections.c:2024
+#: ../cli/src/connections.c:1859
 #, c-format
 msgid "Error: Connection deletion failed: %s"
 msgstr "Błąd: usunięcie połączenia się nie powiodło: %s"
 
-#: ../cli/src/connections.c:2142
+#: ../cli/src/connections.c:1977
 #, c-format
 msgid "Error: 'con' command '%s' is not valid."
 msgstr "Błąd: polecenie \"con\" \"%s\" jest nieprawidłowe."
 
-#: ../cli/src/connections.c:2207
+#: ../cli/src/connections.c:2045
 #, c-format
 msgid "Error: could not connect to D-Bus."
 msgstr "Błąd: nie można połączyć się z D-Bus."
 
-#: ../cli/src/connections.c:2215
+#: ../cli/src/connections.c:2053
 #, c-format
 msgid "Error: Could not get system settings."
 msgstr "Błąd: nie można uzyskać ustawień systemu."
 
-#: ../cli/src/connections.c:2225
+#: ../cli/src/connections.c:2063
 #, c-format
 msgid "Error: Can't obtain connections: settings service is not running."
 msgstr ""
@@ -602,230 +854,230 @@ msgstr ""
 #. 0
 #. 9
 #. 3
-#: ../cli/src/devices.c:65 ../cli/src/devices.c:101 ../cli/src/devices.c:179
-#: ../cli/src/devices.c:195
+#: ../cli/src/devices.c:68 ../cli/src/devices.c:104 ../cli/src/devices.c:182
+#: ../cli/src/devices.c:198
 msgid "DEVICE"
 msgstr "URZĄDZENIE"
 
 #. 0
-#: ../cli/src/devices.c:78
+#: ../cli/src/devices.c:81
 msgid "CAPABILITIES"
 msgstr "MOŻLIWOŚCI"
 
 #. 1
-#: ../cli/src/devices.c:79
+#: ../cli/src/devices.c:82
 msgid "WIFI-PROPERTIES"
 msgstr "WŁAŚCIWOŚCI-WIFI"
 
 #. 2
-#: ../cli/src/devices.c:80
+#: ../cli/src/devices.c:83
 msgid "AP"
 msgstr "PUNKT-DOSTĘPOWY"
 
 #. 3
-#: ../cli/src/devices.c:81
+#: ../cli/src/devices.c:84
 msgid "WIRED-PROPERTIES"
 msgstr "WŁAŚCIWOŚCI-POŁĄCZENIA-PRZEWODOWEGO"
 
 #. 4
-#: ../cli/src/devices.c:82
+#: ../cli/src/devices.c:85
 msgid "WIMAX-PROPERTIES"
 msgstr "WŁAŚCIWOŚCI-WIMAX"
 
 #. 5
 #. 0
-#: ../cli/src/devices.c:83 ../cli/src/devices.c:192
+#: ../cli/src/devices.c:86 ../cli/src/devices.c:195
 msgid "NSP"
 msgstr "NSP"
 
 #. 6
-#: ../cli/src/devices.c:84
+#: ../cli/src/devices.c:87
 msgid "IP4"
 msgstr "IP4"
 
 #. 7
-#: ../cli/src/devices.c:85
+#: ../cli/src/devices.c:88
 msgid "DHCP4"
 msgstr "DHCP4"
 
 #. 8
-#: ../cli/src/devices.c:86
+#: ../cli/src/devices.c:89
 msgid "IP6"
 msgstr "IP6"
 
 #. 9
-#: ../cli/src/devices.c:87
+#: ../cli/src/devices.c:90
 msgid "DHCP6"
 msgstr "DHCP6"
 
 #. 2
-#: ../cli/src/devices.c:103
+#: ../cli/src/devices.c:106
 msgid "VENDOR"
 msgstr "PRODUCENT"
 
 #. 3
-#: ../cli/src/devices.c:104
+#: ../cli/src/devices.c:107
 msgid "PRODUCT"
 msgstr "PRODUKT"
 
 #. 4
-#: ../cli/src/devices.c:105
+#: ../cli/src/devices.c:108
 msgid "DRIVER"
 msgstr "STEROWNIK"
 
 #. 5
-#: ../cli/src/devices.c:106
+#: ../cli/src/devices.c:109
 msgid "HWADDR"
 msgstr "ADRES-SPRZĘTOWY"
 
 #. 7
-#: ../cli/src/devices.c:108
+#: ../cli/src/devices.c:111
 msgid "REASON"
 msgstr "PRZYCZYNA"
 
 #. 8
-#: ../cli/src/devices.c:109
+#: ../cli/src/devices.c:112
 msgid "UDI"
 msgstr "UDI"
 
 #. 9
-#: ../cli/src/devices.c:110
+#: ../cli/src/devices.c:113
 msgid "IP-IFACE"
 msgstr "INTERFEJS-IP"
 
 #. 10
-#: ../cli/src/devices.c:111
+#: ../cli/src/devices.c:114
 msgid "NM-MANAGED"
 msgstr "ZARZĄDZANE-PRZEZ-NM"
 
 #. 11
-#: ../cli/src/devices.c:112
+#: ../cli/src/devices.c:115
 msgid "FIRMWARE-MISSING"
 msgstr "BRAK-OPROGRAMOWANIA-SPRZĘTOWEGO"
 
 #. 12
-#: ../cli/src/devices.c:113
+#: ../cli/src/devices.c:116
 msgid "CONNECTION"
 msgstr "POŁĄCZENIE"
 
 #. 0
-#: ../cli/src/devices.c:122
+#: ../cli/src/devices.c:125
 msgid "CARRIER-DETECT"
 msgstr "WYKRYWANIE-OPERATORA"
 
 #. 1
-#: ../cli/src/devices.c:123
+#: ../cli/src/devices.c:126
 msgid "SPEED"
 msgstr "PRĘDKOŚĆ"
 
 #. 0
-#: ../cli/src/devices.c:132
+#: ../cli/src/devices.c:135
 msgid "CARRIER"
 msgstr "OPERATOR"
 
 #. 0
-#: ../cli/src/devices.c:142
+#: ../cli/src/devices.c:145
 msgid "WEP"
 msgstr "WEP"
 
 #. 1
-#: ../cli/src/devices.c:143
+#: ../cli/src/devices.c:146
 msgid "WPA"
 msgstr "WPA"
 
 #. 2
-#: ../cli/src/devices.c:144
+#: ../cli/src/devices.c:147
 msgid "WPA2"
 msgstr "WPA2"
 
 #. 3
-#: ../cli/src/devices.c:145
+#: ../cli/src/devices.c:148
 msgid "TKIP"
 msgstr "TKIP"
 
 #. 4
-#: ../cli/src/devices.c:146
+#: ../cli/src/devices.c:149
 msgid "CCMP"
 msgstr "CCMP"
 
 #. 0
-#: ../cli/src/devices.c:156
+#: ../cli/src/devices.c:159
 msgid "CTR-FREQ"
 msgstr "CZĘSTOTLIWOŚĆ-CTR"
 
 #. 1
-#: ../cli/src/devices.c:157
+#: ../cli/src/devices.c:160
 msgid "RSSI"
 msgstr "RSSI"
 
 #. 2
-#: ../cli/src/devices.c:158
+#: ../cli/src/devices.c:161
 msgid "CINR"
 msgstr "CINR"
 
 #. 3
-#: ../cli/src/devices.c:159
+#: ../cli/src/devices.c:162
 msgid "TX-POW"
 msgstr "TX-POW"
 
 #. 4
-#: ../cli/src/devices.c:160
+#: ../cli/src/devices.c:163
 msgid "BSID"
 msgstr "BSID"
 
 #. 0
-#: ../cli/src/devices.c:170
+#: ../cli/src/devices.c:173
 msgid "SSID"
 msgstr "SSID"
 
 #. 1
-#: ../cli/src/devices.c:171
+#: ../cli/src/devices.c:174
 msgid "BSSID"
 msgstr "BSSID"
 
 #. 2
-#: ../cli/src/devices.c:172
+#: ../cli/src/devices.c:175
 msgid "MODE"
 msgstr "TRYB"
 
 #. 3
-#: ../cli/src/devices.c:173
+#: ../cli/src/devices.c:176
 msgid "FREQ"
 msgstr "CZĘSTOTLIWOŚĆ"
 
 #. 4
-#: ../cli/src/devices.c:174
+#: ../cli/src/devices.c:177
 msgid "RATE"
 msgstr "OCENA"
 
 #. 5
 #. 1
-#: ../cli/src/devices.c:175 ../cli/src/devices.c:193
+#: ../cli/src/devices.c:178 ../cli/src/devices.c:196
 msgid "SIGNAL"
 msgstr "SYGNAŁ"
 
 #. 6
-#: ../cli/src/devices.c:176
+#: ../cli/src/devices.c:179
 msgid "SECURITY"
 msgstr "ZABEZPIECZENIA"
 
 #. 7
-#: ../cli/src/devices.c:177
+#: ../cli/src/devices.c:180
 msgid "WPA-FLAGS"
 msgstr "FLAGI-WPA"
 
 #. 8
-#: ../cli/src/devices.c:178
+#: ../cli/src/devices.c:181
 msgid "RSN-FLAGS"
 msgstr "FLAGI-RSN"
 
 #. 10
 #. 4
-#: ../cli/src/devices.c:180 ../cli/src/devices.c:196
+#: ../cli/src/devices.c:183 ../cli/src/devices.c:199
 msgid "ACTIVE"
 msgstr "AKTYWNOŚĆ"
 
-#: ../cli/src/devices.c:213
+#: ../cli/src/devices.c:218
 #, c-format
 msgid ""
 "Usage: nmcli dev { COMMAND | help }\n"
@@ -838,6 +1090,9 @@ msgid ""
 "  list [iface <iface>]\n"
 "  disconnect iface <iface> [--nowait] [--timeout <timeout>]\n"
 "  wifi [list [iface <iface>] [bssid <BSSID>]]\n"
+"  wifi connect <(B)SSID> [password <password>] [wep-key-type key|phrase] "
+"[iface <iface>] [bssid <BSSID>] [name <name>]\n"
+"               [--private] [--nowait] [--timeout <timeout>]\n"
 "  wimax [list [iface <iface>] [nsp <name>]]\n"
 "\n"
 msgstr ""
@@ -851,462 +1106,281 @@ msgstr ""
 "  list [iface <interfejs]\n"
 "  disconnect iface <interfejs> [--nowait] [--timeout <czas>]\n"
 "  wifi [list [iface <interfejs>] [bssid <BSSID>]]\n"
+"  wifi connect <(B)SSID> [password <hasło>] [wep-key-type key|phrase] "
+"[iface <interfejs>] [bssid <BSSID>] [name <nazwa>]\n"
+"               [--private] [--nowait] [--timeout <czas>]\n"
 "  wimax [list [iface <interfejs>] [nsp <nazwa>]]\n"
 
-#: ../cli/src/devices.c:241
-msgid "unmanaged"
-msgstr "niezarządzane"
-
-#: ../cli/src/devices.c:243
-msgid "unavailable"
-msgstr "niedostępne"
-
-#: ../cli/src/devices.c:245 ../cli/src/network-manager.c:108
-msgid "disconnected"
-msgstr "rozłączono"
-
-#: ../cli/src/devices.c:247
-msgid "connecting (prepare)"
-msgstr "łączenie (przygotowanie)"
-
-#: ../cli/src/devices.c:249
-msgid "connecting (configuring)"
-msgstr "łączenie (konfigurowanie)"
-
-#: ../cli/src/devices.c:251
-msgid "connecting (need authentication)"
-msgstr "łączenie (wymaga uwierzytelnienia)"
-
-#: ../cli/src/devices.c:253
-msgid "connecting (getting IP configuration)"
-msgstr "łączenie (pobieranie konfiguracji adresu IP)"
-
-#: ../cli/src/devices.c:255
-msgid "connecting (checking IP connectivity)"
-msgstr "łączenie (sprawdzanie łączności IP)"
-
-#: ../cli/src/devices.c:257
-msgid "connecting (starting secondary connections)"
-msgstr "łączenie (uruchamianie drugorzędnych połączeń)"
-
-#: ../cli/src/devices.c:259 ../cli/src/network-manager.c:104
-msgid "connected"
-msgstr "połączono"
-
-#: ../cli/src/devices.c:263
-msgid "connection failed"
-msgstr "połączenie się nie powiodło"
-
-#: ../cli/src/devices.c:274
-msgid "No reason given"
-msgstr "Nie podano przyczyny"
-
-#: ../cli/src/devices.c:277
-msgid "Unknown error"
-msgstr "Nieznany błąd"
-
-#: ../cli/src/devices.c:280
-msgid "Device is now managed"
-msgstr "Urządzenie jest teraz zarządzane"
-
-#: ../cli/src/devices.c:283
-msgid "Device is now unmanaged"
-msgstr "Urządzenie nie jest teraz zarządzane"
-
-#: ../cli/src/devices.c:286
-msgid "The device could not be readied for configuration"
-msgstr "Urządzenie nie może zostać odczytane do konfiguracji"
-
-#: ../cli/src/devices.c:289
-msgid ""
-"IP configuration could not be reserved (no available address, timeout, etc)"
-msgstr ""
-"Konfiguracja IP nie mogła zostać zastrzeżona (brak dostępnego adresu, czasu "
-"oczekiwania itp.)"
-
-#: ../cli/src/devices.c:292
-msgid "The IP configuration is no longer valid"
-msgstr "Konfiguracja IP nie jest już prawidłowa"
-
-#: ../cli/src/devices.c:295
-msgid "Secrets were required, but not provided"
-msgstr "Hasła są wymagane, ale nie zostały podane"
-
-#: ../cli/src/devices.c:298
-msgid "802.1X supplicant disconnected"
-msgstr "Suplikant 802.1X został rozłączony"
-
-#: ../cli/src/devices.c:301
-msgid "802.1X supplicant configuration failed"
-msgstr "Konfiguracja suplikanta 802.1X się nie powiodła"
-
-#: ../cli/src/devices.c:304
-msgid "802.1X supplicant failed"
-msgstr "Suplikant 802.1X się nie powiódł"
-
-#: ../cli/src/devices.c:307
-msgid "802.1X supplicant took too long to authenticate"
-msgstr "Suplikant 802.1X za długo się uwierzytelniał"
-
-#: ../cli/src/devices.c:310
-msgid "PPP service failed to start"
-msgstr "uruchomienie usługi PPP się nie powiodło"
-
-#: ../cli/src/devices.c:313
-msgid "PPP service disconnected"
-msgstr "Rozłączono z usługą PPP"
-
 #: ../cli/src/devices.c:316
-msgid "PPP failed"
-msgstr "Usługa PPP się nie powiodła"
-
-#: ../cli/src/devices.c:319
-msgid "DHCP client failed to start"
-msgstr "uruchomienie klienta DHCP się nie powiodło"
-
-#: ../cli/src/devices.c:322
-msgid "DHCP client error"
-msgstr "Błąd klienta DHCP"
-
-#: ../cli/src/devices.c:325
-msgid "DHCP client failed"
-msgstr "Klient DHCP się nie powiódł"
-
-#: ../cli/src/devices.c:328
-msgid "Shared connection service failed to start"
-msgstr "Uruchomienie usługi współdzielenia połączenia się nie powiodło"
-
-#: ../cli/src/devices.c:331
-msgid "Shared connection service failed"
-msgstr "Usługa współdzielenia połączenia się nie powiodła"
-
-#: ../cli/src/devices.c:334
-msgid "AutoIP service failed to start"
-msgstr "Uruchomienie usługi AutoIP się nie powiodło"
-
-#: ../cli/src/devices.c:337
-msgid "AutoIP service error"
-msgstr "Błąd usługi AutoIP"
-
-#: ../cli/src/devices.c:340
-msgid "AutoIP service failed"
-msgstr "Usługa AutoIP się nie powiodła"
-
-#: ../cli/src/devices.c:343
-msgid "The line is busy"
-msgstr "Linia jest zajęta"
-
-#: ../cli/src/devices.c:346
-msgid "No dial tone"
-msgstr "Brak sygnału telefonicznego"
-
-#: ../cli/src/devices.c:349
-msgid "No carrier could be established"
-msgstr "Nie można ustanowić operatora"
-
-#: ../cli/src/devices.c:352
-msgid "The dialing request timed out"
-msgstr "Żądanie zadzwonienia przekroczyło czas oczekiwania"
-
-#: ../cli/src/devices.c:355
-msgid "The dialing attempt failed"
-msgstr "Próba zadzwonienia się nie powiodła"
-
-#: ../cli/src/devices.c:358
-msgid "Modem initialization failed"
-msgstr "Zainicjowanie modemu się nie powiodło"
-
-#: ../cli/src/devices.c:361
-msgid "Failed to select the specified APN"
-msgstr "Wybranie podanego APN się nie powiodło"
-
-#: ../cli/src/devices.c:364
-msgid "Not searching for networks"
-msgstr "Sieci nie są wyszukiwane"
-
-#: ../cli/src/devices.c:367
-msgid "Network registration denied"
-msgstr "Odmówiono rejestracji sieci"
-
-#: ../cli/src/devices.c:370
-msgid "Network registration timed out"
-msgstr "Przekroczono czas oczekiwania rejestracji sieci"
-
-#: ../cli/src/devices.c:373
-msgid "Failed to register with the requested network"
-msgstr "Zarejestrowanie w żądanej sieci się nie powiodło"
-
-#: ../cli/src/devices.c:376
-msgid "PIN check failed"
-msgstr "Sprawdzenie kodu PIN się nie powiodło"
-
-#: ../cli/src/devices.c:379
-msgid "Necessary firmware for the device may be missing"
-msgstr "Brak wymaganego oprogramowania sprzętowego dla urządzenia"
-
-#: ../cli/src/devices.c:382
-msgid "The device was removed"
-msgstr "Urządzenie zostało usunięte"
-
-#: ../cli/src/devices.c:385
-msgid "NetworkManager went to sleep"
-msgstr "Usługa NetworkManager została uśpiona"
-
-#: ../cli/src/devices.c:388
-msgid "The device's active connection disappeared"
-msgstr "Aktywne połączenie urządzenia zniknęło"
-
-#: ../cli/src/devices.c:391
-msgid "Device disconnected by user or client"
-msgstr "Urządzenie zostało rozłączone przez użytkownika lub klienta"
-
-#: ../cli/src/devices.c:394
-msgid "Carrier/link changed"
-msgstr "Zmieniono operatora/łącze"
-
-#: ../cli/src/devices.c:397
-msgid "The device's existing connection was assumed"
-msgstr "Przyjęto istniejące połączenie urządzenia"
-
-#: ../cli/src/devices.c:400
-msgid "The supplicant is now available"
-msgstr "Suplikant jest teraz dostępny"
-
-#: ../cli/src/devices.c:403
-msgid "The modem could not be found"
-msgstr "Nie można odnaleźć modemu"
-
-#: ../cli/src/devices.c:406
-msgid "The Bluetooth connection failed or timed out"
-msgstr ""
-"Połączenie Bluetooth się nie powiodło lub przekroczyło czas oczekiwania"
-
-#: ../cli/src/devices.c:409
-msgid "GSM Modem's SIM card not inserted"
-msgstr "Karta SIM modemu GSM nie została włożona"
-
-#: ../cli/src/devices.c:412
-msgid "GSM Modem's SIM PIN required"
-msgstr "Wymagany jest kod PIN karty SIM modemu GSM"
-
-#: ../cli/src/devices.c:415
-msgid "GSM Modem's SIM PUK required"
-msgstr "Wymagany jest kod PUK karty SIM modemu GSM"
-
-#: ../cli/src/devices.c:418
-msgid "GSM Modem's SIM wrong"
-msgstr "Karta SIM modemu GSM jest błędna"
-
-#: ../cli/src/devices.c:421
-msgid "InfiniBand device does not support connected mode"
-msgstr "Urządzenie InfiniBand nie obsługuje trybu połączonego"
-
-#: ../cli/src/devices.c:423 ../cli/src/devices.c:446 ../cli/src/devices.c:458
-#: ../cli/src/devices.c:578 ../cli/src/devices.c:622
-msgid "Unknown"
-msgstr "Nieznane"
-
-#: ../cli/src/devices.c:491
 msgid "(none)"
 msgstr "(brak)"
 
-#: ../cli/src/devices.c:547
+#: ../cli/src/devices.c:372
 #, c-format
 msgid "%u MHz"
 msgstr "%u MHz"
 
-#: ../cli/src/devices.c:548
+#: ../cli/src/devices.c:373
 #, c-format
 msgid "%u MB/s"
 msgstr "%u MB/s"
 
-#: ../cli/src/devices.c:557
+#: ../cli/src/devices.c:382
 msgid "Encrypted: "
 msgstr "Zaszyfrowane: "
 
-#: ../cli/src/devices.c:562
+#: ../cli/src/devices.c:387
 msgid "WEP "
 msgstr "WEP "
 
-#: ../cli/src/devices.c:564
+#: ../cli/src/devices.c:389
 msgid "WPA "
 msgstr "WPA "
 
-#: ../cli/src/devices.c:566
+#: ../cli/src/devices.c:391
 msgid "WPA2 "
 msgstr "WPA2 "
 
-#: ../cli/src/devices.c:569
+#: ../cli/src/devices.c:394
 msgid "Enterprise "
 msgstr "Enterprise "
 
-#: ../cli/src/devices.c:578
+#: ../cli/src/devices.c:403
 msgid "Ad-Hoc"
 msgstr "Ad-hoc"
 
-#: ../cli/src/devices.c:578
+#: ../cli/src/devices.c:403
 msgid "Infrastructure"
 msgstr "Infrastruktura"
 
-#: ../cli/src/devices.c:613
+#: ../cli/src/devices.c:438
 msgid "Home"
 msgstr "Dom"
 
-#: ../cli/src/devices.c:616
+#: ../cli/src/devices.c:441
 msgid "Partner"
 msgstr "Partner"
 
-#: ../cli/src/devices.c:619
+#: ../cli/src/devices.c:444
 msgid "Roaming"
 msgstr "Roaming"
 
-#: ../cli/src/devices.c:691
+#: ../cli/src/devices.c:516
 #, c-format
 msgid "Error: 'dev list': %s"
 msgstr "Błąd: \"dev list\": %s"
 
-#: ../cli/src/devices.c:693
+#: ../cli/src/devices.c:518
 #, c-format
 msgid "Error: 'dev list': %s; allowed fields: %s"
 msgstr "Błąd: \"dev list\": %s; dozwolone pola: %s"
 
-#: ../cli/src/devices.c:702
+#: ../cli/src/devices.c:527
 msgid "Device details"
 msgstr "Informacje o urządzeniu"
 
-#: ../cli/src/devices.c:744 ../cli/src/devices.c:745 ../cli/src/devices.c:1152
-#: ../cli/src/utils.c:445
+#: ../cli/src/devices.c:572 ../cli/src/devices.c:573 ../cli/src/devices.c:990
+#: ../cli/src/utils.c:477
 msgid "(unknown)"
 msgstr "(nieznane)"
 
-#: ../cli/src/devices.c:753
+#: ../cli/src/devices.c:581
 msgid "not connected"
 msgstr "niepołączono"
 
-#: ../cli/src/devices.c:780
+#: ../cli/src/devices.c:608
 #, c-format
 msgid "%u Mb/s"
 msgstr "%u Mb/s"
 
 #. Print header
 #. "WIRED-PROPERTIES"
-#: ../cli/src/devices.c:853
+#: ../cli/src/devices.c:681
 msgid "on"
 msgstr "włączone"
 
-#: ../cli/src/devices.c:853
+#: ../cli/src/devices.c:681
 msgid "off"
 msgstr "wyłączone"
 
-#: ../cli/src/devices.c:1004
+#: ../cli/src/devices.c:832
 #, c-format
 msgid "Error: 'dev status': %s"
 msgstr "Błąd: \"dev status\": %s"
 
-#: ../cli/src/devices.c:1006
+#: ../cli/src/devices.c:834
 #, c-format
 msgid "Error: 'dev status': %s; allowed fields: %s"
 msgstr "Błąd: \"dev status\": %s; dozwolone pola: %s"
 
-#: ../cli/src/devices.c:1029
+#: ../cli/src/devices.c:857
 msgid "Status of devices"
 msgstr "Stan urządzenia"
 
-#: ../cli/src/devices.c:1060
+#: ../cli/src/devices.c:888
 #, c-format
 msgid "Error: '%s' argument is missing."
 msgstr "Błąd: brak parametru \"%s\"."
 
-#: ../cli/src/devices.c:1101 ../cli/src/devices.c:1253
-#: ../cli/src/devices.c:1390 ../cli/src/devices.c:1609
+#: ../cli/src/devices.c:929 ../cli/src/devices.c:1094
+#: ../cli/src/devices.c:1235 ../cli/src/devices.c:1882
 #, c-format
 msgid "Error: Device '%s' not found."
 msgstr "Błąd: nie odnaleziono urządzenia \"%s\"."
 
-#: ../cli/src/devices.c:1124
+#: ../cli/src/devices.c:952
 #, c-format
 msgid "Success: Device '%s' successfully disconnected."
 msgstr "Powodzenie: urządzenie \"%s\" zostało rozłączone."
 
-#: ../cli/src/devices.c:1149
+#: ../cli/src/devices.c:987
 #, c-format
 msgid "Error: Device '%s' (%s) disconnecting failed: %s"
 msgstr "Błąd: rozłączenie urządzenia \"%s\" (%s) się nie powiodło: %s"
 
-#: ../cli/src/devices.c:1157
+#: ../cli/src/devices.c:1000
 #, c-format
-msgid "Device state: %d (%s)\n"
-msgstr "Stan urządzenia: %d (%s)\n"
+msgid "Device '%s' has been disconnected.\n"
+msgstr "Urządzenie \"%s\" zostało rozłączone.\n"
 
-#: ../cli/src/devices.c:1222
+#: ../cli/src/devices.c:1063
 #, c-format
 msgid "Error: iface has to be specified."
 msgstr "Błąd: należy podać interfejs."
 
-#: ../cli/src/devices.c:1348
+#: ../cli/src/devices.c:1193
 #, c-format
 msgid "Error: 'dev wifi': %s"
 msgstr "Błąd: \"dev wifi\": %s"
 
-#: ../cli/src/devices.c:1350
+#: ../cli/src/devices.c:1195
 #, c-format
 msgid "Error: 'dev wifi': %s; allowed fields: %s"
 msgstr "Błąd: \"dev wifi\": %s; dozwolone pola: %s"
 
-#: ../cli/src/devices.c:1373
+#: ../cli/src/devices.c:1218
 msgid "WiFi scan list"
 msgstr "Lista skanowania sieci WiFi"
 
-#: ../cli/src/devices.c:1410 ../cli/src/devices.c:1464
+#: ../cli/src/devices.c:1255 ../cli/src/devices.c:1309
 #, c-format
 msgid "Error: Access point with bssid '%s' not found."
 msgstr "Błąd: nie odnaleziono punktu dostępowego z BSSID \"%s\"."
 
-#: ../cli/src/devices.c:1427
+#: ../cli/src/devices.c:1272
 #, c-format
 msgid "Error: Device '%s' is not a WiFi device."
 msgstr "Błąd: urządzenie \"%s\" nie jest urządzeniem WiFi."
 
-#: ../cli/src/devices.c:1491
+#: ../cli/src/devices.c:1340 ../cli/src/devices.c:1386
+#, c-format
+msgid "Connection with UUID '%s' created and activated on device '%s'\n"
+msgstr "Utworzono i aktywowano połączenie o UUID \"%s\" na urządzeniu \"%s\"\n"
+
+#: ../cli/src/devices.c:1345
+#, c-format
+msgid "Error: Connection activation failed: (%d) %s."
+msgstr "Błąd: aktywacja połączenia się nie powiodła: (%d) %s."
+
+#: ../cli/src/devices.c:1370
+#, c-format
+msgid "Error: Failed to add/activate new connection: (%d) %s"
+msgstr "Błąd: dodanie/aktywacja nowego połączenia się nie powiodła: (%d) %s"
+
+#: ../cli/src/devices.c:1378
+#, c-format
+msgid "Error: Failed to add/activate new connection: Unknown error"
+msgstr ""
+"Błąd: dodanie/aktywacja nowego połączenia się nie powiodła: nieznany błąd"
+
+#: ../cli/src/devices.c:1522
+#, c-format
+msgid "Error: SSID or BSSID are missing."
+msgstr "Błąd: brak SSID lub BSSID."
+
+#: ../cli/src/devices.c:1545
+#, c-format
+msgid "Error: bssid argument value '%s' is not a valid BSSID."
+msgstr "Błąd: wartość parametru BSSID \"%s\" nie jest prawidłowym BSSID."
+
+#: ../cli/src/devices.c:1569
+#, c-format
+msgid ""
+"Error: wep-key-type argument value '%s' is invalid, use 'key' or 'phrase'."
+msgstr ""
+"Błąd: wartość \"%s\" parametru wep-key-type jest nieprawidłowa, należy użyć "
+"\"key\" lub \"phrase\"."
+
+#: ../cli/src/devices.c:1609
+#, c-format
+msgid "Error: BSSID to connect to (%s) differs from bssid argument (%s)."
+msgstr "Błąd: BSSID do połączenia (%s) różni się od parametru BSSID (%s)."
+
+#: ../cli/src/devices.c:1615
+#, c-format
+msgid "Error: Parameter '%s' is neither SSID nor BSSID."
+msgstr "Błąd: parametr \"%s\" nie wynosi SSID ani BSSID."
+
+#: ../cli/src/devices.c:1644
+#, c-format
+msgid "Error: Device '%s' is not a Wi-Fi device."
+msgstr "Błąd: urządzenie \"%s\" nie jest urządzeniem WiFi."
+
+#: ../cli/src/devices.c:1646
+#, c-format
+msgid "Error: No Wi-Fi device found."
+msgstr "Błąd: nie odnaleziono urządzenia WiFi."
+
+#: ../cli/src/devices.c:1664
+#, c-format
+msgid "Error: No network with SSID '%s' found."
+msgstr "Błąd: nie odnaleziono sieci z SSID \"%s\"."
+
+#: ../cli/src/devices.c:1666
+#, c-format
+msgid "Error: No access point with BSSID '%s' found."
+msgstr "Błąd: nie odnaleziono punktu dostępowego z BSSID \"%s\"."
+
+#: ../cli/src/devices.c:1764
 #, c-format
 msgid "Error: 'dev wifi' command '%s' is not valid."
 msgstr "Błąd: polecenie \"dev wifi\" \"%s\" jest nieprawidłowe."
 
-#: ../cli/src/devices.c:1567
+#: ../cli/src/devices.c:1840
 #, c-format
 msgid "Error: 'dev wimax': %s"
 msgstr "Błąd: \"dev wimax\": %s"
 
-#: ../cli/src/devices.c:1569
+#: ../cli/src/devices.c:1842
 #, c-format
 msgid "Error: 'dev wimax': %s; allowed fields: %s"
 msgstr "Błąd: \"dev wimax\": %s; dozwolone pola: %s"
 
-#: ../cli/src/devices.c:1592
+#: ../cli/src/devices.c:1865
 msgid "WiMAX NSP list"
 msgstr "Lista NSP sieci WiMAX"
 
-#: ../cli/src/devices.c:1629
+#: ../cli/src/devices.c:1902
 #, c-format
 msgid "Error: NSP with name '%s' not found."
 msgstr "Błąd: nie odnaleziono NSP o nazwie \"%s\"."
 
-#: ../cli/src/devices.c:1640
+#: ../cli/src/devices.c:1913
 #, c-format
 msgid "Error: Device '%s' is not a WiMAX device."
 msgstr "Błąd: urządzenie \"%s\" nie jest urządzeniem WiMAX."
 
-#: ../cli/src/devices.c:1671
+#: ../cli/src/devices.c:1944
 #, c-format
 msgid "Error: Access point with nsp '%s' not found."
 msgstr "Błąd: nie odnaleziono punktu dostępowego z NSP \"%s\"."
 
-#: ../cli/src/devices.c:1698
+#: ../cli/src/devices.c:1971
 #, c-format
 msgid "Error: 'dev wimax' command '%s' is not valid."
 msgstr "Błąd: polecenie \"dev wimax\" \"%s\" jest nieprawidłowe."
 
-#: ../cli/src/devices.c:1748
+#: ../cli/src/devices.c:2021
 #, c-format
 msgid "Error: 'dev' command '%s' is not valid."
 msgstr "Błąd: polecenie \"dev\" \"%s\" jest nieprawidłowe."
@@ -1355,16 +1429,27 @@ msgstr "SPRZĘT-WIMAX"
 msgid "WIMAX"
 msgstr "WIMAX"
 
-#: ../cli/src/network-manager.c:67
+#: ../cli/src/network-manager.c:62
+msgid "PERMISSION"
+msgstr "UPRAWNIENIE"
+
+#. 0
+#: ../cli/src/network-manager.c:63
+msgid "VALUE"
+msgstr "WARTOŚĆ"
+
+#: ../cli/src/network-manager.c:77
 #, c-format
 msgid ""
 "Usage: nmcli nm { COMMAND | help }\n"
 "\n"
-"  COMMAND := { status | enable | sleep | wifi | wwan | wimax }\n"
+"  COMMAND := { status | permissions | enable | sleep | wifi | wwan | "
+"wimax }\n"
 "\n"
-"  COMMAND := { status | enable | sleep | wifi | wwan }\n"
+"  COMMAND := { status | permissions | enable | sleep | wifi | wwan }\n"
 "\n"
 "  status\n"
+"  permissions\n"
 "  enable [true|false]\n"
 "  sleep [true|false]\n"
 "  wifi [on|off]\n"
@@ -1374,153 +1459,173 @@ msgid ""
 msgstr ""
 "Użycie: nmcli nm { POLECENIE | help }\n"
 "\n"
-"  POLECENIE := { status | enable | sleep | wifi | wwan | wimax }\n"
+"  POLECENIE := { status | permissions | enable | sleep | wifi | wwan | "
+"wimax }\n"
 "\n"
-"  POLECENIE := { status | enable | sleep | wifi | wwan }\n"
+"  POLECENIE := { status | permissions | enable | sleep | wifi | wwan }\n"
 "\n"
 "  status\n"
+"  permissions\n"
 "  enable [true|false]\n"
 "  sleep [true|false]\n"
 "  wifi [on|off]\n"
 "  wwan [on|off]\n"
 "  wimax [on|off]\n"
 
-#: ../cli/src/network-manager.c:96
+#: ../cli/src/network-manager.c:108
 msgid "asleep"
 msgstr "wstrzymane"
 
-#: ../cli/src/network-manager.c:98
+#: ../cli/src/network-manager.c:110
 msgid "connecting"
 msgstr "łączenie"
 
-#: ../cli/src/network-manager.c:100
+#: ../cli/src/network-manager.c:112
 msgid "connected (local only)"
 msgstr "połączono (tylko lokalnie)"
 
-#: ../cli/src/network-manager.c:102
+#: ../cli/src/network-manager.c:114
 msgid "connected (site only)"
 msgstr "połączono (tylko witryny)"
 
-#: ../cli/src/network-manager.c:106
+#: ../cli/src/network-manager.c:118
 msgid "disconnecting"
 msgstr "rozłączanie"
 
-#: ../cli/src/network-manager.c:146
+#: ../cli/src/network-manager.c:158
 #, c-format
 msgid "Error: 'nm status': %s"
 msgstr "Błąd: \"nm status\": %s"
 
-#: ../cli/src/network-manager.c:148
+#: ../cli/src/network-manager.c:160
 #, c-format
 msgid "Error: 'nm status': %s; allowed fields: %s"
 msgstr "Błąd: \"nm status\": %s; dozwolone pola: %s"
 
 #. create NMClient
-#: ../cli/src/network-manager.c:161 ../cli/src/network-manager.c:162
-#: ../cli/src/network-manager.c:163 ../cli/src/network-manager.c:164
-#: ../cli/src/network-manager.c:165 ../cli/src/network-manager.c:167
-#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:289
-#: ../cli/src/network-manager.c:344 ../cli/src/network-manager.c:382
-#: ../cli/src/network-manager.c:421
+#: ../cli/src/network-manager.c:173 ../cli/src/network-manager.c:174
+#: ../cli/src/network-manager.c:175 ../cli/src/network-manager.c:176
+#: ../cli/src/network-manager.c:177 ../cli/src/network-manager.c:179
+#: ../cli/src/network-manager.c:180 ../cli/src/network-manager.c:429
+#: ../cli/src/network-manager.c:484 ../cli/src/network-manager.c:522
+#: ../cli/src/network-manager.c:561
 msgid "enabled"
 msgstr "włączone"
 
-#: ../cli/src/network-manager.c:161 ../cli/src/network-manager.c:162
-#: ../cli/src/network-manager.c:163 ../cli/src/network-manager.c:164
-#: ../cli/src/network-manager.c:165 ../cli/src/network-manager.c:167
-#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:289
-#: ../cli/src/network-manager.c:344 ../cli/src/network-manager.c:382
-#: ../cli/src/network-manager.c:421
+#: ../cli/src/network-manager.c:173 ../cli/src/network-manager.c:174
+#: ../cli/src/network-manager.c:175 ../cli/src/network-manager.c:176
+#: ../cli/src/network-manager.c:177 ../cli/src/network-manager.c:179
+#: ../cli/src/network-manager.c:180 ../cli/src/network-manager.c:429
+#: ../cli/src/network-manager.c:484 ../cli/src/network-manager.c:522
+#: ../cli/src/network-manager.c:561
 msgid "disabled"
 msgstr "wyłączone"
 
-#: ../cli/src/network-manager.c:181
+#: ../cli/src/network-manager.c:193
 msgid "NetworkManager status"
 msgstr "Stan usługi NetworkManager"
 
 #. Print header
-#: ../cli/src/network-manager.c:184
+#: ../cli/src/network-manager.c:196
 msgid "running"
 msgstr "uruchamiany"
 
-#: ../cli/src/network-manager.c:184
+#: ../cli/src/network-manager.c:196
 msgid "not running"
 msgstr "nieuruchomiony"
 
-#: ../cli/src/network-manager.c:215 ../cli/src/utils.c:425
+#: ../cli/src/network-manager.c:271
+msgid "auth"
+msgstr "uwierzytelnianie"
+
+#: ../cli/src/network-manager.c:301
+#, c-format
+msgid "Error: 'nm permissions': %s"
+msgstr "Błąd: \"nm permissions\": %s"
+
+#: ../cli/src/network-manager.c:303
+#, c-format
+msgid "Error: 'nm permissions': %s; allowed fields: %s"
+msgstr "Błąd: \"nm permissions\": %s; dozwolone pola: %s"
+
+#: ../cli/src/network-manager.c:324
+msgid "NetworkManager permissions"
+msgstr "Uprawnienia usługi NetworkManager"
+
+#: ../cli/src/network-manager.c:350 ../cli/src/utils.c:457
 #, c-format
 msgid "Error: Couldn't connect to system bus: %s"
 msgstr "Błąd: nie można połączyć się z magistralą systemową: %s"
 
-#: ../cli/src/network-manager.c:226
+#: ../cli/src/network-manager.c:361
 #, c-format
 msgid "Error: Couldn't create D-Bus object proxy."
 msgstr "Błąd: nie można utworzyć pośrednika obiektu usługi D-Bus."
 
-#: ../cli/src/network-manager.c:232
+#: ../cli/src/network-manager.c:367
 #, c-format
 msgid "Error in sleep: %s"
 msgstr "Błąd w poleceniu sleep: %s"
 
-#: ../cli/src/network-manager.c:276 ../cli/src/network-manager.c:331
-#: ../cli/src/network-manager.c:369 ../cli/src/network-manager.c:408
+#: ../cli/src/network-manager.c:416 ../cli/src/network-manager.c:471
+#: ../cli/src/network-manager.c:509 ../cli/src/network-manager.c:548
 #, c-format
 msgid "Error: '--fields' value '%s' is not valid here; allowed fields: %s"
 msgstr ""
 "Błąd: wartość \"%s\" opcji \"--fields\" jest nieprawidłowa; dozwolone pola: "
 "%s."
 
-#: ../cli/src/network-manager.c:284
+#: ../cli/src/network-manager.c:424
 msgid "Networking enabled"
 msgstr "Sieć jest włączona"
 
-#: ../cli/src/network-manager.c:300
+#: ../cli/src/network-manager.c:440
 #, c-format
 msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'."
 msgstr ""
 "Błąd: nieprawidłowy parametr \"enable\": \"%s\"; należy użyć \"true\" lub "
 "\"false\"."
 
-#: ../cli/src/network-manager.c:310
+#: ../cli/src/network-manager.c:450
 #, c-format
 msgid "Error: Sleeping status is not exported by NetworkManager."
 msgstr "Błąd: stan snu nie jest eksportowany przez usługę NetworkManager."
 
-#: ../cli/src/network-manager.c:318
+#: ../cli/src/network-manager.c:458
 #, c-format
 msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'."
 msgstr ""
 "Błąd: nieprawidłowy parametr \"sleep\": \"%s\"; należy użyć \"true\" lub "
 "\"false\"."
 
-#: ../cli/src/network-manager.c:339
+#: ../cli/src/network-manager.c:479
 msgid "WiFi enabled"
 msgstr "WiFi jest włączone"
 
-#: ../cli/src/network-manager.c:355
+#: ../cli/src/network-manager.c:495
 #, c-format
 msgid "Error: invalid 'wifi' parameter: '%s'."
 msgstr "Błąd: nieprawidłowy parametr \"wifi\": \"%s\"."
 
-#: ../cli/src/network-manager.c:377
+#: ../cli/src/network-manager.c:517
 msgid "WWAN enabled"
 msgstr "WWAN jest włączone"
 
-#: ../cli/src/network-manager.c:393
+#: ../cli/src/network-manager.c:533
 #, c-format
 msgid "Error: invalid 'wwan' parameter: '%s'."
 msgstr "Błąd: nieprawidłowy parametr \"wwan\": \"%s\"."
 
-#: ../cli/src/network-manager.c:416
+#: ../cli/src/network-manager.c:556
 msgid "WiMAX enabled"
 msgstr "WiMAX jest włączone"
 
-#: ../cli/src/network-manager.c:432
+#: ../cli/src/network-manager.c:572
 #, c-format
 msgid "Error: invalid 'wimax' parameter: '%s'."
 msgstr "Błąd: nieprawidłowy parametr \"wimax\": \"%s\"."
 
-#: ../cli/src/network-manager.c:445
+#: ../cli/src/network-manager.c:585
 #, c-format
 msgid "Error: 'nm' command '%s' is not valid."
 msgstr "Błąd: parametr \"nm\" \"%s\" jest nieprawidłowy."
@@ -1635,88 +1740,104 @@ msgstr "Błąd: nie można utworzyć obiektu NMClient."
 msgid "Success"
 msgstr "Powodzenie"
 
-#: ../cli/src/settings.c:465
+#: ../cli/src/settings.c:497
 #, c-format
 msgid "%d (hex-ascii-key)"
 msgstr "%d (klucz-szesnastkowy-ascii))"
 
-#: ../cli/src/settings.c:467
+#: ../cli/src/settings.c:499
 #, c-format
 msgid "%d (104/128-bit passphrase)"
 msgstr "%d (104/128-bitowe hasło)"
 
-#: ../cli/src/settings.c:470
+#: ../cli/src/settings.c:502
 #, c-format
 msgid "%d (unknown)"
 msgstr "%d (nieznane)"
 
-#: ../cli/src/settings.c:496
+#: ../cli/src/settings.c:528
 msgid "0 (unknown)"
 msgstr "0 (nieznane)"
 
-#: ../cli/src/settings.c:502
+#: ../cli/src/settings.c:534
 msgid "any, "
 msgstr "dowolne, "
 
-#: ../cli/src/settings.c:504
+#: ../cli/src/settings.c:536
 msgid "900 MHz, "
 msgstr "900 MHz, "
 
-#: ../cli/src/settings.c:506
+#: ../cli/src/settings.c:538
 msgid "1800 MHz, "
 msgstr "1800 MHz, "
 
-#: ../cli/src/settings.c:508
+#: ../cli/src/settings.c:540
 msgid "1900 MHz, "
 msgstr "1900 MHz, "
 
-#: ../cli/src/settings.c:510
+#: ../cli/src/settings.c:542
 msgid "850 MHz, "
 msgstr "850 MHz, "
 
-#: ../cli/src/settings.c:512
+#: ../cli/src/settings.c:544
 msgid "WCDMA 3GPP UMTS 2100 MHz, "
 msgstr "WCDMA 3GPP UMTS 2100 MHz, "
 
-#: ../cli/src/settings.c:514
+#: ../cli/src/settings.c:546
 msgid "WCDMA 3GPP UMTS 1800 MHz, "
 msgstr "WCDMA 3GPP UMTS 1800 MHz, "
 
-#: ../cli/src/settings.c:516
+#: ../cli/src/settings.c:548
 msgid "WCDMA 3GPP UMTS 1700/2100 MHz, "
 msgstr "WCDMA 3GPP UMTS 1700/2100 MHz, "
 
-#: ../cli/src/settings.c:518
+#: ../cli/src/settings.c:550
 msgid "WCDMA 3GPP UMTS 800 MHz, "
 msgstr "WCDMA 3GPP UMTS 800 MHz, "
 
-#: ../cli/src/settings.c:520
+#: ../cli/src/settings.c:552
 msgid "WCDMA 3GPP UMTS 850 MHz, "
 msgstr "WCDMA 3GPP UMTS 850 MHz, "
 
-#: ../cli/src/settings.c:522
+#: ../cli/src/settings.c:554
 msgid "WCDMA 3GPP UMTS 900 MHz, "
 msgstr "WCDMA 3GPP UMTS 900 MHz, "
 
-#: ../cli/src/settings.c:524
+#: ../cli/src/settings.c:556
 msgid "WCDMA 3GPP UMTS 1700 MHz, "
 msgstr "WCDMA 3GPP UMTS 1700 MHz, "
 
-#: ../cli/src/settings.c:526
+#: ../cli/src/settings.c:558
 msgid "WCDMA 3GPP UMTS 1900 MHz, "
 msgstr "WCDMA 3GPP UMTS 1900 MHz, "
 
-#: ../cli/src/settings.c:528
+#: ../cli/src/settings.c:560
 msgid "WCDMA 3GPP UMTS 2600 MHz, "
 msgstr "WCDMA 3GPP UMTS 2600 MHz, "
 
-#: ../cli/src/settings.c:650 ../cli/src/settings.c:846
-#: ../cli/src/settings.c:1550
+#: ../cli/src/settings.c:578
+msgid "0 (NONE)"
+msgstr "0 (BRAK)"
+
+#: ../cli/src/settings.c:584
+msgid "REORDER_HEADERS, "
+msgstr "ZMIANA_KOLEJNOŚCI_NAGŁÓWKÓW, "
+
+#: ../cli/src/settings.c:586
+msgid "GVRP, "
+msgstr "GVRP, "
+
+#: ../cli/src/settings.c:588
+msgid "LOOSE_BINDING, "
+msgstr "LUŹNE_DOWIĄZANIE, "
+
+#: ../cli/src/settings.c:731 ../cli/src/settings.c:927
+#: ../cli/src/settings.c:1631
 msgid "auto"
 msgstr "automatyczne"
 
-#: ../cli/src/settings.c:840 ../cli/src/settings.c:843
-#: ../cli/src/settings.c:844 ../cli/src/utils.c:247
+#: ../cli/src/settings.c:921 ../cli/src/settings.c:924
+#: ../cli/src/settings.c:925 ../cli/src/utils.c:279
 msgid "not set"
 msgstr "nieustawione"
 
@@ -1730,40 +1851,40 @@ msgstr "Błąd podczas konwertowania adresu IPv4 \"0x%X\" na formę tekstową"
 msgid "Error converting IP6 address '%s' to text form"
 msgstr "Błąd podczas konwertowania adresu IPv6 \"%s\" na formę tekstową"
 
-#: ../cli/src/utils.c:200
+#: ../cli/src/utils.c:232
 #, c-format
 msgid "field '%s' has to be alone"
 msgstr "pole \"%s\" musi być same"
 
-#: ../cli/src/utils.c:203
+#: ../cli/src/utils.c:235
 #, c-format
 msgid "invalid field '%s'"
 msgstr "nieprawidłowe pole \"%s\""
 
-#: ../cli/src/utils.c:222
+#: ../cli/src/utils.c:254
 #, c-format
 msgid "Option '--terse' requires specifying '--fields'"
 msgstr "Opcja \"--terse\" wymaga podania opcji \"--fields\""
 
-#: ../cli/src/utils.c:226
+#: ../cli/src/utils.c:258
 #, c-format
 msgid "Option '--terse' requires specific '--fields' option values , not '%s'"
 msgstr ""
 "Opcja \"--terse\" wymaga konkretnej wartości opcji \"--fields\", nie \"%s\""
 
-#: ../cli/src/utils.c:436
+#: ../cli/src/utils.c:468
 #, c-format
 msgid "Error: Couldn't create D-Bus object proxy for org.freedesktop.DBus"
 msgstr ""
 "Błąd: nie można utworzyć pośrednika obiektu usługi D-Bus dla org.freedesktop."
 "DBus"
 
-#: ../cli/src/utils.c:444
+#: ../cli/src/utils.c:476
 #, c-format
 msgid "Error: NameHasOwner request failed: %s"
 msgstr "Błąd: żądanie NameHasOwner się nie powiodło: %s"
 
-#: ../cli/src/utils.c:489
+#: ../cli/src/utils.c:521
 #, c-format
 msgid ""
 "Warning: nmcli (%s) and NetworkManager (%s) versions don't match. Use --"
@@ -1772,7 +1893,7 @@ msgstr ""
 "Ostrzeżenie: wersje programu nmcli (%s) i usługi NetworkManager (%s) się nie "
 "zgadzają. Użycie opcji --nocheck ukrywa ostrzeżenie.\n"
 
-#: ../cli/src/utils.c:498
+#: ../cli/src/utils.c:530
 #, c-format
 msgid ""
 "Error: nmcli (%s) and NetworkManager (%s) versions don't match. Force "
@@ -2137,28 +2258,28 @@ msgstr "Nie można zweryfikować pliku PKCS#12: %d"
 msgid "Could not generate random data."
 msgstr "Nie można utworzyć losowych danych."
 
-#: ../libnm-util/nm-utils.c:2034
+#: ../libnm-util/nm-utils.c:2040
 #, c-format
 msgid "Not enough memory to make encryption key."
 msgstr "Brak wystarczającej ilości pamięci, aby utworzyć klucz szyfrowania."
 
-#: ../libnm-util/nm-utils.c:2144
+#: ../libnm-util/nm-utils.c:2150
 msgid "Could not allocate memory for PEM file creation."
 msgstr "Nie można przydzielić pamięci do utworzenia pliku PEM."
 
-#: ../libnm-util/nm-utils.c:2156
+#: ../libnm-util/nm-utils.c:2162
 #, c-format
 msgid "Could not allocate memory for writing IV to PEM file."
 msgstr "Nie można przydzielić pamięci do zapisywania IV do pliku PEM."
 
-#: ../libnm-util/nm-utils.c:2168
+#: ../libnm-util/nm-utils.c:2174
 #, c-format
 msgid "Could not allocate memory for writing encrypted key to PEM file."
 msgstr ""
 "Nie można przydzielić pamięci do zapisywania zaszyfrowanego klucza do pliku "
 "PEM."
 
-#: ../libnm-util/nm-utils.c:2187
+#: ../libnm-util/nm-utils.c:2193
 #, c-format
 msgid "Could not allocate memory for PEM file data."
 msgstr "Nie można przydzielić pamięci dla danych pliku PEM."
@@ -2269,82 +2390,87 @@ msgid "System policy prevents modification of the persistent system hostname"
 msgstr ""
 "Polityka systemu powstrzymuje modyfikację trwałej systemowej nazwy komputera"
 
-#: ../src/main.c:143
+#: ../src/main.c:156
+#, c-format
+msgid "Failed to set signal mask: %d"
+msgstr "Ustawienie maski sygnału nie powiodło: %d"
+
+#: ../src/main.c:163
 #, c-format
-msgid "Failed to initialize SIGTERM pipe: %d"
-msgstr "Zainicjowanie potoku SIGTERM się nie powiodło: %d"
+msgid "Failed to create signal handling thread: %d"
+msgstr "Utworzenie wątku obsługującego sygnały się nie powiodło: %d"
 
-#: ../src/main.c:174
+#: ../src/main.c:178
 #, c-format
 msgid "Opening %s failed: %s\n"
 msgstr "Otwarcie %s się nie powiodło: %s\n"
 
-#: ../src/main.c:180
+#: ../src/main.c:184
 #, c-format
 msgid "Writing to %s failed: %s\n"
 msgstr "Zapisanie do %s się nie powiodło: %s\n"
 
-#: ../src/main.c:185
+#: ../src/main.c:189
 #, c-format
 msgid "Closing %s failed: %s\n"
 msgstr "Zamknięcie %s się nie powiodło: %s\n"
 
-#: ../src/main.c:228
+#: ../src/main.c:232
 #, c-format
 msgid "NetworkManager is already running (pid %ld)\n"
 msgstr "Usługa NetworkManager jest już uruchomiona (PID %ld)\n"
 
-#: ../src/main.c:365
+#: ../src/main.c:372
 msgid "Print NetworkManager version and exit"
 msgstr "Wyświetla wersję usługi NetworkManager i kończy działanie"
 
-#: ../src/main.c:366
+#: ../src/main.c:373
 msgid "Don't become a daemon"
 msgstr "Bez zmiany w usługę"
 
-#: ../src/main.c:367
+#: ../src/main.c:374
 msgid "Make all warnings fatal"
 msgstr "Wszystkie ostrzeżenia jako krytyczne"
 
-#: ../src/main.c:368
+#: ../src/main.c:375
 msgid "Specify the location of a PID file"
 msgstr "Podaje położenie pliku PID"
 
-#: ../src/main.c:368
+#: ../src/main.c:375
 msgid "filename"
 msgstr "nazwa pliku"
 
-#: ../src/main.c:369
+#: ../src/main.c:376
 msgid "State file location"
 msgstr "Położenie pliku stanu"
 
-#: ../src/main.c:369
+#: ../src/main.c:376
 msgid "/path/to/state.file"
 msgstr "/ścieżka/do/pliku.stanu"
 
-#: ../src/main.c:370
+#: ../src/main.c:377
 msgid "Config file location"
 msgstr "Położenie pliku konfiguracji"
 
-#: ../src/main.c:370
+#: ../src/main.c:377
 msgid "/path/to/config.file"
 msgstr "/ścieżka/do/pliku.konfiguracji"
 
-#: ../src/main.c:371
+#: ../src/main.c:378
 msgid "List of plugins separated by ','"
 msgstr "Lista wtyczek oddzielonych \",\""
 
-#: ../src/main.c:371
+#: ../src/main.c:378
 msgid "plugin1,plugin2"
 msgstr "wtyczka1,wtyczka2"
 
 #. Translators: Do not translate the values in the square brackets
-#: ../src/main.c:373
+#: ../src/main.c:380
 msgid "Log level: one of [ERR, WARN, INFO, DEBUG]"
 msgstr "Poziom dziennika: jeden z [ERR, WARN, INFO, DEBUG]"
 
 #. Translators: Do not translate the values in the square brackets
-#: ../src/main.c:376
+#: ../src/main.c:383
 msgid ""
 "Log domains separated by ',': any combination of\n"
 "                                          [NONE,HW,RFKILL,ETHER,WIFI,BT,MB,"
@@ -2364,12 +2490,12 @@ msgstr ""
 "DEVICE,OLPC,WIMAX,\n"
 "                                           INFINIBAND,FIREWALL]"
 
-#: ../src/main.c:386
+#: ../src/main.c:396
 #, c-format
 msgid "GModules are not supported on your platform!\n"
 msgstr "GModules nie są obsługiwane na tej platformie.\n"
 
-#: ../src/main.c:405
+#: ../src/main.c:419
 msgid ""
 "NetworkManager monitors all network connections and automatically\n"
 "chooses the best connection to use.  It also allows the user to\n"
@@ -2381,33 +2507,33 @@ msgstr ""
 "wybranie bezprzewodowych punktów dostępowych, z którymi karty\n"
 "sieciowe w komputerze powinny być powiązane."
 
-#: ../src/main.c:411
+#: ../src/main.c:425
 #, c-format
 msgid "Invalid option.  Please use --help to see a list of valid options.\n"
 msgstr ""
 "Nieprawidłowa opcja. Parametr --help wyświetli listę prawidłowych opcji.\n"
 
-#: ../src/main.c:421
+#: ../src/main.c:435
 #, c-format
 msgid "You must be root to run NetworkManager!\n"
 msgstr "Tylko root może uruchamiać usługę NetworkManager.\n"
 
-#: ../src/main.c:441
+#: ../src/main.c:456
 #, c-format
 msgid "Failed to read configuration: (%d) %s\n"
 msgstr "Odczytanie konfiguracji się nie powiodło: (%d) %s\n"
 
-#: ../src/main.c:452
+#: ../src/main.c:467
 #, c-format
 msgid "%s.  Please use --help to see a list of valid options.\n"
 msgstr "%s. Parametr --help wyświetli listę prawidłowych opcji.\n"
 
-#: ../src/main.c:459
+#: ../src/main.c:474
 #, c-format
 msgid "State file %s parsing failed: (%d) %s\n"
 msgstr "Przetworzenie pliku stanu %s się nie powiodło: (%d) %s\n"
 
-#: ../src/main.c:476
+#: ../src/main.c:491
 #, c-format
 msgid "Could not daemonize: %s [error %u]\n"
 msgstr "Nie można zmienić w usługę: %s [błąd %u]\n"
@@ -2465,12 +2591,12 @@ msgstr "Nieznana domena dziennika \"%s\""
 msgid "CDMA connection %d"
 msgstr "Połączenie CDMA %d"
 
-#: ../src/modem-manager/nm-modem-gsm.c:512 ../src/nm-device-bt.c:321
+#: ../src/modem-manager/nm-modem-gsm.c:547 ../src/nm-device-bt.c:321
 #, c-format
 msgid "GSM connection %d"
 msgstr "Połączenie GSM %d"
 
-#: ../src/nm-device-bond.c:190
+#: ../src/nm-device-bond.c:191
 #, c-format
 msgid "Bond connection %d"
 msgstr "Połączenie wiązane %d"
@@ -2485,12 +2611,12 @@ msgstr "Połączenie PAN %d"
 msgid "DUN connection %d"
 msgstr "Połączenie DUN %d"
 
-#: ../src/nm-device-ethernet.c:1433
+#: ../src/nm-device-ethernet.c:1326
 #, c-format
 msgid "PPPoE connection %d"
 msgstr "Połączenie PPPoE %d"
 
-#: ../src/nm-device-ethernet.c:1433 ../src/settings/nm-settings-utils.c:50
+#: ../src/nm-device-ethernet.c:1326 ../src/settings/nm-settings-utils.c:50
 #, c-format
 msgid "Wired connection %d"
 msgstr "Połączenie przewodowe %d"
@@ -2505,7 +2631,12 @@ msgstr "Połączenie InfiniBand %d"
 msgid "Mesh %d"
 msgstr "Sieć kratowa %d"
 
-#: ../src/nm-manager.c:627
+#: ../src/nm-device-vlan.c:362
+#, c-format
+msgid "VLAN connection %d"
+msgstr "Połączenie VLAN %d"
+
+#: ../src/nm-manager.c:661
 #, c-format
 msgid "VPN connection %d"
 msgstr "Połączenie VPN %d"
@@ -2556,11 +2687,10 @@ msgstr "nie można dołączyć do grupy netlink: %s"
 msgid "error updating link cache: %s"
 msgstr "błąd podczas aktualizowania pamięci podręcznej połączenia: %s"
 
-#: ../src/settings/plugins/ifcfg-rh/reader.c:92
-#: ../src/settings/plugins/ifnet/connection_parser.c:51
+#: ../src/settings/plugins/ifcfg-rh/reader.c:93
 msgid "System"
 msgstr "Systemowe"
 
-#: ../src/settings/plugins/ifcfg-rh/reader.c:3652
+#: ../src/settings/plugins/ifcfg-rh/reader.c:3634
 msgid "Bond"
 msgstr "Wiązane"
diff --git a/po/sl.po b/po/sl.po
index 3a14c179..fa7d89e3 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -11,9 +11,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: NetworkManager master\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2012-02-22 15:25+0000\n"
-"PO-Revision-Date: 2012-02-22 20:38+0100\n"
-"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
+"POT-Creation-Date: 2012-06-11 15:25+0000\n"
+"PO-Revision-Date: 2012-06-16 23:23+0100\n"
+"Last-Translator: filmsi\n"
 "Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -28,8 +28,8 @@ msgstr ""
 #: ../cli/src/common.c:44
 #: ../cli/src/common.c:52
 #: ../cli/src/common.c:63
-#: ../cli/src/connections.c:119
-#: ../cli/src/connections.c:153
+#: ../cli/src/connections.c:128
+#: ../cli/src/connections.c:162
 msgid "GROUP"
 msgstr "SKUPINA"
 
@@ -43,7 +43,7 @@ msgstr "NASLOV"
 #: ../cli/src/common.c:34
 #: ../cli/src/common.c:54
 msgid "ROUTE"
-msgstr "POT POVEZAVE"
+msgstr "POT-POVEZAVE"
 
 #. 2
 #: ../cli/src/common.c:35
@@ -68,24 +68,314 @@ msgstr "WINS"
 msgid "OPTION"
 msgstr "MOŽNOST"
 
+#: ../cli/src/common.c:366
+msgid "unmanaged"
+msgstr "neupravljano"
+
+#: ../cli/src/common.c:368
+msgid "unavailable"
+msgstr "ni razpoložljivo"
+
+#: ../cli/src/common.c:370
+#: ../cli/src/network-manager.c:120
+msgid "disconnected"
+msgstr "povezava je prekinjena"
+
+#: ../cli/src/common.c:372
+msgid "connecting (prepare)"
+msgstr "povezovanje  (priprava)"
+
+#: ../cli/src/common.c:374
+msgid "connecting (configuring)"
+msgstr "povezovanje (nastavljanje)"
+
+#: ../cli/src/common.c:376
+msgid "connecting (need authentication)"
+msgstr "povezovanje (zahteva overitev)"
+
+#: ../cli/src/common.c:378
+msgid "connecting (getting IP configuration)"
+msgstr "povezovanje (pridobivanje nastavitev IP)"
+
+#: ../cli/src/common.c:380
+msgid "connecting (checking IP connectivity)"
+msgstr "povezovanje (preverjanje povezljivosti IP)"
+
+#: ../cli/src/common.c:382
+msgid "connecting (starting secondary connections)"
+msgstr "povezovanje (zagon drugotnih povezav)"
+
+#: ../cli/src/common.c:384
+#: ../cli/src/network-manager.c:116
+msgid "connected"
+msgstr "povezano"
+
+#: ../cli/src/common.c:386
+#: ../cli/src/connections.c:633
+msgid "deactivating"
+msgstr "onemogočanje"
+
+#: ../cli/src/common.c:388
+msgid "connection failed"
+msgstr "povezava je spodletela"
+
+#: ../cli/src/common.c:390
+#: ../cli/src/connections.c:636
+#: ../cli/src/connections.c:659
+#: ../cli/src/connections.c:1349
+#: ../cli/src/devices.c:622
+#: ../cli/src/network-manager.c:123
+#: ../cli/src/network-manager.c:185
+#: ../cli/src/network-manager.c:188
+#: ../cli/src/network-manager.c:197
+#: ../cli/src/network-manager.c:257
+#: ../cli/src/network-manager.c:273
+#: ../cli/src/network-manager.c:431
+#: ../cli/src/network-manager.c:486
+#: ../cli/src/network-manager.c:524
+#: ../cli/src/network-manager.c:563
+#: ../cli/src/settings.c:583
+#: ../cli/src/settings.c:611
+#: ../cli/src/utils.c:531
+#: ../src/main.c:462
+#: ../src/main.c:481
+msgid "unknown"
+msgstr "neznano"
+
+#: ../cli/src/common.c:399
+msgid "No reason given"
+msgstr "Razlog ni podan"
+
+#: ../cli/src/common.c:402
+msgid "Unknown error"
+msgstr "Neznana napaka"
+
+#: ../cli/src/common.c:405
+msgid "Device is now managed"
+msgstr "Naprava je zdaj upravljana"
+
+#: ../cli/src/common.c:408
+msgid "Device is now unmanaged"
+msgstr "Naprava zdaj ni upravljana"
+
+#: ../cli/src/common.c:411
+msgid "The device could not be readied for configuration"
+msgstr "Naprave ni mogoče pripraviti za prilagoditev"
+
+#: ../cli/src/common.c:414
+msgid "IP configuration could not be reserved (no available address, timeout, etc)"
+msgstr "Prilagoditve IP ni mogoče rezervirati (naslov ni na voljo, časovna prekoračitev itn.)"
+
+#: ../cli/src/common.c:417
+msgid "The IP configuration is no longer valid"
+msgstr "Prilagoditev IP ni več veljavna"
+
+#: ../cli/src/common.c:420
+msgid "Secrets were required, but not provided"
+msgstr "Zahtevana so bila ustrezna gesla, ki pa niso bila podana"
+
+#: ../cli/src/common.c:423
+msgid "802.1X supplicant disconnected"
+msgstr "Prosilnik 802.1X je odklopljen"
+
+#: ../cli/src/common.c:426
+msgid "802.1X supplicant configuration failed"
+msgstr "Prilagoditev prosilnika 802.1X je spodletela"
+
+#: ../cli/src/common.c:429
+msgid "802.1X supplicant failed"
+msgstr "Prosilnik 802.1X je spodletel"
+
+#: ../cli/src/common.c:432
+msgid "802.1X supplicant took too long to authenticate"
+msgstr "Prosilnik 802.1X je potreboval preveč časa za overjanje"
+
+#: ../cli/src/common.c:435
+msgid "PPP service failed to start"
+msgstr "Storitev PPP ni uspešno zagnana"
+
+#: ../cli/src/common.c:438
+msgid "PPP service disconnected"
+msgstr "Storitev PPP je prekinjena"
+
+#: ../cli/src/common.c:441
+msgid "PPP failed"
+msgstr "PPP je spodletel"
+
+#: ../cli/src/common.c:444
+msgid "DHCP client failed to start"
+msgstr "Začenjanje odjemalca DHCP je spodletelo"
+
+#: ../cli/src/common.c:447
+msgid "DHCP client error"
+msgstr "Napaka odjemalca DHCP"
+
+#: ../cli/src/common.c:450
+msgid "DHCP client failed"
+msgstr "Odjemalec DHCP je spodletel"
+
+#: ../cli/src/common.c:453
+msgid "Shared connection service failed to start"
+msgstr "Začenjanje storitve souporabe povezave je spodletelo."
+
+#: ../cli/src/common.c:456
+msgid "Shared connection service failed"
+msgstr "Storitev souporabe povezave je spodletela."
+
+#: ../cli/src/common.c:459
+msgid "AutoIP service failed to start"
+msgstr "Začenjanje storitve AutoIP je spodletelo."
+
+#: ../cli/src/common.c:462
+msgid "AutoIP service error"
+msgstr "Napaka storitve AutoIP"
+
+#: ../cli/src/common.c:465
+msgid "AutoIP service failed"
+msgstr "Storitev AutoIP je spodletela"
+
+#: ../cli/src/common.c:468
+msgid "The line is busy"
+msgstr "Povezava je zasedena"
+
+#: ../cli/src/common.c:471
+msgid "No dial tone"
+msgstr "Ni klicnega signala"
+
+#: ../cli/src/common.c:474
+msgid "No carrier could be established"
+msgstr "Ni mogoče vzpostaviti signala povezave"
+
+#: ../cli/src/common.c:477
+msgid "The dialing request timed out"
+msgstr "Zahteva klicanja je časovno potekla"
+
+#: ../cli/src/common.c:480
+msgid "The dialing attempt failed"
+msgstr "Poskus klicanja je spodletel"
+
+#: ../cli/src/common.c:483
+msgid "Modem initialization failed"
+msgstr "Začenjanje modema spodletelo"
+
+#: ../cli/src/common.c:486
+msgid "Failed to select the specified APN"
+msgstr "Izbor določenega APN je spodletel"
+
+#: ../cli/src/common.c:489
+msgid "Not searching for networks"
+msgstr "Iskanje omrežij ni dejavno"
+
+#: ../cli/src/common.c:492
+msgid "Network registration denied"
+msgstr "Vpis omrežja je zavrnjen"
+
+#: ../cli/src/common.c:495
+msgid "Network registration timed out"
+msgstr "Čas za vpis omrežja je potekel"
+
+#: ../cli/src/common.c:498
+msgid "Failed to register with the requested network"
+msgstr "Vpis v zahtevano omrežje je spodletel"
+
+#: ../cli/src/common.c:501
+msgid "PIN check failed"
+msgstr "Preverjanje PIN je spodletelo"
+
+#: ../cli/src/common.c:504
+msgid "Necessary firmware for the device may be missing"
+msgstr "Morda napravi manjka zahtevana strojna programska oprema"
+
+#: ../cli/src/common.c:507
+msgid "The device was removed"
+msgstr "Naprava je bila odstranjena"
+
+#: ../cli/src/common.c:510
+msgid "NetworkManager went to sleep"
+msgstr "NetworkManager je prešel v pripravljenost"
+
+#: ../cli/src/common.c:513
+msgid "The device's active connection disappeared"
+msgstr "Dejavna povezava naprave je izginila"
+
+#: ../cli/src/common.c:516
+msgid "Device disconnected by user or client"
+msgstr "Uporabnik ali odjemalec je odklopil napravo"
+
+#: ../cli/src/common.c:519
+msgid "Carrier/link changed"
+msgstr "Signal/Povezava se je spremenila"
+
+#: ../cli/src/common.c:522
+msgid "The device's existing connection was assumed"
+msgstr "Predviden je bila obstoječa povezava naprave"
+
+#: ../cli/src/common.c:525
+msgid "The supplicant is now available"
+msgstr "Prosilnik je zdaj na voljo"
+
+#: ../cli/src/common.c:528
+msgid "The modem could not be found"
+msgstr "Modema ni mogoče najti."
+
+#: ../cli/src/common.c:531
+msgid "The Bluetooth connection failed or timed out"
+msgstr "Povezava Bluetooth je spodletela ali pa je časovno potekla"
+
+#: ../cli/src/common.c:534
+msgid "GSM Modem's SIM card not inserted"
+msgstr "Kartica SIM modema GSM ni vstavljena"
+
+#: ../cli/src/common.c:537
+msgid "GSM Modem's SIM PIN required"
+msgstr "Zahtevana je koda PIN kartice SIM modema GSM"
+
+#: ../cli/src/common.c:540
+msgid "GSM Modem's SIM PUK required"
+msgstr "Zahtevana je koda PUK kartice SIM modema GSM"
+
+#: ../cli/src/common.c:543
+msgid "GSM Modem's SIM wrong"
+msgstr "Kartica SIM modema GSM ni ustrezna"
+
+#: ../cli/src/common.c:546
+msgid "InfiniBand device does not support connected mode"
+msgstr "Naprava InfiniBand ne podpira povezanega načina"
+
+#: ../cli/src/common.c:549
+msgid "A dependency of the connection failed"
+msgstr "Odvisnost povezave je spodletela"
+
+#: ../cli/src/common.c:552
+msgid "A problem with the RFC 2684 Ethernet over ADSL bridge"
+msgstr "Težava z Ethernet RFC 2684 prek mostu ADSL"
+
+#: ../cli/src/common.c:555
+#: ../cli/src/devices.c:274
+#: ../cli/src/devices.c:290
+#: ../cli/src/devices.c:410
+#: ../cli/src/devices.c:454
+msgid "Unknown"
+msgstr "Neznano"
+
 #. 0
 #. used only for 'GENERAL' group listing
-#: ../cli/src/connections.c:56
-#: ../cli/src/connections.c:120
-#: ../cli/src/devices.c:100
-#: ../cli/src/devices.c:121
-#: ../cli/src/devices.c:131
-#: ../cli/src/devices.c:141
-#: ../cli/src/devices.c:155
-#: ../cli/src/devices.c:169
-#: ../cli/src/devices.c:191
+#: ../cli/src/connections.c:59
+#: ../cli/src/connections.c:129
+#: ../cli/src/devices.c:105
+#: ../cli/src/devices.c:129
+#: ../cli/src/devices.c:139
+#: ../cli/src/devices.c:149
+#: ../cli/src/devices.c:163
+#: ../cli/src/devices.c:177
+#: ../cli/src/devices.c:199
 msgid "NAME"
 msgstr "IME"
 
 #. 0
 #. 1
-#: ../cli/src/connections.c:57
-#: ../cli/src/connections.c:121
+#: ../cli/src/connections.c:60
+#: ../cli/src/connections.c:130
 msgid "UUID"
 msgstr "UUID"
 
@@ -93,136 +383,138 @@ msgstr "UUID"
 #. 0
 #. 1
 #. 2
-#: ../cli/src/connections.c:58
-#: ../cli/src/connections.c:154
-#: ../cli/src/devices.c:66
-#: ../cli/src/devices.c:102
-#: ../cli/src/devices.c:194
+#: ../cli/src/connections.c:61
+#: ../cli/src/connections.c:163
+#: ../cli/src/devices.c:71
+#: ../cli/src/devices.c:107
+#: ../cli/src/devices.c:202
 msgid "TYPE"
 msgstr "VRSTA"
 
 #. 2
-#: ../cli/src/connections.c:59
+#: ../cli/src/connections.c:62
 msgid "TIMESTAMP"
-msgstr "ČASOVNI ŽIG"
+msgstr "ČASOVNI-ŽIG"
 
 #. 3
-#: ../cli/src/connections.c:60
+#: ../cli/src/connections.c:63
 msgid "TIMESTAMP-REAL"
-msgstr "REAL-ČASOVNI ŽIG"
+msgstr "REAL-ČASOVNI-ŽIG"
 
 #. 4
-#: ../cli/src/connections.c:61
+#. 13
+#: ../cli/src/connections.c:64
+#: ../cli/src/devices.c:119
 msgid "AUTOCONNECT"
-msgstr "SAMODEJNO POVEŽI"
+msgstr "SAMODEJNO-POVEŽI"
 
 #. 5
-#: ../cli/src/connections.c:62
+#: ../cli/src/connections.c:65
 msgid "READONLY"
-msgstr "SAMO ZA BRANJE"
+msgstr "SAMO-ZA-BRANJE"
 
 #. 6
 #. 8
 #. 2
 #. 11
 #. 5
-#: ../cli/src/connections.c:63
-#: ../cli/src/connections.c:128
-#: ../cli/src/devices.c:68
-#: ../cli/src/devices.c:181
-#: ../cli/src/devices.c:197
+#: ../cli/src/connections.c:66
+#: ../cli/src/connections.c:137
+#: ../cli/src/devices.c:73
+#: ../cli/src/devices.c:189
+#: ../cli/src/devices.c:205
 msgid "DBUS-PATH"
 msgstr "DBUS-POT"
 
 #. 2
-#: ../cli/src/connections.c:122
+#: ../cli/src/connections.c:131
 msgid "DEVICES"
 msgstr "NAPRAVE"
 
 #. 3
 #. 1
-#. 6
+#. 8
 #. 1
-#: ../cli/src/connections.c:123
-#: ../cli/src/devices.c:67
-#: ../cli/src/devices.c:107
+#: ../cli/src/connections.c:132
+#: ../cli/src/devices.c:72
+#: ../cli/src/devices.c:114
 #: ../cli/src/network-manager.c:39
 msgid "STATE"
 msgstr "STANJE"
 
 #. 4
-#: ../cli/src/connections.c:124
+#: ../cli/src/connections.c:133
 msgid "DEFAULT"
 msgstr "PRIVZETO"
 
 #. 5
-#: ../cli/src/connections.c:125
+#: ../cli/src/connections.c:134
 msgid "DEFAULT6"
 msgstr "PRIVZETO6"
 
 #. 6
-#: ../cli/src/connections.c:126
+#: ../cli/src/connections.c:135
 msgid "SPEC-OBJECT"
 msgstr "SPEC-PREDMET"
 
 #. 7
 #. 1
-#: ../cli/src/connections.c:127
-#: ../cli/src/connections.c:141
+#: ../cli/src/connections.c:136
+#: ../cli/src/connections.c:150
 msgid "VPN"
 msgstr "VPN"
 
 #. 9
-#: ../cli/src/connections.c:129
+#: ../cli/src/connections.c:138
 msgid "CON-PATH"
-msgstr "POT POVEZAVE"
+msgstr "POT-POVEZAVE"
 
 #. 10
-#: ../cli/src/connections.c:130
+#: ../cli/src/connections.c:139
 msgid "ZONE"
-msgstr "ČASOVNI PAS"
+msgstr "ČASOVNI-PAS"
 
 #. 11
-#: ../cli/src/connections.c:131
+#: ../cli/src/connections.c:140
 msgid "MASTER-PATH"
-msgstr "GLAVNA POT"
+msgstr "GLAVNA-POT"
 
-#: ../cli/src/connections.c:139
-#: ../cli/src/devices.c:77
+#: ../cli/src/connections.c:148
+#: ../cli/src/devices.c:82
 msgid "GENERAL"
 msgstr "SPLOŠNO"
 
 #. 0
-#: ../cli/src/connections.c:140
+#: ../cli/src/connections.c:149
 msgid "IP"
 msgstr "IP"
 
 #. 1
-#: ../cli/src/connections.c:155
+#: ../cli/src/connections.c:164
 msgid "USERNAME"
-msgstr "UPORABNIŠKO IME"
+msgstr "UPORABNIŠKO-IME"
 
 #. 2
-#: ../cli/src/connections.c:156
+#: ../cli/src/connections.c:165
 msgid "GATEWAY"
 msgstr "PREHOD"
 
 #. 3
-#: ../cli/src/connections.c:157
+#: ../cli/src/connections.c:166
 msgid "BANNER"
 msgstr "PASICA"
 
 #. 4
-#: ../cli/src/connections.c:158
+#: ../cli/src/connections.c:167
 msgid "VPN-STATE"
 msgstr "STANJE-VPN"
 
 #. 5
-#: ../cli/src/connections.c:159
+#: ../cli/src/connections.c:168
 msgid "CFG"
 msgstr "CFG"
 
-#: ../cli/src/connections.c:180
+#: ../cli/src/connections.c:190
 #, c-format
 msgid ""
 "Usage: nmcli con { COMMAND | help }\n"
@@ -245,460 +537,443 @@ msgstr ""
 "  down id <id> | uuid <id>\n"
 "  delete id <id> | uuid <id>\n"
 
-#: ../cli/src/connections.c:234
-#: ../cli/src/connections.c:567
+#: ../cli/src/connections.c:249
+#: ../cli/src/connections.c:609
 #, c-format
 msgid "Error: 'con list': %s"
 msgstr "Napaka: 'con list': %s"
 
-#: ../cli/src/connections.c:236
-#: ../cli/src/connections.c:569
+#: ../cli/src/connections.c:251
+#: ../cli/src/connections.c:611
 #, c-format
 msgid "Error: 'con list': %s; allowed fields: %s"
 msgstr "Napaka: 'con list': %s; dovoljena so polja: %s"
 
-#: ../cli/src/connections.c:244
+#: ../cli/src/connections.c:259
 msgid "Connection details"
 msgstr "Podatki o povezavi"
 
-#: ../cli/src/connections.c:442
+#: ../cli/src/connections.c:484
 msgid "never"
 msgstr "nikoli"
 
 #. "CAPABILITIES"
 #. Print header
 #. "WIFI-PROPERTIES"
-#: ../cli/src/connections.c:443
-#: ../cli/src/connections.c:444
-#: ../cli/src/connections.c:681
-#: ../cli/src/connections.c:682
-#: ../cli/src/connections.c:684
-#: ../cli/src/devices.c:586
-#: ../cli/src/devices.c:639
-#: ../cli/src/devices.c:750
-#: ../cli/src/devices.c:751
-#: ../cli/src/devices.c:783
-#: ../cli/src/devices.c:809
-#: ../cli/src/devices.c:810
-#: ../cli/src/devices.c:811
-#: ../cli/src/devices.c:812
-#: ../cli/src/devices.c:813
-#: ../cli/src/settings.c:576
-#: ../cli/src/settings.c:646
-#: ../cli/src/settings.c:766
-#: ../cli/src/settings.c:1048
-#: ../cli/src/settings.c:1049
-#: ../cli/src/settings.c:1051
-#: ../cli/src/settings.c:1053
-#: ../cli/src/settings.c:1054
-#: ../cli/src/settings.c:1182
-#: ../cli/src/settings.c:1183
-#: ../cli/src/settings.c:1184
-#: ../cli/src/settings.c:1185
-#: ../cli/src/settings.c:1260
-#: ../cli/src/settings.c:1261
-#: ../cli/src/settings.c:1262
-#: ../cli/src/settings.c:1263
-#: ../cli/src/settings.c:1264
-#: ../cli/src/settings.c:1265
-#: ../cli/src/settings.c:1266
-#: ../cli/src/settings.c:1267
-#: ../cli/src/settings.c:1268
-#: ../cli/src/settings.c:1269
-#: ../cli/src/settings.c:1270
-#: ../cli/src/settings.c:1271
-#: ../cli/src/settings.c:1272
-#: ../cli/src/settings.c:1343
+#: ../cli/src/connections.c:485
+#: ../cli/src/connections.c:486
+#: ../cli/src/connections.c:714
+#: ../cli/src/connections.c:715
+#: ../cli/src/connections.c:717
+#: ../cli/src/devices.c:418
+#: ../cli/src/devices.c:471
+#: ../cli/src/devices.c:587
+#: ../cli/src/devices.c:588
+#: ../cli/src/devices.c:589
+#: ../cli/src/devices.c:621
+#: ../cli/src/devices.c:647
+#: ../cli/src/devices.c:648
+#: ../cli/src/devices.c:649
+#: ../cli/src/devices.c:650
+#: ../cli/src/devices.c:651
+#: ../cli/src/network-manager.c:267
+#: ../cli/src/settings.c:677
+#: ../cli/src/settings.c:747
+#: ../cli/src/settings.c:867
+#: ../cli/src/settings.c:1149
+#: ../cli/src/settings.c:1150
+#: ../cli/src/settings.c:1152
+#: ../cli/src/settings.c:1154
+#: ../cli/src/settings.c:1155
+#: ../cli/src/settings.c:1283
+#: ../cli/src/settings.c:1284
+#: ../cli/src/settings.c:1285
+#: ../cli/src/settings.c:1286
+#: ../cli/src/settings.c:1361
+#: ../cli/src/settings.c:1362
+#: ../cli/src/settings.c:1363
+#: ../cli/src/settings.c:1364
+#: ../cli/src/settings.c:1365
+#: ../cli/src/settings.c:1366
+#: ../cli/src/settings.c:1367
+#: ../cli/src/settings.c:1368
+#: ../cli/src/settings.c:1369
+#: ../cli/src/settings.c:1370
+#: ../cli/src/settings.c:1371
+#: ../cli/src/settings.c:1372
+#: ../cli/src/settings.c:1373
+#: ../cli/src/settings.c:1444
 msgid "yes"
 msgstr "da"
 
-#: ../cli/src/connections.c:443
-#: ../cli/src/connections.c:444
-#: ../cli/src/connections.c:681
-#: ../cli/src/connections.c:682
-#: ../cli/src/connections.c:684
-#: ../cli/src/devices.c:586
-#: ../cli/src/devices.c:639
-#: ../cli/src/devices.c:750
-#: ../cli/src/devices.c:751
-#: ../cli/src/devices.c:783
-#: ../cli/src/devices.c:809
-#: ../cli/src/devices.c:810
-#: ../cli/src/devices.c:811
-#: ../cli/src/devices.c:812
-#: ../cli/src/devices.c:813
-#: ../cli/src/settings.c:576
-#: ../cli/src/settings.c:578
-#: ../cli/src/settings.c:646
-#: ../cli/src/settings.c:766
-#: ../cli/src/settings.c:1048
-#: ../cli/src/settings.c:1049
-#: ../cli/src/settings.c:1051
-#: ../cli/src/settings.c:1053
-#: ../cli/src/settings.c:1054
-#: ../cli/src/settings.c:1182
-#: ../cli/src/settings.c:1183
-#: ../cli/src/settings.c:1184
-#: ../cli/src/settings.c:1185
-#: ../cli/src/settings.c:1260
-#: ../cli/src/settings.c:1261
-#: ../cli/src/settings.c:1262
-#: ../cli/src/settings.c:1263
-#: ../cli/src/settings.c:1264
-#: ../cli/src/settings.c:1265
-#: ../cli/src/settings.c:1266
-#: ../cli/src/settings.c:1267
-#: ../cli/src/settings.c:1268
-#: ../cli/src/settings.c:1269
-#: ../cli/src/settings.c:1270
-#: ../cli/src/settings.c:1271
-#: ../cli/src/settings.c:1272
-#: ../cli/src/settings.c:1343
+#: ../cli/src/connections.c:485
+#: ../cli/src/connections.c:486
+#: ../cli/src/connections.c:714
+#: ../cli/src/connections.c:715
+#: ../cli/src/connections.c:717
+#: ../cli/src/devices.c:418
+#: ../cli/src/devices.c:471
+#: ../cli/src/devices.c:587
+#: ../cli/src/devices.c:588
+#: ../cli/src/devices.c:589
+#: ../cli/src/devices.c:621
+#: ../cli/src/devices.c:647
+#: ../cli/src/devices.c:648
+#: ../cli/src/devices.c:649
+#: ../cli/src/devices.c:650
+#: ../cli/src/devices.c:651
+#: ../cli/src/network-manager.c:269
+#: ../cli/src/settings.c:677
+#: ../cli/src/settings.c:679
+#: ../cli/src/settings.c:747
+#: ../cli/src/settings.c:867
+#: ../cli/src/settings.c:1149
+#: ../cli/src/settings.c:1150
+#: ../cli/src/settings.c:1152
+#: ../cli/src/settings.c:1154
+#: ../cli/src/settings.c:1155
+#: ../cli/src/settings.c:1283
+#: ../cli/src/settings.c:1284
+#: ../cli/src/settings.c:1285
+#: ../cli/src/settings.c:1286
+#: ../cli/src/settings.c:1361
+#: ../cli/src/settings.c:1362
+#: ../cli/src/settings.c:1363
+#: ../cli/src/settings.c:1364
+#: ../cli/src/settings.c:1365
+#: ../cli/src/settings.c:1366
+#: ../cli/src/settings.c:1367
+#: ../cli/src/settings.c:1368
+#: ../cli/src/settings.c:1369
+#: ../cli/src/settings.c:1370
+#: ../cli/src/settings.c:1371
+#: ../cli/src/settings.c:1372
+#: ../cli/src/settings.c:1373
+#: ../cli/src/settings.c:1444
 msgid "no"
 msgstr "ne"
 
-#: ../cli/src/connections.c:518
+#: ../cli/src/connections.c:560
 msgid "Connection list"
 msgstr "Seznam povezav"
 
-#: ../cli/src/connections.c:531
-#: ../cli/src/connections.c:1064
-#: ../cli/src/connections.c:1808
-#: ../cli/src/connections.c:1823
-#: ../cli/src/connections.c:1832
-#: ../cli/src/connections.c:1842
-#: ../cli/src/connections.c:1854
-#: ../cli/src/connections.c:1949
-#: ../cli/src/connections.c:2051
-#: ../cli/src/devices.c:1190
-#: ../cli/src/devices.c:1200
-#: ../cli/src/devices.c:1314
-#: ../cli/src/devices.c:1322
-#: ../cli/src/devices.c:1535
-#: ../cli/src/devices.c:1542
+#: ../cli/src/connections.c:573
+#: ../cli/src/connections.c:1110
+#: ../cli/src/connections.c:1646
+#: ../cli/src/connections.c:1661
+#: ../cli/src/connections.c:1670
+#: ../cli/src/connections.c:1680
+#: ../cli/src/connections.c:1692
+#: ../cli/src/connections.c:1800
+#: ../cli/src/connections.c:1902
+#: ../cli/src/devices.c:1041
+#: ../cli/src/devices.c:1051
+#: ../cli/src/devices.c:1169
+#: ../cli/src/devices.c:1177
+#: ../cli/src/devices.c:1541
+#: ../cli/src/devices.c:1548
+#: ../cli/src/devices.c:1562
+#: ../cli/src/devices.c:1569
+#: ../cli/src/devices.c:1586
+#: ../cli/src/devices.c:1597
+#: ../cli/src/devices.c:1818
+#: ../cli/src/devices.c:1825
 #, c-format
 msgid "Error: %s argument is missing."
 msgstr "Napaka: manjka argument %s."
 
-#: ../cli/src/connections.c:544
+#: ../cli/src/connections.c:586
 #, c-format
 msgid "Error: %s - no such connection."
 msgstr "Napaka: %s - povezava ne obstaja."
 
-#: ../cli/src/connections.c:550
-#: ../cli/src/connections.c:1867
-#: ../cli/src/connections.c:1966
-#: ../cli/src/connections.c:2058
-#: ../cli/src/devices.c:987
-#: ../cli/src/devices.c:1067
-#: ../cli/src/devices.c:1214
-#: ../cli/src/devices.c:1328
-#: ../cli/src/devices.c:1548
+#: ../cli/src/connections.c:592
+#: ../cli/src/connections.c:1705
+#: ../cli/src/connections.c:1817
+#: ../cli/src/connections.c:1909
+#: ../cli/src/devices.c:825
+#: ../cli/src/devices.c:905
+#: ../cli/src/devices.c:1065
+#: ../cli/src/devices.c:1183
+#: ../cli/src/devices.c:1610
+#: ../cli/src/devices.c:1831
 #, c-format
 msgid "Unknown parameter: %s\n"
 msgstr "Neznan parameter: %s\n"
 
-#: ../cli/src/connections.c:559
+#: ../cli/src/connections.c:601
 #, c-format
 msgid "Error: no valid parameter specified."
 msgstr "Napaka: ni podanega veljavnega parametra."
 
-#: ../cli/src/connections.c:574
-#: ../cli/src/connections.c:2151
-#: ../cli/src/devices.c:1756
-#: ../cli/src/network-manager.c:456
+#: ../cli/src/connections.c:616
+#: ../cli/src/connections.c:2002
+#: ../cli/src/devices.c:2039
+#: ../cli/src/network-manager.c:596
 #, c-format
 msgid "Error: %s."
 msgstr "Napaka: %s."
 
-#: ../cli/src/connections.c:587
+#: ../cli/src/connections.c:629
 msgid "activating"
 msgstr "začenjanje"
 
-#: ../cli/src/connections.c:589
+#: ../cli/src/connections.c:631
 msgid "activated"
 msgstr "začeto"
 
-#: ../cli/src/connections.c:591
-#: ../cli/src/devices.c:261
-msgid "deactivating"
-msgstr "onemogočanje"
-
-#: ../cli/src/connections.c:594
-#: ../cli/src/connections.c:617
-#: ../cli/src/connections.c:1680
-#: ../cli/src/devices.c:265
-#: ../cli/src/devices.c:784
-#: ../cli/src/network-manager.c:111
-#: ../cli/src/network-manager.c:173
-#: ../cli/src/network-manager.c:176
-#: ../cli/src/network-manager.c:185
-#: ../cli/src/network-manager.c:291
-#: ../cli/src/network-manager.c:346
-#: ../cli/src/network-manager.c:384
-#: ../cli/src/network-manager.c:423
-#: ../cli/src/settings.c:531
-#: ../cli/src/utils.c:499
-#: ../src/main.c:450
-#: ../src/main.c:469
-msgid "unknown"
-msgstr "neznano"
-
-#: ../cli/src/connections.c:603
+#: ../cli/src/connections.c:645
 msgid "VPN connecting (prepare)"
 msgstr "VPN povezovanje (priprava)"
 
-#: ../cli/src/connections.c:605
+#: ../cli/src/connections.c:647
 msgid "VPN connecting (need authentication)"
 msgstr "VPN povezovanje (zahtevana je overitev)"
 
-#: ../cli/src/connections.c:607
+#: ../cli/src/connections.c:649
 msgid "VPN connecting"
 msgstr "VPN povezovanje"
 
-#: ../cli/src/connections.c:609
+#: ../cli/src/connections.c:651
 msgid "VPN connecting (getting IP configuration)"
 msgstr "VPN povezovanje (pridobivanje nastavitev IP)"
 
-#: ../cli/src/connections.c:611
+#: ../cli/src/connections.c:653
 msgid "VPN connected"
 msgstr "Povezan v VPN"
 
-#: ../cli/src/connections.c:613
+#: ../cli/src/connections.c:655
 msgid "VPN connection failed"
 msgstr "Povezava z VPN je spodletela"
 
-#: ../cli/src/connections.c:615
+#: ../cli/src/connections.c:657
 msgid "VPN disconnected"
 msgstr "Povezava z VPN je prekinjena"
 
-#: ../cli/src/connections.c:868
-#: ../cli/src/connections.c:1092
+#: ../cli/src/connections.c:710
+#: ../cli/src/connections.c:720
+msgid "N/A"
+msgstr "ni na voljo"
+
+#: ../cli/src/connections.c:914
+#: ../cli/src/connections.c:1138
 #, c-format
 msgid "Error: 'con status': %s"
 msgstr "Napaka: 'con status': %s"
 
-#: ../cli/src/connections.c:870
-#: ../cli/src/connections.c:1094
+#: ../cli/src/connections.c:916
+#: ../cli/src/connections.c:1140
 #, c-format
 msgid "Error: 'con status': %s; allowed fields: %s"
 msgstr "Napaka: 'con status': %s; dovoljena polja: %s"
 
-#: ../cli/src/connections.c:878
+#: ../cli/src/connections.c:924
 msgid "Active connection details"
 msgstr "Podrobnosti dejavne povezave"
 
-#: ../cli/src/connections.c:1014
-#: ../cli/src/connections.c:1882
-#: ../cli/src/connections.c:1981
-#: ../cli/src/connections.c:2072
-#: ../cli/src/devices.c:1014
-#: ../cli/src/devices.c:1076
-#: ../cli/src/devices.c:1229
-#: ../cli/src/devices.c:1358
-#: ../cli/src/devices.c:1577
+#: ../cli/src/connections.c:1060
+#: ../cli/src/connections.c:1720
+#: ../cli/src/connections.c:1832
+#: ../cli/src/connections.c:1923
+#: ../cli/src/devices.c:852
+#: ../cli/src/devices.c:914
+#: ../cli/src/devices.c:1080
+#: ../cli/src/devices.c:1213
+#: ../cli/src/devices.c:1632
+#: ../cli/src/devices.c:1860
+#: ../cli/src/network-manager.c:311
 #, c-format
 msgid "Error: Can't find out if NetworkManager is running: %s."
 msgstr "Napaka: ni mogoče ugotoviti, ali se program NetworkManager izvaja: %s."
 
-#: ../cli/src/connections.c:1018
-#: ../cli/src/connections.c:1886
-#: ../cli/src/connections.c:1985
-#: ../cli/src/connections.c:2076
-#: ../cli/src/devices.c:1018
-#: ../cli/src/devices.c:1080
-#: ../cli/src/devices.c:1233
-#: ../cli/src/devices.c:1362
-#: ../cli/src/devices.c:1581
+#: ../cli/src/connections.c:1064
+#: ../cli/src/connections.c:1724
+#: ../cli/src/connections.c:1836
+#: ../cli/src/connections.c:1927
+#: ../cli/src/devices.c:856
+#: ../cli/src/devices.c:918
+#: ../cli/src/devices.c:1084
+#: ../cli/src/devices.c:1217
+#: ../cli/src/devices.c:1636
+#: ../cli/src/devices.c:1864
+#: ../cli/src/network-manager.c:315
 #, c-format
 msgid "Error: NetworkManager is not running."
 msgstr "Napaka: program NetworkManager ni zagnan."
 
-#: ../cli/src/connections.c:1050
+#: ../cli/src/connections.c:1096
 msgid "Active connections"
 msgstr "Dejavne povezave"
 
-#: ../cli/src/connections.c:1075
+#: ../cli/src/connections.c:1121
 #, c-format
 msgid "Error: '%s' is not an active connection."
 msgstr "Napaka: '%s' ni dejavna povezava."
 
-#: ../cli/src/connections.c:1080
+#: ../cli/src/connections.c:1126
 #, c-format
 msgid "Error: unknown parameter: %s"
 msgstr "Napaka: neznan parameter: %s"
 
-#: ../cli/src/connections.c:1564
+#: ../cli/src/connections.c:1233
 #, c-format
 msgid "no active connection on device '%s'"
 msgstr "ni dejavnih povezav na napravi '%s'"
 
-#: ../cli/src/connections.c:1572
+#: ../cli/src/connections.c:1241
 #, c-format
 msgid "no active connection or device"
 msgstr "ni dejavne povezave ali naprave"
 
-#: ../cli/src/connections.c:1643
+#: ../cli/src/connections.c:1312
 #, c-format
 msgid "device '%s' not compatible with connection '%s'"
 msgstr "naprava '%s' ni združljiva s povezavo '%s'"
 
-#: ../cli/src/connections.c:1645
+#: ../cli/src/connections.c:1314
 #, c-format
 msgid "no device found for connection '%s'"
 msgstr "ni naprave za povezavo '%s'"
 
-#: ../cli/src/connections.c:1656
+#: ../cli/src/connections.c:1325
 msgid "unknown reason"
 msgstr "neznan vzrok"
 
-#: ../cli/src/connections.c:1658
+#: ../cli/src/connections.c:1327
 msgid "none"
 msgstr "brez"
 
-#: ../cli/src/connections.c:1660
+#: ../cli/src/connections.c:1329
 msgid "the user was disconnected"
 msgstr "povezava z uporabnikom je prekinjena"
 
-#: ../cli/src/connections.c:1662
+#: ../cli/src/connections.c:1331
 msgid "the base network connection was interrupted"
 msgstr "osnovna omrežna povezava je bila prekinjena"
 
-#: ../cli/src/connections.c:1664
+#: ../cli/src/connections.c:1333
 msgid "the VPN service stopped unexpectedly"
 msgstr "storitev VPN je nepričakovano zaustavljena"
 
-#: ../cli/src/connections.c:1666
+#: ../cli/src/connections.c:1335
 msgid "the VPN service returned invalid configuration"
 msgstr "storitev VPN je vrnila neveljavne nastavitve"
 
-#: ../cli/src/connections.c:1668
+#: ../cli/src/connections.c:1337
 msgid "the connection attempt timed out"
 msgstr "poskus povezave je časovno potekel"
 
-#: ../cli/src/connections.c:1670
+#: ../cli/src/connections.c:1339
 msgid "the VPN service did not start in time"
 msgstr "storitev VPN se ni pravočasno začela"
 
-#: ../cli/src/connections.c:1672
+#: ../cli/src/connections.c:1341
 msgid "the VPN service failed to start"
 msgstr "storitev VPN ni uspešno začeta"
 
-#: ../cli/src/connections.c:1674
+#: ../cli/src/connections.c:1343
 msgid "no valid VPN secrets"
 msgstr "ni veljavnih VPN skrivnosti"
 
-#: ../cli/src/connections.c:1676
+#: ../cli/src/connections.c:1345
 msgid "invalid VPN secrets"
 msgstr "neveljavne VPN skrivnosti"
 
-#: ../cli/src/connections.c:1678
+#: ../cli/src/connections.c:1347
 msgid "the connection was removed"
 msgstr "povezava je odstranjena"
 
-#: ../cli/src/connections.c:1692
-#, c-format
-msgid "state: %s\n"
-msgstr "stanje: %s\n"
-
-#: ../cli/src/connections.c:1695
-#: ../cli/src/connections.c:1721
+#: ../cli/src/connections.c:1364
+#: ../cli/src/connections.c:1569
 #, c-format
-msgid "Connection activated\n"
-msgstr "Povezava je omogočena\n"
+msgid "Connection successfully activated (D-Bus active path: %s)\n"
+msgstr "Povezava uspešno aktivirana (dejavna pot D-Bus: %s)\n"
 
-#: ../cli/src/connections.c:1698
+#. Active connection failed and dissapeared, quit.
+#: ../cli/src/connections.c:1369
+#: ../cli/src/connections.c:1470
 #, c-format
 msgid "Error: Connection activation failed."
 msgstr "Napaka: začenjanje povezave ni uspelo."
 
-#: ../cli/src/connections.c:1717
+#: ../cli/src/connections.c:1394
 #, c-format
-msgid "state: %s (%d)\n"
-msgstr "stanje: %s (%d)\n"
+msgid "VPN connection successfully activated (D-Bus active path: %s)\n"
+msgstr "Povezava VPN uspešno aktivirana (dejavna pot D-Bus: %s)\n"
 
-#: ../cli/src/connections.c:1727
+#: ../cli/src/connections.c:1402
 #, c-format
 msgid "Error: Connection activation failed: %s."
 msgstr "Napaka: začenjanje povezave ni uspelo: %s."
 
-#: ../cli/src/connections.c:1744
-#: ../cli/src/devices.c:1136
+#: ../cli/src/connections.c:1499
+#: ../cli/src/devices.c:974
 #, c-format
 msgid "Error: Timeout %d sec expired."
 msgstr "Napaka: časovna omejitev %d sekund je potekla."
 
-#: ../cli/src/connections.c:1757
+#: ../cli/src/connections.c:1560
 #, c-format
 msgid "Error: Connection activation failed: %s"
 msgstr "Napaka: začenjanje povezave ni uspelo: %s."
 
-#: ../cli/src/connections.c:1763
-#, c-format
-msgid "Active connection state: %s\n"
-msgstr "Stanje dejavne povezave: %s\n"
-
-#: ../cli/src/connections.c:1764
-#, c-format
-msgid "Active connection path: %s\n"
-msgstr "Pot dejavne povezave: %s\n"
-
-#: ../cli/src/connections.c:1816
-#: ../cli/src/connections.c:1957
-#: ../cli/src/connections.c:2085
+#: ../cli/src/connections.c:1654
+#: ../cli/src/connections.c:1808
+#: ../cli/src/connections.c:1936
 #, c-format
 msgid "Error: Unknown connection: %s."
 msgstr "Napaka: neznana povezava: %s."
 
-#: ../cli/src/connections.c:1862
-#: ../cli/src/devices.c:1208
+#: ../cli/src/connections.c:1700
+#: ../cli/src/devices.c:1059
+#: ../cli/src/devices.c:1605
 #, c-format
 msgid "Error: timeout value '%s' is not valid."
 msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna."
 
-#: ../cli/src/connections.c:1875
-#: ../cli/src/connections.c:1974
-#: ../cli/src/connections.c:2065
+#: ../cli/src/connections.c:1713
+#: ../cli/src/connections.c:1825
+#: ../cli/src/connections.c:1916
 #, c-format
 msgid "Error: id or uuid has to be specified."
 msgstr "Napaka: podatek id ali uuid ni naveden."
 
-#: ../cli/src/connections.c:1903
+#: ../cli/src/connections.c:1745
 #, c-format
 msgid "Error: No suitable device found: %s."
 msgstr "Napaka: ni mogoče najti ustrezne naprave: %s."
 
-#: ../cli/src/connections.c:1905
+#: ../cli/src/connections.c:1747
 #, c-format
 msgid "Error: No suitable device found."
 msgstr "Napaka: ni mogoče najti ustrezne naprave."
 
-#: ../cli/src/connections.c:2010
+#: ../cli/src/connections.c:1861
 #, c-format
 msgid "Warning: Connection not active\n"
 msgstr "Opozorilo: povezava ni dejavna\n"
 
-#: ../cli/src/connections.c:2024
+#: ../cli/src/connections.c:1875
 #, c-format
 msgid "Error: Connection deletion failed: %s"
 msgstr "Napaka: brisanje povezave ni uspelo: %s"
 
-#: ../cli/src/connections.c:2142
+#: ../cli/src/connections.c:1993
 #, c-format
 msgid "Error: 'con' command '%s' is not valid."
 msgstr "Napaka: ukaz 'con' '%s' ni veljaven."
 
-#: ../cli/src/connections.c:2207
+#: ../cli/src/connections.c:2061
 #, c-format
 msgid "Error: could not connect to D-Bus."
 msgstr "Napaka: povezava z D-Bus ni mogoča."
 
-#: ../cli/src/connections.c:2215
+#: ../cli/src/connections.c:2069
 #, c-format
 msgid "Error: Could not get system settings."
 msgstr "Napaka: ni mogoče pridobiti sistemskih nastavitev."
 
-#: ../cli/src/connections.c:2225
+#: ../cli/src/connections.c:2079
 #, c-format
 msgid "Error: Can't obtain connections: settings service is not running."
 msgstr "Napaka: ni mogoče pridobiti povezav: storitev nastavitev ni zagnana."
@@ -706,235 +981,247 @@ msgstr "Napaka: ni mogoče pridobiti povezav: storitev nastavitev ni zagnana."
 #. 0
 #. 9
 #. 3
-#: ../cli/src/devices.c:65
-#: ../cli/src/devices.c:101
-#: ../cli/src/devices.c:179
-#: ../cli/src/devices.c:195
+#: ../cli/src/devices.c:70
+#: ../cli/src/devices.c:106
+#: ../cli/src/devices.c:187
+#: ../cli/src/devices.c:203
 msgid "DEVICE"
 msgstr "NAPRAVA"
 
 #. 0
-#: ../cli/src/devices.c:78
+#: ../cli/src/devices.c:83
 msgid "CAPABILITIES"
 msgstr "ZMOŽNOSTI"
 
 #. 1
-#: ../cli/src/devices.c:79
+#: ../cli/src/devices.c:84
 msgid "WIFI-PROPERTIES"
 msgstr "WIFI-LASTNOSTI"
 
 #. 2
-#: ../cli/src/devices.c:80
+#: ../cli/src/devices.c:85
 msgid "AP"
 msgstr "AP"
 
 #. 3
-#: ../cli/src/devices.c:81
+#: ../cli/src/devices.c:86
 msgid "WIRED-PROPERTIES"
-msgstr "LASTNOSTI ŽIČNE POVEZAVE"
+msgstr "LASTNOSTI-ŽIČNE-POVEZAVE"
 
 #. 4
-#: ../cli/src/devices.c:82
+#: ../cli/src/devices.c:87
 msgid "WIMAX-PROPERTIES"
 msgstr "WIMAX-LASTNOSTI"
 
 #. 5
 #. 0
-#: ../cli/src/devices.c:83
-#: ../cli/src/devices.c:192
+#: ../cli/src/devices.c:88
+#: ../cli/src/devices.c:200
 msgid "NSP"
 msgstr "NSP"
 
 #. 6
-#: ../cli/src/devices.c:84
+#: ../cli/src/devices.c:89
 msgid "IP4"
 msgstr "IP4"
 
 #. 7
-#: ../cli/src/devices.c:85
+#: ../cli/src/devices.c:90
 msgid "DHCP4"
 msgstr "DHCP4"
 
 #. 8
-#: ../cli/src/devices.c:86
+#: ../cli/src/devices.c:91
 msgid "IP6"
 msgstr "IP6"
 
 #. 9
-#: ../cli/src/devices.c:87
+#: ../cli/src/devices.c:92
 msgid "DHCP6"
 msgstr "DHCP6"
 
 #. 2
-#: ../cli/src/devices.c:103
+#: ../cli/src/devices.c:108
 msgid "VENDOR"
 msgstr "PONUDNIK"
 
 #. 3
-#: ../cli/src/devices.c:104
+#: ../cli/src/devices.c:109
 msgid "PRODUCT"
 msgstr "IZDELEK"
 
 #. 4
-#: ../cli/src/devices.c:105
+#: ../cli/src/devices.c:110
 msgid "DRIVER"
 msgstr "GONILNIK"
 
 #. 5
-#: ../cli/src/devices.c:106
+#: ../cli/src/devices.c:111
+#| msgid "VERSION"
+msgid "DRIVER-VERSION"
+msgstr "RAZLIČICA-GONILNIKA"
+
+#. 6
+#: ../cli/src/devices.c:112
+#| msgid "FIRMWARE-MISSING"
+msgid "FIRMWARE-VERSION"
+msgstr "RAZLIČICA-STROJNEGA-PROGRAMA"
+
+#. 7
+#: ../cli/src/devices.c:113
 msgid "HWADDR"
 msgstr "HWADDR"
 
-#. 7
-#: ../cli/src/devices.c:108
+#. 9
+#: ../cli/src/devices.c:115
 msgid "REASON"
 msgstr "RAZLOG"
 
-#. 8
-#: ../cli/src/devices.c:109
+#. 10
+#: ../cli/src/devices.c:116
 msgid "UDI"
 msgstr "UDI"
 
-#. 9
-#: ../cli/src/devices.c:110
+#. 11
+#: ../cli/src/devices.c:117
 msgid "IP-IFACE"
 msgstr "IP-VMESNIK"
 
-#. 10
-#: ../cli/src/devices.c:111
+#. 12
+#: ../cli/src/devices.c:118
 msgid "NM-MANAGED"
 msgstr "NM-UPRAVLJANO"
 
-#. 11
-#: ../cli/src/devices.c:112
+#. 14
+#: ../cli/src/devices.c:120
 msgid "FIRMWARE-MISSING"
-msgstr "MANJKA STROJNA PROGRAMSKA OPREMA"
+msgstr "MANJKA-STROJNA-PROGRAMSKA-OPREMA"
 
-#. 12
-#: ../cli/src/devices.c:113
+#. 15
+#: ../cli/src/devices.c:121
 msgid "CONNECTION"
 msgstr "POVEZAVA"
 
 #. 0
-#: ../cli/src/devices.c:122
+#: ../cli/src/devices.c:130
 msgid "CARRIER-DETECT"
 msgstr "ZAZNAVA-OPERATERJA"
 
 #. 1
-#: ../cli/src/devices.c:123
+#: ../cli/src/devices.c:131
 msgid "SPEED"
 msgstr "HITROST"
 
 #. 0
-#: ../cli/src/devices.c:132
+#: ../cli/src/devices.c:140
 msgid "CARRIER"
 msgstr "OPERATER"
 
 #. 0
-#: ../cli/src/devices.c:142
+#: ../cli/src/devices.c:150
 msgid "WEP"
 msgstr "WEP"
 
 #. 1
-#: ../cli/src/devices.c:143
+#: ../cli/src/devices.c:151
 msgid "WPA"
 msgstr "WPA"
 
 #. 2
-#: ../cli/src/devices.c:144
+#: ../cli/src/devices.c:152
 msgid "WPA2"
 msgstr "WPA2"
 
 #. 3
-#: ../cli/src/devices.c:145
+#: ../cli/src/devices.c:153
 msgid "TKIP"
 msgstr "TKIP"
 
 #. 4
-#: ../cli/src/devices.c:146
+#: ../cli/src/devices.c:154
 msgid "CCMP"
 msgstr "CCMP"
 
 #. 0
-#: ../cli/src/devices.c:156
+#: ../cli/src/devices.c:164
 msgid "CTR-FREQ"
 msgstr "CTR-FREQ"
 
 #. 1
-#: ../cli/src/devices.c:157
+#: ../cli/src/devices.c:165
 msgid "RSSI"
 msgstr "RSSI"
 
 #. 2
-#: ../cli/src/devices.c:158
+#: ../cli/src/devices.c:166
 msgid "CINR"
 msgstr "CINR"
 
 #. 3
-#: ../cli/src/devices.c:159
+#: ../cli/src/devices.c:167
 msgid "TX-POW"
 msgstr "TX-POW"
 
 #. 4
-#: ../cli/src/devices.c:160
+#: ../cli/src/devices.c:168
 msgid "BSID"
 msgstr "BSID"
 
 #. 0
-#: ../cli/src/devices.c:170
+#: ../cli/src/devices.c:178
 msgid "SSID"
 msgstr "SSID"
 
 #. 1
-#: ../cli/src/devices.c:171
+#: ../cli/src/devices.c:179
 msgid "BSSID"
 msgstr "BSSID"
 
 #. 2
-#: ../cli/src/devices.c:172
+#: ../cli/src/devices.c:180
 msgid "MODE"
 msgstr "NAČIN"
 
 #. 3
-#: ../cli/src/devices.c:173
+#: ../cli/src/devices.c:181
 msgid "FREQ"
 msgstr "FREKVENCA"
 
 #. 4
-#: ../cli/src/devices.c:174
+#: ../cli/src/devices.c:182
 msgid "RATE"
 msgstr "HITROST"
 
 #. 5
 #. 1
-#: ../cli/src/devices.c:175
-#: ../cli/src/devices.c:193
+#: ../cli/src/devices.c:183
+#: ../cli/src/devices.c:201
 msgid "SIGNAL"
 msgstr "SIGNAL"
 
 #. 6
-#: ../cli/src/devices.c:176
+#: ../cli/src/devices.c:184
 msgid "SECURITY"
 msgstr "VARNOST"
 
 #. 7
-#: ../cli/src/devices.c:177
+#: ../cli/src/devices.c:185
 msgid "WPA-FLAGS"
 msgstr "WPA-ZASTAVICE"
 
 #. 8
-#: ../cli/src/devices.c:178
+#: ../cli/src/devices.c:186
 msgid "RSN-FLAGS"
 msgstr "RSN-ZASTAVICE"
 
 #. 10
 #. 4
-#: ../cli/src/devices.c:180
-#: ../cli/src/devices.c:196
+#: ../cli/src/devices.c:188
+#: ../cli/src/devices.c:204
 msgid "ACTIVE"
 msgstr "DEJAVNO"
 
-#: ../cli/src/devices.c:213
+#: ../cli/src/devices.c:223
 #, c-format
 msgid ""
 "Usage: nmcli dev { COMMAND | help }\n"
@@ -947,6 +1234,8 @@ msgid ""
 "  list [iface <iface>]\n"
 "  disconnect iface <iface> [--nowait] [--timeout <timeout>]\n"
 "  wifi [list [iface <iface>] [bssid <BSSID>]]\n"
+"  wifi connect <(B)SSID> [password <password>] [wep-key-type key|phrase] [iface <iface>] [bssid <BSSID>] [name <name>]\n"
+"               [--private] [--nowait] [--timeout <timeout>]\n"
 "  wimax [list [iface <iface>] [nsp <name>]]\n"
 "\n"
 msgstr ""
@@ -959,470 +1248,283 @@ msgstr ""
 "  status\n"
 "  list [iface <vmesnik>]\n"
 "  disconnect iface <vmesnik> [--nowait] [--timeout <zakasnitev>]\n"
-"  wifi [list [iface <vmesnik>] [bssid <BSSID>]]\n"
+"  wifi connect <(B)SSID> [password <geslo>] [wep-key-type key|phrase] [iface <vmesnik>] [bssid <BSSID>] [name <ime>]\n"
+"               [--private] [--nowait] [--timeout <zakasnitev>]\n"
 "  wimax [list [iface <vmesnik>] [nsp <ime>]]\n"
 "\n"
 
-#: ../cli/src/devices.c:241
-msgid "unmanaged"
-msgstr "neupravljano"
-
-#: ../cli/src/devices.c:243
-msgid "unavailable"
-msgstr "ni razpoložljivo"
-
-#: ../cli/src/devices.c:245
-#: ../cli/src/network-manager.c:108
-msgid "disconnected"
-msgstr "povezava je prekinjena"
-
-#: ../cli/src/devices.c:247
-msgid "connecting (prepare)"
-msgstr "povezovanje  (priprava)"
-
-#: ../cli/src/devices.c:249
-msgid "connecting (configuring)"
-msgstr "povezovanje (nastavljanje)"
-
-#: ../cli/src/devices.c:251
-msgid "connecting (need authentication)"
-msgstr "povezovanje (zahteva overitev)"
-
-#: ../cli/src/devices.c:253
-msgid "connecting (getting IP configuration)"
-msgstr "povezovanje (pridobivanje nastavitev IP)"
-
-#: ../cli/src/devices.c:255
-msgid "connecting (checking IP connectivity)"
-msgstr "povezovanje (preverjanje povezljivosti IP)"
-
-#: ../cli/src/devices.c:257
-msgid "connecting (starting secondary connections)"
-msgstr "povezovanje (zagon drugotnih povezav)"
-
-#: ../cli/src/devices.c:259
-#: ../cli/src/network-manager.c:104
-msgid "connected"
-msgstr "povezano"
-
-#: ../cli/src/devices.c:263
-msgid "connection failed"
-msgstr "povezava je spodletela"
-
-#: ../cli/src/devices.c:274
-msgid "No reason given"
-msgstr "Razlog ni podan"
-
-#: ../cli/src/devices.c:277
-msgid "Unknown error"
-msgstr "Neznana napaka"
-
-#: ../cli/src/devices.c:280
-msgid "Device is now managed"
-msgstr "Naprava je zdaj upravljana"
-
-#: ../cli/src/devices.c:283
-msgid "Device is now unmanaged"
-msgstr "Naprava zdaj ni upravljana"
-
-#: ../cli/src/devices.c:286
-msgid "The device could not be readied for configuration"
-msgstr "Naprave ni mogoče pripraviti za prilagoditev"
-
-#: ../cli/src/devices.c:289
-msgid "IP configuration could not be reserved (no available address, timeout, etc)"
-msgstr "Prilagoditve IP ni mogoče rezervirati (naslov ni na voljo, časovna prekoračitev itn.)"
-
-#: ../cli/src/devices.c:292
-msgid "The IP configuration is no longer valid"
-msgstr "Prilagoditev IP ni več veljavna"
-
-#: ../cli/src/devices.c:295
-msgid "Secrets were required, but not provided"
-msgstr "Zahtevana so bila ustrezna gesla, ki pa niso bila podana"
-
-#: ../cli/src/devices.c:298
-msgid "802.1X supplicant disconnected"
-msgstr "Prosilnik 802.1X je odklopljen"
-
-#: ../cli/src/devices.c:301
-msgid "802.1X supplicant configuration failed"
-msgstr "Prilagoditev prosilnika 802.1X je spodletela"
-
-#: ../cli/src/devices.c:304
-msgid "802.1X supplicant failed"
-msgstr "Prosilnik 802.1X je spodletel"
-
-#: ../cli/src/devices.c:307
-msgid "802.1X supplicant took too long to authenticate"
-msgstr "Prosilnik 802.1X je potreboval preveč časa za overjanje"
-
-#: ../cli/src/devices.c:310
-msgid "PPP service failed to start"
-msgstr "Storitev PPP ni uspešno zagnana"
-
-#: ../cli/src/devices.c:313
-msgid "PPP service disconnected"
-msgstr "Storitev PPP je prekinjena"
-
-#: ../cli/src/devices.c:316
-msgid "PPP failed"
-msgstr "PPP je spodletel"
-
-#: ../cli/src/devices.c:319
-msgid "DHCP client failed to start"
-msgstr "Začenjanje odjemalca DHCP je spodletelo"
-
-#: ../cli/src/devices.c:322
-msgid "DHCP client error"
-msgstr "Napaka odjemalca DHCP"
-
-#: ../cli/src/devices.c:325
-msgid "DHCP client failed"
-msgstr "Odjemalec DHCP je spodletel"
-
-#: ../cli/src/devices.c:328
-msgid "Shared connection service failed to start"
-msgstr "Začenjanje storitve souporabe povezave je spodletelo."
-
-#: ../cli/src/devices.c:331
-msgid "Shared connection service failed"
-msgstr "Storitev souporabe povezave je spodletela."
-
-#: ../cli/src/devices.c:334
-msgid "AutoIP service failed to start"
-msgstr "Začenjanje storitve AutoIP je spodletelo."
-
-#: ../cli/src/devices.c:337
-msgid "AutoIP service error"
-msgstr "Napaka storitve AutoIP"
-
-#: ../cli/src/devices.c:340
-msgid "AutoIP service failed"
-msgstr "Storitev AutoIP je spodletela"
-
-#: ../cli/src/devices.c:343
-msgid "The line is busy"
-msgstr "Povezava je zasedena"
-
-#: ../cli/src/devices.c:346
-msgid "No dial tone"
-msgstr "Ni klicnega signala"
-
-#: ../cli/src/devices.c:349
-msgid "No carrier could be established"
-msgstr "Ni mogoče vzpostaviti signala povezave"
-
-#: ../cli/src/devices.c:352
-msgid "The dialing request timed out"
-msgstr "Zahteva klicanja je časovno potekla"
-
-#: ../cli/src/devices.c:355
-msgid "The dialing attempt failed"
-msgstr "Poskus klicanja je spodletel"
-
-#: ../cli/src/devices.c:358
-msgid "Modem initialization failed"
-msgstr "Začenjanje modema spodletelo"
-
-#: ../cli/src/devices.c:361
-msgid "Failed to select the specified APN"
-msgstr "Izbor določenega APN je spodletel"
-
-#: ../cli/src/devices.c:364
-msgid "Not searching for networks"
-msgstr "Iskanje omrežij ni dejavno"
-
-#: ../cli/src/devices.c:367
-msgid "Network registration denied"
-msgstr "Vpis omrežja je zavrnjen"
-
-#: ../cli/src/devices.c:370
-msgid "Network registration timed out"
-msgstr "Čas za vpis omrežja je potekel"
-
-#: ../cli/src/devices.c:373
-msgid "Failed to register with the requested network"
-msgstr "Vpis v zahtevano omrežje je spodletel"
-
-#: ../cli/src/devices.c:376
-msgid "PIN check failed"
-msgstr "Preverjanje PIN je spodletelo"
-
-#: ../cli/src/devices.c:379
-msgid "Necessary firmware for the device may be missing"
-msgstr "Morda napravi manjka zahtevana strojna programska oprema"
-
-#: ../cli/src/devices.c:382
-msgid "The device was removed"
-msgstr "Naprava je bila odstranjena"
-
-#: ../cli/src/devices.c:385
-msgid "NetworkManager went to sleep"
-msgstr "NetworkManager je prešel v pripravljenost"
-
-#: ../cli/src/devices.c:388
-msgid "The device's active connection disappeared"
-msgstr "Dejavna povezava naprave je izginila"
-
-#: ../cli/src/devices.c:391
-msgid "Device disconnected by user or client"
-msgstr "Uporabnik ali odjemalec je odklopil napravo"
-
-#: ../cli/src/devices.c:394
-msgid "Carrier/link changed"
-msgstr "Signal/Povezava se je spremenila"
-
-#: ../cli/src/devices.c:397
-msgid "The device's existing connection was assumed"
-msgstr "Predviden je bila obstoječa povezava naprave"
-
-#: ../cli/src/devices.c:400
-msgid "The supplicant is now available"
-msgstr "Prosilnik je zdaj na voljo"
-
-#: ../cli/src/devices.c:403
-msgid "The modem could not be found"
-msgstr "Modema ni mogoče najti."
-
-#: ../cli/src/devices.c:406
-msgid "The Bluetooth connection failed or timed out"
-msgstr "Povezava Bluetooth je spodletela ali pa je časovno potekla"
-
-#: ../cli/src/devices.c:409
-msgid "GSM Modem's SIM card not inserted"
-msgstr "Kartica SIM modema GSM ni vstavljena"
-
-#: ../cli/src/devices.c:412
-msgid "GSM Modem's SIM PIN required"
-msgstr "Zahtevana je koda PIN kartice SIM modema GSM"
-
-#: ../cli/src/devices.c:415
-msgid "GSM Modem's SIM PUK required"
-msgstr "Zahtevana je koda PUK kartice SIM modema GSM"
-
-#: ../cli/src/devices.c:418
-msgid "GSM Modem's SIM wrong"
-msgstr "Kartica SIM modema GSM ni ustrezna"
-
-#: ../cli/src/devices.c:421
-msgid "Infiniband device does not support connected mode"
-msgstr "Naprava Infiniband ne podpira povezanega načina"
-
-#: ../cli/src/devices.c:423
-#: ../cli/src/devices.c:446
-#: ../cli/src/devices.c:458
-#: ../cli/src/devices.c:578
-#: ../cli/src/devices.c:622
-msgid "Unknown"
-msgstr "Neznano"
-
-#: ../cli/src/devices.c:491
+#: ../cli/src/devices.c:323
 msgid "(none)"
 msgstr "(brez)"
 
-#: ../cli/src/devices.c:547
+#: ../cli/src/devices.c:379
 #, c-format
 msgid "%u MHz"
 msgstr "%u MHz"
 
-#: ../cli/src/devices.c:548
+#: ../cli/src/devices.c:380
 #, c-format
 msgid "%u MB/s"
 msgstr "%u MB/s"
 
-#: ../cli/src/devices.c:557
+#: ../cli/src/devices.c:389
 msgid "Encrypted: "
 msgstr "Šifrirano: "
 
-#: ../cli/src/devices.c:562
+#: ../cli/src/devices.c:394
 msgid "WEP "
 msgstr "WEP "
 
-#: ../cli/src/devices.c:564
+#: ../cli/src/devices.c:396
 msgid "WPA "
 msgstr "WPA "
 
-#: ../cli/src/devices.c:566
+#: ../cli/src/devices.c:398
 msgid "WPA2 "
 msgstr "WPA2 "
 
-#: ../cli/src/devices.c:569
+#: ../cli/src/devices.c:401
 msgid "Enterprise "
 msgstr "Podjetniški "
 
-#: ../cli/src/devices.c:578
+#: ../cli/src/devices.c:410
 msgid "Ad-Hoc"
 msgstr "Ad-Hoc"
 
-#: ../cli/src/devices.c:578
+#: ../cli/src/devices.c:410
 msgid "Infrastructure"
 msgstr "infrastruktura"
 
-#: ../cli/src/devices.c:613
+#: ../cli/src/devices.c:445
 msgid "Home"
 msgstr "Domov"
 
-#: ../cli/src/devices.c:616
+#: ../cli/src/devices.c:448
 msgid "Partner"
 msgstr "Partner"
 
-#: ../cli/src/devices.c:619
+#: ../cli/src/devices.c:451
 msgid "Roaming"
 msgstr "Gostovanje"
 
-#: ../cli/src/devices.c:691
+#: ../cli/src/devices.c:523
 #, c-format
 msgid "Error: 'dev list': %s"
 msgstr "Napaka: 'dev list': %s"
 
-#: ../cli/src/devices.c:693
+#: ../cli/src/devices.c:525
 #, c-format
 msgid "Error: 'dev list': %s; allowed fields: %s"
 msgstr "Napaka: 'dev list': %s; dovoljena polja: %s"
 
-#: ../cli/src/devices.c:702
+#: ../cli/src/devices.c:534
 msgid "Device details"
 msgstr "Podrobnosti naprave"
 
-#: ../cli/src/devices.c:744
-#: ../cli/src/devices.c:745
-#: ../cli/src/devices.c:1152
-#: ../cli/src/utils.c:445
+#: ../cli/src/devices.c:579
+#: ../cli/src/devices.c:582
+#: ../cli/src/devices.c:1000
+#: ../cli/src/utils.c:477
 msgid "(unknown)"
 msgstr "(neznano)"
 
-#: ../cli/src/devices.c:753
+#: ../cli/src/devices.c:591
 msgid "not connected"
 msgstr "brez povezave"
 
-#: ../cli/src/devices.c:780
+#: ../cli/src/devices.c:618
 #, c-format
 msgid "%u Mb/s"
 msgstr "%u Mb/s"
 
 #. Print header
 #. "WIRED-PROPERTIES"
-#: ../cli/src/devices.c:853
+#: ../cli/src/devices.c:691
 msgid "on"
 msgstr "omogočeno"
 
-#: ../cli/src/devices.c:853
+#: ../cli/src/devices.c:691
 msgid "off"
 msgstr "onemogočeno"
 
-#: ../cli/src/devices.c:1004
+#: ../cli/src/devices.c:842
 #, c-format
 msgid "Error: 'dev status': %s"
 msgstr "Napaka: 'dev status': %s"
 
-#: ../cli/src/devices.c:1006
+#: ../cli/src/devices.c:844
 #, c-format
 msgid "Error: 'dev status': %s; allowed fields: %s"
 msgstr "Napaka: 'dev status': %s; dovoljena polja: %s"
 
-#: ../cli/src/devices.c:1029
+#: ../cli/src/devices.c:867
 msgid "Status of devices"
 msgstr "Stanje naprav"
 
-#: ../cli/src/devices.c:1060
+#: ../cli/src/devices.c:898
 #, c-format
 msgid "Error: '%s' argument is missing."
 msgstr "Napaka: manjka argument '%s'"
 
-#: ../cli/src/devices.c:1101
-#: ../cli/src/devices.c:1253
-#: ../cli/src/devices.c:1390
-#: ../cli/src/devices.c:1609
+#: ../cli/src/devices.c:939
+#: ../cli/src/devices.c:1104
+#: ../cli/src/devices.c:1245
+#: ../cli/src/devices.c:1892
 #, c-format
 msgid "Error: Device '%s' not found."
 msgstr "Napaka: naprave '%s' ni mogoče najti"
 
-#: ../cli/src/devices.c:1124
+#: ../cli/src/devices.c:962
 #, c-format
 msgid "Success: Device '%s' successfully disconnected."
 msgstr "Obvestilo: povezava naprave '%s' je uspešno prekinjena."
 
-#: ../cli/src/devices.c:1149
+#: ../cli/src/devices.c:997
 #, c-format
 msgid "Error: Device '%s' (%s) disconnecting failed: %s"
 msgstr "Napaka: prišlo je do napake med prekinjanjem naprave '%s' (%s): %s"
 
-#: ../cli/src/devices.c:1157
+#: ../cli/src/devices.c:1010
 #, c-format
-msgid "Device state: %d (%s)\n"
-msgstr "Stanje naprave: %d (%s)\n"
+msgid "Device '%s' has been disconnected.\n"
+msgstr "Naprava '%s' je bila odklopljena.\n"
 
-#: ../cli/src/devices.c:1222
+#: ../cli/src/devices.c:1073
 #, c-format
 msgid "Error: iface has to be specified."
 msgstr "Napaka: iface nastavitev mora določena."
 
-#: ../cli/src/devices.c:1348
+#: ../cli/src/devices.c:1203
 #, c-format
 msgid "Error: 'dev wifi': %s"
 msgstr "Napaka: 'dev wifi': %s"
 
-#: ../cli/src/devices.c:1350
+#: ../cli/src/devices.c:1205
 #, c-format
 msgid "Error: 'dev wifi': %s; allowed fields: %s"
 msgstr "Napaka: 'dev wifi': %s; dovoljena polja: %s"
 
-#: ../cli/src/devices.c:1373
+#: ../cli/src/devices.c:1228
 msgid "WiFi scan list"
 msgstr "WiFi seznam preiskovanja"
 
-#: ../cli/src/devices.c:1410
-#: ../cli/src/devices.c:1464
+#: ../cli/src/devices.c:1265
+#: ../cli/src/devices.c:1319
 #, c-format
 msgid "Error: Access point with bssid '%s' not found."
 msgstr "Napaka: dostopne točke z bssid '%s' ni mogoče najti."
 
-#: ../cli/src/devices.c:1427
+#: ../cli/src/devices.c:1282
 #, c-format
 msgid "Error: Device '%s' is not a WiFi device."
 msgstr "Napaka: naprava '%s' ni veljavna WiFi naprava."
 
-#: ../cli/src/devices.c:1491
+#: ../cli/src/devices.c:1350
+#: ../cli/src/devices.c:1396
+#, c-format
+msgid "Connection with UUID '%s' created and activated on device '%s'\n"
+msgstr "Povezava z UUID '%s' na napravi '%s' ustvarjena in aktivirana\n"
+
+#: ../cli/src/devices.c:1355
+#, c-format
+msgid "Error: Connection activation failed: (%d) %s."
+msgstr "Napaka: začenjanje povezave ni uspelo: (%d) %s."
+
+#: ../cli/src/devices.c:1380
+#, c-format
+msgid "Error: Failed to add/activate new connection: (%d) %s"
+msgstr "Napaka: dodajanje/aktiviranje nove povezave je spodletelo: (%d) %s"
+
+#: ../cli/src/devices.c:1388
+#, c-format
+msgid "Error: Failed to add/activate new connection: Unknown error"
+msgstr "Napaka: dodajanje/aktivacija nove povezave ni uspela - neznana napaka"
+
+#: ../cli/src/devices.c:1532
+#, c-format
+msgid "Error: SSID or BSSID are missing."
+msgstr "Napaka: manjka SSID ali BSSID."
+
+#: ../cli/src/devices.c:1555
+#, c-format
+msgid "Error: bssid argument value '%s' is not a valid BSSID."
+msgstr "Napaka: vrednost bssid '%s' ni veljavna oznaka BSSID."
+
+#: ../cli/src/devices.c:1579
+#, c-format
+msgid "Error: wep-key-type argument value '%s' is invalid, use 'key' or 'phrase'."
+msgstr "Napaka: vrednost wep-key-type '%s' ni veljavna, uporabite zgolj 'key' ali 'phrase'."
+
+#: ../cli/src/devices.c:1619
+#, c-format
+msgid "Error: BSSID to connect to (%s) differs from bssid argument (%s)."
+msgstr "Napaka: BSSID za povezavo z (%s) se razlikuje od podane vrednosti bssid (%s)."
+
+#: ../cli/src/devices.c:1625
+#, c-format
+msgid "Error: Parameter '%s' is neither SSID nor BSSID."
+msgstr "Napaka: parameter '%s' ni niti SSID niti BSSID."
+
+#: ../cli/src/devices.c:1654
+#, c-format
+msgid "Error: Device '%s' is not a Wi-Fi device."
+msgstr "Napaka: naprava '%s' ni naprava WiFi."
+
+#: ../cli/src/devices.c:1656
+#, c-format
+msgid "Error: No Wi-Fi device found."
+msgstr "Napaka: naprave WiFi ni mogoče najti."
+
+#: ../cli/src/devices.c:1674
+#, c-format
+msgid "Error: No network with SSID '%s' found."
+msgstr "Napaka: omrežja s SSID '%s' ni mogoče najti."
+
+#: ../cli/src/devices.c:1676
+#, c-format
+msgid "Error: No access point with BSSID '%s' found."
+msgstr "Napaka: dostopne točke z BSSID '%s' ni mogoče najti."
+
+#: ../cli/src/devices.c:1774
 #, c-format
 msgid "Error: 'dev wifi' command '%s' is not valid."
 msgstr "Napaka: 'dev wifi' ukaz '%s' ni veljaven."
 
-#: ../cli/src/devices.c:1567
+#: ../cli/src/devices.c:1850
 #, c-format
 msgid "Error: 'dev wimax': %s"
 msgstr "Napaka: 'dev wimax': %s"
 
-#: ../cli/src/devices.c:1569
+#: ../cli/src/devices.c:1852
 #, c-format
 msgid "Error: 'dev wimax': %s; allowed fields: %s"
 msgstr "Napaka: 'dev wimax': %s; dovoljena polja: %s"
 
-#: ../cli/src/devices.c:1592
+#: ../cli/src/devices.c:1875
 msgid "WiMAX NSP list"
 msgstr "Seznam ponudnikov storitev WiMAX"
 
-#: ../cli/src/devices.c:1629
+#: ../cli/src/devices.c:1912
 #, c-format
 msgid "Error: NSP with name '%s' not found."
 msgstr "Napaka: ponudnika omrežnih storitev '%s' ni mogoče najti"
 
-#: ../cli/src/devices.c:1640
+#: ../cli/src/devices.c:1923
 #, c-format
 msgid "Error: Device '%s' is not a WiMAX device."
 msgstr "Napaka: naprava '%s' ni naprava WiMAX."
 
-#: ../cli/src/devices.c:1671
+#: ../cli/src/devices.c:1954
 #, c-format
 msgid "Error: Access point with nsp '%s' not found."
 msgstr "Napaka: dostopne točke z nsp '%s' ni mogoče najti."
 
-#: ../cli/src/devices.c:1698
+#: ../cli/src/devices.c:1981
 #, c-format
 msgid "Error: 'dev wimax' command '%s' is not valid."
 msgstr "Napaka: 'dev wimax' ukaz '%s' ni veljaven."
 
-#: ../cli/src/devices.c:1748
+#: ../cli/src/devices.c:2031
 #, c-format
 msgid "Error: 'dev' command '%s' is not valid."
 msgstr "Napaka: 'dev' ukaz '%s' ni veljaven."
@@ -1471,16 +1573,26 @@ msgstr "WIFI-STROJNA OPREMA"
 msgid "WIMAX"
 msgstr "WIMAX"
 
-#: ../cli/src/network-manager.c:67
+#: ../cli/src/network-manager.c:62
+msgid "PERMISSION"
+msgstr "DOVOLJENJE"
+
+#. 0
+#: ../cli/src/network-manager.c:63
+msgid "VALUE"
+msgstr "VREDNOST"
+
+#: ../cli/src/network-manager.c:77
 #, c-format
 msgid ""
 "Usage: nmcli nm { COMMAND | help }\n"
 "\n"
-"  COMMAND := { status | enable | sleep | wifi | wwan | wimax }\n"
+"  COMMAND := { status | permissions | enable | sleep | wifi | wwan | wimax }\n"
 "\n"
-"  COMMAND := { status | enable | sleep | wifi | wwan }\n"
+"  COMMAND := { status | permissions | enable | sleep | wifi | wwan }\n"
 "\n"
 "  status\n"
+"  permissions\n"
 "  enable [true|false]\n"
 "  sleep [true|false]\n"
 "  wifi [on|off]\n"
@@ -1490,11 +1602,12 @@ msgid ""
 msgstr ""
 "Uporaba: nmcli nm { UKAZ | help }\n"
 "\n"
-"  UKAZ := { status | enable | sleep | wifi | wwan | wimax}\n"
+"  UKAZ := { status | permissions | enable | sleep | wifi | wwan | wimax}\n"
 "\n"
-"  UKAZ := { status | enable | sleep | wifi | wwan}\n"
+"  UKAZ := { status | permissions | enable | sleep | wifi | wwan}\n"
 "\n"
 "  status\n"
+"  permissions\n"
 "  enable [true|false]\n"
 "  sleep [true|false]\n"
 "  wifi [on|off]\n"
@@ -1502,149 +1615,167 @@ msgstr ""
 "  wimax [on|off]\n"
 "\n"
 
-#: ../cli/src/network-manager.c:96
+#: ../cli/src/network-manager.c:108
 msgid "asleep"
 msgstr "v mirovanju"
 
-#: ../cli/src/network-manager.c:98
+#: ../cli/src/network-manager.c:110
 msgid "connecting"
 msgstr "povezovanje"
 
-#: ../cli/src/network-manager.c:100
+#: ../cli/src/network-manager.c:112
 msgid "connected (local only)"
 msgstr "povezan (le krajevno)"
 
-#: ../cli/src/network-manager.c:102
+#: ../cli/src/network-manager.c:114
 msgid "connected (site only)"
 msgstr "povezan (le mesto)"
 
-#: ../cli/src/network-manager.c:106
+#: ../cli/src/network-manager.c:118
 msgid "disconnecting"
 msgstr "prekinjanje povezave"
 
-#: ../cli/src/network-manager.c:146
+#: ../cli/src/network-manager.c:158
 #, c-format
 msgid "Error: 'nm status': %s"
 msgstr "Napaka: 'nm status': %s"
 
-#: ../cli/src/network-manager.c:148
+#: ../cli/src/network-manager.c:160
 #, c-format
 msgid "Error: 'nm status': %s; allowed fields: %s"
 msgstr "Napaka: 'nm status': %s; dovoljena polja: %s"
 
 #. create NMClient
-#: ../cli/src/network-manager.c:161
-#: ../cli/src/network-manager.c:162
-#: ../cli/src/network-manager.c:163
-#: ../cli/src/network-manager.c:164
-#: ../cli/src/network-manager.c:165
-#: ../cli/src/network-manager.c:167
-#: ../cli/src/network-manager.c:168
-#: ../cli/src/network-manager.c:289
-#: ../cli/src/network-manager.c:344
-#: ../cli/src/network-manager.c:382
-#: ../cli/src/network-manager.c:421
+#: ../cli/src/network-manager.c:173
+#: ../cli/src/network-manager.c:174
+#: ../cli/src/network-manager.c:175
+#: ../cli/src/network-manager.c:176
+#: ../cli/src/network-manager.c:177
+#: ../cli/src/network-manager.c:179
+#: ../cli/src/network-manager.c:180
+#: ../cli/src/network-manager.c:429
+#: ../cli/src/network-manager.c:484
+#: ../cli/src/network-manager.c:522
+#: ../cli/src/network-manager.c:561
 msgid "enabled"
 msgstr "omogočeno"
 
-#: ../cli/src/network-manager.c:161
-#: ../cli/src/network-manager.c:162
-#: ../cli/src/network-manager.c:163
-#: ../cli/src/network-manager.c:164
-#: ../cli/src/network-manager.c:165
-#: ../cli/src/network-manager.c:167
-#: ../cli/src/network-manager.c:168
-#: ../cli/src/network-manager.c:289
-#: ../cli/src/network-manager.c:344
-#: ../cli/src/network-manager.c:382
-#: ../cli/src/network-manager.c:421
+#: ../cli/src/network-manager.c:173
+#: ../cli/src/network-manager.c:174
+#: ../cli/src/network-manager.c:175
+#: ../cli/src/network-manager.c:176
+#: ../cli/src/network-manager.c:177
+#: ../cli/src/network-manager.c:179
+#: ../cli/src/network-manager.c:180
+#: ../cli/src/network-manager.c:429
+#: ../cli/src/network-manager.c:484
+#: ../cli/src/network-manager.c:522
+#: ../cli/src/network-manager.c:561
 msgid "disabled"
 msgstr "onemogočeno"
 
-#: ../cli/src/network-manager.c:181
+#: ../cli/src/network-manager.c:193
 msgid "NetworkManager status"
 msgstr "Stanje NetworkManager"
 
 #. Print header
-#: ../cli/src/network-manager.c:184
+#: ../cli/src/network-manager.c:196
 msgid "running"
 msgstr "v teku"
 
-#: ../cli/src/network-manager.c:184
+#: ../cli/src/network-manager.c:196
 msgid "not running"
 msgstr "ni v teku"
 
-#: ../cli/src/network-manager.c:215
-#: ../cli/src/utils.c:425
+#: ../cli/src/network-manager.c:271
+msgid "auth"
+msgstr "overjanje"
+
+#: ../cli/src/network-manager.c:301
+#, c-format
+msgid "Error: 'nm permissions': %s"
+msgstr "Napaka: 'nm permissions': %s"
+
+#: ../cli/src/network-manager.c:303
+#, c-format
+msgid "Error: 'nm permissions': %s; allowed fields: %s"
+msgstr "Napaka: 'nm permissions': %s; dovoljena polja: %s"
+
+#: ../cli/src/network-manager.c:324
+msgid "NetworkManager permissions"
+msgstr "Pravice NetworkManager"
+
+#: ../cli/src/network-manager.c:350
+#: ../cli/src/utils.c:457
 #, c-format
 msgid "Error: Couldn't connect to system bus: %s"
 msgstr "Napaka: ni se mogoče povezati s sistemskim vodilom: %s"
 
-#: ../cli/src/network-manager.c:226
+#: ../cli/src/network-manager.c:361
 #, c-format
 msgid "Error: Couldn't create D-Bus object proxy."
 msgstr "Napaka: ni mogoče ustvariti posredniškega predmeta vodila D-Bus."
 
-#: ../cli/src/network-manager.c:232
+#: ../cli/src/network-manager.c:367
 #, c-format
 msgid "Error in sleep: %s"
 msgstr "Napaka v mirovanju: %s"
 
-#: ../cli/src/network-manager.c:276
-#: ../cli/src/network-manager.c:331
-#: ../cli/src/network-manager.c:369
-#: ../cli/src/network-manager.c:408
+#: ../cli/src/network-manager.c:416
+#: ../cli/src/network-manager.c:471
+#: ../cli/src/network-manager.c:509
+#: ../cli/src/network-manager.c:548
 #, c-format
 msgid "Error: '--fields' value '%s' is not valid here; allowed fields: %s"
 msgstr "Napaka: vrednost '--fields' '%s' ni veljavna, dovoljena polja: %s"
 
-#: ../cli/src/network-manager.c:284
+#: ../cli/src/network-manager.c:424
 msgid "Networking enabled"
 msgstr "Omrežje je omogočeno"
 
-#: ../cli/src/network-manager.c:300
+#: ../cli/src/network-manager.c:440
 #, c-format
 msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'."
 msgstr "Napaka: neveljaven parameter 'enable': '%s'; uporabite 'true' ali 'false'."
 
-#: ../cli/src/network-manager.c:310
+#: ../cli/src/network-manager.c:450
 #, c-format
 msgid "Error: Sleeping status is not exported by NetworkManager."
 msgstr "Napaka: stanje v mirovanju ni izvoženo s programom NetworkManager."
 
-#: ../cli/src/network-manager.c:318
+#: ../cli/src/network-manager.c:458
 #, c-format
 msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'."
 msgstr "Napaka: neveljaven parameter 'sleep': '%s'; uporabite 'true' ali 'false'."
 
-#: ../cli/src/network-manager.c:339
+#: ../cli/src/network-manager.c:479
 msgid "WiFi enabled"
 msgstr "WiFi je omogočen"
 
-#: ../cli/src/network-manager.c:355
+#: ../cli/src/network-manager.c:495
 #, c-format
 msgid "Error: invalid 'wifi' parameter: '%s'."
 msgstr "Napaka: neveljaven 'wifi' parameter: '%s'."
 
-#: ../cli/src/network-manager.c:377
+#: ../cli/src/network-manager.c:517
 msgid "WWAN enabled"
 msgstr "WWAN je omogočen"
 
-#: ../cli/src/network-manager.c:393
+#: ../cli/src/network-manager.c:533
 #, c-format
 msgid "Error: invalid 'wwan' parameter: '%s'."
 msgstr "Napaka: neveljaven 'wwan' parameter: '%s'."
 
-#: ../cli/src/network-manager.c:416
+#: ../cli/src/network-manager.c:556
 msgid "WiMAX enabled"
 msgstr "WiMAX je omogočen"
 
-#: ../cli/src/network-manager.c:432
+#: ../cli/src/network-manager.c:572
 #, c-format
 msgid "Error: invalid 'wimax' parameter: '%s'."
 msgstr "Napaka: neveljaven parameter 'wimax': '%s'."
 
-#: ../cli/src/network-manager.c:445
+#: ../cli/src/network-manager.c:585
 #, c-format
 msgid "Error: 'nm' command '%s' is not valid."
 msgstr "Napaka: ukaz 'nm' '%s' ni veljaven"
@@ -1753,94 +1884,103 @@ msgstr "Napaka: ni mogoče ustvariti predmeta NMClient."
 msgid "Success"
 msgstr "Uspešno zaključeno"
 
-#: ../cli/src/settings.c:465
+#: ../cli/src/settings.c:517
 #, c-format
 msgid "%d (hex-ascii-key)"
 msgstr "%d (šestnajstiški-ascii-ključ)"
 
-#: ../cli/src/settings.c:467
+#: ../cli/src/settings.c:519
 #, c-format
 msgid "%d (104/128-bit passphrase)"
 msgstr "%d (104/128-bitno šifrirno geslo)"
 
-#: ../cli/src/settings.c:470
+#: ../cli/src/settings.c:522
 #, c-format
 msgid "%d (unknown)"
 msgstr "%d (neznano)"
 
-#: ../cli/src/settings.c:496
+#: ../cli/src/settings.c:548
 msgid "0 (unknown)"
 msgstr "0 (neznano)"
 
-#: ../cli/src/settings.c:502
+#: ../cli/src/settings.c:554
 msgid "any, "
 msgstr "karkoli, "
 
-#: ../cli/src/settings.c:504
+#: ../cli/src/settings.c:556
 msgid "900 MHz, "
 msgstr "900 MHz, "
 
-#: ../cli/src/settings.c:506
+#: ../cli/src/settings.c:558
 msgid "1800 MHz, "
 msgstr "1800 MHz, "
 
-#: ../cli/src/settings.c:508
+#: ../cli/src/settings.c:560
 msgid "1900 MHz, "
 msgstr "1900 MHz, "
 
-#: ../cli/src/settings.c:510
+#: ../cli/src/settings.c:562
 msgid "850 MHz, "
 msgstr "850 MHz, "
 
-#: ../cli/src/settings.c:512
+#: ../cli/src/settings.c:564
 msgid "WCDMA 3GPP UMTS 2100 MHz, "
 msgstr "WCDMA 3GPP UMTS 2100 MHz, "
 
-#: ../cli/src/settings.c:514
+#: ../cli/src/settings.c:566
 msgid "WCDMA 3GPP UMTS 1800 MHz, "
 msgstr "WCDMA 3GPP UMTS 1800 MHz, "
 
-#: ../cli/src/settings.c:516
+#: ../cli/src/settings.c:568
 msgid "WCDMA 3GPP UMTS 1700/2100 MHz, "
 msgstr "WCDMA 3GPP UMTS 1700/2100 MHz, "
 
-#: ../cli/src/settings.c:518
+#: ../cli/src/settings.c:570
 msgid "WCDMA 3GPP UMTS 800 MHz, "
 msgstr "WCDMA 3GPP UMTS 800 MHz, "
 
-#: ../cli/src/settings.c:520
+#: ../cli/src/settings.c:572
 msgid "WCDMA 3GPP UMTS 850 MHz, "
 msgstr "WCDMA 3GPP UMTS 850 MHz, "
 
-#: ../cli/src/settings.c:522
+#: ../cli/src/settings.c:574
 msgid "WCDMA 3GPP UMTS 900 MHz, "
 msgstr "WCDMA 3GPP UMTS 900 MHz, "
 
-#: ../cli/src/settings.c:524
+#: ../cli/src/settings.c:576
 msgid "WCDMA 3GPP UMTS 1700 MHz, "
 msgstr "WCDMA 3GPP UMTS 1700 MHz, "
 
-#: ../cli/src/settings.c:526
+#: ../cli/src/settings.c:578
 msgid "WCDMA 3GPP UMTS 1900 MHz, "
 msgstr "WCDMA 3GPP UMTS 900 MHz, "
 
-#: ../cli/src/settings.c:528
+#: ../cli/src/settings.c:580
 msgid "WCDMA 3GPP UMTS 2600 MHz, "
 msgstr "WCDMA 3GPP UMTS 2100 MHz, "
 
-#: ../cli/src/settings.c:650
-#: ../cli/src/settings.c:846
-#: ../cli/src/settings.c:1550
+#: ../cli/src/settings.c:598
+msgid "0 (NONE)"
+msgstr "0 (BREZ)"
+
+#: ../cli/src/settings.c:604
+msgid "REORDER_HEADERS, "
+msgstr "PRERAZVRSTI_GLAVE,"
+
+#: ../cli/src/settings.c:606
+msgid "GVRP, "
+msgstr "GVRP,"
+
+#: ../cli/src/settings.c:608
+msgid "LOOSE_BINDING, "
+msgstr "OHLAPNE_VEZAVE,"
+
+#: ../cli/src/settings.c:751
+#: ../cli/src/settings.c:947
+#: ../cli/src/settings.c:1651
 msgid "auto"
 msgstr "samodejno"
 
-#: ../cli/src/settings.c:840
-#: ../cli/src/settings.c:843
-#: ../cli/src/settings.c:844
-#: ../cli/src/utils.c:247
-msgid "not set"
-msgstr "ni nastavljeno"
-
 #: ../cli/src/utils.c:103
 #, c-format
 msgid "Error converting IP4 address '0x%X' to text form"
@@ -1851,42 +1991,42 @@ msgstr "Napaka med pretvarjanjem naslova IP4 '0x%X' v besedilno obliko"
 msgid "Error converting IP6 address '%s' to text form"
 msgstr "Napaka med pretvarjanjem naslova IP6 '%s' v besedilno obliko"
 
-#: ../cli/src/utils.c:200
+#: ../cli/src/utils.c:232
 #, c-format
 msgid "field '%s' has to be alone"
 msgstr "polje '%s' mora biti samostojno."
 
-#: ../cli/src/utils.c:203
+#: ../cli/src/utils.c:235
 #, c-format
 msgid "invalid field '%s'"
 msgstr "neveljavno polje '%s'"
 
-#: ../cli/src/utils.c:222
+#: ../cli/src/utils.c:254
 #, c-format
 msgid "Option '--terse' requires specifying '--fields'"
 msgstr "Možnost '--terse' zahteva podan argument '--fields'"
 
-#: ../cli/src/utils.c:226
+#: ../cli/src/utils.c:258
 #, c-format
 msgid "Option '--terse' requires specific '--fields' option values , not '%s'"
 msgstr "Možnost '--terse' zahteva posebne vrednosti '--polja' in ne '%s'"
 
-#: ../cli/src/utils.c:436
+#: ../cli/src/utils.c:468
 #, c-format
 msgid "Error: Couldn't create D-Bus object proxy for org.freedesktop.DBus"
 msgstr "Napaka: ni mogoče ustvariti posredniškega predmeta D-Bus za org.freedesktop.DBus"
 
-#: ../cli/src/utils.c:444
+#: ../cli/src/utils.c:476
 #, c-format
 msgid "Error: NameHasOwner request failed: %s"
 msgstr "Napaka: zahteva NameHasOwner ni uspela: %s"
 
-#: ../cli/src/utils.c:489
+#: ../cli/src/utils.c:521
 #, c-format
 msgid "Warning: nmcli (%s) and NetworkManager (%s) versions don't match. Use --nocheck to suppress the warning.\n"
 msgstr "Opozorilo: različici nmcli (%s) in NetworkManager (%s) se ne ujemata. Uporabite --nocheck, da onemogočite opozorilo.\n"
 
-#: ../cli/src/utils.c:498
+#: ../cli/src/utils.c:530
 #, c-format
 msgid "Error: nmcli (%s) and NetworkManager (%s) versions don't match. Force execution using --nocheck, but the results are unpredictable."
 msgstr "Napaka: različici nmcli (%s) in NetworkManager (%s) se ne ujemata. Izvajanje vsilite z --nocheck, rezultati pa niso napovedljivi."
@@ -2240,26 +2380,26 @@ msgstr "Datoteke PCKS#12 ni mogoče preveriti: %d"
 msgid "Could not generate random data."
 msgstr "Naključnih podatkov ni mogoče ustvariti."
 
-#: ../libnm-util/nm-utils.c:2034
+#: ../libnm-util/nm-utils.c:2040
 #, c-format
 msgid "Not enough memory to make encryption key."
 msgstr "Ni dovolj pomnilnika za ustvarjanje šifrirnega ključa."
 
-#: ../libnm-util/nm-utils.c:2144
+#: ../libnm-util/nm-utils.c:2150
 msgid "Could not allocate memory for PEM file creation."
 msgstr "Ni mogoče dodeliti pomnilnika za ustvarjanje datoteke PEM."
 
-#: ../libnm-util/nm-utils.c:2156
+#: ../libnm-util/nm-utils.c:2162
 #, c-format
 msgid "Could not allocate memory for writing IV to PEM file."
 msgstr "Ni mogoče dodeliti pomnilnika za zapis IV v datoteko PEM."
 
-#: ../libnm-util/nm-utils.c:2168
+#: ../libnm-util/nm-utils.c:2174
 #, c-format
 msgid "Could not allocate memory for writing encrypted key to PEM file."
 msgstr "Ni mogoče dodeliti pomnilnika za zapis šifriranega ključa v datoteko PEM."
 
-#: ../libnm-util/nm-utils.c:2187
+#: ../libnm-util/nm-utils.c:2193
 #, c-format
 msgid "Could not allocate memory for PEM file data."
 msgstr "Ni mogoče dodeliti pomnilnika za podatke datoteke PEM."
@@ -2352,101 +2492,106 @@ msgstr "Spremeni trajno sistemsko ime gostitelja"
 msgid "System policy prevents modification of the persistent system hostname"
 msgstr "Sistemska pravila preprečujejo spremembo imena gostitelja trajnega sistema"
 
-#: ../src/main.c:143
+#: ../src/main.c:158
+#, c-format
+msgid "Failed to set signal mask: %d"
+msgstr "Določanje maske signala je spodletelo: %d"
+
+#: ../src/main.c:167
 #, c-format
-msgid "Failed to initialize SIGTERM pipe: %d"
-msgstr "Začenjanje veci SIGTERM je spodletelo: %d"
+msgid "Failed to create signal handling thread: %d"
+msgstr "Ustvarjanje niti obravnave signala je spodletelo: %d"
 
-#: ../src/main.c:174
+#: ../src/main.c:182
 #, c-format
 msgid "Opening %s failed: %s\n"
 msgstr "Odpiranje %s je spodletelo: %s\n"
 
-#: ../src/main.c:180
+#: ../src/main.c:188
 #, c-format
 msgid "Writing to %s failed: %s\n"
 msgstr "Zapisovanje v %s je spodletelo: %s\n"
 
-#: ../src/main.c:185
+#: ../src/main.c:193
 #, c-format
 msgid "Closing %s failed: %s\n"
 msgstr "Zapiranje %s je spodletelo: %s\n"
 
-#: ../src/main.c:228
+#: ../src/main.c:236
 #, c-format
 msgid "NetworkManager is already running (pid %ld)\n"
 msgstr "Program NetworkManager je že zagnan (pid %ld)\n"
 
-#: ../src/main.c:368
+#: ../src/main.c:376
 msgid "Print NetworkManager version and exit"
 msgstr "Izpiši različico programa NetworkManager in končaj"
 
-#: ../src/main.c:369
+#: ../src/main.c:377
 msgid "Don't become a daemon"
 msgstr "Ne postani ozadnji program"
 
-#: ../src/main.c:370
+#: ../src/main.c:378
 msgid "Make all warnings fatal"
 msgstr "Vsa opozorila naj bodo podana kot usodna"
 
-#: ../src/main.c:371
+#: ../src/main.c:379
 msgid "Specify the location of a PID file"
 msgstr "Določite mesto datoteke PID"
 
-#: ../src/main.c:371
+#: ../src/main.c:379
 msgid "filename"
 msgstr "ime datoteke"
 
-#: ../src/main.c:372
+#: ../src/main.c:380
 msgid "State file location"
 msgstr "Mesto datoteke stanja"
 
-#: ../src/main.c:372
+#: ../src/main.c:380
 msgid "/path/to/state.file"
 msgstr "/pot/do/state.file"
 
-#: ../src/main.c:373
+#: ../src/main.c:381
 msgid "Config file location"
 msgstr "Mesto datoteke nastavitev"
 
-#: ../src/main.c:373
+#: ../src/main.c:381
 msgid "/path/to/config.file"
 msgstr "/pot/do/config.file"
 
-#: ../src/main.c:374
+#: ../src/main.c:382
 msgid "List of plugins separated by ','"
 msgstr "Seznam vstavkov, ločenih z vejico"
 
-#: ../src/main.c:374
+#: ../src/main.c:382
 msgid "plugin1,plugin2"
 msgstr "vstavek1,vstavek2"
 
 #. Translators: Do not translate the values in the square brackets
-#: ../src/main.c:376
+#: ../src/main.c:384
 msgid "Log level: one of [ERR, WARN, INFO, DEBUG]"
 msgstr "Raven beleženja: ena izmed [ERR, WARN, INFO, DEBUG]"
 
 #. Translators: Do not translate the values in the square brackets
-#: ../src/main.c:379
+#: ../src/main.c:387
 msgid ""
 "Log domains separated by ',': any combination of\n"
 "                                          [NONE,HW,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,\n"
 "                                           WIFI_SCAN,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,\n"
 "                                           AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,WIMAX,\n"
-"                                           INFINIBAND,FIREWALL]"
+"                                           INFINIBAND,FIREWALL,ADSL]"
 msgstr ""
 "Beleži domene, ločene z vejico: poljubna kombinacija\n"
 "                                          [NONE,HW,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,\n"
 "                                           WIFI_SCAN,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,\n"
 "                                           AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,WIMAX,\n"
-"                                           INFINIBAND,FIREWALL]"
+"                                           INFINIBAND,FIREWALL,ADSL]"
 
-#: ../src/main.c:392
+#: ../src/main.c:400
 #, c-format
 msgid "GModules are not supported on your platform!\n"
 msgstr "V vašem sistemskem okolju Gmoduli niso podprti!\n"
 
-#: ../src/main.c:411
+#: ../src/main.c:423
 msgid ""
 "NetworkManager monitors all network connections and automatically\n"
 "chooses the best connection to use.  It also allows the user to\n"
@@ -2458,32 +2603,32 @@ msgstr ""
 "brezžičnih dostopnih točk, s katerimi naj se povezujejo\n"
 "brezžični omrežni vmesniki računalnika."
 
-#: ../src/main.c:417
+#: ../src/main.c:429
 #, c-format
 msgid "Invalid option.  Please use --help to see a list of valid options.\n"
 msgstr "Neveljavna možnost. Uporabite --help za seznam veljavnih možnosti.\n"
 
-#: ../src/main.c:427
+#: ../src/main.c:439
 #, c-format
 msgid "You must be root to run NetworkManager!\n"
 msgstr "Za zagon programa NetworkManager so zahtevana skrbniška dovoljenja!\n"
 
-#: ../src/main.c:448
+#: ../src/main.c:460
 #, c-format
 msgid "Failed to read configuration: (%d) %s\n"
 msgstr "Branje nastavitev je spodletelo: (%d) %s\n"
 
-#: ../src/main.c:459
+#: ../src/main.c:471
 #, c-format
 msgid "%s.  Please use --help to see a list of valid options.\n"
 msgstr "%s. Uporabite --help za prikaz seznam veljavnih možnosti.\n"
 
-#: ../src/main.c:466
+#: ../src/main.c:478
 #, c-format
 msgid "State file %s parsing failed: (%d) %s\n"
 msgstr "Razčlenjevanje datoteke stanja %s je spodletelo: (%d) %s\n"
 
-#: ../src/main.c:483
+#: ../src/main.c:495
 #, c-format
 msgid "Could not daemonize: %s [error %u]\n"
 msgstr "Opravila ni mogoče pretvoriti za ozadnje delovanje: %s [napaka %u]\n"
@@ -2518,20 +2663,20 @@ msgstr "'dhcpcd' ni mogoče najti."
 msgid "unsupported DHCP client '%s'"
 msgstr "nepodprt odjemalec DHCP '%s'"
 
-#: ../src/dns-manager/nm-dns-manager.c:376
+#: ../src/dns-manager/nm-dns-manager.c:383
 msgid "NOTE: the libc resolver may not support more than 3 nameservers."
 msgstr "OPOMBA: razreševalnik libc morda ne podpira več kot 3 imenskih strežnikov."
 
-#: ../src/dns-manager/nm-dns-manager.c:378
+#: ../src/dns-manager/nm-dns-manager.c:385
 msgid "The nameservers listed below may not be recognized."
 msgstr "Navedeni imenski strežniki morda ne bodo prepoznani."
 
-#: ../src/logging/nm-logging.c:130
+#: ../src/logging/nm-logging.c:131
 #, c-format
 msgid "Unknown log level '%s'"
 msgstr "Neznana raven beleženja '%s'"
 
-#: ../src/logging/nm-logging.c:155
+#: ../src/logging/nm-logging.c:156
 #, c-format
 msgid "Unknown log domain '%s'"
 msgstr "Neznana domena beleženja '%s'"
@@ -2542,17 +2687,22 @@ msgstr "Neznana domena beleženja '%s'"
 msgid "CDMA connection %d"
 msgstr "Povezava CDMA %d"
 
-#: ../src/modem-manager/nm-modem-gsm.c:512
+#: ../src/modem-manager/nm-modem-gsm.c:547
 #: ../src/nm-device-bt.c:321
 #, c-format
 msgid "GSM connection %d"
 msgstr "Povezava GSM %d"
 
-#: ../src/nm-device-bond.c:192
+#: ../src/nm-device-bond.c:191
 #, c-format
 msgid "Bond connection %d"
 msgstr "Povezava vezi %d"
 
+#: ../src/nm-device-adsl.c:193
+#, c-format
+msgid "ADSL connection %d"
+msgstr "Povezava ADSL %d"
+
 #: ../src/nm-device-bt.c:296
 #, c-format
 msgid "PAN connection %d"
@@ -2563,12 +2713,12 @@ msgstr "Povezava PAN %d"
 msgid "DUN connection %d"
 msgstr "Povezava DUN %d"
 
-#: ../src/nm-device-ethernet.c:1326
+#: ../src/nm-device-ethernet.c:1327
 #, c-format
 msgid "PPPoE connection %d"
 msgstr "Povezava PPPoE %d"
 
-#: ../src/nm-device-ethernet.c:1326
+#: ../src/nm-device-ethernet.c:1327
 #: ../src/settings/nm-settings-utils.c:50
 #, c-format
 msgid "Wired connection %d"
@@ -2576,21 +2726,20 @@ msgstr "Žična povezava %d"
 
 #: ../src/nm-device-infiniband.c:303
 #, c-format
-msgid "Infiniband connection %d"
-msgstr "Povezava Infiniband %d"
+msgid "InfiniBand connection %d"
+msgstr "Povezava InfiniBand %d"
 
-#: ../src/nm-device-olpc-mesh.c:293
+#: ../src/nm-device-olpc-mesh.c:303
 #, c-format
 msgid "Mesh %d"
 msgstr "Mreža %d"
 
-#: ../src/nm-device-vlan.c:311
+#: ../src/nm-device-vlan.c:362
 #, c-format
-#| msgid "VPN connection %d"
 msgid "VLAN connection %d"
 msgstr "Povezava VLAN %d"
 
-#: ../src/nm-manager.c:661
+#: ../src/nm-manager.c:660
 #, c-format
 msgid "VPN connection %d"
 msgstr "Povezava VPN %d"
@@ -2638,11 +2787,11 @@ msgstr "skupini netlink se ni mogoče pridružiti: %s"
 msgid "error updating link cache: %s"
 msgstr "napaka med posodabljanjem predpomnilnika povezave: %s"
 
-#: ../src/settings/plugins/ifcfg-rh/reader.c:93
-#: ../src/settings/plugins/ifnet/connection_parser.c:51
+#: ../src/settings/plugins/ifcfg-rh/reader.c:94
 msgid "System"
 msgstr "Sistem"
 
-#: ../src/settings/plugins/ifcfg-rh/reader.c:3632
+#: ../src/settings/plugins/ifcfg-rh/reader.c:3641
 msgid "Bond"
 msgstr "Vez"
+
diff --git a/po/sv.po b/po/sv.po
index eb8da2ea..9f66eb65 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,16 +1,16 @@
 # Swedish messages for NetworkManager.
-# Copyright (C) 2004, 2005, 2006, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
 # Christian Rose <menthos@menthos.com>, 2004, 2005, 2006.
-# Daniel Nylander <po@danielnylander.se>, 2006, 2008, 2009, 2010.
+# Daniel Nylander <po@danielnylander.se>, 2006, 2008, 2009, 2010, 2012.
 #
 # $Id: sv.po,v 1.14 2006/12/10 18:34:55 dnylande Exp $
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: NetworkManager\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager&component=general\n"
-"POT-Creation-Date: 2010-09-20 15:25+0000\n"
-"PO-Revision-Date: 2010-12-29 12:23+0100\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2012-03-30 15:25+0000\n"
+"PO-Revision-Date: 2012-03-31 13:52+0100\n"
 "Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "MIME-Version: 1.0\n"
@@ -18,974 +18,1467 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../cli/src/connections.c:60
-#: ../cli/src/connections.c:75
-#: ../cli/src/devices.c:88
-#: ../cli/src/devices.c:101
-#: ../cli/src/devices.c:111
-#: ../cli/src/devices.c:121
-#: ../cli/src/devices.c:134
-#: ../cli/src/devices.c:145
-#: ../cli/src/devices.c:156
-#: ../cli/src/devices.c:165
-#: ../cli/src/devices.c:174
-msgid "NAME"
-msgstr "NAMN"
+#: ../cli/src/common.c:32
+#: ../cli/src/common.c:44
+#: ../cli/src/common.c:52
+#: ../cli/src/common.c:63
+#: ../cli/src/connections.c:125
+#: ../cli/src/connections.c:159
+msgid "GROUP"
+msgstr "GRUPP"
 
 #. 0
-#: ../cli/src/connections.c:61
-#: ../cli/src/connections.c:76
-msgid "UUID"
-msgstr "UUID"
+#: ../cli/src/common.c:33
+#: ../cli/src/common.c:53
+msgid "ADDRESS"
+msgstr "ADRESS"
 
 #. 1
-#: ../cli/src/connections.c:62
-msgid "DEVICES"
-msgstr "ENHETER"
+#: ../cli/src/common.c:34
+#: ../cli/src/common.c:54
+msgid "ROUTE"
+msgstr "RUTT"
 
 #. 2
-#: ../cli/src/connections.c:63
-#: ../cli/src/connections.c:78
-msgid "SCOPE"
-msgstr "OMFÅNG"
+#: ../cli/src/common.c:35
+#: ../cli/src/common.c:55
+msgid "DNS"
+msgstr "DNS"
 
 #. 3
-#: ../cli/src/connections.c:64
-msgid "DEFAULT"
-msgstr "STANDARD"
+#: ../cli/src/common.c:36
+#: ../cli/src/common.c:56
+msgid "DOMAIN"
+msgstr "DOMÄN"
 
 #. 4
-#: ../cli/src/connections.c:65
-msgid "DBUS-SERVICE"
-msgstr "DBUS-TJÄNST"
+#: ../cli/src/common.c:37
+msgid "WINS"
+msgstr "WINS"
 
-#. 5
-#: ../cli/src/connections.c:66
-msgid "SPEC-OBJECT"
-msgstr "SPEC-OBJECT"
+#. 0
+#: ../cli/src/common.c:45
+#: ../cli/src/common.c:64
+msgid "OPTION"
+msgstr "FLAGGA"
 
-#. 6
-#: ../cli/src/connections.c:67
-msgid "VPN"
-msgstr "VPN"
+#. 0
+#. used only for 'GENERAL' group listing
+#: ../cli/src/connections.c:58
+#: ../cli/src/connections.c:126
+#: ../cli/src/devices.c:102
+#: ../cli/src/devices.c:123
+#: ../cli/src/devices.c:133
+#: ../cli/src/devices.c:143
+#: ../cli/src/devices.c:157
+#: ../cli/src/devices.c:171
+#: ../cli/src/devices.c:193
+msgid "NAME"
+msgstr "NAMN"
+
+#. 0
+#. 1
+#: ../cli/src/connections.c:59
+#: ../cli/src/connections.c:127
+msgid "UUID"
+msgstr "UUID"
 
 #. 1
 #. 0
 #. 1
-#: ../cli/src/connections.c:77
-#: ../cli/src/devices.c:62
-#: ../cli/src/devices.c:90
+#. 2
+#: ../cli/src/connections.c:60
+#: ../cli/src/connections.c:160
+#: ../cli/src/devices.c:68
+#: ../cli/src/devices.c:104
+#: ../cli/src/devices.c:196
 msgid "TYPE"
 msgstr "TYP"
 
-#. 3
-#: ../cli/src/connections.c:79
+#. 2
+#: ../cli/src/connections.c:61
 msgid "TIMESTAMP"
 msgstr "TIDSSTÄMPEL"
 
-#. 4
-#: ../cli/src/connections.c:80
+#. 3
+#: ../cli/src/connections.c:62
 msgid "TIMESTAMP-REAL"
 msgstr "TIMESTAMP-REAL"
 
-#. 5
-#: ../cli/src/connections.c:81
+#. 4
+#: ../cli/src/connections.c:63
 msgid "AUTOCONNECT"
 msgstr "AUTOCONNECT"
 
-#. 6
-#: ../cli/src/connections.c:82
+#. 5
+#: ../cli/src/connections.c:64
 msgid "READONLY"
 msgstr "SKRIVSKYDDAD"
 
-#. 7
-#: ../cli/src/connections.c:83
+#. 6
+#. 8
+#. 2
+#. 11
+#. 5
+#: ../cli/src/connections.c:65
+#: ../cli/src/connections.c:134
+#: ../cli/src/devices.c:70
+#: ../cli/src/devices.c:183
+#: ../cli/src/devices.c:199
 msgid "DBUS-PATH"
 msgstr "DBUS-SÖKVÄG"
 
-#: ../cli/src/connections.c:159
+#. 2
+#: ../cli/src/connections.c:128
+msgid "DEVICES"
+msgstr "ENHETER"
+
+#. 3
+#. 1
+#. 6
+#. 1
+#: ../cli/src/connections.c:129
+#: ../cli/src/devices.c:69
+#: ../cli/src/devices.c:109
+#: ../cli/src/network-manager.c:39
+msgid "STATE"
+msgstr "TILLSTÅND"
+
+#. 4
+#: ../cli/src/connections.c:130
+msgid "DEFAULT"
+msgstr "STANDARD"
+
+#. 5
+#: ../cli/src/connections.c:131
+msgid "DEFAULT6"
+msgstr "STANDARD6"
+
+#. 6
+#: ../cli/src/connections.c:132
+msgid "SPEC-OBJECT"
+msgstr "SPEC-OBJECT"
+
+#. 7
+#. 1
+#: ../cli/src/connections.c:133
+#: ../cli/src/connections.c:147
+msgid "VPN"
+msgstr "VPN"
+
+#. 9
+#: ../cli/src/connections.c:135
+msgid "CON-PATH"
+msgstr "ANS-SÖKV"
+
+#. 10
+#: ../cli/src/connections.c:136
+msgid "ZONE"
+msgstr "ZON"
+
+#. 11
+#: ../cli/src/connections.c:137
+msgid "MASTER-PATH"
+msgstr "HUVUDSÖKVÄG"
+
+#: ../cli/src/connections.c:145
+#: ../cli/src/devices.c:79
+msgid "GENERAL"
+msgstr "ALLMÄNT"
+
+#. 0
+#: ../cli/src/connections.c:146
+msgid "IP"
+msgstr "IP"
+
+#. 1
+#: ../cli/src/connections.c:161
+msgid "USERNAME"
+msgstr "ANVÄNDARNAMN"
+
+#. 2
+#: ../cli/src/connections.c:162
+msgid "GATEWAY"
+msgstr "GATEWAY"
+
+#. 3
+#: ../cli/src/connections.c:163
+msgid "BANNER"
+msgstr "BANDEROLL"
+
+#. 4
+#: ../cli/src/connections.c:164
+msgid "VPN-STATE"
+msgstr "VPN-TILLSTÅND"
+
+#. 5
+#: ../cli/src/connections.c:165
+msgid "CFG"
+msgstr "KFG"
+
+#: ../cli/src/connections.c:186
 #, c-format
 msgid ""
 "Usage: nmcli con { COMMAND | help }\n"
-"  COMMAND := { list | status | up | down }\n"
+"  COMMAND := { list | status | up | down | delete }\n"
 "\n"
-"  list [id <id> | uuid <id> | system | user]\n"
-"  status\n"
-"  up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout <timeout>]\n"
+"  list [id <id> | uuid <id>]\n"
+"  status [id <id> | uuid <id> | path <path>]\n"
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [nsp <name>] [--nowait] [--timeout <timeout>]\n"
+"  up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [--nowait] [--timeout <timeout>]\n"
 "  down id <id> | uuid <id>\n"
+"  delete id <id> | uuid <id>\n"
 msgstr ""
 "Användning: nmcli con { KOMMANDO | help }\n"
-"  KOMMANDO := { list | status | up | down }\n"
+"  KOMMANDO := { list | status | up | down | delete }\n"
 "\n"
-"  list [id <id> | uuid <id> | system | användare]\n"
-"  status\n"
+"  list [id <id> | uuid <id>]\n"
+"  status [id <id> | uuid <id> | path <sökväg>]\n"
 "  up id <id> | uuid <id> [iface <gränssnitt>] [ap <hwaddr>] [--nowait] [--timeout <tidsgräns>]\n"
+"  up id <id> | uuid <id> [iface <gränssnitt>] [ap <BSSID>] [--nowait] [--timeout <tidsgräns>]\n"
 "  down id <id> | uuid <id>\n"
+"  delete id <id> | uuid <id>\n"
 
-#: ../cli/src/connections.c:199
-#: ../cli/src/connections.c:540
+#: ../cli/src/connections.c:240
+#: ../cli/src/connections.c:591
 #, c-format
 msgid "Error: 'con list': %s"
 msgstr "Fel: \"con list\": %s"
 
-#: ../cli/src/connections.c:201
-#: ../cli/src/connections.c:542
+#: ../cli/src/connections.c:242
+#: ../cli/src/connections.c:593
 #, c-format
 msgid "Error: 'con list': %s; allowed fields: %s"
 msgstr "Fel: \"con list\": %s; tillåtna fält: %s"
 
-#: ../cli/src/connections.c:209
+#: ../cli/src/connections.c:250
 msgid "Connection details"
 msgstr "Anslutningsdetaljer"
 
-#: ../cli/src/connections.c:384
-#: ../cli/src/connections.c:605
-msgid "system"
-msgstr "system"
-
-#: ../cli/src/connections.c:384
-#: ../cli/src/connections.c:605
-msgid "user"
-msgstr "användare"
-
-#: ../cli/src/connections.c:386
+#: ../cli/src/connections.c:466
 msgid "never"
 msgstr "aldrig"
 
 #. "CAPABILITIES"
 #. Print header
 #. "WIFI-PROPERTIES"
-#: ../cli/src/connections.c:387
-#: ../cli/src/connections.c:388
-#: ../cli/src/connections.c:606
-#: ../cli/src/connections.c:609
-#: ../cli/src/devices.c:432
-#: ../cli/src/devices.c:557
-#: ../cli/src/devices.c:583
-#: ../cli/src/devices.c:584
-#: ../cli/src/devices.c:585
-#: ../cli/src/devices.c:586
-#: ../cli/src/devices.c:587
-#: ../cli/src/settings.c:508
-#: ../cli/src/settings.c:551
-#: ../cli/src/settings.c:652
-#: ../cli/src/settings.c:926
-#: ../cli/src/settings.c:927
-#: ../cli/src/settings.c:929
-#: ../cli/src/settings.c:931
-#: ../cli/src/settings.c:1056
-#: ../cli/src/settings.c:1057
-#: ../cli/src/settings.c:1058
-#: ../cli/src/settings.c:1137
-#: ../cli/src/settings.c:1138
-#: ../cli/src/settings.c:1139
-#: ../cli/src/settings.c:1140
-#: ../cli/src/settings.c:1141
-#: ../cli/src/settings.c:1142
-#: ../cli/src/settings.c:1143
-#: ../cli/src/settings.c:1144
-#: ../cli/src/settings.c:1145
-#: ../cli/src/settings.c:1146
-#: ../cli/src/settings.c:1147
-#: ../cli/src/settings.c:1148
-#: ../cli/src/settings.c:1149
-#: ../cli/src/settings.c:1224
+#: ../cli/src/connections.c:467
+#: ../cli/src/connections.c:468
+#: ../cli/src/connections.c:705
+#: ../cli/src/connections.c:706
+#: ../cli/src/connections.c:708
+#: ../cli/src/devices.c:595
+#: ../cli/src/devices.c:648
+#: ../cli/src/devices.c:762
+#: ../cli/src/devices.c:763
+#: ../cli/src/devices.c:795
+#: ../cli/src/devices.c:821
+#: ../cli/src/devices.c:822
+#: ../cli/src/devices.c:823
+#: ../cli/src/devices.c:824
+#: ../cli/src/devices.c:825
+#: ../cli/src/settings.c:656
+#: ../cli/src/settings.c:726
+#: ../cli/src/settings.c:846
+#: ../cli/src/settings.c:1128
+#: ../cli/src/settings.c:1129
+#: ../cli/src/settings.c:1131
+#: ../cli/src/settings.c:1133
+#: ../cli/src/settings.c:1134
+#: ../cli/src/settings.c:1262
+#: ../cli/src/settings.c:1263
+#: ../cli/src/settings.c:1264
+#: ../cli/src/settings.c:1265
+#: ../cli/src/settings.c:1340
+#: ../cli/src/settings.c:1341
+#: ../cli/src/settings.c:1342
+#: ../cli/src/settings.c:1343
+#: ../cli/src/settings.c:1344
+#: ../cli/src/settings.c:1345
+#: ../cli/src/settings.c:1346
+#: ../cli/src/settings.c:1347
+#: ../cli/src/settings.c:1348
+#: ../cli/src/settings.c:1349
+#: ../cli/src/settings.c:1350
+#: ../cli/src/settings.c:1351
+#: ../cli/src/settings.c:1352
+#: ../cli/src/settings.c:1423
 msgid "yes"
 msgstr "ja"
 
-#: ../cli/src/connections.c:387
-#: ../cli/src/connections.c:388
-#: ../cli/src/connections.c:606
-#: ../cli/src/connections.c:609
-#: ../cli/src/devices.c:432
-#: ../cli/src/devices.c:557
-#: ../cli/src/devices.c:583
-#: ../cli/src/devices.c:584
-#: ../cli/src/devices.c:585
-#: ../cli/src/devices.c:586
-#: ../cli/src/devices.c:587
-#: ../cli/src/settings.c:508
-#: ../cli/src/settings.c:510
-#: ../cli/src/settings.c:551
-#: ../cli/src/settings.c:652
-#: ../cli/src/settings.c:926
-#: ../cli/src/settings.c:927
-#: ../cli/src/settings.c:929
-#: ../cli/src/settings.c:931
-#: ../cli/src/settings.c:1056
-#: ../cli/src/settings.c:1057
-#: ../cli/src/settings.c:1058
-#: ../cli/src/settings.c:1137
-#: ../cli/src/settings.c:1138
-#: ../cli/src/settings.c:1139
-#: ../cli/src/settings.c:1140
-#: ../cli/src/settings.c:1141
-#: ../cli/src/settings.c:1142
-#: ../cli/src/settings.c:1143
-#: ../cli/src/settings.c:1144
-#: ../cli/src/settings.c:1145
-#: ../cli/src/settings.c:1146
-#: ../cli/src/settings.c:1147
-#: ../cli/src/settings.c:1148
-#: ../cli/src/settings.c:1149
-#: ../cli/src/settings.c:1224
+#: ../cli/src/connections.c:467
+#: ../cli/src/connections.c:468
+#: ../cli/src/connections.c:705
+#: ../cli/src/connections.c:706
+#: ../cli/src/connections.c:708
+#: ../cli/src/devices.c:595
+#: ../cli/src/devices.c:648
+#: ../cli/src/devices.c:762
+#: ../cli/src/devices.c:763
+#: ../cli/src/devices.c:795
+#: ../cli/src/devices.c:821
+#: ../cli/src/devices.c:822
+#: ../cli/src/devices.c:823
+#: ../cli/src/devices.c:824
+#: ../cli/src/devices.c:825
+#: ../cli/src/settings.c:656
+#: ../cli/src/settings.c:658
+#: ../cli/src/settings.c:726
+#: ../cli/src/settings.c:846
+#: ../cli/src/settings.c:1128
+#: ../cli/src/settings.c:1129
+#: ../cli/src/settings.c:1131
+#: ../cli/src/settings.c:1133
+#: ../cli/src/settings.c:1134
+#: ../cli/src/settings.c:1262
+#: ../cli/src/settings.c:1263
+#: ../cli/src/settings.c:1264
+#: ../cli/src/settings.c:1265
+#: ../cli/src/settings.c:1340
+#: ../cli/src/settings.c:1341
+#: ../cli/src/settings.c:1342
+#: ../cli/src/settings.c:1343
+#: ../cli/src/settings.c:1344
+#: ../cli/src/settings.c:1345
+#: ../cli/src/settings.c:1346
+#: ../cli/src/settings.c:1347
+#: ../cli/src/settings.c:1348
+#: ../cli/src/settings.c:1349
+#: ../cli/src/settings.c:1350
+#: ../cli/src/settings.c:1351
+#: ../cli/src/settings.c:1352
+#: ../cli/src/settings.c:1423
 msgid "no"
 msgstr "nej"
 
-#: ../cli/src/connections.c:461
-#: ../cli/src/connections.c:504
-msgid "System connections"
-msgstr "systemanslutningar"
+#: ../cli/src/connections.c:542
+msgid "Connection list"
+msgstr "Anslutningslista"
 
-#: ../cli/src/connections.c:466
-#: ../cli/src/connections.c:517
-msgid "User connections"
-msgstr "Användaranslutningar"
-
-#: ../cli/src/connections.c:478
-#: ../cli/src/connections.c:1338
-#: ../cli/src/connections.c:1354
-#: ../cli/src/connections.c:1363
-#: ../cli/src/connections.c:1374
-#: ../cli/src/connections.c:1459
-#: ../cli/src/devices.c:962
-#: ../cli/src/devices.c:972
-#: ../cli/src/devices.c:1074
-#: ../cli/src/devices.c:1081
+#: ../cli/src/connections.c:555
+#: ../cli/src/connections.c:1088
+#: ../cli/src/connections.c:1456
+#: ../cli/src/connections.c:1471
+#: ../cli/src/connections.c:1480
+#: ../cli/src/connections.c:1490
+#: ../cli/src/connections.c:1502
+#: ../cli/src/connections.c:1601
+#: ../cli/src/connections.c:1703
+#: ../cli/src/devices.c:1202
+#: ../cli/src/devices.c:1212
+#: ../cli/src/devices.c:1326
+#: ../cli/src/devices.c:1334
+#: ../cli/src/devices.c:1547
+#: ../cli/src/devices.c:1554
 #, c-format
 msgid "Error: %s argument is missing."
 msgstr "Fel: %s-argument saknas."
 
-#: ../cli/src/connections.c:491
+#: ../cli/src/connections.c:568
 #, c-format
 msgid "Error: %s - no such connection."
 msgstr "Fel: %s - ingen sådan anslutning."
 
-#: ../cli/src/connections.c:523
-#: ../cli/src/connections.c:1387
-#: ../cli/src/connections.c:1477
-#: ../cli/src/devices.c:785
-#: ../cli/src/devices.c:852
-#: ../cli/src/devices.c:986
-#: ../cli/src/devices.c:1087
+#: ../cli/src/connections.c:574
+#: ../cli/src/connections.c:1515
+#: ../cli/src/connections.c:1618
+#: ../cli/src/connections.c:1710
+#: ../cli/src/devices.c:999
+#: ../cli/src/devices.c:1079
+#: ../cli/src/devices.c:1226
+#: ../cli/src/devices.c:1340
+#: ../cli/src/devices.c:1560
 #, c-format
 msgid "Unknown parameter: %s\n"
 msgstr "Okänd parameter: %s\n"
 
-#: ../cli/src/connections.c:532
+#: ../cli/src/connections.c:583
 #, c-format
 msgid "Error: no valid parameter specified."
 msgstr "Fel: ingen giltig parameter angiven."
 
-#: ../cli/src/connections.c:547
-#: ../cli/src/connections.c:1580
-#: ../cli/src/devices.c:1293
-#: ../cli/src/network-manager.c:359
+#: ../cli/src/connections.c:598
+#: ../cli/src/connections.c:1803
+#: ../cli/src/devices.c:1768
+#: ../cli/src/network-manager.c:456
 #, c-format
 msgid "Error: %s."
 msgstr "Fel: %s."
 
-#: ../cli/src/connections.c:653
-#, c-format
-msgid "Error: 'con status': %s"
-msgstr "Fel: \"con status\": %s"
-
-#: ../cli/src/connections.c:655
-#, c-format
-msgid "Error: 'con status': %s; allowed fields: %s"
-msgstr "Fel: \"con status\": %s; tillåtna fält: %s"
-
-#: ../cli/src/connections.c:662
-msgid "Active connections"
-msgstr "Aktiva anslutningar"
-
-#: ../cli/src/connections.c:1030
-#, c-format
-msgid "no active connection on device '%s'"
-msgstr "ingen aktiv anslutning på enheten \"%s\""
-
-#: ../cli/src/connections.c:1038
-#, c-format
-msgid "no active connection or device"
-msgstr "ingen aktiv anslutning eller enhet"
-
-#: ../cli/src/connections.c:1088
-#, c-format
-msgid "device '%s' not compatible with connection '%s'"
-msgstr "enheten \"%s\" är inte kompatibel med anslutningen \"%s\""
-
-#: ../cli/src/connections.c:1090
-#, c-format
-msgid "no device found for connection '%s'"
-msgstr "ingen enhet hittades för anslutningen \"%s\""
-
-#: ../cli/src/connections.c:1101
+#: ../cli/src/connections.c:611
 msgid "activating"
 msgstr "aktiverar"
 
-#: ../cli/src/connections.c:1103
+#: ../cli/src/connections.c:613
 msgid "activated"
 msgstr "aktiverad"
 
-#: ../cli/src/connections.c:1106
-#: ../cli/src/connections.c:1129
-#: ../cli/src/connections.c:1162
-#: ../cli/src/devices.c:246
-#: ../cli/src/devices.c:558
-#: ../cli/src/network-manager.c:94
-#: ../cli/src/network-manager.c:149
-#: ../cli/src/settings.c:473
+#: ../cli/src/connections.c:615
+#: ../cli/src/devices.c:263
+msgid "deactivating"
+msgstr "inaktiverar"
+
+#: ../cli/src/connections.c:618
+#: ../cli/src/connections.c:641
+#: ../cli/src/connections.c:1327
+#: ../cli/src/devices.c:267
+#: ../cli/src/devices.c:796
+#: ../cli/src/network-manager.c:111
+#: ../cli/src/network-manager.c:173
+#: ../cli/src/network-manager.c:176
+#: ../cli/src/network-manager.c:185
+#: ../cli/src/network-manager.c:291
+#: ../cli/src/network-manager.c:346
+#: ../cli/src/network-manager.c:384
+#: ../cli/src/network-manager.c:423
+#: ../cli/src/settings.c:563
+#: ../cli/src/settings.c:591
+#: ../cli/src/utils.c:499
+#: ../src/main.c:450
+#: ../src/main.c:469
 msgid "unknown"
 msgstr "okänt"
 
-#: ../cli/src/connections.c:1115
+#: ../cli/src/connections.c:627
 msgid "VPN connecting (prepare)"
 msgstr "VPN ansluter (förbereder)"
 
-#: ../cli/src/connections.c:1117
+#: ../cli/src/connections.c:629
 msgid "VPN connecting (need authentication)"
 msgstr "VPN ansluter (behöver autentisering)"
 
-#: ../cli/src/connections.c:1119
+#: ../cli/src/connections.c:631
 msgid "VPN connecting"
 msgstr "VPN ansluter"
 
-#: ../cli/src/connections.c:1121
+#: ../cli/src/connections.c:633
 msgid "VPN connecting (getting IP configuration)"
 msgstr "VPN ansluter (hämtar IP-konfiguration)"
 
-#: ../cli/src/connections.c:1123
+#: ../cli/src/connections.c:635
 msgid "VPN connected"
 msgstr "VPN ansluten"
 
-#: ../cli/src/connections.c:1125
+#: ../cli/src/connections.c:637
 msgid "VPN connection failed"
 msgstr "VPN-anslutning misslyckades"
 
-#: ../cli/src/connections.c:1127
+#: ../cli/src/connections.c:639
 msgid "VPN disconnected"
 msgstr "VPN frånkopplad"
 
-#: ../cli/src/connections.c:1138
+#: ../cli/src/connections.c:892
+#: ../cli/src/connections.c:1116
+#, c-format
+msgid "Error: 'con status': %s"
+msgstr "Fel: \"con status\": %s"
+
+#: ../cli/src/connections.c:894
+#: ../cli/src/connections.c:1118
+#, c-format
+msgid "Error: 'con status': %s; allowed fields: %s"
+msgstr "Fel: \"con status\": %s; tillåtna fält: %s"
+
+#: ../cli/src/connections.c:902
+msgid "Active connection details"
+msgstr "Detaljer för aktiv anslutning"
+
+#: ../cli/src/connections.c:1038
+#: ../cli/src/connections.c:1530
+#: ../cli/src/connections.c:1633
+#: ../cli/src/connections.c:1724
+#: ../cli/src/devices.c:1026
+#: ../cli/src/devices.c:1088
+#: ../cli/src/devices.c:1241
+#: ../cli/src/devices.c:1370
+#: ../cli/src/devices.c:1589
+#, c-format
+msgid "Error: Can't find out if NetworkManager is running: %s."
+msgstr "Fel: Kunde inte ta reda på om Nätverkshanterare är igång: %s."
+
+#: ../cli/src/connections.c:1042
+#: ../cli/src/connections.c:1534
+#: ../cli/src/connections.c:1637
+#: ../cli/src/connections.c:1728
+#: ../cli/src/devices.c:1030
+#: ../cli/src/devices.c:1092
+#: ../cli/src/devices.c:1245
+#: ../cli/src/devices.c:1374
+#: ../cli/src/devices.c:1593
+#, c-format
+msgid "Error: NetworkManager is not running."
+msgstr "Fel: Nätverkshanterare är inte igång."
+
+#: ../cli/src/connections.c:1074
+msgid "Active connections"
+msgstr "Aktiva anslutningar"
+
+#: ../cli/src/connections.c:1099
+#, c-format
+msgid "Error: '%s' is not an active connection."
+msgstr "Fel: \"%s\" är inte en aktiv anslutning."
+
+#: ../cli/src/connections.c:1104
+#, c-format
+msgid "Error: unknown parameter: %s"
+msgstr "Fel: okänd parameter: %s"
+
+#: ../cli/src/connections.c:1211
+#, c-format
+msgid "no active connection on device '%s'"
+msgstr "ingen aktiv anslutning på enheten \"%s\""
+
+#: ../cli/src/connections.c:1219
+#, c-format
+msgid "no active connection or device"
+msgstr "ingen aktiv anslutning eller enhet"
+
+#: ../cli/src/connections.c:1290
+#, c-format
+msgid "device '%s' not compatible with connection '%s'"
+msgstr "enheten \"%s\" är inte kompatibel med anslutningen \"%s\""
+
+#: ../cli/src/connections.c:1292
+#, c-format
+msgid "no device found for connection '%s'"
+msgstr "ingen enhet hittades för anslutningen \"%s\""
+
+#: ../cli/src/connections.c:1303
 msgid "unknown reason"
 msgstr "okänd anledning"
 
-#: ../cli/src/connections.c:1140
+#: ../cli/src/connections.c:1305
 msgid "none"
 msgstr "ingen"
 
-#: ../cli/src/connections.c:1142
+#: ../cli/src/connections.c:1307
 msgid "the user was disconnected"
 msgstr "användaren kopplades från"
 
-#: ../cli/src/connections.c:1144
+#: ../cli/src/connections.c:1309
 msgid "the base network connection was interrupted"
 msgstr "basnätverksanslutningen avbröts"
 
-#: ../cli/src/connections.c:1146
+#: ../cli/src/connections.c:1311
 msgid "the VPN service stopped unexpectedly"
 msgstr "VPN-tjänsten stoppades oväntat"
 
-#: ../cli/src/connections.c:1148
+#: ../cli/src/connections.c:1313
 msgid "the VPN service returned invalid configuration"
 msgstr "VPN-tjänsten returnerade en ogiltig konfiguration"
 
-#: ../cli/src/connections.c:1150
+#: ../cli/src/connections.c:1315
 msgid "the connection attempt timed out"
 msgstr "anslutningsförsöket översteg tidsgränsen"
 
-#: ../cli/src/connections.c:1152
+#: ../cli/src/connections.c:1317
 msgid "the VPN service did not start in time"
 msgstr "VPN-tjänsten startade inte i tid"
 
-#: ../cli/src/connections.c:1154
+#: ../cli/src/connections.c:1319
 msgid "the VPN service failed to start"
 msgstr "VPN-tjänsten misslyckades med att starta"
 
-#: ../cli/src/connections.c:1156
+#: ../cli/src/connections.c:1321
 msgid "no valid VPN secrets"
 msgstr "inga giltiga VPN-hemligheter"
 
-#: ../cli/src/connections.c:1158
+#: ../cli/src/connections.c:1323
 msgid "invalid VPN secrets"
 msgstr "ogiltiga VPN-hemligheter"
 
-#: ../cli/src/connections.c:1160
+#: ../cli/src/connections.c:1325
 msgid "the connection was removed"
 msgstr "anslutningen togs bort"
 
-#: ../cli/src/connections.c:1174
+#: ../cli/src/connections.c:1339
 #, c-format
 msgid "state: %s\n"
 msgstr "tillstånd: %s\n"
 
-#: ../cli/src/connections.c:1177
-#: ../cli/src/connections.c:1203
+#: ../cli/src/connections.c:1342
+#: ../cli/src/connections.c:1368
 #, c-format
 msgid "Connection activated\n"
 msgstr "Anslutning aktiverad\n"
 
-#: ../cli/src/connections.c:1180
+#: ../cli/src/connections.c:1345
 #, c-format
 msgid "Error: Connection activation failed."
 msgstr "Fel: Aktivering av anslutning misslyckades."
 
-#: ../cli/src/connections.c:1199
+#: ../cli/src/connections.c:1364
 #, c-format
 msgid "state: %s (%d)\n"
 msgstr "tillstånd: %s (%d)\n"
 
-#: ../cli/src/connections.c:1209
+#: ../cli/src/connections.c:1374
 #, c-format
 msgid "Error: Connection activation failed: %s."
 msgstr "Fel: Aktivering av anslutning misslyckades: %s."
 
-#: ../cli/src/connections.c:1226
-#: ../cli/src/devices.c:909
+#: ../cli/src/connections.c:1391
+#: ../cli/src/devices.c:1148
 #, c-format
 msgid "Error: Timeout %d sec expired."
 msgstr "Fel: Tidsgränsen %d sekunder gick ut."
 
-#: ../cli/src/connections.c:1269
+#: ../cli/src/connections.c:1404
 #, c-format
 msgid "Error: Connection activation failed: %s"
 msgstr "Fel: Aktivering av anslutning misslyckades: %s"
 
-#: ../cli/src/connections.c:1283
-#, c-format
-msgid "Error: Obtaining active connection for '%s' failed."
-msgstr "Fel: Hämtning av aktiv anslutning för \"%s\" misslyckades."
-
-#: ../cli/src/connections.c:1292
+#: ../cli/src/connections.c:1410
 #, c-format
 msgid "Active connection state: %s\n"
 msgstr "Tillstånd för aktiv anslutning: %s\n"
 
-#: ../cli/src/connections.c:1293
+#: ../cli/src/connections.c:1411
 #, c-format
 msgid "Active connection path: %s\n"
 msgstr "Sökväg för aktiv anslutning: %s\n"
 
-#: ../cli/src/connections.c:1347
-#: ../cli/src/connections.c:1468
+#: ../cli/src/connections.c:1464
+#: ../cli/src/connections.c:1609
+#: ../cli/src/connections.c:1737
 #, c-format
 msgid "Error: Unknown connection: %s."
 msgstr "Fel: Okänd anslutning: %s."
 
-#: ../cli/src/connections.c:1382
-#: ../cli/src/devices.c:980
+#: ../cli/src/connections.c:1510
+#: ../cli/src/devices.c:1220
 #, c-format
 msgid "Error: timeout value '%s' is not valid."
 msgstr "Fel: värdet \"%s\" för tidsgränsen är inte giltigt."
 
-#: ../cli/src/connections.c:1395
-#: ../cli/src/connections.c:1485
+#: ../cli/src/connections.c:1523
+#: ../cli/src/connections.c:1626
+#: ../cli/src/connections.c:1717
 #, c-format
 msgid "Error: id or uuid has to be specified."
 msgstr "Fel: id eller uuid måste anges."
 
-#: ../cli/src/connections.c:1415
+#: ../cli/src/connections.c:1555
 #, c-format
 msgid "Error: No suitable device found: %s."
 msgstr "Fel: Ingen lämplig enhet hittades: %s."
 
-#: ../cli/src/connections.c:1417
+#: ../cli/src/connections.c:1557
 #, c-format
 msgid "Error: No suitable device found."
 msgstr "Fel: Ingen lämplig enhet hittades."
 
-#: ../cli/src/connections.c:1512
+#: ../cli/src/connections.c:1662
 #, c-format
 msgid "Warning: Connection not active\n"
 msgstr "Varning: Anslutningen är inte aktiv\n"
 
-#: ../cli/src/connections.c:1569
+#: ../cli/src/connections.c:1676
+#, c-format
+msgid "Error: Connection deletion failed: %s"
+msgstr "Fel: Borttagning av anslutning misslyckades: %s"
+
+#: ../cli/src/connections.c:1794
 #, c-format
 msgid "Error: 'con' command '%s' is not valid."
 msgstr "Fel: \"con\"-kommandot \"%s\" är inte giltigt."
 
-#: ../cli/src/connections.c:1605
+#: ../cli/src/connections.c:1859
 #, c-format
 msgid "Error: could not connect to D-Bus."
 msgstr "Fel: kunde inte ansluta till D-Bus."
 
-#: ../cli/src/connections.c:1612
+#: ../cli/src/connections.c:1867
 #, c-format
 msgid "Error: Could not get system settings."
 msgstr "Fel: Kunde inte få systeminställningar."
 
-#: ../cli/src/connections.c:1620
+#: ../cli/src/connections.c:1877
 #, c-format
-msgid "Error: Could not get user settings."
-msgstr "Fel: Kunde inte få användarinställningar."
-
-#: ../cli/src/connections.c:1630
-#, c-format
-msgid "Error: Can't obtain connections: settings services are not running."
-msgstr "Fel: Kan inte få anslutningar: inställningstjänster är inte igång."
+msgid "Error: Can't obtain connections: settings service is not running."
+msgstr "Fel: Kan inte läsa av anslutningar: inställningstjänster är inte igång."
 
 #. 0
 #. 9
-#: ../cli/src/devices.c:61
-#: ../cli/src/devices.c:89
-#: ../cli/src/devices.c:184
+#. 3
+#: ../cli/src/devices.c:67
+#: ../cli/src/devices.c:103
+#: ../cli/src/devices.c:181
+#: ../cli/src/devices.c:197
 msgid "DEVICE"
 msgstr "ENHET"
 
-#. 1
-#. 4
 #. 0
-#: ../cli/src/devices.c:63
-#: ../cli/src/devices.c:93
-#: ../cli/src/network-manager.c:36
-msgid "STATE"
-msgstr "TILLSTÅND"
-
-#: ../cli/src/devices.c:72
-msgid "GENERAL"
-msgstr "ALLMÄNT"
-
-#. 0
-#: ../cli/src/devices.c:73
+#: ../cli/src/devices.c:80
 msgid "CAPABILITIES"
 msgstr "FÖRMÅGOR"
 
 #. 1
-#: ../cli/src/devices.c:74
+#: ../cli/src/devices.c:81
 msgid "WIFI-PROPERTIES"
 msgstr "WIFI-EGENSKAPER"
 
 #. 2
-#: ../cli/src/devices.c:75
+#: ../cli/src/devices.c:82
 msgid "AP"
 msgstr "AP"
 
 #. 3
-#: ../cli/src/devices.c:76
+#: ../cli/src/devices.c:83
 msgid "WIRED-PROPERTIES"
 msgstr "TRÅDADE-EGENSKAPER"
 
 #. 4
-#: ../cli/src/devices.c:77
-msgid "IP4-SETTINGS"
-msgstr "IP4-INSTÄLLNINGAR"
+#: ../cli/src/devices.c:84
+msgid "WIMAX-PROPERTIES"
+msgstr "WIMAX-EGENSKAPER"
 
 #. 5
-#: ../cli/src/devices.c:78
-msgid "IP4-DNS"
-msgstr "IP4-DNS"
+#. 0
+#: ../cli/src/devices.c:85
+#: ../cli/src/devices.c:194
+msgid "NSP"
+msgstr "NSP"
 
 #. 6
-#: ../cli/src/devices.c:79
-msgid "IP6-SETTINGS"
-msgstr "IP6-INSTÄLLNINGAR"
+#: ../cli/src/devices.c:86
+msgid "IP4"
+msgstr "IP4"
 
 #. 7
-#: ../cli/src/devices.c:80
-msgid "IP6-DNS"
-msgstr "IP6-DNS"
+#: ../cli/src/devices.c:87
+msgid "DHCP4"
+msgstr "DHCP4"
+
+#. 8
+#: ../cli/src/devices.c:88
+msgid "IP6"
+msgstr "IP6"
+
+#. 9
+#: ../cli/src/devices.c:89
+msgid "DHCP6"
+msgstr "DHCP6"
 
 #. 2
-#: ../cli/src/devices.c:91
+#: ../cli/src/devices.c:105
+msgid "VENDOR"
+msgstr "TILLVERKARE"
+
+#. 3
+#: ../cli/src/devices.c:106
+msgid "PRODUCT"
+msgstr "PRODUKT"
+
+#. 4
+#: ../cli/src/devices.c:107
 msgid "DRIVER"
 msgstr "DRIVRUTIN"
 
-#. 3
-#: ../cli/src/devices.c:92
+#. 5
+#: ../cli/src/devices.c:108
 msgid "HWADDR"
 msgstr "HWADDR"
 
+#. 7
+#: ../cli/src/devices.c:110
+msgid "REASON"
+msgstr "ANLEDNING"
+
+#. 8
+#: ../cli/src/devices.c:111
+msgid "UDI"
+msgstr "UDI"
+
+#. 9
+#: ../cli/src/devices.c:112
+msgid "IP-IFACE"
+msgstr "IP-GRÄNS"
+
+#. 10
+#: ../cli/src/devices.c:113
+msgid "NM-MANAGED"
+msgstr "NM-HANTERAD"
+
+#. 11
+#: ../cli/src/devices.c:114
+msgid "FIRMWARE-MISSING"
+msgstr "FAST-PROGRAMVARA-SAKNAS"
+
+#. 12
+#: ../cli/src/devices.c:115
+msgid "CONNECTION"
+msgstr "ANSLUTNING"
+
 #. 0
-#: ../cli/src/devices.c:102
+#: ../cli/src/devices.c:124
 msgid "CARRIER-DETECT"
 msgstr "CARRIER-DETECT"
 
 #. 1
-#: ../cli/src/devices.c:103
+#: ../cli/src/devices.c:125
 msgid "SPEED"
 msgstr "HASTIGHET"
 
 #. 0
-#: ../cli/src/devices.c:112
+#: ../cli/src/devices.c:134
 msgid "CARRIER"
 msgstr "BÄRARE"
 
 #. 0
-#: ../cli/src/devices.c:122
+#: ../cli/src/devices.c:144
 msgid "WEP"
 msgstr "WEP"
 
 #. 1
-#: ../cli/src/devices.c:123
+#: ../cli/src/devices.c:145
 msgid "WPA"
 msgstr "WPA"
 
 #. 2
-#: ../cli/src/devices.c:124
+#: ../cli/src/devices.c:146
 msgid "WPA2"
 msgstr "WPA2"
 
 #. 3
-#: ../cli/src/devices.c:125
+#: ../cli/src/devices.c:147
 msgid "TKIP"
 msgstr "TKIP"
 
 #. 4
-#: ../cli/src/devices.c:126
+#: ../cli/src/devices.c:148
 msgid "CCMP"
 msgstr "CCMP"
 
 #. 0
-#: ../cli/src/devices.c:135
-#: ../cli/src/devices.c:146
-msgid "ADDRESS"
-msgstr "ADRESS"
+#: ../cli/src/devices.c:158
+msgid "CTR-FREQ"
+msgstr "CTR-FREQ"
 
 #. 1
-#: ../cli/src/devices.c:136
-#: ../cli/src/devices.c:147
-msgid "PREFIX"
-msgstr "PREFIX"
+#: ../cli/src/devices.c:159
+msgid "RSSI"
+msgstr "RSSI"
 
 #. 2
-#: ../cli/src/devices.c:137
-#: ../cli/src/devices.c:148
-msgid "GATEWAY"
-msgstr "GATEWAY"
+#: ../cli/src/devices.c:160
+msgid "CINR"
+msgstr "CINR"
 
-#. 0
-#: ../cli/src/devices.c:157
-#: ../cli/src/devices.c:166
-msgid "DNS"
-msgstr "DNS"
+#. 3
+#: ../cli/src/devices.c:161
+msgid "TX-POW"
+msgstr "TX-POW"
+
+#. 4
+#: ../cli/src/devices.c:162
+msgid "BSID"
+msgstr "BSID"
 
 #. 0
-#: ../cli/src/devices.c:175
+#: ../cli/src/devices.c:172
 msgid "SSID"
 msgstr "SSID"
 
 #. 1
-#: ../cli/src/devices.c:176
+#: ../cli/src/devices.c:173
 msgid "BSSID"
 msgstr "BSSID"
 
 #. 2
-#: ../cli/src/devices.c:177
+#: ../cli/src/devices.c:174
 msgid "MODE"
 msgstr "LÄGE"
 
 #. 3
-#: ../cli/src/devices.c:178
+#: ../cli/src/devices.c:175
 msgid "FREQ"
 msgstr "FREK"
 
 #. 4
-#: ../cli/src/devices.c:179
+#: ../cli/src/devices.c:176
 msgid "RATE"
 msgstr "FREKVENS"
 
 #. 5
-#: ../cli/src/devices.c:180
+#. 1
+#: ../cli/src/devices.c:177
+#: ../cli/src/devices.c:195
 msgid "SIGNAL"
 msgstr "SIGNAL"
 
 #. 6
-#: ../cli/src/devices.c:181
+#: ../cli/src/devices.c:178
 msgid "SECURITY"
 msgstr "SÄKERHET"
 
 #. 7
-#: ../cli/src/devices.c:182
+#: ../cli/src/devices.c:179
 msgid "WPA-FLAGS"
 msgstr "WPA-FLAGGOR"
 
 #. 8
-#: ../cli/src/devices.c:183
+#: ../cli/src/devices.c:180
 msgid "RSN-FLAGS"
 msgstr "RSN-FLAGGOR"
 
 #. 10
-#: ../cli/src/devices.c:185
+#. 4
+#: ../cli/src/devices.c:182
+#: ../cli/src/devices.c:198
 msgid "ACTIVE"
 msgstr "AKTIV"
 
-#: ../cli/src/devices.c:208
+#: ../cli/src/devices.c:215
 #, c-format
 msgid ""
 "Usage: nmcli dev { COMMAND | help }\n"
 "\n"
+"  COMMAND := { status | list | disconnect | wifi | wimax }\n"
+"\n"
 "  COMMAND := { status | list | disconnect | wifi }\n"
 "\n"
 "  status\n"
 "  list [iface <iface>]\n"
 "  disconnect iface <iface> [--nowait] [--timeout <timeout>]\n"
-"  wifi [list [iface <iface>] [hwaddr <hwaddr>]]\n"
+"  wifi [list [iface <iface>] [bssid <BSSID>]]\n"
+"  wimax [list [iface <iface>] [nsp <name>]]\n"
 "\n"
 msgstr ""
 "Användning: nmcli dev { KOMMANDO | help }\n"
 "\n"
+"  KOMMANDO := { status | list | disconnect | wifi | wimax }\n"
+"\n"
 "  KOMMANDO := { status | list | disconnect | wifi }\n"
 "\n"
 "  status\n"
 "  list [iface <gränssnitt>]\n"
 "  disconnect iface <gränssnitt> [--nowait] [--timeout <tidsgräns>]\n"
-"  wifi [list [iface <gränssnitt>] [hwaddr <maskinvaruadress>]]\n"
+"  wifi [list [iface <gränssnitt>] [bssid <BSSID>]]\n"
+"  wimax [list [iface <gränssnitt>] [nsp <namn>]]\n"
 "\n"
 
-#: ../cli/src/devices.c:228
+#: ../cli/src/devices.c:243
 msgid "unmanaged"
 msgstr "ohanterad"
 
-#: ../cli/src/devices.c:230
+#: ../cli/src/devices.c:245
 msgid "unavailable"
 msgstr "otillgänglig"
 
-#: ../cli/src/devices.c:232
-#: ../cli/src/network-manager.c:91
+#: ../cli/src/devices.c:247
+#: ../cli/src/network-manager.c:108
 msgid "disconnected"
 msgstr "frånkopplad"
 
-#: ../cli/src/devices.c:234
+#: ../cli/src/devices.c:249
 msgid "connecting (prepare)"
 msgstr "ansluter (förbereder)"
 
-#: ../cli/src/devices.c:236
+#: ../cli/src/devices.c:251
 msgid "connecting (configuring)"
 msgstr "ansluter (konfigurerar)"
 
-#: ../cli/src/devices.c:238
+#: ../cli/src/devices.c:253
 msgid "connecting (need authentication)"
 msgstr "ansluter (behöver autentisering)"
 
-#: ../cli/src/devices.c:240
+#: ../cli/src/devices.c:255
 msgid "connecting (getting IP configuration)"
 msgstr "ansluter (hämtar IP-konfiguration)"
 
-#: ../cli/src/devices.c:242
-#: ../cli/src/network-manager.c:89
+#: ../cli/src/devices.c:257
+msgid "connecting (checking IP connectivity)"
+msgstr "ansluter (kontrollerar IP-anslutning)"
+
+#: ../cli/src/devices.c:259
+msgid "connecting (starting secondary connections)"
+msgstr "ansluter (startar sekundära anslutningar)"
+
+#: ../cli/src/devices.c:261
+#: ../cli/src/network-manager.c:104
 msgid "connected"
 msgstr "ansluten"
 
-#: ../cli/src/devices.c:244
+#: ../cli/src/devices.c:265
 msgid "connection failed"
 msgstr "anslutningen misslyckades"
 
-#: ../cli/src/devices.c:267
-#: ../cli/src/devices.c:424
+#: ../cli/src/devices.c:276
+msgid "No reason given"
+msgstr "Ingen anledning angiven"
+
+#: ../cli/src/devices.c:279
+msgid "Unknown error"
+msgstr "Okänt fel"
+
+#: ../cli/src/devices.c:282
+msgid "Device is now managed"
+msgstr "Enheten är nu hanterad"
+
+#: ../cli/src/devices.c:285
+msgid "Device is now unmanaged"
+msgstr "Enheten är nu ohanterad"
+
+#: ../cli/src/devices.c:288
+msgid "The device could not be readied for configuration"
+msgstr "Enheten kunde inte göras färdig för konfiguration"
+
+#: ../cli/src/devices.c:291
+msgid "IP configuration could not be reserved (no available address, timeout, etc)"
+msgstr "IP-konfigurationen kunde inte reserveras (ingen tillgänglig adress, tidsgräns, etc)"
+
+#: ../cli/src/devices.c:294
+msgid "The IP configuration is no longer valid"
+msgstr "IP-konfigurationen är inte längre giltig"
+
+#: ../cli/src/devices.c:297
+msgid "Secrets were required, but not provided"
+msgstr "Hemligheter krävdes men angavs inte"
+
+#: ../cli/src/devices.c:300
+msgid "802.1X supplicant disconnected"
+msgstr "802.1X-supplikanten kopplade från"
+
+#: ../cli/src/devices.c:303
+msgid "802.1X supplicant configuration failed"
+msgstr "Konfiguration av 802.1X-supplikanten misslyckades"
+
+#: ../cli/src/devices.c:306
+msgid "802.1X supplicant failed"
+msgstr "802.1X-supplikanten misslyckades"
+
+#: ../cli/src/devices.c:309
+msgid "802.1X supplicant took too long to authenticate"
+msgstr "802.1X-supplikanten tog för lång tid att autentisera"
+
+#: ../cli/src/devices.c:312
+msgid "PPP service failed to start"
+msgstr "PPP-tjänsten misslyckades med att starta"
+
+#: ../cli/src/devices.c:315
+msgid "PPP service disconnected"
+msgstr "PPP-tjänsten kopplades från"
+
+#: ../cli/src/devices.c:318
+msgid "PPP failed"
+msgstr "PPP misslyckades"
+
+#: ../cli/src/devices.c:321
+msgid "DHCP client failed to start"
+msgstr "DHCP-klienten misslyckades med att starta"
+
+#: ../cli/src/devices.c:324
+msgid "DHCP client error"
+msgstr "Fel i DHCP-klient"
+
+#: ../cli/src/devices.c:327
+msgid "DHCP client failed"
+msgstr "DHCP-klienten misslyckades"
+
+#: ../cli/src/devices.c:330
+msgid "Shared connection service failed to start"
+msgstr "Tjänst för delad anslutning misslyckades med att starta"
+
+#: ../cli/src/devices.c:333
+msgid "Shared connection service failed"
+msgstr "Tjänst för delad anslutning misslyckades"
+
+#: ../cli/src/devices.c:336
+msgid "AutoIP service failed to start"
+msgstr "AutoIP-tjänsten misslyckades med att starta"
+
+#: ../cli/src/devices.c:339
+msgid "AutoIP service error"
+msgstr "Fel i AutoIP-tjänsten"
+
+#: ../cli/src/devices.c:342
+msgid "AutoIP service failed"
+msgstr "AutoIP-tjänsten misslyckades"
+
+#: ../cli/src/devices.c:345
+msgid "The line is busy"
+msgstr "Linjen är upptagen"
+
+#: ../cli/src/devices.c:348
+msgid "No dial tone"
+msgstr "Ingen rington"
+
+#: ../cli/src/devices.c:351
+msgid "No carrier could be established"
+msgstr "Ingen bärare kunde etableras"
+
+#: ../cli/src/devices.c:354
+msgid "The dialing request timed out"
+msgstr "Uppringningsbegäran översteg tidsgränsen"
+
+#: ../cli/src/devices.c:357
+msgid "The dialing attempt failed"
+msgstr "Uppringningsförsöket misslyckades"
+
+#: ../cli/src/devices.c:360
+msgid "Modem initialization failed"
+msgstr "Initiering av modem misslyckades"
+
+#: ../cli/src/devices.c:363
+msgid "Failed to select the specified APN"
+msgstr "Misslyckades med att välja angiven APN"
+
+#: ../cli/src/devices.c:366
+msgid "Not searching for networks"
+msgstr "Söker inte efter nätverk"
+
+#: ../cli/src/devices.c:369
+msgid "Network registration denied"
+msgstr "Nätverksregistreringen nekades"
+
+#: ../cli/src/devices.c:372
+msgid "Network registration timed out"
+msgstr "Tidsgränsen för nätverksregistrering överstegs"
+
+#: ../cli/src/devices.c:375
+msgid "Failed to register with the requested network"
+msgstr "Misslyckades med att registrera mot det begärda nätverket"
+
+#: ../cli/src/devices.c:378
+msgid "PIN check failed"
+msgstr "Kontroll av PIN-kod misslyckades"
+
+#: ../cli/src/devices.c:381
+msgid "Necessary firmware for the device may be missing"
+msgstr "Nödvändig fast programvara för enheten kanske saknas"
+
+#: ../cli/src/devices.c:384
+msgid "The device was removed"
+msgstr "Enheten togs bort"
+
+#: ../cli/src/devices.c:387
+msgid "NetworkManager went to sleep"
+msgstr "Nätverkshanterare somnade"
+
+#: ../cli/src/devices.c:390
+msgid "The device's active connection disappeared"
+msgstr "Enhetens aktiva anslutning försvann"
+
+#: ../cli/src/devices.c:393
+msgid "Device disconnected by user or client"
+msgstr "Enheten kopplades från av användare eller klient"
+
+#: ../cli/src/devices.c:396
+msgid "Carrier/link changed"
+msgstr "Bärare/länk ändrades"
+
+#: ../cli/src/devices.c:399
+msgid "The device's existing connection was assumed"
+msgstr "Enhetens befintliga anslutning antogs"
+
+#: ../cli/src/devices.c:402
+msgid "The supplicant is now available"
+msgstr "Supplikanten finns nu tillgänglig"
+
+#: ../cli/src/devices.c:405
+msgid "The modem could not be found"
+msgstr "Modemet kunde inte hittas"
+
+#: ../cli/src/devices.c:408
+msgid "The Bluetooth connection failed or timed out"
+msgstr "Blåtandsanslutningen misslyckades eller översteg tidsgränsen"
+
+#: ../cli/src/devices.c:411
+msgid "GSM Modem's SIM card not inserted"
+msgstr "SIM-kortet i GSM-modemet är inte anslutet"
+
+#: ../cli/src/devices.c:414
+msgid "GSM Modem's SIM PIN required"
+msgstr "PIN-kod för SIM-kortet i GSM-modemet krävs"
+
+#: ../cli/src/devices.c:417
+msgid "GSM Modem's SIM PUK required"
+msgstr "PUK-kod för SIM-kortet i GSM-modemet krävs"
+
+#: ../cli/src/devices.c:420
+msgid "GSM Modem's SIM wrong"
+msgstr "SIM-kortet i GSM-modemet är felaktigt"
+
+#: ../cli/src/devices.c:423
+#| msgid "Infiniband device does not support connected mode"
+msgid "InfiniBand device does not support connected mode"
+msgstr "InfiniBand-enheten saknar stöd för anslutet läge"
+
+#: ../cli/src/devices.c:426
+#| msgid "connection failed"
+msgid "A dependency of the connection failed"
+msgstr "Ett beroende för anslutningen misslyckades"
+
+#: ../cli/src/devices.c:428
+#: ../cli/src/devices.c:451
+#: ../cli/src/devices.c:467
+#: ../cli/src/devices.c:587
+#: ../cli/src/devices.c:631
 msgid "Unknown"
 msgstr "Okänt"
 
-#: ../cli/src/devices.c:299
+#: ../cli/src/devices.c:500
 msgid "(none)"
 msgstr "(ingen)"
 
-#: ../cli/src/devices.c:324
-#, c-format
-msgid "%s: error converting IP4 address 0x%X"
-msgstr "%s: fel vid konvertering av IP4-adress 0x%X"
-
-#: ../cli/src/devices.c:393
+#: ../cli/src/devices.c:556
 #, c-format
 msgid "%u MHz"
 msgstr "%u MHz"
 
-#: ../cli/src/devices.c:394
+#: ../cli/src/devices.c:557
 #, c-format
 msgid "%u MB/s"
 msgstr "%u MB/s"
 
-#: ../cli/src/devices.c:403
+#: ../cli/src/devices.c:566
 msgid "Encrypted: "
 msgstr "Krypterad: "
 
-#: ../cli/src/devices.c:408
+#: ../cli/src/devices.c:571
 msgid "WEP "
 msgstr "WEP "
 
-#: ../cli/src/devices.c:410
+#: ../cli/src/devices.c:573
 msgid "WPA "
 msgstr "WPA "
 
-#: ../cli/src/devices.c:412
+#: ../cli/src/devices.c:575
 msgid "WPA2 "
 msgstr "WPA2 "
 
-#: ../cli/src/devices.c:415
+#: ../cli/src/devices.c:578
 msgid "Enterprise "
 msgstr "Företag"
 
-#: ../cli/src/devices.c:424
+#: ../cli/src/devices.c:587
 msgid "Ad-Hoc"
 msgstr "Ad-Hoc"
 
-#: ../cli/src/devices.c:424
+#: ../cli/src/devices.c:587
 msgid "Infrastructure"
 msgstr "Infrastruktur"
 
-#: ../cli/src/devices.c:486
+#: ../cli/src/devices.c:622
+msgid "Home"
+msgstr "Hem"
+
+#: ../cli/src/devices.c:625
+msgid "Partner"
+msgstr "Partner"
+
+#: ../cli/src/devices.c:628
+msgid "Roaming"
+msgstr "Roaming"
+
+#: ../cli/src/devices.c:700
 #, c-format
 msgid "Error: 'dev list': %s"
 msgstr "Fel: \"dev list\": %s"
 
-#: ../cli/src/devices.c:488
+#: ../cli/src/devices.c:702
 #, c-format
 msgid "Error: 'dev list': %s; allowed fields: %s"
 msgstr "Fel: \"dev list\": %s; tillåtna fält: %s"
 
-#: ../cli/src/devices.c:497
+#: ../cli/src/devices.c:711
 msgid "Device details"
 msgstr "Enhetsdetaljer"
 
-#: ../cli/src/devices.c:527
-#: ../cli/src/devices.c:925
+#: ../cli/src/devices.c:756
+#: ../cli/src/devices.c:757
+#: ../cli/src/devices.c:1164
+#: ../cli/src/utils.c:445
 msgid "(unknown)"
 msgstr "(okänt)"
 
-#: ../cli/src/devices.c:528
-msgid "unknown)"
-msgstr "okänt)"
+#: ../cli/src/devices.c:765
+msgid "not connected"
+msgstr "inte ansluten"
 
-#: ../cli/src/devices.c:554
+#: ../cli/src/devices.c:792
 #, c-format
 msgid "%u Mb/s"
 msgstr "%u Mb/s"
 
 #. Print header
 #. "WIRED-PROPERTIES"
-#: ../cli/src/devices.c:627
+#: ../cli/src/devices.c:865
 msgid "on"
 msgstr "på"
 
-#: ../cli/src/devices.c:627
+#: ../cli/src/devices.c:865
 msgid "off"
 msgstr "av"
 
-#: ../cli/src/devices.c:808
+#: ../cli/src/devices.c:1016
 #, c-format
 msgid "Error: 'dev status': %s"
 msgstr "Fel: \"dev status\": %s"
 
-#: ../cli/src/devices.c:810
+#: ../cli/src/devices.c:1018
 #, c-format
 msgid "Error: 'dev status': %s; allowed fields: %s"
 msgstr "Fel: \"dev status\": %s; tillåtna fält: %s"
 
-#: ../cli/src/devices.c:817
+#: ../cli/src/devices.c:1041
 msgid "Status of devices"
 msgstr "Status för enheter"
 
-#: ../cli/src/devices.c:845
+#: ../cli/src/devices.c:1072
 #, c-format
 msgid "Error: '%s' argument is missing."
 msgstr "Fel: \"%s\"-argument saknas."
 
-#: ../cli/src/devices.c:874
-#: ../cli/src/devices.c:1013
-#: ../cli/src/devices.c:1136
+#: ../cli/src/devices.c:1113
+#: ../cli/src/devices.c:1265
+#: ../cli/src/devices.c:1402
+#: ../cli/src/devices.c:1621
 #, c-format
 msgid "Error: Device '%s' not found."
 msgstr "Fel: Enheten \"%s\" hittades inte."
 
-#: ../cli/src/devices.c:897
+#: ../cli/src/devices.c:1136
 #, c-format
 msgid "Success: Device '%s' successfully disconnected."
 msgstr "Lyckades: Enheten \"%s\" kopplades från."
 
-#: ../cli/src/devices.c:922
+#: ../cli/src/devices.c:1161
 #, c-format
 msgid "Error: Device '%s' (%s) disconnecting failed: %s"
 msgstr "Fel: Frånkoppling av enheten \"%s\" (%s) misslyckades: %s"
 
-#: ../cli/src/devices.c:930
+#: ../cli/src/devices.c:1169
 #, c-format
 msgid "Device state: %d (%s)\n"
 msgstr "Enhetstillstånd: %d (%s)\n"
 
-#: ../cli/src/devices.c:994
+#: ../cli/src/devices.c:1234
 #, c-format
 msgid "Error: iface has to be specified."
 msgstr "Fel: gränssnitt (iface) måste anges."
 
-#: ../cli/src/devices.c:1112
+#: ../cli/src/devices.c:1360
 #, c-format
 msgid "Error: 'dev wifi': %s"
 msgstr "Fel: \"dev wifi\": %s"
 
-#: ../cli/src/devices.c:1114
+#: ../cli/src/devices.c:1362
 #, c-format
 msgid "Error: 'dev wifi': %s; allowed fields: %s"
 msgstr "Fel: \"dev wifi\": %s; tillåtna fält: %s"
 
-#: ../cli/src/devices.c:1121
+#: ../cli/src/devices.c:1385
 msgid "WiFi scan list"
 msgstr "WiFi-avsökningslista"
 
-#: ../cli/src/devices.c:1156
-#: ../cli/src/devices.c:1210
+#: ../cli/src/devices.c:1422
+#: ../cli/src/devices.c:1476
 #, c-format
-msgid "Error: Access point with hwaddr '%s' not found."
-msgstr "Fel: Accesspunkt med hwaddr \"%s\" hittades inte."
+msgid "Error: Access point with bssid '%s' not found."
+msgstr "Fel: Accesspunkt med bssid \"%s\" hittades inte."
 
-#: ../cli/src/devices.c:1173
+#: ../cli/src/devices.c:1439
 #, c-format
 msgid "Error: Device '%s' is not a WiFi device."
 msgstr "Fel: Enheten \"%s\" är inte en WiFi-enhet."
 
-#: ../cli/src/devices.c:1237
+#: ../cli/src/devices.c:1503
 #, c-format
 msgid "Error: 'dev wifi' command '%s' is not valid."
 msgstr "Fel: \"dev wifi\"-kommandot \"%s\" är inte giltigt."
 
-#: ../cli/src/devices.c:1284
+#: ../cli/src/devices.c:1579
+#, c-format
+msgid "Error: 'dev wimax': %s"
+msgstr "Fel: \"dev wimax\": %s"
+
+#: ../cli/src/devices.c:1581
+#, c-format
+msgid "Error: 'dev wimax': %s; allowed fields: %s"
+msgstr "Fel: \"dev wimax\": %s; tillåtna fält: %s"
+
+#: ../cli/src/devices.c:1604
+msgid "WiMAX NSP list"
+msgstr "WiMAX NSP-lista"
+
+#: ../cli/src/devices.c:1641
+#, c-format
+msgid "Error: NSP with name '%s' not found."
+msgstr "Fel: NSP med namnet \"%s\" hittades inte."
+
+#: ../cli/src/devices.c:1652
+#, c-format
+msgid "Error: Device '%s' is not a WiMAX device."
+msgstr "Fel: Enheten \"%s\" är inte en WiMAX-enhet."
+
+#: ../cli/src/devices.c:1683
+#, c-format
+msgid "Error: Access point with nsp '%s' not found."
+msgstr "Fel: Accesspunkt med nsp \"%s\" hittades inte."
+
+#: ../cli/src/devices.c:1710
+#, c-format
+msgid "Error: 'dev wimax' command '%s' is not valid."
+msgstr "Fel: \"dev wimax\"-kommandot \"%s\" är inte giltigt."
+
+#: ../cli/src/devices.c:1760
 #, c-format
 msgid "Error: 'dev' command '%s' is not valid."
 msgstr "Fel: \"dev\"-kommandot \"%s\" är inte giltigt."
 
-#: ../cli/src/network-manager.c:35
+#: ../cli/src/network-manager.c:37
 msgid "RUNNING"
 msgstr "KÖR"
 
-#. 1
-#: ../cli/src/network-manager.c:37
+#. 0
+#: ../cli/src/network-manager.c:38
+msgid "VERSION"
+msgstr "VERSION"
+
+#. 2
+#: ../cli/src/network-manager.c:40
 msgid "NET-ENABLED"
 msgstr "NÄT-AKTIVERAT"
 
-#. 2
-#: ../cli/src/network-manager.c:38
+#. 3
+#: ../cli/src/network-manager.c:41
 msgid "WIFI-HARDWARE"
 msgstr "WIFI-MASKINVARA"
 
-#. 3
-#: ../cli/src/network-manager.c:39
+#. 4
+#: ../cli/src/network-manager.c:42
 msgid "WIFI"
 msgstr "WIFI"
 
-#. 4
-#: ../cli/src/network-manager.c:40
+#. 5
+#: ../cli/src/network-manager.c:43
 msgid "WWAN-HARDWARE"
 msgstr "WWAN-MASKINVARA"
 
-#. 5
-#: ../cli/src/network-manager.c:41
+#. 6
+#: ../cli/src/network-manager.c:44
 msgid "WWAN"
 msgstr "WWAN"
 
-#: ../cli/src/network-manager.c:64
-#, c-format
-#| msgid ""
-#| "Usage: nmcli nm { COMMAND | help }\n"
-#| "\n"
-#| "  COMMAND := { status | sleep | wakeup | wifi | wwan }\n"
-#| "\n"
-#| "  status\n"
-#| "  sleep\n"
-#| "  wakeup\n"
-#| "  wifi [on|off]\n"
-#| "  wwan [on|off]\n"
-#| "\n"
+#. 7
+#: ../cli/src/network-manager.c:45
+msgid "WIMAX-HARDWARE"
+msgstr "WIMAX-MASKINVARA"
+
+#. 8
+#: ../cli/src/network-manager.c:46
+msgid "WIMAX"
+msgstr "WIMAX"
+
+#: ../cli/src/network-manager.c:67
+#, c-format
 msgid ""
 "Usage: nmcli nm { COMMAND | help }\n"
 "\n"
+"  COMMAND := { status | enable | sleep | wifi | wwan | wimax }\n"
+"\n"
 "  COMMAND := { status | enable | sleep | wifi | wwan }\n"
 "\n"
 "  status\n"
@@ -993,10 +1486,13 @@ msgid ""
 "  sleep [true|false]\n"
 "  wifi [on|off]\n"
 "  wwan [on|off]\n"
+"  wimax [on|off]\n"
 "\n"
 msgstr ""
 "Användning: nmcli nm { KOMMANDO | help }\n"
 "\n"
+"  KOMMANDO := { status | enable | sleep | wifi | wwan | wimax }\n"
+"\n"
 "  KOMMANDO := { status | enable | sleep | wifi | wwan }\n"
 "\n"
 "  status\n"
@@ -1004,133 +1500,157 @@ msgstr ""
 "  sleep [true|false]\n"
 "  wifi [on|off]\n"
 "  wwan [on|off]\n"
+"  wimax [on|off]\n"
 "\n"
 
-#: ../cli/src/network-manager.c:85
+#: ../cli/src/network-manager.c:96
 msgid "asleep"
 msgstr "sover"
 
-#: ../cli/src/network-manager.c:87
+#: ../cli/src/network-manager.c:98
 msgid "connecting"
 msgstr "ansluter"
 
-#: ../cli/src/network-manager.c:128
+#: ../cli/src/network-manager.c:100
+msgid "connected (local only)"
+msgstr "ansluten (endast lokalt)"
+
+#: ../cli/src/network-manager.c:102
+msgid "connected (site only)"
+msgstr "ansluten (endast plats)"
+
+#: ../cli/src/network-manager.c:106
+msgid "disconnecting"
+msgstr "kopplar från"
+
+#: ../cli/src/network-manager.c:146
 #, c-format
 msgid "Error: 'nm status': %s"
 msgstr "Fel: \"nm status\": %s"
 
-#: ../cli/src/network-manager.c:130
+#: ../cli/src/network-manager.c:148
 #, c-format
 msgid "Error: 'nm status': %s; allowed fields: %s"
 msgstr "Fel: \"nm status\": %s; tillåtna fält: %s"
 
-#: ../cli/src/network-manager.c:137
-msgid "NetworkManager status"
-msgstr "Status för Nätverkshanterare"
-
-#. Print header
-#: ../cli/src/network-manager.c:144
-#: ../cli/src/network-manager.c:145
-#: ../cli/src/network-manager.c:146
-#: ../cli/src/network-manager.c:147
-#: ../cli/src/network-manager.c:154
-#: ../cli/src/network-manager.c:247
-#: ../cli/src/network-manager.c:296
-#: ../cli/src/network-manager.c:328
+#. create NMClient
+#: ../cli/src/network-manager.c:161
+#: ../cli/src/network-manager.c:162
+#: ../cli/src/network-manager.c:163
+#: ../cli/src/network-manager.c:164
+#: ../cli/src/network-manager.c:165
+#: ../cli/src/network-manager.c:167
+#: ../cli/src/network-manager.c:168
+#: ../cli/src/network-manager.c:289
+#: ../cli/src/network-manager.c:344
+#: ../cli/src/network-manager.c:382
+#: ../cli/src/network-manager.c:421
 msgid "enabled"
 msgstr "aktiverad"
 
-#: ../cli/src/network-manager.c:144
-#: ../cli/src/network-manager.c:145
-#: ../cli/src/network-manager.c:146
-#: ../cli/src/network-manager.c:147
-#: ../cli/src/network-manager.c:154
-#: ../cli/src/network-manager.c:247
-#: ../cli/src/network-manager.c:296
-#: ../cli/src/network-manager.c:328
+#: ../cli/src/network-manager.c:161
+#: ../cli/src/network-manager.c:162
+#: ../cli/src/network-manager.c:163
+#: ../cli/src/network-manager.c:164
+#: ../cli/src/network-manager.c:165
+#: ../cli/src/network-manager.c:167
+#: ../cli/src/network-manager.c:168
+#: ../cli/src/network-manager.c:289
+#: ../cli/src/network-manager.c:344
+#: ../cli/src/network-manager.c:382
+#: ../cli/src/network-manager.c:421
 msgid "disabled"
 msgstr "inaktiverad"
 
-#: ../cli/src/network-manager.c:152
+#: ../cli/src/network-manager.c:181
+msgid "NetworkManager status"
+msgstr "Status för Nätverkshanterare"
+
+#. Print header
+#: ../cli/src/network-manager.c:184
 msgid "running"
 msgstr "kör"
 
-#: ../cli/src/network-manager.c:152
+#: ../cli/src/network-manager.c:184
 msgid "not running"
 msgstr "kör inte"
 
-#: ../cli/src/network-manager.c:175
+#: ../cli/src/network-manager.c:215
+#: ../cli/src/utils.c:425
 #, c-format
-#| msgid "Error: could not connect to D-Bus."
 msgid "Error: Couldn't connect to system bus: %s"
 msgstr "Fel: kunde inte ansluta till systembussen: %s"
 
-#: ../cli/src/network-manager.c:186
+#: ../cli/src/network-manager.c:226
 #, c-format
-#| msgid "Error: could not connect to D-Bus."
 msgid "Error: Couldn't create D-Bus object proxy."
 msgstr "Fel: Kunde inte skapa proxy för D-Bus-objekt."
 
-#: ../cli/src/network-manager.c:192
+#: ../cli/src/network-manager.c:232
 #, c-format
-#| msgid "Error: 'con list': %s"
 msgid "Error in sleep: %s"
 msgstr "Fel i sömn: %s"
 
-#: ../cli/src/network-manager.c:237
-#: ../cli/src/network-manager.c:286
-#: ../cli/src/network-manager.c:318
+#: ../cli/src/network-manager.c:276
+#: ../cli/src/network-manager.c:331
+#: ../cli/src/network-manager.c:369
+#: ../cli/src/network-manager.c:408
 #, c-format
 msgid "Error: '--fields' value '%s' is not valid here; allowed fields: %s"
 msgstr "Fel: värdet \"%s\" för \"--fields\" är inte giltigt här; tillåtna fält: %s"
 
-#: ../cli/src/network-manager.c:245
-#| msgid "WiFi enabled"
+#: ../cli/src/network-manager.c:284
 msgid "Networking enabled"
 msgstr "Nätverk aktiverat"
 
-#: ../cli/src/network-manager.c:256
+#: ../cli/src/network-manager.c:300
 #, c-format
-#| msgid "Error: invalid 'wwan' parameter: '%s'."
 msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'."
 msgstr "Fel: ogiltig \"enable\"-parameter: \"%s\"; använd \"true\" eller \"false\"."
 
-#: ../cli/src/network-manager.c:265
+#: ../cli/src/network-manager.c:310
 #, c-format
-#| msgid "Error: Could not connect to NetworkManager."
 msgid "Error: Sleeping status is not exported by NetworkManager."
 msgstr "Fel: Sömnstatus exporteras inte av Nätverkshanterare."
 
-#: ../cli/src/network-manager.c:273
+#: ../cli/src/network-manager.c:318
 #, c-format
-#| msgid "Error: invalid 'wifi' parameter: '%s'."
 msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'."
 msgstr "Fel: ogiltig \"sleep\"-parameter: \"%s\"; använd \"true\" eller \"false\"."
 
-#: ../cli/src/network-manager.c:294
+#: ../cli/src/network-manager.c:339
 msgid "WiFi enabled"
 msgstr "WiFi aktiverat"
 
-#: ../cli/src/network-manager.c:305
+#: ../cli/src/network-manager.c:355
 #, c-format
 msgid "Error: invalid 'wifi' parameter: '%s'."
 msgstr "Fel: ogiltig \"wifi\"-parameter: \"%s\"."
 
-#: ../cli/src/network-manager.c:326
+#: ../cli/src/network-manager.c:377
 msgid "WWAN enabled"
 msgstr "WWAN aktiverat"
 
-#: ../cli/src/network-manager.c:337
+#: ../cli/src/network-manager.c:393
 #, c-format
 msgid "Error: invalid 'wwan' parameter: '%s'."
 msgstr "Fel: ogiltig \"wwan\"-parameter: \"%s\"."
 
-#: ../cli/src/network-manager.c:348
+#: ../cli/src/network-manager.c:416
+msgid "WiMAX enabled"
+msgstr "WiMAX aktiverat"
+
+#: ../cli/src/network-manager.c:432
+#, c-format
+msgid "Error: invalid 'wimax' parameter: '%s'."
+msgstr "Fel: ogiltig \"wimax\"-parameter: \"%s\"."
+
+#: ../cli/src/network-manager.c:445
 #, c-format
 msgid "Error: 'nm' command '%s' is not valid."
 msgstr "Fel: \"nm\"-kommandot \"%s\" är inte giltigt."
 
-#: ../cli/src/nmcli.c:69
+#: ../cli/src/nmcli.c:64
 #, c-format
 msgid ""
 "Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n"
@@ -1141,6 +1661,7 @@ msgid ""
 "  -m[ode] tabular|multiline                  output mode\n"
 "  -f[ields] <field1,field2,...>|all|common   specify fields to output\n"
 "  -e[scape] yes|no                           escape columns separators in values\n"
+"  -n[ocheck]                                 don't check nmcli and NetworkManager versions\n"
 "  -v[ersion]                                 show program version\n"
 "  -h[elp]                                    print this help\n"
 "\n"
@@ -1158,6 +1679,7 @@ msgstr ""
 "  -m[ode] tabular|multiline                  utdataläge\n"
 "  -f[ields] <field1,field2,...>|all|common   ange fält för utdata\n"
 "  -e[scape] yes|no                           escape för kolumnavgränsare i värden\n"
+"  -n[ocheck]                                 kontrollera inte version av nmcli och Nätverkshanterare\n"
 "  -v[ersion]                                 visa programversion\n"
 "  -h[elp]                                    skriv ut denna hjälp\n"
 "\n"
@@ -1167,654 +1689,827 @@ msgstr ""
 "  dev         enheter hanterade av Nätverkshanterare\n"
 "\n"
 
-#: ../cli/src/nmcli.c:113
+#: ../cli/src/nmcli.c:109
 #, c-format
 msgid "Error: Object '%s' is unknown, try 'nmcli help'."
 msgstr "Fel: Objektet \"%s\" är okänt, prova \"nmcli help\"."
 
-#: ../cli/src/nmcli.c:143
+#: ../cli/src/nmcli.c:139
 #, c-format
 msgid "Error: Option '--terse' is specified the second time."
 msgstr "Fel: Flaggan \"--terse\" har angivits en andra gång."
 
-#: ../cli/src/nmcli.c:148
+#: ../cli/src/nmcli.c:144
 #, c-format
 msgid "Error: Option '--terse' is mutually exclusive with '--pretty'."
 msgstr "Fel: Flaggan \"--terse\" är ömsesidigt uteslutande med \"--pretty\"."
 
-#: ../cli/src/nmcli.c:156
+#: ../cli/src/nmcli.c:152
 #, c-format
 msgid "Error: Option '--pretty' is specified the second time."
 msgstr "Fel: Flaggan \"--pretty\" har angivits en andra gång."
 
-#: ../cli/src/nmcli.c:161
+#: ../cli/src/nmcli.c:157
 #, c-format
 msgid "Error: Option '--pretty' is mutually exclusive with '--terse'."
 msgstr "Fel: Flaggan \"--pretty\" är ömsesidigt uteslutande med \"--terse\"."
 
-#: ../cli/src/nmcli.c:171
-#: ../cli/src/nmcli.c:187
+#: ../cli/src/nmcli.c:167
+#: ../cli/src/nmcli.c:183
 #, c-format
 msgid "Error: missing argument for '%s' option."
 msgstr "Fel: argument för flaggan \"%s\" saknas."
 
-#: ../cli/src/nmcli.c:180
-#: ../cli/src/nmcli.c:196
+#: ../cli/src/nmcli.c:176
+#: ../cli/src/nmcli.c:192
 #, c-format
 msgid "Error: '%s' is not valid argument for '%s' option."
 msgstr "Fel: \"%s\" är inte ett giltigt argument för flaggan \"%s\"."
 
-#: ../cli/src/nmcli.c:203
+#: ../cli/src/nmcli.c:199
 #, c-format
 msgid "Error: fields for '%s' options are missing."
 msgstr "Fel: fält för \"%s\"-flaggor saknas."
 
-#: ../cli/src/nmcli.c:209
+#: ../cli/src/nmcli.c:207
 #, c-format
 msgid "nmcli tool, version %s\n"
 msgstr "nmcli-verktyg, version %s\n"
 
-#: ../cli/src/nmcli.c:215
+#: ../cli/src/nmcli.c:213
 #, c-format
 msgid "Error: Option '%s' is unknown, try 'nmcli -help'."
 msgstr "Fel: Flaggan \"%s\" är okänd, prova \"nmcli -help\"."
 
-#: ../cli/src/nmcli.c:234
+#: ../cli/src/nmcli.c:232
 #, c-format
 msgid "Caught signal %d, shutting down..."
 msgstr "Fångade signal %d, stänger av..."
 
-#: ../cli/src/nmcli.c:259
-#, c-format
-msgid "Error: Could not connect to NetworkManager."
-msgstr "Fel: Kunde inte ansluta till Nätverkshanterare."
+#: ../cli/src/nmcli.c:257
+msgid "Error: Could not create NMClient object."
+msgstr "Fel: Kunde inte skapa NMClient-objekt."
 
-#: ../cli/src/nmcli.c:275
+#: ../cli/src/nmcli.c:273
 msgid "Success"
 msgstr "Lyckades"
 
-#: ../cli/src/settings.c:411
+#: ../cli/src/settings.c:497
 #, c-format
 msgid "%d (hex-ascii-key)"
 msgstr "%d (hex-ascii-nyckel)"
 
-#: ../cli/src/settings.c:413
+#: ../cli/src/settings.c:499
 #, c-format
 msgid "%d (104/128-bit passphrase)"
 msgstr "%d (104/128-bitars lösenfras)"
 
-#: ../cli/src/settings.c:416
+#: ../cli/src/settings.c:502
 #, c-format
 msgid "%d (unknown)"
 msgstr "%d (okänt)"
 
-#: ../cli/src/settings.c:442
+#: ../cli/src/settings.c:528
 msgid "0 (unknown)"
 msgstr "0 (okänt)"
 
-#: ../cli/src/settings.c:448
+#: ../cli/src/settings.c:534
 msgid "any, "
 msgstr "valfri, "
 
-#: ../cli/src/settings.c:450
+#: ../cli/src/settings.c:536
 msgid "900 MHz, "
 msgstr "900 MHz, "
 
-#: ../cli/src/settings.c:452
+#: ../cli/src/settings.c:538
 msgid "1800 MHz, "
 msgstr "1800 MHz, "
 
-#: ../cli/src/settings.c:454
+#: ../cli/src/settings.c:540
 msgid "1900 MHz, "
 msgstr "1900 MHz, "
 
-#: ../cli/src/settings.c:456
+#: ../cli/src/settings.c:542
 msgid "850 MHz, "
 msgstr "850 MHz, "
 
-#: ../cli/src/settings.c:458
+#: ../cli/src/settings.c:544
 msgid "WCDMA 3GPP UMTS 2100 MHz, "
 msgstr "WCDMA 3GPP UMTS 2100 MHz, "
 
-#: ../cli/src/settings.c:460
+#: ../cli/src/settings.c:546
 msgid "WCDMA 3GPP UMTS 1800 MHz, "
 msgstr "WCDMA 3GPP UMTS 1800 MHz, "
 
-#: ../cli/src/settings.c:462
+#: ../cli/src/settings.c:548
 msgid "WCDMA 3GPP UMTS 1700/2100 MHz, "
 msgstr "WCDMA 3GPP UMTS 1700/2100 MHz, "
 
-#: ../cli/src/settings.c:464
+#: ../cli/src/settings.c:550
 msgid "WCDMA 3GPP UMTS 800 MHz, "
 msgstr "WCDMA 3GPP UMTS 800 MHz, "
 
-#: ../cli/src/settings.c:466
+#: ../cli/src/settings.c:552
 msgid "WCDMA 3GPP UMTS 850 MHz, "
 msgstr "WCDMA 3GPP UMTS 850 MHz, "
 
-#: ../cli/src/settings.c:468
+#: ../cli/src/settings.c:554
 msgid "WCDMA 3GPP UMTS 900 MHz, "
 msgstr "WCDMA 3GPP UMTS 900 MHz, "
 
-#: ../cli/src/settings.c:470
+#: ../cli/src/settings.c:556
 msgid "WCDMA 3GPP UMTS 1700 MHz, "
 msgstr "WCDMA 3GPP UMTS 1700 MHz, "
 
-#: ../cli/src/settings.c:554
-#: ../cli/src/settings.c:721
+#: ../cli/src/settings.c:558
+msgid "WCDMA 3GPP UMTS 1900 MHz, "
+msgstr "WCDMA 3GPP UMTS 1900 MHz, "
+
+#: ../cli/src/settings.c:560
+msgid "WCDMA 3GPP UMTS 2600 MHz, "
+msgstr "WCDMA 3GPP UMTS 2600 MHz, "
+
+#: ../cli/src/settings.c:578
+msgid "0 (NONE)"
+msgstr "0 (INGEN)"
+
+#: ../cli/src/settings.c:584
+msgid "REORDER_HEADERS, "
+msgstr "REORDER_HEADERS, "
+
+#: ../cli/src/settings.c:586
+msgid "GVRP, "
+msgstr "GVRP, "
+
+#: ../cli/src/settings.c:588
+msgid "LOOSE_BINDING, "
+msgstr "LOOSE_BINDING, "
+
+#: ../cli/src/settings.c:730
+#: ../cli/src/settings.c:926
+#: ../cli/src/settings.c:1630
 msgid "auto"
 msgstr "auto"
 
-#: ../cli/src/settings.c:716
-#: ../cli/src/settings.c:719
-#: ../cli/src/settings.c:720
-#: ../cli/src/utils.c:172
+#: ../cli/src/settings.c:920
+#: ../cli/src/settings.c:923
+#: ../cli/src/settings.c:924
+#: ../cli/src/utils.c:247
 msgid "not set"
 msgstr "inte inställd"
 
-#: ../cli/src/utils.c:124
+#: ../cli/src/utils.c:103
+#, c-format
+msgid "Error converting IP4 address '0x%X' to text form"
+msgstr "Fel vid konvertering av IP4-adress \"0x%X\" till textformat"
+
+#: ../cli/src/utils.c:131
+#, c-format
+msgid "Error converting IP6 address '%s' to text form"
+msgstr "Fel vid konvertering av IP6-adress \"%s\" till textformat"
+
+#: ../cli/src/utils.c:200
 #, c-format
 msgid "field '%s' has to be alone"
 msgstr "fältet \"%s\" måste vara ensamt"
 
-#: ../cli/src/utils.c:127
+#: ../cli/src/utils.c:203
 #, c-format
 msgid "invalid field '%s'"
 msgstr "ogiltigt fält \"%s\""
 
-#: ../cli/src/utils.c:146
+#: ../cli/src/utils.c:222
 #, c-format
 msgid "Option '--terse' requires specifying '--fields'"
 msgstr "Flaggan \"--terse\" kräver att \"--fields\" anges"
 
-#: ../cli/src/utils.c:150
+#: ../cli/src/utils.c:226
 #, c-format
 msgid "Option '--terse' requires specific '--fields' option values , not '%s'"
 msgstr "Flaggan \"--terse\" kräver specifika värden för \"--fields\"-flagga , inte \"%s\""
 
-#: ../libnm-util/crypto.c:120
+#: ../cli/src/utils.c:436
+#, c-format
+msgid "Error: Couldn't create D-Bus object proxy for org.freedesktop.DBus"
+msgstr "Fel: Kunde inte skapa proxy för D-Bus-objekt för org.freedesktop.DBus"
+
+#: ../cli/src/utils.c:444
+#, c-format
+msgid "Error: NameHasOwner request failed: %s"
+msgstr "Fel: NameHasOwner-begäran misslyckades: %s"
+
+#: ../cli/src/utils.c:489
+#, c-format
+msgid "Warning: nmcli (%s) and NetworkManager (%s) versions don't match. Use --nocheck to suppress the warning.\n"
+msgstr "Varning: versionerna för nmcli (%s) och NetworkManager (%s) stämmer inte överens. Använd --nocheck för att inte visa varningen.\n"
+
+#: ../cli/src/utils.c:498
+#, c-format
+msgid "Error: nmcli (%s) and NetworkManager (%s) versions don't match. Force execution using --nocheck, but the results are unpredictable."
+msgstr "Fel: versionerna för nmcli (%s) och NetworkManager (%s) stämmer inte överens. Tvinga körning med --nocheck, men resultatet är inte förutsägbart."
+
+#: ../libnm-util/crypto.c:133
 #, c-format
 msgid "PEM key file had no end tag '%s'."
 msgstr "PEM-nyckelfilen hade ingen sluttagg \"%s\"."
 
-#: ../libnm-util/crypto.c:130
+#: ../libnm-util/crypto.c:146
 #, c-format
 msgid "Doesn't look like a PEM private key file."
 msgstr "Ser inte ut som en privat PEM-nyckelfil."
 
-#: ../libnm-util/crypto.c:138
+#: ../libnm-util/crypto.c:154
 #, c-format
 msgid "Not enough memory to store PEM file data."
 msgstr "Inte tillräckligt mycket minne för att lagra PEM-fildata."
 
-#: ../libnm-util/crypto.c:154
+#: ../libnm-util/crypto.c:170
 #, c-format
 msgid "Malformed PEM file: Proc-Type was not first tag."
 msgstr "Felformulerad PEM-fil: Proc-Type var inte första taggen."
 
-#: ../libnm-util/crypto.c:162
+#: ../libnm-util/crypto.c:178
 #, c-format
 msgid "Malformed PEM file: unknown Proc-Type tag '%s'."
 msgstr "Felformulerad PEM-fil: okänd Proc-Type-tagg \"%s\"."
 
-#: ../libnm-util/crypto.c:172
+#: ../libnm-util/crypto.c:188
 #, c-format
 msgid "Malformed PEM file: DEK-Info was not the second tag."
 msgstr "Felformulerad PEM-fil: DEK-Info var inte andra taggen."
 
-#: ../libnm-util/crypto.c:183
+#: ../libnm-util/crypto.c:199
 #, c-format
 msgid "Malformed PEM file: no IV found in DEK-Info tag."
 msgstr "Felformulerad PEM-fil: ingen IV hittades i DEK-Info-taggen."
 
-#: ../libnm-util/crypto.c:190
+#: ../libnm-util/crypto.c:206
 #, c-format
 msgid "Malformed PEM file: invalid format of IV in DEK-Info tag."
 msgstr "Felformulerad PEM-fil: ogiltigt format för IV i DEK-Info-taggen."
 
-#: ../libnm-util/crypto.c:203
+#: ../libnm-util/crypto.c:219
 #, c-format
 msgid "Malformed PEM file: unknown private key cipher '%s'."
 msgstr "Felformulerad PEM-fil: okänt chiffer för privat nyckel \"%s\"."
 
-#: ../libnm-util/crypto.c:222
+#: ../libnm-util/crypto.c:238
 #, c-format
 msgid "Could not decode private key."
 msgstr "Kunde inte avkoda privat nyckel."
 
-#: ../libnm-util/crypto.c:267
-#, c-format
-msgid "PEM certificate '%s' had no end tag '%s'."
-msgstr "PEM-certifikatet \"%s\" hade ingen sluttagg \"%s\"."
+#: ../libnm-util/crypto.c:284
+msgid "Failed to find expected PKCS#8 start tag."
+msgstr "Misslyckades med att hitta förväntad PKCS#8-starttagg."
 
-#: ../libnm-util/crypto.c:277
+#: ../libnm-util/crypto.c:292
 #, c-format
-msgid "Failed to decode certificate."
-msgstr "Misslyckades med att avkoda certifikat."
+msgid "Failed to find expected PKCS#8 end tag '%s'."
+msgstr "Misslyckades med att hitta förväntad PKCS#8-sluttagg \"%s\"."
 
-#: ../libnm-util/crypto.c:286
+#: ../libnm-util/crypto.c:312
+msgid "Not enough memory to store private key data."
+msgstr "Inte tillräckligt mycket minne för att lagra privat nyckeldata."
+
+#: ../libnm-util/crypto.c:317
+msgid "Failed to decode PKCS#8 private key."
+msgstr "Misslyckades med att avkoda privat PKCS#8-nyckel."
+
+#: ../libnm-util/crypto.c:339
+#: ../libnm-util/crypto.c:625
 #, c-format
 msgid "Not enough memory to store certificate data."
 msgstr "Inte tillräckligt mycket minne för att lagra certifikatdata."
 
-#: ../libnm-util/crypto.c:294
-#, c-format
-msgid "Not enough memory to store file data."
-msgstr "Inte tillräckligt mycket minne för att lagra fildata."
-
-#: ../libnm-util/crypto.c:324
+#: ../libnm-util/crypto.c:365
 #, c-format
 msgid "IV must be an even number of bytes in length."
 msgstr "IV måste vara ett jämnt antal byte i längd."
 
-#: ../libnm-util/crypto.c:333
+#: ../libnm-util/crypto.c:374
 #, c-format
 msgid "Not enough memory to store the IV."
 msgstr "Inte tillräckligt mycket minne för att lagra IV."
 
-#: ../libnm-util/crypto.c:344
+#: ../libnm-util/crypto.c:385
 #, c-format
 msgid "IV contains non-hexadecimal digits."
 msgstr "IV innehåller icke-hexadecimala siffror."
 
-#: ../libnm-util/crypto.c:382
-#: ../libnm-util/crypto_gnutls.c:148
-#: ../libnm-util/crypto_gnutls.c:266
-#: ../libnm-util/crypto_nss.c:171
-#: ../libnm-util/crypto_nss.c:336
+#: ../libnm-util/crypto.c:423
+#: ../libnm-util/crypto_gnutls.c:147
+#: ../libnm-util/crypto_gnutls.c:265
+#: ../libnm-util/crypto_nss.c:167
+#: ../libnm-util/crypto_nss.c:332
 #, c-format
 msgid "Private key cipher '%s' was unknown."
 msgstr "Privata nyckelchiffret \"%s\" var okänt."
 
-#: ../libnm-util/crypto.c:391
+#: ../libnm-util/crypto.c:432
 #, c-format
 msgid "Not enough memory to decrypt private key."
 msgstr "Inte tillräckligt mycket minne för att dekryptera privat nyckel."
 
-#: ../libnm-util/crypto.c:511
+#: ../libnm-util/crypto.c:497
+#, c-format
+msgid "Not enough memory to store decrypted private key."
+msgstr "Inte tillräckligt mycket minne för att lagra dekrypterad privat nyckel."
+
+#: ../libnm-util/crypto.c:542
 #, c-format
 msgid "Unable to determine private key type."
 msgstr "Kunde inte bestämma typ av privat nyckel."
 
-#: ../libnm-util/crypto.c:530
+#: ../libnm-util/crypto.c:597
 #, c-format
-msgid "Not enough memory to store decrypted private key."
-msgstr "Inte tillräckligt mycket minne för att lagra dekrypterad privat nyckel."
+msgid "PEM certificate had no start tag '%s'."
+msgstr "PEM-certifikatet hade ingen starttagg \"%s\"."
 
-#: ../libnm-util/crypto_gnutls.c:49
+#: ../libnm-util/crypto.c:606
+#, c-format
+msgid "PEM certificate had no end tag '%s'."
+msgstr "PEM-certifikatet hade ingen sluttagg \"%s\"."
+
+#: ../libnm-util/crypto.c:630
+#, c-format
+msgid "Failed to decode certificate."
+msgstr "Misslyckades med att avkoda certifikat."
+
+#: ../libnm-util/crypto_gnutls.c:50
 msgid "Failed to initialize the crypto engine."
 msgstr "Misslyckades med att initiera krypteringsmotorn."
 
-#: ../libnm-util/crypto_gnutls.c:93
+#: ../libnm-util/crypto_gnutls.c:92
 #, c-format
 msgid "Failed to initialize the MD5 engine: %s / %s."
 msgstr "Misslyckades med att initiera MD5-motorn: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:156
+#: ../libnm-util/crypto_gnutls.c:155
 #, c-format
 msgid "Invalid IV length (must be at least %zd)."
 msgstr "Ogiltig IV-längd (måste vara minst %zd)."
 
-#: ../libnm-util/crypto_gnutls.c:165
-#: ../libnm-util/crypto_nss.c:188
+#: ../libnm-util/crypto_gnutls.c:164
+#: ../libnm-util/crypto_nss.c:184
 #, c-format
 msgid "Not enough memory for decrypted key buffer."
 msgstr "Inte tillräckligt mycket minne för buffert för dekrypterade nycklar."
 
-#: ../libnm-util/crypto_gnutls.c:173
+#: ../libnm-util/crypto_gnutls.c:172
 #, c-format
 msgid "Failed to initialize the decryption cipher context: %s / %s."
 msgstr "Misslyckades med att initiera chifferkontexten för dekryptering: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:182
+#: ../libnm-util/crypto_gnutls.c:181
 #, c-format
 msgid "Failed to set symmetric key for decryption: %s / %s."
 msgstr "Misslyckades med att ställa in symmetrisk nyckel för dekryptering: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:191
+#: ../libnm-util/crypto_gnutls.c:190
 #, c-format
 msgid "Failed to set IV for decryption: %s / %s."
 msgstr "Misslyckades med att ställa in IV för dekryptering: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:200
+#: ../libnm-util/crypto_gnutls.c:199
 #, c-format
 msgid "Failed to decrypt the private key: %s / %s."
 msgstr "Misslyckades med att dekryptera den privata nyckeln: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:210
-#: ../libnm-util/crypto_nss.c:267
+#: ../libnm-util/crypto_gnutls.c:209
+#: ../libnm-util/crypto_nss.c:263
 #, c-format
 msgid "Failed to decrypt the private key: unexpected padding length."
 msgstr "Misslyckades med att dekryptera privata nyckeln: oväntad utfyllningslängd."
 
-#: ../libnm-util/crypto_gnutls.c:221
-#: ../libnm-util/crypto_nss.c:278
+#: ../libnm-util/crypto_gnutls.c:220
+#: ../libnm-util/crypto_nss.c:274
 #, c-format
 msgid "Failed to decrypt the private key."
 msgstr "Misslyckades med att dekryptera privata nyckeln."
 
-#: ../libnm-util/crypto_gnutls.c:286
-#: ../libnm-util/crypto_nss.c:356
+#: ../libnm-util/crypto_gnutls.c:285
+#: ../libnm-util/crypto_nss.c:352
 #, c-format
 msgid "Could not allocate memory for encrypting."
 msgstr "Kunde inte allokera minne för kryptering."
 
-#: ../libnm-util/crypto_gnutls.c:294
+#: ../libnm-util/crypto_gnutls.c:293
 #, c-format
 msgid "Failed to initialize the encryption cipher context: %s / %s."
 msgstr "Misslyckades med att initiera chifferkontexten för kryptering: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:303
+#: ../libnm-util/crypto_gnutls.c:302
 #, c-format
 msgid "Failed to set symmetric key for encryption: %s / %s."
 msgstr "Misslyckades med att ställa in symmetrisk nyckel för kryptering: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:313
+#: ../libnm-util/crypto_gnutls.c:312
 #, c-format
 msgid "Failed to set IV for encryption: %s / %s."
 msgstr "Misslyckades med att ställa in IV för kryptering: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:322
+#: ../libnm-util/crypto_gnutls.c:321
 #, c-format
 msgid "Failed to encrypt the data: %s / %s."
 msgstr "Misslyckades med att kryptera datat: %s / %s."
 
-#: ../libnm-util/crypto_gnutls.c:362
+#: ../libnm-util/crypto_gnutls.c:361
 #, c-format
 msgid "Error initializing certificate data: %s"
 msgstr "Fel vid initiering av certifikatdata: %s"
 
-#: ../libnm-util/crypto_gnutls.c:384
+#: ../libnm-util/crypto_gnutls.c:383
 #, c-format
 msgid "Couldn't decode certificate: %s"
 msgstr "Kunde inte avkoda certifikat: %s"
 
-#: ../libnm-util/crypto_gnutls.c:408
+#: ../libnm-util/crypto_gnutls.c:407
 #, c-format
 msgid "Couldn't initialize PKCS#12 decoder: %s"
 msgstr "Kunde inte initiera PKCS#12-avkodare: %s"
 
-#: ../libnm-util/crypto_gnutls.c:421
+#: ../libnm-util/crypto_gnutls.c:420
 #, c-format
 msgid "Couldn't decode PKCS#12 file: %s"
 msgstr "Kunde inte avkoda PKCS#12-fil: %s"
 
-#: ../libnm-util/crypto_gnutls.c:433
+#: ../libnm-util/crypto_gnutls.c:432
 #, c-format
 msgid "Couldn't verify PKCS#12 file: %s"
 msgstr "Kunde inte verifiera PKCS#12-fil: %s"
 
+#: ../libnm-util/crypto_gnutls.c:460
+#, c-format
+msgid "Couldn't initialize PKCS#8 decoder: %s"
+msgstr "Kunde inte initiera PKCS#8-avkodare: %s"
+
+#: ../libnm-util/crypto_gnutls.c:483
+#, c-format
+msgid "Couldn't decode PKCS#8 file: %s"
+msgstr "Kunde inte avkoda PKCS#8-fil: %s"
+
 #: ../libnm-util/crypto_nss.c:56
 #, c-format
 msgid "Failed to initialize the crypto engine: %d."
 msgstr "Misslyckades med att initiera krypteringsmotorn: %d."
 
-#: ../libnm-util/crypto_nss.c:111
+#: ../libnm-util/crypto_nss.c:107
 #, c-format
 msgid "Failed to initialize the MD5 context: %d."
 msgstr "Misslyckades med att initiera MD5-kontexten: %d."
 
-#: ../libnm-util/crypto_nss.c:179
+#: ../libnm-util/crypto_nss.c:175
 #, c-format
 msgid "Invalid IV length (must be at least %d)."
 msgstr "Ogiltig IV-längd (måste vara minst %d)."
 
-#: ../libnm-util/crypto_nss.c:196
+#: ../libnm-util/crypto_nss.c:192
 #, c-format
 msgid "Failed to initialize the decryption cipher slot."
 msgstr "Misslyckades med att initiera dekrypteringschifferplatsen."
 
-#: ../libnm-util/crypto_nss.c:206
+#: ../libnm-util/crypto_nss.c:202
 #, c-format
 msgid "Failed to set symmetric key for decryption."
 msgstr "Misslyckades med att ställa in symmetrisk nyckel för dekryptering."
 
-#: ../libnm-util/crypto_nss.c:216
+#: ../libnm-util/crypto_nss.c:212
 #, c-format
 msgid "Failed to set IV for decryption."
 msgstr "Misslyckades med att ställa in IV för dekryptering."
 
-#: ../libnm-util/crypto_nss.c:224
+#: ../libnm-util/crypto_nss.c:220
 #, c-format
 msgid "Failed to initialize the decryption context."
 msgstr "Misslyckades med att initiera dekrypteringskontexten."
 
-#: ../libnm-util/crypto_nss.c:237
+#: ../libnm-util/crypto_nss.c:233
 #, c-format
 msgid "Failed to decrypt the private key: %d."
 msgstr "Misslyckades med att dekryptera privata nyckeln: %d."
 
-#: ../libnm-util/crypto_nss.c:245
+#: ../libnm-util/crypto_nss.c:241
 #, c-format
 msgid "Failed to decrypt the private key: decrypted data too large."
 msgstr "Misslyckades med att dekryptera privata nyckeln: dekrypterat data är för stort."
 
-#: ../libnm-util/crypto_nss.c:256
+#: ../libnm-util/crypto_nss.c:252
 #, c-format
 msgid "Failed to finalize decryption of the private key: %d."
 msgstr "Misslyckades med att färdigställa dekryptering av den privata nyckeln: %d."
 
-#: ../libnm-util/crypto_nss.c:364
+#: ../libnm-util/crypto_nss.c:360
 #, c-format
 msgid "Failed to initialize the encryption cipher slot."
 msgstr "Misslyckades med att initiera krypteringschifferplatsen."
 
-#: ../libnm-util/crypto_nss.c:372
+#: ../libnm-util/crypto_nss.c:368
 #, c-format
 msgid "Failed to set symmetric key for encryption."
 msgstr "Misslyckades med att ställa in symmetrisk nyckel för kryptering."
 
-#: ../libnm-util/crypto_nss.c:380
+#: ../libnm-util/crypto_nss.c:376
 #, c-format
 msgid "Failed to set IV for encryption."
 msgstr "Misslyckades med att ställa in IV för kryptering."
 
-#: ../libnm-util/crypto_nss.c:388
+#: ../libnm-util/crypto_nss.c:384
 #, c-format
 msgid "Failed to initialize the encryption context."
 msgstr "Misslyckades med att initiera krypteringskontexten."
 
-#: ../libnm-util/crypto_nss.c:396
+#: ../libnm-util/crypto_nss.c:392
 #, c-format
 msgid "Failed to encrypt: %d."
 msgstr "Misslyckades med att kryptera: %d."
 
-#: ../libnm-util/crypto_nss.c:404
+#: ../libnm-util/crypto_nss.c:400
 #, c-format
 msgid "Unexpected amount of data after encrypting."
 msgstr "Oväntad mängd data efter kryptering."
 
-#: ../libnm-util/crypto_nss.c:447
+#: ../libnm-util/crypto_nss.c:443
 #, c-format
 msgid "Couldn't decode certificate: %d"
 msgstr "Kunde inte avkoda certifikat: %d"
 
-#: ../libnm-util/crypto_nss.c:482
+#: ../libnm-util/crypto_nss.c:478
 #, c-format
 msgid "Couldn't convert password to UCS2: %d"
 msgstr "Kunde inte konvertera lösenord till UCS2: %d"
 
-#: ../libnm-util/crypto_nss.c:510
+#: ../libnm-util/crypto_nss.c:506
 #, c-format
 msgid "Couldn't initialize PKCS#12 decoder: %d"
 msgstr "Kunde inte initiera PKCS#12-avkodare: %d"
 
-#: ../libnm-util/crypto_nss.c:519
+#: ../libnm-util/crypto_nss.c:515
 #, c-format
 msgid "Couldn't decode PKCS#12 file: %d"
 msgstr "Kunde inte avkoda PKCS#12-fil: %d"
 
-#: ../libnm-util/crypto_nss.c:528
+#: ../libnm-util/crypto_nss.c:524
 #, c-format
 msgid "Couldn't verify PKCS#12 file: %d"
 msgstr "Kunde inte verifiera PKCS#12-fil: %d"
 
-#: ../libnm-util/crypto_nss.c:557
+#: ../libnm-util/crypto_nss.c:568
 msgid "Could not generate random data."
 msgstr "Kunde inte generera slumpmässigt data."
 
-#: ../libnm-util/nm-utils.c:1975
+#: ../libnm-util/nm-utils.c:2040
 #, c-format
 msgid "Not enough memory to make encryption key."
 msgstr "Inte tillräckligt mycket minne för att skapa krypteringsnyckel."
 
-#: ../libnm-util/nm-utils.c:2085
+#: ../libnm-util/nm-utils.c:2150
 msgid "Could not allocate memory for PEM file creation."
 msgstr "Kunde inte allokera minne för att skapa PEM-fil."
 
-#: ../libnm-util/nm-utils.c:2097
+#: ../libnm-util/nm-utils.c:2162
 #, c-format
 msgid "Could not allocate memory for writing IV to PEM file."
 msgstr "Kunde inte allokera minne för skrivning av IV till PEM-fil."
 
-#: ../libnm-util/nm-utils.c:2109
+#: ../libnm-util/nm-utils.c:2174
 #, c-format
 msgid "Could not allocate memory for writing encrypted key to PEM file."
 msgstr "Kunde inte allokera minne för skrivning av krypterad nyckel till PEM-fil."
 
-#: ../libnm-util/nm-utils.c:2128
+#: ../libnm-util/nm-utils.c:2193
 #, c-format
 msgid "Could not allocate memory for PEM file data."
 msgstr "Kunde inte allokera minne för PEM-fildata."
 
-#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:1
-msgid "Connection sharing via a protected WiFi network"
-msgstr "Anslutningsdelning via ett skyddat trådlöst nätverk"
-
-#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:2
-msgid "Connection sharing via an open WiFi network"
-msgstr "Anslutningsdelning via ett öppet trådlöst nätverk"
-
-#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:3
-msgid "Modify persistent system hostname"
-msgstr "Ändra bestående värdnamn för systemet"
-
-#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:4
-msgid "Modify system connections"
-msgstr "Ändra systemanslutningar"
-
-#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:5
-msgid "System policy prevents modification of system settings"
-msgstr "Systemets policy förhindrar ändring av systeminställningar"
-
-#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:6
-msgid "System policy prevents modification of the persistent system hostname"
-msgstr "Systemets policy förhindrar ändring av bestående värdnamn för systemet"
-
-#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:7
-msgid "System policy prevents sharing connections via a protected WiFi network"
-msgstr "Systemets policy förhindrar delning av anslutningar via ett skyddat trådlöst nätverk"
-
-#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:8
-msgid "System policy prevents sharing connections via an open WiFi network"
-msgstr "Systemets policy förhindrar delning av anslutningar via ett öppet trådlöst nätverk"
-
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:1
-msgid "Allow control of network connections"
-msgstr "Tillåt kontroll av nätverksanslutningar"
+msgid "Enable or disable system networking"
+msgstr "Aktivera eller inaktivera systemnätverk"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:2
-msgid "Allow use of user-specific connections"
-msgstr "Tillåt användning av användarspecifika anslutningar"
+msgid "System policy prevents enabling or disabling system networking"
+msgstr "Systemets policy förhindrar aktivering eller inaktivering av systemnätverk"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:3
-msgid "Enable or disable WiFi devices"
-msgstr "Aktivera eller inaktivera WiFi-enheter"
+msgid "Put NetworkManager to sleep or wake it up (should only be used by system power management)"
+msgstr "Försätt Nätverkshanterare i vänteläge eller återställ efter det (bör endast användas av systemets strömhantering)"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:4
-msgid "Enable or disable mobile broadband devices"
-msgstr "Aktivera eller inaktivera mobila bredbandsenheter"
+msgid "System policy prevents putting NetworkManager to sleep or waking it up"
+msgstr "Systemets policy förhindrar att Nätverkshanterare försätts i vänteläge eller återställs efter det"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:5
-msgid "Enable or disable system networking"
-msgstr "Aktivera eller inaktivera systemnätverk"
+msgid "Enable or disable WiFi devices"
+msgstr "Aktivera eller inaktivera WiFi-enheter"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:6
-msgid "Put NetworkManager to sleep or wake it up (should only be used by system power management)"
-msgstr "Försätt Nätverkshanterare i vänteläge eller återställ efter det (bör endast användas av systemets strömhantering)"
+msgid "System policy prevents enabling or disabling WiFi devices"
+msgstr "Systemets policy förhindrar aktivering eller inaktivering av WiFi-enheter"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:7
-msgid "System policy prevents control of network connections"
-msgstr "Systemets policy förhindrar kontroll av nätverksanslutningar"
+msgid "Enable or disable mobile broadband devices"
+msgstr "Aktivera eller inaktivera mobila bredbandsenheter"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:8
-msgid "System policy prevents enabling or disabling WiFi devices"
-msgstr "Systemets policy förhindrar aktivering eller inaktivering av WiFi-enheter"
-
-#: ../policy/org.freedesktop.NetworkManager.policy.in.h:9
 msgid "System policy prevents enabling or disabling mobile broadband devices"
 msgstr "Systemets policy förhindrar aktivering eller inaktivering av mobila bredbandsenheter"
 
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:9
+msgid "Enable or disable WiMAX mobile broadband devices"
+msgstr "Aktivera eller inaktivera mobila WiMAX-bredbandsenheter"
+
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:10
-msgid "System policy prevents enabling or disabling system networking"
-msgstr "Systemets policy förhindrar aktivering eller inaktivering av systemnätverk"
+msgid "System policy prevents enabling or disabling WiMAX mobile broadband devices"
+msgstr "Systemets policy förhindrar aktivering eller inaktivering av mobila WiMAX-bredbandsenheter"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:11
-msgid "System policy prevents putting NetworkManager to sleep or waking it up"
-msgstr "Systemets policy förhindrar att Nätverkshanterare försätts i vänteläge eller återställs efter det"
+msgid "Allow control of network connections"
+msgstr "Tillåt kontroll av nätverksanslutningar"
 
 #: ../policy/org.freedesktop.NetworkManager.policy.in.h:12
-msgid "System policy prevents use of user-specific connections"
-msgstr "Systemets policy förhindrar användning av användarspecifika anslutningar"
+msgid "System policy prevents control of network connections"
+msgstr "Systemets policy förhindrar kontroll av nätverksanslutningar"
 
-#: ../src/nm-netlink-monitor.c:100
-#: ../src/nm-netlink-monitor.c:231
-#: ../src/nm-netlink-monitor.c:653
-#, c-format
-msgid "error processing netlink message: %s"
-msgstr "fel vid behandling av netlink-meddelande: %s"
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:13
+msgid "Connection sharing via a protected WiFi network"
+msgstr "Anslutningsdelning via ett skyddat trådlöst nätverk"
 
-#: ../src/nm-netlink-monitor.c:214
-msgid "error occurred while waiting for data on socket"
-msgstr "fel inträffade vid väntan på data i uttaget"
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:14
+msgid "System policy prevents sharing connections via a protected WiFi network"
+msgstr "Systemets policy förhindrar delning av anslutningar via ett skyddat trådlöst nätverk"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:15
+msgid "Connection sharing via an open WiFi network"
+msgstr "Anslutningsdelning via ett öppet trådlöst nätverk"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:16
+msgid "System policy prevents sharing connections via an open WiFi network"
+msgstr "Systemets policy förhindrar delning av anslutningar via ett öppet trådlöst nätverk"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:17
+msgid "Modify personal network connections"
+msgstr "Ändra personliga nätverksanslutningar"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:18
+msgid "System policy prevents modification of personal network settings"
+msgstr "Systemets policy förhindrar ändring av personliga nätverksinställningar"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:19
+msgid "Modify network connections for all users"
+msgstr "Ändra nätverksanslutningar för alla användare"
 
-#: ../src/nm-netlink-monitor.c:254
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:20
+msgid "System policy prevents modification of network settings for all users"
+msgstr "Systemets policy förhindrar ändring av nätverksinställningar för alla användare"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:21
+msgid "Modify persistent system hostname"
+msgstr "Ändra bestående värdnamn för systemet"
+
+#: ../policy/org.freedesktop.NetworkManager.policy.in.h:22
+msgid "System policy prevents modification of the persistent system hostname"
+msgstr "Systemets policy förhindrar ändring av bestående värdnamn för systemet"
+
+#: ../src/main.c:143
 #, c-format
-msgid "unable to connect to netlink for monitoring link status: %s"
-msgstr "kan inte ansluta till netlink för övervakning av länkstatus: %s"
+msgid "Failed to initialize SIGTERM pipe: %d"
+msgstr "Misslyckades med att initiera SIGTERM-rör: %d"
 
-#: ../src/nm-netlink-monitor.c:265
+#: ../src/main.c:174
 #, c-format
-msgid "unable to enable netlink handle credential passing: %s"
-msgstr "kunde inte aktivera behörighetshantering för netlink-handtag: %s"
+msgid "Opening %s failed: %s\n"
+msgstr "Öppnandet av %s misslyckades: %s\n"
 
-#: ../src/nm-netlink-monitor.c:291
-#: ../src/nm-netlink-monitor.c:353
+#: ../src/main.c:180
 #, c-format
-msgid "unable to allocate netlink handle for monitoring link status: %s"
-msgstr "kan inte allokera netlink-handtag för övervakning av länkstatus: %s"
+msgid "Writing to %s failed: %s\n"
+msgstr "Skrivning till %s misslyckades: %s\n"
 
-#: ../src/nm-netlink-monitor.c:376
+#: ../src/main.c:185
 #, c-format
-msgid "unable to allocate netlink link cache for monitoring link status: %s"
-msgstr "kan inte allokera netlink-länkcache för övervakning av länkstatus: %s"
+msgid "Closing %s failed: %s\n"
+msgstr "Stängning av %s misslyckades: %s\n"
 
-#: ../src/nm-netlink-monitor.c:502
+#: ../src/main.c:228
 #, c-format
-msgid "unable to join netlink group: %s"
-msgstr "kan inte gå med i netlink-grupp: %s"
+msgid "NetworkManager is already running (pid %ld)\n"
+msgstr "Nätverkshanterare är redan igång (pid %ld)\n"
+
+#: ../src/main.c:368
+msgid "Print NetworkManager version and exit"
+msgstr "Skriv ut version av Nätverkshanterare och avsluta"
+
+#: ../src/main.c:369
+msgid "Don't become a daemon"
+msgstr "Bli inte en demon"
+
+#: ../src/main.c:370
+msgid "Make all warnings fatal"
+msgstr "Gör alla varningar till ödesdigra"
+
+#: ../src/main.c:371
+msgid "Specify the location of a PID file"
+msgstr "Ange platsen för en PID-fil"
 
-#: ../src/nm-netlink-monitor.c:629
-#: ../src/nm-netlink-monitor.c:642
+#: ../src/main.c:371
+msgid "filename"
+msgstr "filnamn"
+
+#: ../src/main.c:372
+msgid "State file location"
+msgstr "Plats för tillståndsfil"
+
+#: ../src/main.c:372
+msgid "/path/to/state.file"
+msgstr "/sökväg/till/tillstånds.fil"
+
+#: ../src/main.c:373
+msgid "Config file location"
+msgstr "Plats för konfigurationsfil"
+
+#: ../src/main.c:373
+msgid "/path/to/config.file"
+msgstr "/sökväg/till/konfigurations.fil"
+
+#: ../src/main.c:374
+msgid "List of plugins separated by ','"
+msgstr "Lista över insticksmoduler separerade med \",\""
+
+#: ../src/main.c:374
+msgid "plugin1,plugin2"
+msgstr "insticksmodul1,insticksmodul2"
+
+#. Translators: Do not translate the values in the square brackets
+#: ../src/main.c:376
+msgid "Log level: one of [ERR, WARN, INFO, DEBUG]"
+msgstr "Loggnivå: en av [ERR, WARN, INFO, DEBUG]"
+
+#. Translators: Do not translate the values in the square brackets
+#: ../src/main.c:379
+msgid ""
+"Log domains separated by ',': any combination of\n"
+"                                          [NONE,HW,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,\n"
+"                                           WIFI_SCAN,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,\n"
+"                                           AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,WIMAX,\n"
+"                                           INFINIBAND,FIREWALL]"
+msgstr ""
+"Loggdomäner separerade med \",\": någon kombination av\n"
+"                                          [NONE,HW,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,\n"
+"                                           WIFI_SCAN,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,\n"
+"                                           AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,WIMAX,\n"
+"                                           INFINIBAND,FIREWALL]"
+
+#: ../src/main.c:392
 #, c-format
-msgid "error updating link cache: %s"
-msgstr "fel vid uppdatering av länkcache: %s"
+msgid "GModules are not supported on your platform!\n"
+msgstr "GModules stöds inte på din plattform!\n"
+
+#: ../src/main.c:411
+msgid ""
+"NetworkManager monitors all network connections and automatically\n"
+"chooses the best connection to use.  It also allows the user to\n"
+"specify wireless access points which wireless cards in the computer\n"
+"should associate with."
+msgstr ""
+"Nätverkshanterare övervakar alla nätverksanslutningar och väljer\n"
+"automatiskt den bästa anslutningen att använda. Den tillåter även\n"
+"att användaren anger trådlösa accesspunkter som trådlösa nätverks-\n"
+"kort i datorn ska associeras med."
 
-#: ../src/main.c:499
+#: ../src/main.c:417
 #, c-format
 msgid "Invalid option.  Please use --help to see a list of valid options.\n"
 msgstr "Ogiltig flagga.  Använd --help för att se en lista över giltiga flaggor.\n"
 
-#: ../src/main.c:570
+#: ../src/main.c:427
+#, c-format
+msgid "You must be root to run NetworkManager!\n"
+msgstr "Du måste vara root för att köra Nätverkshanterare!\n"
+
+#: ../src/main.c:448
+#, c-format
+msgid "Failed to read configuration: (%d) %s\n"
+msgstr "Misslyckades med att läsa konfiguration: (%d) %s\n"
+
+#: ../src/main.c:459
 #, c-format
 msgid "%s.  Please use --help to see a list of valid options.\n"
 msgstr "%s.  Använd --help för att se en lista över giltiga flaggor.\n"
 
-#: ../src/dhcp-manager/nm-dhcp-dhclient.c:328
+#: ../src/main.c:466
+#, c-format
+msgid "State file %s parsing failed: (%d) %s\n"
+msgstr "Tolkning av tillståndsfilen %s misslyckades: (%d) %s\n"
+
+#: ../src/main.c:483
+#, c-format
+msgid "Could not daemonize: %s [error %u]\n"
+msgstr "Kunde inte bli demon: %s [fel %u]\n"
+
+#: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:62
 msgid "# Created by NetworkManager\n"
 msgstr "# Skapad av Nätverkshanterare\n"
 
-#: ../src/dhcp-manager/nm-dhcp-dhclient.c:344
+#: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:69
 #, c-format
 msgid ""
 "# Merged from %s\n"
@@ -1823,53 +2518,200 @@ msgstr ""
 "# Sammanfogad från %s\n"
 "\n"
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:284
+#: ../src/dhcp-manager/nm-dhcp-manager.c:266
 msgid "no usable DHCP client could be found."
 msgstr "ingen användbar DHCP-klient hittades."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:293
+#: ../src/dhcp-manager/nm-dhcp-manager.c:275
 msgid "'dhclient' could be found."
 msgstr "\"dhclient\" kunde inte hittas."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:303
+#: ../src/dhcp-manager/nm-dhcp-manager.c:285
 msgid "'dhcpcd' could be found."
 msgstr "\"dhcpcd\" kunde inte hittas."
 
-#: ../src/dhcp-manager/nm-dhcp-manager.c:311
+#: ../src/dhcp-manager/nm-dhcp-manager.c:293
 #, c-format
 msgid "unsupported DHCP client '%s'"
 msgstr "DHCP-klienten \"%s\" stöds inte"
 
-#: ../src/logging/nm-logging.c:146
+#: ../src/dns-manager/nm-dns-manager.c:376
+msgid "NOTE: the libc resolver may not support more than 3 nameservers."
+msgstr "OBSERVERA: uppslag via glibc kanske inte har stöd för fler än 3 namnservrar."
+
+#: ../src/dns-manager/nm-dns-manager.c:378
+msgid "The nameservers listed below may not be recognized."
+msgstr "Namnservrarna listade nedan kanske inte kommer att kännas igen."
+
+#: ../src/logging/nm-logging.c:130
 #, c-format
 msgid "Unknown log level '%s'"
 msgstr "Okänd loggnivå \"%s\""
 
-#: ../src/logging/nm-logging.c:171
+#: ../src/logging/nm-logging.c:155
 #, c-format
 msgid "Unknown log domain '%s'"
 msgstr "Okänd loggdomän \"%s\""
 
-#: ../src/dns-manager/nm-dns-manager.c:384
-msgid "NOTE: the libc resolver may not support more than 3 nameservers."
-msgstr "OBSERVERA: uppslag via glibc kanske inte har stöd för fler än 3 namnservrar."
+#: ../src/modem-manager/nm-modem-cdma.c:279
+#: ../src/nm-device-bt.c:325
+#, c-format
+msgid "CDMA connection %d"
+msgstr "CDMA-anslutning %d"
 
-#: ../src/dns-manager/nm-dns-manager.c:386
-msgid "The nameservers listed below may not be recognized."
-msgstr "Namnservrarna listade nedan kanske inte kommer att kännas igen."
+#: ../src/modem-manager/nm-modem-gsm.c:547
+#: ../src/nm-device-bt.c:321
+#, c-format
+msgid "GSM connection %d"
+msgstr "GSM-anslutning %d"
+
+#: ../src/nm-device-bond.c:191
+#, c-format
+msgid "Bond connection %d"
+msgstr "Bond-anslutning %d"
+
+#: ../src/nm-device-bt.c:296
+#, c-format
+msgid "PAN connection %d"
+msgstr "PAN-anslutning %d"
+
+#: ../src/nm-device-bt.c:329
+#, c-format
+msgid "DUN connection %d"
+msgstr "DUN-anslutning %d"
+
+#: ../src/nm-device-ethernet.c:1326
+#, c-format
+msgid "PPPoE connection %d"
+msgstr "PPPoE-anslutning %d"
+
+#: ../src/nm-device-ethernet.c:1326
+#: ../src/settings/nm-settings-utils.c:50
+#, c-format
+msgid "Wired connection %d"
+msgstr "Trådbunden anslutning %d"
+
+#: ../src/nm-device-infiniband.c:303
+#, c-format
+#| msgid "Infiniband connection %d"
+msgid "InfiniBand connection %d"
+msgstr "InfiniBand-anslutning %d"
+
+#: ../src/nm-device-olpc-mesh.c:293
+#, c-format
+msgid "Mesh %d"
+msgstr "Mesh %d"
 
-#: ../src/settings/nm-default-wired-connection.c:157
+#: ../src/nm-device-vlan.c:362
 #, c-format
-msgid "Auto %s"
-msgstr "Automatisk %s"
+#| msgid "PAN connection %d"
+msgid "VLAN connection %d"
+msgstr "VLAN-anslutning %d"
 
-#: ../system-settings/plugins/ifcfg-rh/reader.c:3412
-#: ../system-settings/plugins/ifnet/connection_parser.c:49
+#: ../src/nm-manager.c:661
+#, c-format
+msgid "VPN connection %d"
+msgstr "VPN-anslutning %d"
+
+#: ../src/nm-netlink-monitor.c:148
+#: ../src/nm-netlink-monitor.c:272
+#: ../src/nm-netlink-monitor.c:695
+#, c-format
+msgid "error processing netlink message: %s"
+msgstr "fel vid behandling av netlink-meddelande: %s"
+
+#: ../src/nm-netlink-monitor.c:251
+msgid "error occurred while waiting for data on socket"
+msgstr "fel inträffade vid väntan på data i uttaget"
+
+#: ../src/nm-netlink-monitor.c:296
+#, c-format
+msgid "unable to connect to netlink for monitoring link status: %s"
+msgstr "kan inte ansluta till netlink för övervakning av länkstatus: %s"
+
+#: ../src/nm-netlink-monitor.c:307
+#, c-format
+msgid "unable to enable netlink handle credential passing: %s"
+msgstr "kunde inte aktivera behörighetshantering för netlink-handtag: %s"
+
+#: ../src/nm-netlink-monitor.c:330
+#: ../src/nm-netlink-monitor.c:390
+#, c-format
+msgid "unable to allocate netlink handle for monitoring link status: %s"
+msgstr "kan inte allokera netlink-handtag för övervakning av länkstatus: %s"
+
+#: ../src/nm-netlink-monitor.c:415
+#, c-format
+msgid "unable to allocate netlink link cache for monitoring link status: %s"
+msgstr "kan inte allokera netlink-länkcache för övervakning av länkstatus: %s"
+
+#: ../src/nm-netlink-monitor.c:542
+#, c-format
+msgid "unable to join netlink group: %s"
+msgstr "kan inte gå med i netlink-grupp: %s"
+
+#: ../src/nm-netlink-monitor.c:671
+#: ../src/nm-netlink-monitor.c:684
+#, c-format
+msgid "error updating link cache: %s"
+msgstr "fel vid uppdatering av länkcache: %s"
+
+#: ../src/settings/plugins/ifcfg-rh/reader.c:93
 msgid "System"
 msgstr "System"
 
+#: ../src/settings/plugins/ifcfg-rh/reader.c:3634
+msgid "Bond"
+msgstr "Bond"
+
+#~ msgid "SCOPE"
+#~ msgstr "OMFÅNG"
+
+#~ msgid "DBUS-SERVICE"
+#~ msgstr "DBUS-TJÄNST"
+
+#~ msgid "system"
+#~ msgstr "system"
+
+#~ msgid "user"
+#~ msgstr "användare"
+
+#~ msgid "System connections"
+#~ msgstr "systemanslutningar"
+
+#~ msgid "User connections"
+#~ msgstr "Användaranslutningar"
+
+#~ msgid "Error: Obtaining active connection for '%s' failed."
+#~ msgstr "Fel: Hämtning av aktiv anslutning för \"%s\" misslyckades."
+
+#~ msgid "Error: Could not get user settings."
+#~ msgstr "Fel: Kunde inte få användarinställningar."
+
+#~ msgid "IP4-SETTINGS"
+#~ msgstr "IP4-INSTÄLLNINGAR"
+
+#~ msgid "IP6-SETTINGS"
+#~ msgstr "IP6-INSTÄLLNINGAR"
+
+#~ msgid "PREFIX"
+#~ msgstr "PREFIX"
+
+#~ msgid "unknown)"
+#~ msgstr "okänt)"
+
+#~ msgid "Allow use of user-specific connections"
+#~ msgstr "Tillåt användning av användarspecifika anslutningar"
+
+#~ msgid "System policy prevents use of user-specific connections"
+#~ msgstr ""
+#~ "Systemets policy förhindrar användning av användarspecifika anslutningar"
+
+#~ msgid "Auto %s"
+#~ msgstr "Automatisk %s"
+
 #~ msgid "Type"
 #~ msgstr "Typ"
+
 #~ msgid "Name"
 #~ msgstr "Namn"
-
diff --git a/policy/Makefile.in b/policy/Makefile.in
index 20001d37..d6e72c53 100644
--- a/policy/Makefile.in
+++ b/policy/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -159,6 +159,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -254,6 +258,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -292,6 +299,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/policy/org.freedesktop.NetworkManager.policy b/policy/org.freedesktop.NetworkManager.policy
index 84a66106..5e4eb8b4 100644
--- a/policy/org.freedesktop.NetworkManager.policy
+++ b/policy/org.freedesktop.NetworkManager.policy
@@ -315,12 +315,14 @@
     <description xml:lang="id">Aktifkan atau matikan perangkat broadband bergerak WiMAX</description>
     <description xml:lang="it">Abilitare o disabilitare dispositivi WiMAX a banda larga mobile</description>
     <description xml:lang="ko">와이맥스 모바일 광대역 장치 사용 여부</description>
+    <description xml:lang="lt">Įjungti arba išjungti WiMAX mobiliojo plačiajuosčio ryšio įrenginius</description>
     <description xml:lang="ml">WiMAX മുബൈല്‍ ബ്രോഡ്ബാന്റ് ഡിവൈസുകള്‍ പ്രവര്‍ത്തനസജ്ജമാക്കുകയോ പ്രവര്‍ത്തനരഹിതമാക്കുകയോ ചെയ്യുക</description>
     <description xml:lang="mr">WiMAX मोबाईल ब्रॉडबँड साधने सुरू किंवा बंद करा</description>
     <description xml:lang="pl">Włączenie lub wyłączenie urządzeń komórkowych WiMAX</description>
     <description xml:lang="pt_BR">Habilita ou desabilita dispositivos móveis WiMAX</description>
     <description xml:lang="ru">Включить или выключить устройства мобильных сетей WiMax</description>
     <description xml:lang="sl">Omogoči ali onemogoči mobilne širokopasovne naprave WiMAX</description>
+    <description xml:lang="sv">Aktivera eller inaktivera mobila WiMAX-bredbandsenheter</description>
     <description xml:lang="tr">WiMAX mobil genişbant aygıtlarını etkinleştir ya da etkisizleştir</description>
     <description xml:lang="uk">Увімкнути або вимкнути пристрої широкосмугових мобільних мереж WiMAX</description>
     <message>System policy prevents enabling or disabling WiMAX mobile broadband devices</message>
@@ -336,12 +338,14 @@
     <message xml:lang="id">Kebijakan sistem mencegah mengaktifkan atau mematikan perangkat broadband bergerak WiMAX</message>
     <message xml:lang="it">La politica di sistema impedisce di abilitare o disabilitare i dispositivi WiMAX a banda larga mobile</message>
     <message xml:lang="ko">시스템 정책이 와이맥스 모바일 광대역 장치의 사용 여부 설정을 금지합니다</message>
+    <message xml:lang="lt">Sistemos politika neleidžia įjungti arba išjungti WiMAX mobiliojo plačiajuosčio ryšio įrenginių</message>
     <message xml:lang="ml">iMAX മുബൈല്‍ ബ്രോഡ്ബാന്റ് ഡിവൈസുകള്‍ പ്രവര്‍ത്തനസജ്ജമാക്കുകയോ പ്രവര്‍ത്തനരഹിതമാക്കുകയോ ചെയ്യുന്നത് സിസ്റ്റം പോളിസി തടയുന്നു</message>
     <message xml:lang="mr">प्रणाली करार WiMAX मोबाईल ब्रॉडबँड साधनांना सुरू किंवा बंद होण्यापासून रोखते</message>
     <message xml:lang="pl">Polityka systemu powstrzymuje włączenie lub wyłączenie urządzeń komórkowych WiMAX</message>
     <message xml:lang="pt_BR">Políticas de sistema previnem a habilitação ou desabilitação de dispositivos móveis de banda larga WiMAX</message>
     <message xml:lang="ru">Системная политика запрещает включение или выключение устройств мобильной связи WiMAX</message>
     <message xml:lang="sl">Sistemska določila preprečujejo omogočanje ali onemogočanje mobilnih širokopasovnih naprav WiMAX</message>
+    <message xml:lang="sv">Systemets policy förhindrar aktivering eller inaktivering av mobila WiMAX-bredbandsenheter</message>
     <message xml:lang="tr">Sistem kuralları, WiMAX mobil genişbant aygıtlarını etkinleştirmeyi ya da etkisizleştirmeyi engelliyor</message>
     <message xml:lang="uk">Правила системи забороняють вмикання або вимикання пристроїв широкосмугових мобільних мереж WiMAX</message>
     <defaults>
@@ -620,12 +624,14 @@
     <description xml:lang="id">Ubah koneksi jaringan personal</description>
     <description xml:lang="it">Modificare le connessioni personali</description>
     <description xml:lang="ko">개인 네트워크 연결을 수정합니다</description>
+    <description xml:lang="lt">Keisti asmeninius tinklo ryšius</description>
     <description xml:lang="ml">സ്വന്തമായ നെറ്റ്​വര്‍ക്ക് കണക്ഷനുകളില്‍ മാറ്റം വരുത്തുക</description>
     <description xml:lang="mr">वैयक्तिक नेटवर्क जोडणी संपादित करा</description>
     <description xml:lang="pl">Modyfikacja osobistych połączeń sieciowych</description>
     <description xml:lang="pt_BR">Modificar conexões pessoais de rede</description>
     <description xml:lang="ru">Редактировать личные настройки подключения</description>
     <description xml:lang="sl">Spremeni osebne omrežne povezave</description>
+    <description xml:lang="sv">Ändra personliga nätverksanslutningar</description>
     <description xml:lang="tr">Kişisel ağ bağlantılarını düzenle</description>
     <description xml:lang="uk">Змінити параметри особистих з’єднань з мережею</description>
     <message>System policy prevents modification of personal network settings</message>
@@ -639,12 +645,14 @@
     <message xml:lang="id">Kebijakan sistem mencegah pengubahan tatanan jaringan pribadi</message>
     <message xml:lang="it">La politica di sistema impedisce di modificare le impostazioni di rete personali</message>
     <message xml:lang="ko">시스템 정책이 개인 네트워크 설정의 수정을 금지합니다</message>
+    <message xml:lang="lt">Sistemos politika neleidžia keisti asmeninių tinklų nustatymų</message>
     <message xml:lang="ml"> സ്വന്തമായ നെറ്റ്​വര്‍ക്ക് സജ്ജീകരണങ്ങള്‍ മാറ്റം വരുത്തുന്നതു് സിസ്റ്റം പോളിസി തടയുന്നു</message>
     <message xml:lang="mr">प्रणाली करार, व्यक्तिगत नेटवर्क सेटिंग्स् संपादीत करण्यापासून रोखते</message>
     <message xml:lang="pl">Polityka systemu powstrzymuje modyfikację osobistych ustawień systemowych</message>
     <message xml:lang="pt_BR">Políticas de sistema previnem modificação das configurações pessoais de redes</message>
     <message xml:lang="ru">Системная политика запрещает изменение персональных настроек сети</message>
     <message xml:lang="sl">Sistemska določila preprečujejo spreminjanje osebnih omrežnih nastavitev</message>
+    <message xml:lang="sv">Systemets policy förhindrar ändring av personliga nätverksinställningar</message>
     <message xml:lang="tr">Sistem kuralları, kişisel ağ ayarlarının değiştirilmesine izin vermiyor</message>
     <message xml:lang="uk">Правила системи забороняють внесення змін до особистих параметрів мережі</message>
     <defaults>
@@ -665,11 +673,13 @@
     <description xml:lang="id">Ubah koneksi jaringan bagi semua pengguna</description>
     <description xml:lang="it">Modifica le connessioni di sistema per tutti gli utenti</description>
     <description xml:lang="ko">모든 사용자의 네트워크 연결을 수정합니다</description>
+    <description xml:lang="lt">Keisti visų naudotojų tinklo ryšius</description>
     <description xml:lang="mr">सर्व वापरकर्त्यांकरीता नेटवर्क जोडणी संपादित करा</description>
     <description xml:lang="pl">Modyfikacja połączeń sieciowych dla wszystkich użytkowników</description>
     <description xml:lang="pt_BR">Modificar conexões de rede para todos os usuários</description>
     <description xml:lang="ru">Изменить подключения доступные всем пользователям</description>
     <description xml:lang="sl">Spremeni omrežne povezave za vse uporabnike</description>
+    <description xml:lang="sv">Ändra nätverksanslutningar för alla användare</description>
     <description xml:lang="tr">Tüm kullanıcılar için ağ bağlantılarını düzenle</description>
     <description xml:lang="uk">Внести зміни до мережевих з’єднань всіх користувачів</description>
     <message>System policy prevents modification of network settings for all users</message>
@@ -683,11 +693,13 @@
     <message xml:lang="id">Kebijakan sistem mencegah pengubahan tatanan sistem bagi semua pengguna</message>
     <message xml:lang="it">La politica di sistema impedisce di modificare le impostazioni di rete per tutti gli utenti</message>
     <message xml:lang="ko">시스템 정책이 모든 사용자의 네트워크 설정의 수정을 금지합니다</message>
+    <message xml:lang="lt">Sistemos politika neleidžia keisti tinklo nustatymų, skirtų visiems naudotojams</message>
     <message xml:lang="mr">प्रणाली करार सर्व वापरकर्त्यांना नेटवर्क सेटिंग्स् संपादीत करण्यापासून रोखते</message>
     <message xml:lang="pl">Polityka systemu powstrzymuje modyfikację ustawień sieciowych dla wszystkich użytkowników</message>
     <message xml:lang="pt_BR">Políticas de sistema previnem modificação das configurações de rede para todos os usuários</message>
     <message xml:lang="ru">Системная политика запрещает изменение настроек для всех пользователей</message>
     <message xml:lang="sl">Sistemska določila preprečujejo spreminjanje sistemskih nastavitev za vse uporabnike</message>
+    <message xml:lang="sv">Systemets policy förhindrar ändring av nätverksinställningar för alla användare</message>
     <message xml:lang="tr">Sistem kuralları, tüm kullanıcılar için ağ ayarlarının değiştirilmesine izin vermiyor</message>
     <message xml:lang="uk">Правила системи забороняють внесення змін до параметрів мережі для всіх користувачів</message>
     <defaults>
diff --git a/src/Makefile.am b/src/Makefile.am
index f46fbab3..7930c286 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,6 +1,7 @@
 SUBDIRS= \
 	generated \
 	logging \
+	posix-signals \
 	dns-manager \
 	vpn-manager \
 	dhcp-manager \
@@ -27,6 +28,7 @@ INCLUDES = -I${top_srcdir} \
            -I${top_srcdir}/src/generated \
            -I${top_builddir}/src/generated \
            -I${top_srcdir}/src/logging \
+           -I${top_srcdir}/src/posix-signals \
            -I${top_srcdir}/src/dns-manager \
            -I${top_srcdir}/src/vpn-manager \
            -I${top_srcdir}/src/dhcp-manager \
@@ -120,6 +122,8 @@ NetworkManager_SOURCES = \
 		nm-device-private.h \
 		nm-device-ethernet.c \
 		nm-device-ethernet.h \
+		nm-device-adsl.c \
+		nm-device-adsl.h \
 		nm-device-wifi.c \
 		nm-device-wifi.h \
 		nm-device-wired.c \
@@ -187,7 +191,9 @@ NetworkManager_SOURCES = \
 		nm-rfkill.h \
 		nm-session-monitor.h \
 		nm-session-utils.c \
-		nm-session-utils.h
+		nm-session-utils.h \
+		nm-connection-provider.h \
+		nm-connection-provider.c
 
 if WITH_CONCHECK
 NetworkManager_SOURCES += nm-connectivity.c nm-connectivity.h
@@ -218,6 +224,9 @@ nm-device-ethernet-glue.h: $(top_srcdir)/introspection/nm-device-ethernet.xml
 nm-device-infiniband-glue.h: $(top_srcdir)/introspection/nm-device-infiniband.xml
 	$(AM_V_GEN) dbus-binding-tool --prefix=nm_device_infiniband --mode=glib-server --output=$@ $<
 
+nm-device-adsl-glue.h: $(top_srcdir)/introspection/nm-device-adsl.xml
+	$(AM_V_GEN) dbus-binding-tool --prefix=nm_device_adsl --mode=glib-server --output=$@ $<
+
 nm-device-wifi-glue.h: $(top_srcdir)/introspection/nm-device-wifi.xml
 	$(AM_V_GEN) dbus-binding-tool --prefix=nm_device_wifi --mode=glib-server --output=$@ $<
 
@@ -259,6 +268,7 @@ BUILT_SOURCES = \
 	nm-device-infiniband-glue.h \
 	nm-device-bond-glue.h \
 	nm-device-vlan-glue.h \
+	nm-device-adsl-glue.h \
 	nm-device-wifi-glue.h \
 	nm-device-olpc-mesh-glue.h \
 	nm-device-bt-glue.h \
@@ -296,6 +306,7 @@ endif
 NetworkManager_LDADD = \
 	./generated/libnm-generated.la \
 	./logging/libnm-logging.la \
+	./posix-signals/libnm-posix-signals.la \
 	./dns-manager/libdns-manager.la \
 	./vpn-manager/libvpn-manager.la \
 	./dhcp-manager/libdhcp-manager.la \
diff --git a/src/Makefile.in b/src/Makefile.in
index 715658e8..e1c0fff4 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -58,7 +58,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -97,20 +97,21 @@ am__installdirs = "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(sbindir)" \
 PROGRAMS = $(libexec_PROGRAMS) $(sbin_PROGRAMS)
 am__NetworkManager_SOURCES_DIST = nm-call-store.c nm-call-store.h \
 	nm-device.c nm-device.h nm-device-private.h \
-	nm-device-ethernet.c nm-device-ethernet.h nm-device-wifi.c \
-	nm-device-wifi.h nm-device-wired.c nm-device-wired.h \
-	nm-device-olpc-mesh.c nm-device-olpc-mesh.h nm-device-bt.c \
-	nm-device-bt.h nm-device-modem.h nm-device-modem.c \
-	nm-device-infiniband.c nm-device-infiniband.h nm-device-bond.c \
-	nm-device-bond.h nm-device-vlan.c nm-device-vlan.h \
-	nm-wifi-ap.c nm-wifi-ap.h nm-wifi-ap-utils.c \
-	nm-wifi-ap-utils.h nm-dbus-manager.h nm-dbus-manager.c \
-	nm-udev-manager.c nm-udev-manager.h nm-device-factory.h \
-	nm-hostname-provider.c nm-hostname-provider.h nm-ip4-config.c \
-	nm-ip4-config.h nm-ip6-config.c nm-ip6-config.h \
-	nm-active-connection.h nm-active-connection.c nm-config.h \
-	nm-config.c main.c nm-policy.c nm-policy.h nm-policy-hosts.c \
-	nm-policy-hosts.h nm-policy-hostname.c nm-policy-hostname.h \
+	nm-device-ethernet.c nm-device-ethernet.h nm-device-adsl.c \
+	nm-device-adsl.h nm-device-wifi.c nm-device-wifi.h \
+	nm-device-wired.c nm-device-wired.h nm-device-olpc-mesh.c \
+	nm-device-olpc-mesh.h nm-device-bt.c nm-device-bt.h \
+	nm-device-modem.h nm-device-modem.c nm-device-infiniband.c \
+	nm-device-infiniband.h nm-device-bond.c nm-device-bond.h \
+	nm-device-vlan.c nm-device-vlan.h nm-wifi-ap.c nm-wifi-ap.h \
+	nm-wifi-ap-utils.c nm-wifi-ap-utils.h nm-dbus-manager.h \
+	nm-dbus-manager.c nm-udev-manager.c nm-udev-manager.h \
+	nm-device-factory.h nm-hostname-provider.c \
+	nm-hostname-provider.h nm-ip4-config.c nm-ip4-config.h \
+	nm-ip6-config.c nm-ip6-config.h nm-active-connection.h \
+	nm-active-connection.c nm-config.h nm-config.c main.c \
+	nm-policy.c nm-policy.h nm-policy-hosts.c nm-policy-hosts.h \
+	nm-policy-hostname.c nm-policy-hostname.h \
 	NetworkManagerUtils.c NetworkManagerUtils.h nm-system.c \
 	nm-system.h nm-manager.c nm-manager.h nm-manager-auth.c \
 	nm-manager-auth.h nm-netlink-monitor.c nm-netlink-monitor.h \
@@ -120,7 +121,8 @@ am__NetworkManager_SOURCES_DIST = nm-call-store.c nm-call-store.h \
 	nm-properties-changed-signal.h nm-dhcp4-config.c \
 	nm-dhcp4-config.h nm-dhcp6-config.c nm-dhcp6-config.h \
 	nm-rfkill.h nm-session-monitor.h nm-session-utils.c \
-	nm-session-utils.h nm-connectivity.c nm-connectivity.h \
+	nm-session-utils.h nm-connection-provider.h \
+	nm-connection-provider.c nm-connectivity.c nm-connectivity.h \
 	nm-session-monitor-systemd.c nm-session-monitor-ck.c \
 	nm-session-monitor-null.c
 @WITH_CONCHECK_TRUE@am__objects_1 =  \
@@ -131,6 +133,7 @@ am__NetworkManager_SOURCES_DIST = nm-call-store.c nm-call-store.h \
 am_NetworkManager_OBJECTS = NetworkManager-nm-call-store.$(OBJEXT) \
 	NetworkManager-nm-device.$(OBJEXT) \
 	NetworkManager-nm-device-ethernet.$(OBJEXT) \
+	NetworkManager-nm-device-adsl.$(OBJEXT) \
 	NetworkManager-nm-device-wifi.$(OBJEXT) \
 	NetworkManager-nm-device-wired.$(OBJEXT) \
 	NetworkManager-nm-device-olpc-mesh.$(OBJEXT) \
@@ -163,12 +166,16 @@ am_NetworkManager_OBJECTS = NetworkManager-nm-call-store.$(OBJEXT) \
 	NetworkManager-nm-properties-changed-signal.$(OBJEXT) \
 	NetworkManager-nm-dhcp4-config.$(OBJEXT) \
 	NetworkManager-nm-dhcp6-config.$(OBJEXT) \
-	NetworkManager-nm-session-utils.$(OBJEXT) $(am__objects_1) \
-	$(am__objects_2) $(am__objects_3) $(am__objects_4)
+	NetworkManager-nm-session-utils.$(OBJEXT) \
+	NetworkManager-nm-connection-provider.$(OBJEXT) \
+	$(am__objects_1) $(am__objects_2) $(am__objects_3) \
+	$(am__objects_4)
 NetworkManager_OBJECTS = $(am_NetworkManager_OBJECTS)
 @WITH_CONCHECK_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
 NetworkManager_DEPENDENCIES = ./generated/libnm-generated.la \
-	./logging/libnm-logging.la ./dns-manager/libdns-manager.la \
+	./logging/libnm-logging.la \
+	./posix-signals/libnm-posix-signals.la \
+	./dns-manager/libdns-manager.la \
 	./vpn-manager/libvpn-manager.la \
 	./dhcp-manager/libdhcp-manager.la \
 	./ip6-manager/libip6-manager.la \
@@ -263,10 +270,10 @@ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
 	distdir
 ETAGS = etags
 CTAGS = ctags
-DIST_SUBDIRS = generated logging dns-manager vpn-manager dhcp-manager \
-	ip6-manager supplicant-manager ppp-manager backends \
-	dnsmasq-manager modem-manager bluez-manager firewall-manager \
-	wifi settings wimax . tests
+DIST_SUBDIRS = generated logging posix-signals dns-manager vpn-manager \
+	dhcp-manager ip6-manager supplicant-manager ppp-manager \
+	backends dnsmasq-manager modem-manager bluez-manager \
+	firewall-manager wifi settings wimax . tests
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -365,6 +372,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -460,6 +471,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -498,6 +512,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -518,16 +534,17 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-SUBDIRS = generated logging dns-manager vpn-manager dhcp-manager \
-	ip6-manager supplicant-manager ppp-manager backends \
-	dnsmasq-manager modem-manager bluez-manager firewall-manager \
-	wifi settings $(am__append_1) . tests
+SUBDIRS = generated logging posix-signals dns-manager vpn-manager \
+	dhcp-manager ip6-manager supplicant-manager ppp-manager \
+	backends dnsmasq-manager modem-manager bluez-manager \
+	firewall-manager wifi settings $(am__append_1) . tests
 INCLUDES = -I${top_srcdir} \
            -I${top_srcdir}/include \
            -I${top_builddir}/include \
            -I${top_srcdir}/src/generated \
            -I${top_builddir}/src/generated \
            -I${top_srcdir}/src/logging \
+           -I${top_srcdir}/src/posix-signals \
            -I${top_srcdir}/src/dns-manager \
            -I${top_srcdir}/src/vpn-manager \
            -I${top_srcdir}/src/dhcp-manager \
@@ -607,10 +624,11 @@ libtest_wifi_ap_utils_la_LIBADD = \
 
 NetworkManager_SOURCES = nm-call-store.c nm-call-store.h nm-device.c \
 	nm-device.h nm-device-private.h nm-device-ethernet.c \
-	nm-device-ethernet.h nm-device-wifi.c nm-device-wifi.h \
-	nm-device-wired.c nm-device-wired.h nm-device-olpc-mesh.c \
-	nm-device-olpc-mesh.h nm-device-bt.c nm-device-bt.h \
-	nm-device-modem.h nm-device-modem.c nm-device-infiniband.c \
+	nm-device-ethernet.h nm-device-adsl.c nm-device-adsl.h \
+	nm-device-wifi.c nm-device-wifi.h nm-device-wired.c \
+	nm-device-wired.h nm-device-olpc-mesh.c nm-device-olpc-mesh.h \
+	nm-device-bt.c nm-device-bt.h nm-device-modem.h \
+	nm-device-modem.c nm-device-infiniband.c \
 	nm-device-infiniband.h nm-device-bond.c nm-device-bond.h \
 	nm-device-vlan.c nm-device-vlan.h nm-wifi-ap.c nm-wifi-ap.h \
 	nm-wifi-ap-utils.c nm-wifi-ap-utils.h nm-dbus-manager.h \
@@ -630,7 +648,8 @@ NetworkManager_SOURCES = nm-call-store.c nm-call-store.h nm-device.c \
 	nm-properties-changed-signal.h nm-dhcp4-config.c \
 	nm-dhcp4-config.h nm-dhcp6-config.c nm-dhcp6-config.h \
 	nm-rfkill.h nm-session-monitor.h nm-session-utils.c \
-	nm-session-utils.h $(am__append_2) $(am__append_3) \
+	nm-session-utils.h nm-connection-provider.h \
+	nm-connection-provider.c $(am__append_2) $(am__append_3) \
 	$(am__append_4) $(am__append_5)
 BUILT_SOURCES = \
 	nm-access-point-glue.h \
@@ -640,6 +659,7 @@ BUILT_SOURCES = \
 	nm-device-infiniband-glue.h \
 	nm-device-bond-glue.h \
 	nm-device-vlan-glue.h \
+	nm-device-adsl-glue.h \
 	nm-device-wifi-glue.h \
 	nm-device-olpc-mesh-glue.h \
 	nm-device-bt-glue.h \
@@ -660,7 +680,9 @@ NetworkManager_CPPFLAGS = $(DBUS_CFLAGS) $(GLIB_CFLAGS) \
 	-DNM_RUN_DIR=\"$(rundir)\" -DNMLOCALEDIR=\"$(datadir)/locale\" \
 	-DNMPLUGINDIR=\"$(pkglibdir)\" $(am__append_6)
 NetworkManager_LDADD = ./generated/libnm-generated.la \
-	./logging/libnm-logging.la ./dns-manager/libdns-manager.la \
+	./logging/libnm-logging.la \
+	./posix-signals/libnm-posix-signals.la \
+	./dns-manager/libdns-manager.la \
 	./vpn-manager/libvpn-manager.la \
 	./dhcp-manager/libdhcp-manager.la \
 	./ip6-manager/libip6-manager.la \
@@ -853,8 +875,10 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-active-connection.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-call-store.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-config.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-connection-provider.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-connectivity.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-dbus-manager.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-device-adsl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-device-bond.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-device-bt.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-device-ethernet.Po@am__quote@
@@ -1018,6 +1042,22 @@ NetworkManager-nm-device-ethernet.obj: nm-device-ethernet.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NetworkManager-nm-device-ethernet.obj `if test -f 'nm-device-ethernet.c'; then $(CYGPATH_W) 'nm-device-ethernet.c'; else $(CYGPATH_W) '$(srcdir)/nm-device-ethernet.c'; fi`
 
+NetworkManager-nm-device-adsl.o: nm-device-adsl.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NetworkManager-nm-device-adsl.o -MD -MP -MF $(DEPDIR)/NetworkManager-nm-device-adsl.Tpo -c -o NetworkManager-nm-device-adsl.o `test -f 'nm-device-adsl.c' || echo '$(srcdir)/'`nm-device-adsl.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/NetworkManager-nm-device-adsl.Tpo $(DEPDIR)/NetworkManager-nm-device-adsl.Po
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='nm-device-adsl.c' object='NetworkManager-nm-device-adsl.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NetworkManager-nm-device-adsl.o `test -f 'nm-device-adsl.c' || echo '$(srcdir)/'`nm-device-adsl.c
+
+NetworkManager-nm-device-adsl.obj: nm-device-adsl.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NetworkManager-nm-device-adsl.obj -MD -MP -MF $(DEPDIR)/NetworkManager-nm-device-adsl.Tpo -c -o NetworkManager-nm-device-adsl.obj `if test -f 'nm-device-adsl.c'; then $(CYGPATH_W) 'nm-device-adsl.c'; else $(CYGPATH_W) '$(srcdir)/nm-device-adsl.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/NetworkManager-nm-device-adsl.Tpo $(DEPDIR)/NetworkManager-nm-device-adsl.Po
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='nm-device-adsl.c' object='NetworkManager-nm-device-adsl.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NetworkManager-nm-device-adsl.obj `if test -f 'nm-device-adsl.c'; then $(CYGPATH_W) 'nm-device-adsl.c'; else $(CYGPATH_W) '$(srcdir)/nm-device-adsl.c'; fi`
+
 NetworkManager-nm-device-wifi.o: nm-device-wifi.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NetworkManager-nm-device-wifi.o -MD -MP -MF $(DEPDIR)/NetworkManager-nm-device-wifi.Tpo -c -o NetworkManager-nm-device-wifi.o `test -f 'nm-device-wifi.c' || echo '$(srcdir)/'`nm-device-wifi.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/NetworkManager-nm-device-wifi.Tpo $(DEPDIR)/NetworkManager-nm-device-wifi.Po
@@ -1546,6 +1586,22 @@ NetworkManager-nm-session-utils.obj: nm-session-utils.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NetworkManager-nm-session-utils.obj `if test -f 'nm-session-utils.c'; then $(CYGPATH_W) 'nm-session-utils.c'; else $(CYGPATH_W) '$(srcdir)/nm-session-utils.c'; fi`
 
+NetworkManager-nm-connection-provider.o: nm-connection-provider.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NetworkManager-nm-connection-provider.o -MD -MP -MF $(DEPDIR)/NetworkManager-nm-connection-provider.Tpo -c -o NetworkManager-nm-connection-provider.o `test -f 'nm-connection-provider.c' || echo '$(srcdir)/'`nm-connection-provider.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/NetworkManager-nm-connection-provider.Tpo $(DEPDIR)/NetworkManager-nm-connection-provider.Po
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='nm-connection-provider.c' object='NetworkManager-nm-connection-provider.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NetworkManager-nm-connection-provider.o `test -f 'nm-connection-provider.c' || echo '$(srcdir)/'`nm-connection-provider.c
+
+NetworkManager-nm-connection-provider.obj: nm-connection-provider.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NetworkManager-nm-connection-provider.obj -MD -MP -MF $(DEPDIR)/NetworkManager-nm-connection-provider.Tpo -c -o NetworkManager-nm-connection-provider.obj `if test -f 'nm-connection-provider.c'; then $(CYGPATH_W) 'nm-connection-provider.c'; else $(CYGPATH_W) '$(srcdir)/nm-connection-provider.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/NetworkManager-nm-connection-provider.Tpo $(DEPDIR)/NetworkManager-nm-connection-provider.Po
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='nm-connection-provider.c' object='NetworkManager-nm-connection-provider.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NetworkManager-nm-connection-provider.obj `if test -f 'nm-connection-provider.c'; then $(CYGPATH_W) 'nm-connection-provider.c'; else $(CYGPATH_W) '$(srcdir)/nm-connection-provider.c'; fi`
+
 NetworkManager-nm-connectivity.o: nm-connectivity.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NetworkManager-nm-connectivity.o -MD -MP -MF $(DEPDIR)/NetworkManager-nm-connectivity.Tpo -c -o NetworkManager-nm-connectivity.o `test -f 'nm-connectivity.c' || echo '$(srcdir)/'`nm-connectivity.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/NetworkManager-nm-connectivity.Tpo $(DEPDIR)/NetworkManager-nm-connectivity.Po
@@ -2015,6 +2071,9 @@ nm-device-ethernet-glue.h: $(top_srcdir)/introspection/nm-device-ethernet.xml
 nm-device-infiniband-glue.h: $(top_srcdir)/introspection/nm-device-infiniband.xml
 	$(AM_V_GEN) dbus-binding-tool --prefix=nm_device_infiniband --mode=glib-server --output=$@ $<
 
+nm-device-adsl-glue.h: $(top_srcdir)/introspection/nm-device-adsl.xml
+	$(AM_V_GEN) dbus-binding-tool --prefix=nm_device_adsl --mode=glib-server --output=$@ $<
+
 nm-device-wifi-glue.h: $(top_srcdir)/introspection/nm-device-wifi.xml
 	$(AM_V_GEN) dbus-binding-tool --prefix=nm_device_wifi --mode=glib-server --output=$@ $<
 
diff --git a/src/NetworkManagerUtils.c b/src/NetworkManagerUtils.c
index 6c2c0446..952b4e5d 100644
--- a/src/NetworkManagerUtils.c
+++ b/src/NetworkManagerUtils.c
@@ -15,7 +15,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Copyright (C) 2004 - 2011 Red Hat, Inc.
+ * Copyright (C) 2004 - 2012 Red Hat, Inc.
  * Copyright (C) 2005 - 2008 Novell, Inc.
  */
 
@@ -41,6 +41,7 @@
 #include "nm-setting-wireless.h"
 #include "nm-setting-wireless-security.h"
 #include "nm-manager-auth.h"
+#include "nm-posix-signals.h"
 
 /*
  * nm_ethernet_address_is_valid
@@ -94,7 +95,7 @@ nm_spawn_process (const char *args)
 		return -1;
 	}
 
-	if (!g_spawn_sync ("/", argv, NULL, 0, NULL, NULL, NULL, NULL, &status, &error)) {
+	if (!g_spawn_sync ("/", argv, NULL, 0, nm_unblock_posix_signals, NULL, NULL, NULL, &status, &error)) {
 		nm_log_warn (LOGD_CORE, "could not spawn process '%s': %s", args, error->message);
 		g_error_free (error);
 	}
diff --git a/src/backends/Makefile.in b/src/backends/Makefile.in
index 9c6f7d0c..48895fd3 100644
--- a/src/backends/Makefile.in
+++ b/src/backends/Makefile.in
@@ -60,7 +60,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -214,6 +214,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -309,6 +313,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -347,6 +354,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/backends/NetworkManagerRedHat.c b/src/backends/NetworkManagerRedHat.c
index c14eb837..843b03b2 100644
--- a/src/backends/NetworkManagerRedHat.c
+++ b/src/backends/NetworkManagerRedHat.c
@@ -35,7 +35,11 @@ void nm_backend_update_dns (void)
 {
 	/* Invalidate the nscd host cache since we changed resolv.conf */
 	if (g_file_test ("/usr/sbin/nscd", G_FILE_TEST_EXISTS | G_FILE_TEST_IS_EXECUTABLE | G_FILE_TEST_IS_REGULAR)) {
-		nm_spawn_process ("/etc/init.d/nscd condrestart");
+		if (g_file_test ("/etc/init.d/nscd", G_FILE_TEST_EXISTS))
+			nm_spawn_process ("/etc/init.d/nscd condrestart");
+		else if (g_file_test ("/bin/systemctl", G_FILE_TEST_IS_EXECUTABLE))
+			nm_spawn_process ("/bin/systemctl condrestart nscd.service");
+
 		nm_spawn_process ("/usr/sbin/nscd -i hosts");
 	}
 }
diff --git a/src/bluez-manager/Makefile.in b/src/bluez-manager/Makefile.in
index efb5ab4e..eb9b464b 100644
--- a/src/bluez-manager/Makefile.in
+++ b/src/bluez-manager/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -171,6 +171,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -266,6 +270,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -304,6 +311,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/bluez-manager/nm-bluez-adapter.c b/src/bluez-manager/nm-bluez-adapter.c
index 27a85e78..4c36f3de 100644
--- a/src/bluez-manager/nm-bluez-adapter.c
+++ b/src/bluez-manager/nm-bluez-adapter.c
@@ -15,7 +15,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Copyright (C) 2009 - 2010 Red Hat, Inc.
+ * Copyright (C) 2009 - 2012 Red Hat, Inc.
  */
 
 #include <glib.h>
@@ -41,6 +41,9 @@ typedef struct {
 
 	char *address;
 	GHashTable *devices;
+
+	/* Cached for devices */
+	NMConnectionProvider *provider;
 } NMBluezAdapterPrivate;
 
 
@@ -85,23 +88,18 @@ nm_bluez_adapter_get_initialized (NMBluezAdapter *self)
 	return NM_BLUEZ_ADAPTER_GET_PRIVATE (self)->initialized;
 }
 
-static void
-devices_to_list (gpointer key, gpointer data, gpointer user_data)
-{
-	NMBluezDevice *device = NM_BLUEZ_DEVICE (data);
-	GSList **list = user_data;
-
-	if (nm_bluez_device_get_usable (device))
-		*list = g_slist_append (*list, data);
-}
-
 GSList *
 nm_bluez_adapter_get_devices (NMBluezAdapter *self)
 {
-	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (self);
 	GSList *devices = NULL;
+	GHashTableIter iter;
+	NMBluezDevice *device;
 
-	g_hash_table_foreach (priv->devices, devices_to_list, &devices);
+	g_hash_table_iter_init (&iter, NM_BLUEZ_ADAPTER_GET_PRIVATE (self)->devices);
+	while (g_hash_table_iter_next (&iter, NULL, (gpointer) &device)) {
+		if (nm_bluez_device_get_usable (device))
+			devices = g_slist_append (devices, device);
+	}
 	return devices;
 }
 
@@ -109,16 +107,19 @@ static void
 device_usable (NMBluezDevice *device, GParamSpec *pspec, gpointer user_data)
 {
 	NMBluezAdapter *self = NM_BLUEZ_ADAPTER (user_data);
-	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (self);
+	gboolean usable = nm_bluez_device_get_usable (device);
 
-	if (nm_bluez_device_get_usable (device))
+	nm_log_dbg (LOGD_BT, "(%s): bluez device now %s",
+	            nm_bluez_device_get_path (device),
+	            usable ? "usable" : "unusable");
+
+	if (usable) {
+		nm_log_dbg (LOGD_BT, "(%s): bluez device address %s",
+				    nm_bluez_device_get_path (device),
+				    nm_bluez_device_get_address (device));
 		g_signal_emit (self, signals[DEVICE_ADDED], 0, device);
-	else {
-		g_object_ref (device);
-		g_hash_table_remove (priv->devices, nm_bluez_device_get_path (device));
+	} else
 		g_signal_emit (self, signals[DEVICE_REMOVED], 0, device);
-		g_object_unref (device);
-	}
 }
 
 static void
@@ -127,6 +128,9 @@ device_initialized (NMBluezDevice *device, gboolean success, gpointer user_data)
 	NMBluezAdapter *self = NM_BLUEZ_ADAPTER (user_data);
 	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (self);
 
+	nm_log_dbg (LOGD_BT, "(%s): bluez device %s",
+	            nm_bluez_device_get_path (device),
+	            success ? "initialized" : "failed to initialize");
 	if (!success)
 		g_hash_table_remove (priv->devices, nm_bluez_device_get_path (device));
 }
@@ -138,10 +142,12 @@ device_created (DBusGProxy *proxy, const char *path, gpointer user_data)
 	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (self);
 	NMBluezDevice *device;
 
-	device = nm_bluez_device_new (path);
+	device = nm_bluez_device_new (path, priv->provider);
 	g_signal_connect (device, "initialized", G_CALLBACK (device_initialized), self);
 	g_signal_connect (device, "notify::usable", G_CALLBACK (device_usable), self);
-	g_hash_table_insert (priv->devices, g_strdup (path), device);
+	g_hash_table_insert (priv->devices, (gpointer) nm_bluez_device_get_path (device), device);
+
+	nm_log_dbg (LOGD_BT, "(%s): new bluez device found", path);
 }
 
 static void
@@ -151,10 +157,12 @@ device_removed (DBusGProxy *proxy, const char *path, gpointer user_data)
 	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (self);
 	NMBluezDevice *device;
 
+	nm_log_dbg (LOGD_BT, "(%s): bluez device removed", path);
+
 	device = g_hash_table_lookup (priv->devices, path);
 	if (device) {
 		g_object_ref (device);
-		g_hash_table_remove (priv->devices, path);
+		g_hash_table_remove (priv->devices, nm_bluez_device_get_path (device));
 		g_signal_emit (self, signals[DEVICE_REMOVED], 0, device);
 		g_object_unref (device);
 	}
@@ -214,8 +222,10 @@ query_properties (NMBluezAdapter *self)
 	}
 }
 
+/***********************************************************/
+
 NMBluezAdapter *
-nm_bluez_adapter_new (const char *path)
+nm_bluez_adapter_new (const char *path, NMConnectionProvider *provider)
 {
 	NMBluezAdapter *self;
 	NMBluezAdapterPrivate *priv;
@@ -229,6 +239,9 @@ nm_bluez_adapter_new (const char *path)
 		return NULL;
 
 	priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (self);
+
+	priv->provider = provider;
+
 	dbus_mgr = nm_dbus_manager_get ();
 	connection = nm_dbus_manager_get_connection (dbus_mgr);
 
@@ -258,7 +271,23 @@ nm_bluez_adapter_init (NMBluezAdapter *self)
 	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (self);
 
 	priv->devices = g_hash_table_new_full (g_str_hash, g_str_equal,
-	                                       g_free, g_object_unref);
+	                                       NULL, g_object_unref);
+}
+
+static void
+dispose (GObject *object)
+{
+	NMBluezAdapter *self = NM_BLUEZ_ADAPTER (object);
+	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (self);
+	GHashTableIter iter;
+	NMBluezDevice *device;
+
+	g_hash_table_iter_init (&iter, priv->devices);
+	while (g_hash_table_iter_next (&iter, NULL, (gpointer) &device))
+		g_signal_emit (self, signals[DEVICE_REMOVED], 0, device);
+	g_hash_table_remove_all (priv->devices);
+
+	G_OBJECT_CLASS (nm_bluez_adapter_parent_class)->dispose (object);
 }
 
 static void
@@ -320,6 +349,7 @@ nm_bluez_adapter_class_init (NMBluezAdapterClass *config_class)
 	/* virtual methods */
 	object_class->get_property = get_property;
 	object_class->set_property = set_property;
+	object_class->dispose = dispose;
 	object_class->finalize = finalize;
 
 	/* Properties */
diff --git a/src/bluez-manager/nm-bluez-adapter.h b/src/bluez-manager/nm-bluez-adapter.h
index c552e989..36aa55df 100644
--- a/src/bluez-manager/nm-bluez-adapter.h
+++ b/src/bluez-manager/nm-bluez-adapter.h
@@ -15,7 +15,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Copyright (C) 2009 Red Hat, Inc.
+ * Copyright (C) 2009 - 2012 Red Hat, Inc.
  */
 
 #ifndef NM_BLUEZ_ADAPTER_H
@@ -25,6 +25,7 @@
 #include <glib-object.h>
 
 #include "nm-bluez-device.h"
+#include "nm-connection-provider.h"
 
 #define NM_TYPE_BLUEZ_ADAPTER            (nm_bluez_adapter_get_type ())
 #define NM_BLUEZ_ADAPTER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_BLUEZ_ADAPTER, NMBluezAdapter))
@@ -53,7 +54,8 @@ typedef struct {
 
 GType nm_bluez_adapter_get_type (void);
 
-NMBluezAdapter *nm_bluez_adapter_new (const char *path);
+NMBluezAdapter *nm_bluez_adapter_new (const char *path,
+                                      NMConnectionProvider *provider);
 
 const char *nm_bluez_adapter_get_path (NMBluezAdapter *self);
 
diff --git a/src/bluez-manager/nm-bluez-device.c b/src/bluez-manager/nm-bluez-device.c
index ecb6ce51..b12a8619 100644
--- a/src/bluez-manager/nm-bluez-device.c
+++ b/src/bluez-manager/nm-bluez-device.c
@@ -15,13 +15,17 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Copyright (C) 2009 - 2010 Red Hat, Inc.
+ * Copyright (C) 2009 - 2012 Red Hat, Inc.
  */
 
 #include <glib.h>
 #include <string.h>
+#include <net/ethernet.h>
+#include <netinet/ether.h>
 
 #include "NetworkManager.h"
+#include "nm-setting-bluetooth.h"
+
 #include "nm-dbus-manager.h"
 #include "nm-bluez-device.h"
 #include "nm-bluez-common.h"
@@ -41,9 +45,13 @@ typedef struct {
 	gboolean usable;
 
 	char *address;
+	guint8 bin_address[ETH_ALEN];
 	char *name;
 	guint32 capabilities;
 	gint rssi;
+
+	NMConnectionProvider *provider;
+	GSList *connections;
 } NMBluezDevicePrivate;
 
 
@@ -66,6 +74,8 @@ enum {
 };
 static guint signals[LAST_SIGNAL] = { 0 };
 
+/***********************************************************/
+
 const char *
 nm_bluez_device_get_path (NMBluezDevice *self)
 {
@@ -122,59 +132,137 @@ nm_bluez_device_get_rssi (NMBluezDevice *self)
 	return NM_BLUEZ_DEVICE_GET_PRIVATE (self)->rssi;
 }
 
-static guint32
-convert_uuids_to_capabilities (const char **strings)
+static void
+check_emit_usable (NMBluezDevice *self)
 {
-	const char **iter;
-	guint32 capabilities = 0;
+	NMBluezDevicePrivate *priv = NM_BLUEZ_DEVICE_GET_PRIVATE (self);
+	gboolean new_usable;
 
-	for (iter = strings; iter && *iter; iter++) {
-		char **parts;
-		guint uuid16;
+	new_usable = (priv->initialized && priv->capabilities && priv->name && priv->address && priv->connections);
+	if (new_usable != priv->usable) {
+		priv->usable = new_usable;
+		g_object_notify (G_OBJECT (self), NM_BLUEZ_DEVICE_USABLE);
+	}
+}
 
-		parts = g_strsplit (*iter, "-", -1);
-		if (parts == NULL || parts[0] == NULL) {
-			g_strfreev (parts);
-			continue;
-		}
+/********************************************************************/
 
-		uuid16 = g_ascii_strtoull (parts[0], NULL, 16);
-		g_strfreev (parts);
+static gboolean
+connection_compatible (NMBluezDevice *self, NMConnection *connection)
+{
+	NMBluezDevicePrivate *priv = NM_BLUEZ_DEVICE_GET_PRIVATE (self);
+	NMSettingBluetooth *s_bt;
+	const char *bt_type;
+	const GByteArray *bdaddr;
 
-		switch (uuid16) {
-		case 0x1103:
-			capabilities |= NM_BT_CAPABILITY_DUN;
-			break;
-		case 0x1116:
-			capabilities |= NM_BT_CAPABILITY_NAP;
-			break;
-		default:
-			break;
-		}
+	if (!nm_connection_is_type (connection, NM_SETTING_BLUETOOTH_SETTING_NAME))
+		return FALSE;
+
+	s_bt = nm_connection_get_setting_bluetooth (connection);
+	if (!s_bt)
+		return FALSE;
+
+	bdaddr = nm_setting_bluetooth_get_bdaddr (s_bt);
+	if (!bdaddr || bdaddr->len != ETH_ALEN)
+		return FALSE;
+	if (memcmp (bdaddr->data, priv->bin_address, ETH_ALEN) != 0)
+		return FALSE;
+
+	bt_type = nm_setting_bluetooth_get_connection_type (s_bt);
+	if (   g_str_equal (bt_type, NM_SETTING_BLUETOOTH_TYPE_DUN)
+	    && !(priv->capabilities & NM_BT_CAPABILITY_DUN))
+	    	return FALSE;
+
+	if (   g_str_equal (bt_type, NM_SETTING_BLUETOOTH_TYPE_PANU)
+	    && !(priv->capabilities & NM_BT_CAPABILITY_NAP))
+	    	return FALSE;
+
+	return TRUE;
+}
+
+static void
+_internal_add_connection (NMBluezDevice *self, NMConnection *connection)
+{
+	NMBluezDevicePrivate *priv = NM_BLUEZ_DEVICE_GET_PRIVATE (self);
+
+	if (!g_slist_find (priv->connections, connection)) {
+		priv->connections = g_slist_prepend (priv->connections, g_object_ref (connection));
+		check_emit_usable (self);
 	}
+}
 
-	return capabilities;
+static void
+cp_connection_added (NMConnectionProvider *provider,
+                     NMConnection *connection,
+                     NMBluezDevice *self)
+{
+	if (connection_compatible (self, connection))
+		_internal_add_connection (self, connection);
 }
 
 static void
-check_emit_usable (NMBluezDevice *self)
+cp_connection_removed (NMConnectionProvider *provider,
+                       NMConnection *connection,
+                       NMBluezDevice *self)
 {
 	NMBluezDevicePrivate *priv = NM_BLUEZ_DEVICE_GET_PRIVATE (self);
 
-	if (   priv->initialized
-	    && priv->capabilities
-	    && priv->name
-	    && priv->address) {
-		if (!priv->usable) {
-			priv->usable = TRUE;
-			g_object_notify (G_OBJECT (self), NM_BLUEZ_DEVICE_USABLE);
-		}
-	} else {
-		if (priv->usable) {
-			priv->usable = FALSE;
-			g_object_notify (G_OBJECT (self), NM_BLUEZ_DEVICE_USABLE);
+	if (g_slist_find (priv->connections, connection)) {
+		priv->connections = g_slist_remove (priv->connections, connection);
+		g_object_unref (connection);
+		check_emit_usable (self);
+	}
+}
+
+static void
+cp_connection_updated (NMConnectionProvider *provider,
+                       NMConnection *connection,
+                       NMBluezDevice *self)
+{
+	if (connection_compatible (self, connection))
+		_internal_add_connection (self, connection);
+	else
+		cp_connection_removed (provider, connection, self);
+}
+
+static void
+cp_connections_loaded (NMConnectionProvider *provider, NMBluezDevice *self)
+{
+	const GSList *connections, *iter;
+
+	connections = nm_connection_provider_get_connections (provider);
+	for (iter = connections; iter; iter = g_slist_next (iter))
+		cp_connection_added (provider, NM_CONNECTION (iter->data), self);
+}
+
+/***********************************************************/
+
+static guint32
+convert_uuids_to_capabilities (const char **strings)
+{
+	const char **iter;
+	guint32 capabilities = 0;
+
+	for (iter = strings; iter && *iter; iter++) {
+		char **parts;
+
+		parts = g_strsplit (*iter, "-", -1);
+		if (parts && parts[0]) {
+			switch (g_ascii_strtoull (parts[0], NULL, 16)) {
+			case 0x1103:
+				capabilities |= NM_BT_CAPABILITY_DUN;
+				break;
+			case 0x1116:
+				capabilities |= NM_BT_CAPABILITY_NAP;
+				break;
+			default:
+				break;
+			}
 		}
+		g_strfreev (parts);
 	}
+
+	return capabilities;
 }
 
 static void
@@ -224,6 +312,7 @@ get_properties_cb (DBusGProxy *proxy, DBusGProxyCall *call, gpointer user_data)
 	GError *err = NULL;
 	GValue *value;
 	const char **uuids;
+	struct ether_addr *tmp;
 
 	if (!dbus_g_proxy_end_call (proxy, call, &err,
 	                            DBUS_TYPE_G_MAP_OF_VARIANT, &properties,
@@ -237,6 +326,11 @@ get_properties_cb (DBusGProxy *proxy, DBusGProxyCall *call, gpointer user_data)
 
 	value = g_hash_table_lookup (properties, "Address");
 	priv->address = value ? g_value_dup_string (value) : NULL;
+	if (priv->address) {
+		tmp = ether_aton (priv->address);
+		g_assert (tmp);
+		memcpy (priv->bin_address, tmp->ether_addr_octet, ETH_ALEN);
+	}
 
 	value = g_hash_table_lookup (properties, "Name");
 	priv->name = value ? g_value_dup_string (value) : NULL;
@@ -253,6 +347,9 @@ get_properties_cb (DBusGProxy *proxy, DBusGProxyCall *call, gpointer user_data)
 
 	g_hash_table_unref (properties);
 
+	/* Check if any connections match this device */
+	cp_connections_loaded (priv->provider, self);
+
 	priv->initialized = TRUE;
 	g_signal_emit (self, signals[INITIALIZED], 0, TRUE);
 
@@ -275,14 +372,18 @@ query_properties (NMBluezDevice *self)
 	}
 }
 
+/********************************************************************/
+
 NMBluezDevice *
-nm_bluez_device_new (const char *path)
+nm_bluez_device_new (const char *path, NMConnectionProvider *provider)
 {
 	NMBluezDevice *self;
 	NMBluezDevicePrivate *priv;
 	NMDBusManager *dbus_mgr;
 	DBusGConnection *connection;
 
+	g_return_val_if_fail (path != NULL, NULL);
+	g_return_val_if_fail (provider != NULL, NULL);
 
 	self = (NMBluezDevice *) g_object_new (NM_TYPE_BLUEZ_DEVICE,
 	                                       NM_BLUEZ_DEVICE_PATH, path,
@@ -291,6 +392,29 @@ nm_bluez_device_new (const char *path)
 		return NULL;
 
 	priv = NM_BLUEZ_DEVICE_GET_PRIVATE (self);
+
+	priv->provider = provider;
+
+	g_signal_connect (priv->provider,
+	                  NM_CP_SIGNAL_CONNECTION_ADDED,
+	                  G_CALLBACK (cp_connection_added),
+	                  self);
+
+	g_signal_connect (priv->provider,
+	                  NM_CP_SIGNAL_CONNECTION_REMOVED,
+	                  G_CALLBACK (cp_connection_removed),
+	                  self);
+
+	g_signal_connect (priv->provider,
+	                  NM_CP_SIGNAL_CONNECTION_UPDATED,
+	                  G_CALLBACK (cp_connection_updated),
+	                  self);
+
+	g_signal_connect (priv->provider,
+	                  NM_CP_SIGNAL_CONNECTIONS_LOADED,
+	                  G_CALLBACK (cp_connections_loaded),
+	                  self);
+
 	dbus_mgr = nm_dbus_manager_get ();
 	connection = nm_dbus_manager_get_connection (dbus_mgr);
 
@@ -319,6 +443,24 @@ nm_bluez_device_init (NMBluezDevice *self)
 }
 
 static void
+dispose (GObject *object)
+{
+	NMBluezDevice *self = NM_BLUEZ_DEVICE (object);
+	NMBluezDevicePrivate *priv = NM_BLUEZ_DEVICE_GET_PRIVATE (self);
+
+	g_slist_foreach (priv->connections, (GFunc) g_object_unref, NULL);
+	g_slist_free (priv->connections);
+	priv->connections = NULL;
+
+	g_signal_handlers_disconnect_by_func (priv->provider, cp_connection_added, self);
+	g_signal_handlers_disconnect_by_func (priv->provider, cp_connection_removed, self);
+	g_signal_handlers_disconnect_by_func (priv->provider, cp_connection_updated, self);
+	g_signal_handlers_disconnect_by_func (priv->provider, cp_connections_loaded, self);
+
+	G_OBJECT_CLASS (nm_bluez_device_parent_class)->dispose (object);
+}
+
+static void
 finalize (GObject *object)
 {
 	NMBluezDevicePrivate *priv = NM_BLUEZ_DEVICE_GET_PRIVATE (object);
@@ -389,6 +531,7 @@ nm_bluez_device_class_init (NMBluezDeviceClass *config_class)
 	/* virtual methods */
 	object_class->get_property = get_property;
 	object_class->set_property = set_property;
+	object_class->dispose = dispose;
 	object_class->finalize = finalize;
 
 	/* Properties */
diff --git a/src/bluez-manager/nm-bluez-device.h b/src/bluez-manager/nm-bluez-device.h
index 8a6b3597..f5fdbf5f 100644
--- a/src/bluez-manager/nm-bluez-device.h
+++ b/src/bluez-manager/nm-bluez-device.h
@@ -15,7 +15,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Copyright (C) 2009 Red Hat, Inc.
+ * Copyright (C) 2009 - 2012 Red Hat, Inc.
  */
 
 #ifndef NM_BLUEZ_DEVICE_H
@@ -24,6 +24,9 @@
 #include <glib.h>
 #include <glib-object.h>
 
+#include "nm-connection.h"
+#include "nm-connection-provider.h"
+
 #define NM_TYPE_BLUEZ_DEVICE            (nm_bluez_device_get_type ())
 #define NM_BLUEZ_DEVICE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_BLUEZ_DEVICE, NMBluezDevice))
 #define NM_BLUEZ_DEVICE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_BLUEZ_DEVICE, NMBluezDeviceClass))
@@ -53,7 +56,7 @@ typedef struct {
 
 GType nm_bluez_device_get_type (void);
 
-NMBluezDevice *nm_bluez_device_new (const char *path);
+NMBluezDevice *nm_bluez_device_new (const char *path, NMConnectionProvider *provider);
 
 const char *nm_bluez_device_get_path (NMBluezDevice *self);
 
diff --git a/src/bluez-manager/nm-bluez-manager.c b/src/bluez-manager/nm-bluez-manager.c
index 942d0f34..e485ffe4 100644
--- a/src/bluez-manager/nm-bluez-manager.c
+++ b/src/bluez-manager/nm-bluez-manager.c
@@ -16,7 +16,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
  * Copyright (C) 2007 - 2008 Novell, Inc.
- * Copyright (C) 2007 - 2010 Red Hat, Inc.
+ * Copyright (C) 2007 - 2012 Red Hat, Inc.
  */
 
 #include <signal.h>
@@ -37,6 +37,8 @@ typedef struct {
 	NMDBusManager *dbus_mgr;
 	gulong name_owner_changed_id;
 
+	NMConnectionProvider *provider;
+
 	DBusGProxy *proxy;
 
 	NMBluezAdapter *adapter;
@@ -165,7 +167,7 @@ default_adapter_changed (DBusGProxy *proxy, const char *path, NMBluezManager *se
 
 	/* Add the new default adapter */
 	if (path) {
-		priv->adapter = nm_bluez_adapter_new (path);
+		priv->adapter = nm_bluez_adapter_new (path, priv->provider);
 		g_signal_connect (priv->adapter, "initialized", G_CALLBACK (adapter_initialized), self);
 	}
 }
@@ -238,12 +240,6 @@ bluez_connect (NMBluezManager *self)
 }
 
 static void
-remove_all_devices (NMBluezManager *self, gboolean do_signal)
-{
-	/* FIXME: do something */
-}
-
-static void
 name_owner_changed_cb (NMDBusManager *dbus_mgr,
                        const char *name,
                        const char *old_owner,
@@ -251,6 +247,7 @@ name_owner_changed_cb (NMDBusManager *dbus_mgr,
                        gpointer user_data)
 {
 	NMBluezManager *self = NM_BLUEZ_MANAGER (user_data);
+	NMBluezManagerPrivate *priv = NM_BLUEZ_MANAGER_GET_PRIVATE (self);
 	gboolean old_owner_good = (old_owner && strlen (old_owner));
 	gboolean new_owner_good = (new_owner && strlen (new_owner));
 
@@ -260,8 +257,13 @@ name_owner_changed_cb (NMDBusManager *dbus_mgr,
 
 	if (!old_owner_good && new_owner_good)
 		query_default_adapter (self);
-	else if (old_owner_good && !new_owner_good)
-		remove_all_devices (self, TRUE);
+	else if (old_owner_good && !new_owner_good) {
+		/* Throwing away the adapter removes all devices too */
+		if (priv->adapter) {
+			g_object_unref (priv->adapter);
+			priv->adapter = NULL;
+		}
+	}
 }
 
 static void
@@ -274,7 +276,10 @@ bluez_cleanup (NMBluezManager *self, gboolean do_signal)
 		priv->proxy = NULL;
 	}
 
-	remove_all_devices (self, do_signal);
+	if (priv->adapter) {
+		g_object_unref (priv->adapter);
+		priv->adapter = NULL;
+	}
 }
 
 static void
@@ -290,24 +295,22 @@ dbus_connection_changed_cb (NMDBusManager *dbus_mgr,
 		bluez_connect (self);
 }
 
+/****************************************************************/
 
 NMBluezManager *
-nm_bluez_manager_new (void)
-{
-	return NM_BLUEZ_MANAGER (g_object_new (NM_TYPE_BLUEZ_MANAGER, NULL));
-}
-
-NMBluezManager *
-nm_bluez_manager_get (void)
+nm_bluez_manager_get (NMConnectionProvider *provider)
 {
 	static NMBluezManager *singleton = NULL;
 
-	if (!singleton)
-		singleton = nm_bluez_manager_new ();
-	else
-		g_object_ref (singleton);
+	if (singleton)
+		return g_object_ref (singleton);
 
+	singleton = (NMBluezManager *) g_object_new (NM_TYPE_BLUEZ_MANAGER, NULL);
 	g_assert (singleton);
+
+	/* Cache the connection provider for NMBluezAdapter objects */
+	NM_BLUEZ_MANAGER_GET_PRIVATE (singleton)->provider = provider;
+
 	return singleton;
 }
 
@@ -333,13 +336,20 @@ nm_bluez_manager_init (NMBluezManager *self)
 }
 
 static void
-finalize (GObject *object)
+dispose (GObject *object)
 {
 	NMBluezManager *self = NM_BLUEZ_MANAGER (object);
+	NMBluezManagerPrivate *priv = NM_BLUEZ_MANAGER_GET_PRIVATE (self);
 
 	bluez_cleanup (self, FALSE);
 
-	G_OBJECT_CLASS (nm_bluez_manager_parent_class)->finalize (object);
+	if (priv->dbus_mgr) {
+		g_signal_handlers_disconnect_by_func (priv->dbus_mgr, name_owner_changed_cb, self);
+		g_signal_handlers_disconnect_by_func (priv->dbus_mgr, dbus_connection_changed_cb, self);
+		g_object_unref (priv->dbus_mgr);
+	}
+
+	G_OBJECT_CLASS (nm_bluez_manager_parent_class)->dispose (object);
 }
 
 static void
@@ -350,11 +360,11 @@ nm_bluez_manager_class_init (NMBluezManagerClass *klass)
 	g_type_class_add_private (klass, sizeof (NMBluezManagerPrivate));
 
 	/* virtual methods */
-	object_class->finalize = finalize;
+	object_class->dispose = dispose;
 
 	/* Signals */
 	signals[BDADDR_ADDED] =
-		g_signal_new ("bdaddr-added",
+		g_signal_new (NM_BLUEZ_MANAGER_BDADDR_ADDED,
 		              G_OBJECT_CLASS_TYPE (object_class),
 		              G_SIGNAL_RUN_FIRST,
 		              G_STRUCT_OFFSET (NMBluezManagerClass, bdaddr_added),
@@ -363,7 +373,7 @@ nm_bluez_manager_class_init (NMBluezManagerClass *klass)
 		              G_TYPE_NONE, 4, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT);
 
 	signals[BDADDR_REMOVED] =
-		g_signal_new ("bdaddr-removed",
+		g_signal_new (NM_BLUEZ_MANAGER_BDADDR_REMOVED,
 		              G_OBJECT_CLASS_TYPE (object_class),
 		              G_SIGNAL_RUN_FIRST,
 		              G_STRUCT_OFFSET (NMBluezManagerClass, bdaddr_removed),
diff --git a/src/bluez-manager/nm-bluez-manager.h b/src/bluez-manager/nm-bluez-manager.h
index 9cfab1b7..1549e699 100644
--- a/src/bluez-manager/nm-bluez-manager.h
+++ b/src/bluez-manager/nm-bluez-manager.h
@@ -16,7 +16,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
  * Copyright (C) 2007 - 2008 Novell, Inc.
- * Copyright (C) 2007 - 2009 Red Hat, Inc.
+ * Copyright (C) 2007 - 2012 Red Hat, Inc.
  */
 
 #ifndef NM_BLUEZ_MANAGER_H
@@ -25,6 +25,8 @@
 #include <glib.h>
 #include <glib-object.h>
 
+#include  "nm-connection-provider.h"
+
 G_BEGIN_DECLS
 
 #define NM_TYPE_BLUEZ_MANAGER            (nm_bluez_manager_get_type ())
@@ -34,6 +36,9 @@ G_BEGIN_DECLS
 #define NM_IS_BLUEZ_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NM_TYPE_BLUEZ_MANAGER))
 #define NM_BLUEZ_MANAGER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_BLUEZ_MANAGER, NMBluezManagerClass))
 
+#define NM_BLUEZ_MANAGER_BDADDR_ADDED   "bdaddr-added"
+#define NM_BLUEZ_MANAGER_BDADDR_REMOVED "bdaddr-removed"
+
 typedef struct {
 	GObject parent;
 } NMBluezManager;
@@ -55,8 +60,8 @@ typedef struct {
 
 GType nm_bluez_manager_get_type (void);
 
-NMBluezManager *nm_bluez_manager_new (void);
-NMBluezManager *nm_bluez_manager_get (void);
+NMBluezManager *nm_bluez_manager_get (NMConnectionProvider *provider);
+
 void nm_bluez_manager_query_devices (NMBluezManager *manager);
 
 #endif /* NM_BLUEZ_MANAGER_H */
diff --git a/src/dhcp-manager/Makefile.am b/src/dhcp-manager/Makefile.am
index ce34c416..11560fde 100644
--- a/src/dhcp-manager/Makefile.am
+++ b/src/dhcp-manager/Makefile.am
@@ -7,6 +7,7 @@ INCLUDES = \
 	-I${top_srcdir}/src/generated \
 	-I${top_builddir}/src/generated \
 	-I${top_srcdir}/src/logging \
+	-I${top_srcdir}/src/posix-signals \
 	-I${top_srcdir}/libnm-util \
 	-I${top_builddir}/libnm-util \
 	-I${top_srcdir}/src
@@ -33,6 +34,7 @@ libdhcp_dhclient_la_CPPFLAGS = \
 
 libdhcp_dhclient_la_LIBADD = \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(top_builddir)/libnm-util/libnm-util.la \
 	$(DBUS_LIBS) \
 	$(GLIB_LIBS)
@@ -58,6 +60,7 @@ libdhcp_manager_la_CPPFLAGS = \
 
 libdhcp_manager_la_LIBADD = \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(builddir)/libdhcp-dhclient.la \
 	$(DBUS_LIBS) \
 	$(GLIB_LIBS)
diff --git a/src/dhcp-manager/Makefile.in b/src/dhcp-manager/Makefile.in
index 4c389562..3d71a405 100644
--- a/src/dhcp-manager/Makefile.in
+++ b/src/dhcp-manager/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -58,6 +58,7 @@ LTLIBRARIES = $(noinst_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libdhcp_dhclient_la_DEPENDENCIES =  \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(top_builddir)/libnm-util/libnm-util.la $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1)
 am_libdhcp_dhclient_la_OBJECTS =  \
@@ -69,6 +70,7 @@ am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
 am__v_lt_0 = --silent
 libdhcp_manager_la_DEPENDENCIES =  \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(builddir)/libdhcp-dhclient.la $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1)
 am_libdhcp_manager_la_OBJECTS = libdhcp_manager_la-nm-dhcp-client.lo \
@@ -217,6 +219,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -312,6 +318,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -350,6 +359,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -378,6 +389,7 @@ INCLUDES = \
 	-I${top_srcdir}/src/generated \
 	-I${top_builddir}/src/generated \
 	-I${top_srcdir}/src/logging \
+	-I${top_srcdir}/src/posix-signals \
 	-I${top_srcdir}/libnm-util \
 	-I${top_builddir}/libnm-util \
 	-I${top_srcdir}/src
@@ -403,6 +415,7 @@ libdhcp_dhclient_la_CPPFLAGS = \
 
 libdhcp_dhclient_la_LIBADD = \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(top_builddir)/libnm-util/libnm-util.la \
 	$(DBUS_LIBS) \
 	$(GLIB_LIBS)
@@ -428,6 +441,7 @@ libdhcp_manager_la_CPPFLAGS = \
 
 libdhcp_manager_la_LIBADD = \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(builddir)/libdhcp-dhclient.la \
 	$(DBUS_LIBS) \
 	$(GLIB_LIBS)
diff --git a/src/dhcp-manager/nm-dhcp-client.c b/src/dhcp-manager/nm-dhcp-client.c
index 16c6dd77..ea4084ac 100644
--- a/src/dhcp-manager/nm-dhcp-client.c
+++ b/src/dhcp-manager/nm-dhcp-client.c
@@ -570,8 +570,20 @@ nm_dhcp_client_new_options (NMDHCPClient *self,
 	g_hash_table_remove_all (priv->options);
 	g_hash_table_foreach (options, copy_option, priv->options);
 
-	if (old_state == new_state)
-		return;
+	if (old_state == new_state) {
+		/* dhclient will stay in the same state (or, really, provide the same
+		 * reason) for operations like RENEW and REBIND.  We need to ensure
+		 * that triggers various DHCP lease change code, so we need to pass
+		 * along same-state transitions for these states.
+		 */
+		if (   new_state != DHC_BOUND4
+		    && new_state != DHC_RENEW4
+		    && new_state != DHC_REBIND4
+		    && new_state != DHC_BOUND6
+		    && new_state != DHC_RENEW6
+		    && new_state != DHC_REBIND6)
+			return;
+	}
 
 	/* Handle changed device state */
 	if (state_is_bound (new_state)) {
@@ -1217,12 +1229,6 @@ ip6_options_to_config (NMDHCPClient *self)
 		return NULL;
 	}
 
-	addr = nm_ip6_address_new ();
-	if (!addr) {
-		nm_log_warn (LOGD_DHCP6, "(%s): couldn't allocate memory for an IP6 Address!", priv->iface);
-		goto error;
-	}
-
 	str = g_hash_table_lookup (priv->options, "new_ip6_address");
 	if (str) {
 		if (!inet_pton (AF_INET6, str, &tmp_addr)) {
@@ -1231,35 +1237,17 @@ ip6_options_to_config (NMDHCPClient *self)
 			goto error;
 		}
 
+		addr = nm_ip6_address_new ();
+		g_assert (addr);
 		nm_ip6_address_set_address (addr, &tmp_addr);
-		nm_log_info (LOGD_DHCP6, "  address %s", str);
-	} else {
-		/* No address in managed mode is a hard error */
-		if (priv->info_only == FALSE)
-			goto error;
-
-		/* But "info-only" setups don't necessarily need an address */
-		nm_ip6_address_unref (addr);
-		addr = NULL;
-	}
-
-	/* Only care about prefix if we got an address */
-	if (addr) {
-		str = g_hash_table_lookup (priv->options, "new_ip6_prefixlen");
-		if (str) {
-			long unsigned int prefix;
-
-			errno = 0;
-			prefix = strtoul (str, NULL, 10);
-			if (errno != 0 || prefix > 128)
-				goto error;
-
-			nm_ip6_address_set_prefix (addr, (guint32) prefix);
-			nm_log_info (LOGD_DHCP6, "  prefix %lu", prefix);
-		}
+		/* DHCPv6 IA_NA assignments are single address only */
+		nm_ip6_address_set_prefix (addr, 128);
+		nm_log_info (LOGD_DHCP6, "  address %s/128", str);
 
 		nm_ip6_config_take_address (ip6_config, addr);
-		addr = NULL;
+	} else if (priv->info_only == FALSE) {
+		/* No address in Managed mode is a hard error */
+		goto error;
 	}
 
 	str = g_hash_table_lookup (priv->options, "new_host_name");
@@ -1288,8 +1276,6 @@ ip6_options_to_config (NMDHCPClient *self)
 	return ip6_config;
 
 error:
-	if (addr)
-		nm_ip6_address_unref (addr);
 	g_object_unref (ip6_config);
 	return NULL;
 }
diff --git a/src/dhcp-manager/nm-dhcp-dhclient.c b/src/dhcp-manager/nm-dhcp-dhclient.c
index 09321396..043cd63d 100644
--- a/src/dhcp-manager/nm-dhcp-dhclient.c
+++ b/src/dhcp-manager/nm-dhcp-dhclient.c
@@ -15,7 +15,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Copyright (C) 2005 - 2010 Red Hat, Inc.
+ * Copyright (C) 2005 - 2012 Red Hat, Inc.
  */
 
 #define _XOPEN_SOURCE
@@ -40,6 +40,7 @@
 #include "nm-utils.h"
 #include "nm-logging.h"
 #include "nm-dhcp-dhclient-utils.h"
+#include "nm-posix-signals.h"
 
 G_DEFINE_TYPE (NMDHCPDhclient, nm_dhcp_dhclient, NM_TYPE_DHCP_CLIENT)
 
@@ -333,6 +334,7 @@ merge_dhclient_config (const char *iface,
 	g_assert (new);
 	success = g_file_set_contents (conf_file, new, -1, error);
 	g_free (new);
+	g_free (orig);
 
 	return success;
 }
@@ -407,6 +409,12 @@ dhclient_child_setup (gpointer user_data G_GNUC_UNUSED)
 	/* We are in the child process at this point */
 	pid_t pid = getpid ();
 	setpgid (pid, pid);
+
+	/*
+	 * We blocked signals in main(). We need to restore original signal
+	 * mask for dhclient here so that it can receive signals.
+	 */
+	nm_unblock_posix_signals (NULL);
 }
 
 static GPid
diff --git a/src/dhcp-manager/nm-dhcp-dhcpcd.c b/src/dhcp-manager/nm-dhcp-dhcpcd.c
index 237661fe..dc9bee13 100644
--- a/src/dhcp-manager/nm-dhcp-dhcpcd.c
+++ b/src/dhcp-manager/nm-dhcp-dhcpcd.c
@@ -35,6 +35,7 @@
 #include "nm-dhcp-dhcpcd.h"
 #include "nm-utils.h"
 #include "nm-logging.h"
+#include "nm-posix-signals.h"
 
 G_DEFINE_TYPE (NMDHCPDhcpcd, nm_dhcp_dhcpcd, NM_TYPE_DHCP_CLIENT)
 
@@ -83,6 +84,12 @@ dhcpcd_child_setup (gpointer user_data G_GNUC_UNUSED)
 	/* We are in the child process at this point */
 	pid_t pid = getpid ();
 	setpgid (pid, pid);
+
+	/*
+	 * We blocked signals in main(). We need to restore original signal
+	 * mask for dhcpcd here so that it can receive signals.
+	 */
+	nm_unblock_posix_signals (NULL);
 }
 
 static GPid
diff --git a/src/dhcp-manager/tests/Makefile.in b/src/dhcp-manager/tests/Makefile.in
index 20422cdb..d325dd9e 100644
--- a/src/dhcp-manager/tests/Makefile.in
+++ b/src/dhcp-manager/tests/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -169,6 +169,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -264,6 +268,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -302,6 +309,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/dns-manager/Makefile.am b/src/dns-manager/Makefile.am
index 331f85c4..fd31b140 100644
--- a/src/dns-manager/Makefile.am
+++ b/src/dns-manager/Makefile.am
@@ -1,5 +1,6 @@
 INCLUDES = \
 	-I${top_srcdir}/src/logging \
+	-I${top_srcdir}/src/posix-signals \
 	-I${top_srcdir}/libnm-util \
 	-I${top_builddir}/libnm-util \
 	-I${top_srcdir}/src \
@@ -28,6 +29,7 @@ libdns_manager_la_CPPFLAGS = \
 
 libdns_manager_la_LIBADD = \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(LIBNL_LIBS) \
 	$(DBUS_LIBS) \
 	$(GLIB_LIBS)
diff --git a/src/dns-manager/Makefile.in b/src/dns-manager/Makefile.in
index c9b8b0b3..ddcce666 100644
--- a/src/dns-manager/Makefile.in
+++ b/src/dns-manager/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -58,6 +58,7 @@ LTLIBRARIES = $(noinst_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libdns_manager_la_DEPENDENCIES =  \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1)
 am_libdns_manager_la_OBJECTS = libdns_manager_la-nm-dns-manager.lo \
@@ -172,6 +173,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -267,6 +272,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -305,6 +313,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -327,6 +337,7 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 INCLUDES = \
 	-I${top_srcdir}/src/logging \
+	-I${top_srcdir}/src/posix-signals \
 	-I${top_srcdir}/libnm-util \
 	-I${top_builddir}/libnm-util \
 	-I${top_srcdir}/src \
@@ -354,6 +365,7 @@ libdns_manager_la_CPPFLAGS = \
 
 libdns_manager_la_LIBADD = \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(LIBNL_LIBS) \
 	$(DBUS_LIBS) \
 	$(GLIB_LIBS)
diff --git a/src/dns-manager/nm-dns-manager.c b/src/dns-manager/nm-dns-manager.c
index 6272e374..38ef08ea 100644
--- a/src/dns-manager/nm-dns-manager.c
+++ b/src/dns-manager/nm-dns-manager.c
@@ -16,7 +16,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
  * Copyright (C) 2004 - 2005 Colin Walters <walters@redhat.com>
- * Copyright (C) 2004 - 2011 Red Hat, Inc.
+ * Copyright (C) 2004 - 2012 Red Hat, Inc.
  * Copyright (C) 2005 - 2008 Novell, Inc.
  *   and others
  */
@@ -42,6 +42,7 @@
 #include "nm-logging.h"
 #include "backends/nm-backend.h"
 #include "NetworkManagerUtils.h"
+#include "nm-posix-signals.h"
 
 #include "nm-dns-plugin.h"
 #include "nm-dns-dnsmasq.h"
@@ -61,6 +62,8 @@ G_DEFINE_TYPE(NMDnsManager, nm_dns_manager, G_TYPE_OBJECT)
                                        NM_TYPE_DNS_MANAGER, \
                                        NMDnsManagerPrivate))
 
+#define HASH_LEN 20
+
 typedef struct {
 	gboolean disposed;
 
@@ -70,14 +73,10 @@ typedef struct {
 	NMIP6Config *ip6_device_config;
 	GSList *configs;
 	char *hostname;
+	guint updates_queue;
 
-	/* poor man's hash; we assume that the IP4 config object won't change
-	 * after it's given to us, which is (at this time) a fair assumption. So
-	 * we track the order of the currently applied IP configs and if they
-	 * haven't changed we don't need to rewrite resolv.conf.
-	 */
-	#define HLEN 6
-	gpointer hash[HLEN];
+	guint8 hash[HASH_LEN];  /* SHA1 hash of current DNS config */
+	guint8 prev_hash[HASH_LEN];  /* Hash when begin_updates() was called */
 
 	GSList *plugins;
 
@@ -218,6 +217,12 @@ netconfig_child_setup (gpointer user_data G_GNUC_UNUSED)
 {
 	pid_t pid = getpid ();
 	setpgid (pid, pid);
+
+	/*
+	 * We blocked signals in main(). We need to restore original signal
+	 * mask for netconfig here so that it can receive signals.
+	 */
+	nm_unblock_posix_signals (NULL);
 }
 
 static GPid
@@ -529,34 +534,43 @@ out:
 }
 
 static void
-compute_hash (NMDnsManager *self, gpointer *hash)
+compute_hash (NMDnsManager *self, guint8 buffer[HASH_LEN])
 {
 	NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE (self);
-	gpointer check[HLEN];
+	GChecksum *sum;
 	GSList *iter;
-	int i = 0;
+	gsize len = HASH_LEN;
 
-	memset (check, 0, sizeof (check));
+	sum = g_checksum_new (G_CHECKSUM_SHA1);
+	g_assert (len == g_checksum_type_get_length (G_CHECKSUM_SHA1));
 
 	if (priv->ip4_vpn_config)
-		check[i++] = priv->ip4_vpn_config;
+		nm_ip4_config_hash (priv->ip4_vpn_config, sum, TRUE);
 	if (priv->ip4_device_config)
-		check[i++] = priv->ip4_device_config;
+		nm_ip4_config_hash (priv->ip4_device_config, sum, TRUE);
 
 	if (priv->ip6_vpn_config)
-		check[i++] = priv->ip6_vpn_config;
+		nm_ip6_config_hash (priv->ip6_vpn_config, sum, TRUE);
 	if (priv->ip6_device_config)
-		check[i++] = priv->ip6_device_config;
+		nm_ip6_config_hash (priv->ip6_device_config, sum, TRUE);
 
-	/* Add two more "other" configs if any exist */
-	for (iter = priv->configs; iter && i < HLEN; iter = g_slist_next (iter)) {
-		if (   (iter->data != priv->ip4_vpn_config)
-		    && (iter->data != priv->ip4_device_config)
-		    && (iter->data != priv->ip6_vpn_config)
-		    && (iter->data != priv->ip6_device_config))
-			check[i++] = iter->data;
+	/* add any other configs we know about */
+	for (iter = priv->configs; iter; iter = g_slist_next (iter)) {
+		if (   (iter->data == priv->ip4_vpn_config)
+		    && (iter->data == priv->ip4_device_config)
+		    && (iter->data == priv->ip6_vpn_config)
+		    && (iter->data == priv->ip6_device_config))
+			continue;
+
+		if (NM_IS_IP4_CONFIG (iter->data))
+			nm_ip4_config_hash (NM_IP4_CONFIG (iter->data), sum, TRUE);
+		else if (NM_IS_IP6_CONFIG (iter->data))
+			nm_ip6_config_hash (NM_IP6_CONFIG (iter->data), sum, TRUE);
 	}
-	memcpy (hash, check, sizeof (check));
+
+	memset (buffer, 0, sizeof (buffer));
+	g_checksum_get_digest (sum, buffer, &len);
+	g_checksum_free (sum);
 }
 
 static gboolean
@@ -581,6 +595,8 @@ update_dns (NMDnsManager *self,
 
 	priv = NM_DNS_MANAGER_GET_PRIVATE (self);
 
+	nm_log_dbg (LOGD_DNS, "updating resolv.conf");
+
 	if (iface && (iface != priv->last_iface)) {
 		g_free (priv->last_iface);
 		priv->last_iface = g_strdup (iface);
@@ -784,23 +800,6 @@ plugin_failed (NMDnsPlugin *plugin, gpointer user_data)
 	}
 }
 
-static gboolean
-config_changed (NMDnsManager *self)
-{
-	NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE (self);
-	gpointer check[HLEN];
-
-	/* We only store HLEN configs; so if there are actually more than that,
-	 * we have to assume that the config has changed.
-	 */
-	if (g_slist_length (priv->configs) > HLEN)
-		return TRUE;
-
-	/* Otherwise return TRUE if the configuration has changed */
-	compute_hash (self, check);
-	return memcmp (check, priv->hash, sizeof (check)) ? TRUE : FALSE;
-}
-
 gboolean
 nm_dns_manager_add_ip4_config (NMDnsManager *mgr,
                                const char *iface,
@@ -831,10 +830,7 @@ nm_dns_manager_add_ip4_config (NMDnsManager *mgr,
 	if (!g_slist_find (priv->configs, config))
 		priv->configs = g_slist_append (priv->configs, g_object_ref (config));
 
-	if (!config_changed (mgr))
-		return TRUE;
-
-	if (!update_dns (mgr, iface, FALSE, &error)) {
+	if (!priv->updates_queue && !update_dns (mgr, iface, FALSE, &error)) {
 		nm_log_warn (LOGD_DNS, "could not commit DNS changes: (%d) %s",
 		             error ? error->code : -1,
 		             error && error->message ? error->message : "(unknown)");
@@ -871,10 +867,7 @@ nm_dns_manager_remove_ip4_config (NMDnsManager *mgr,
 
 	g_object_unref (config);
 
-	if (!config_changed (mgr))
-		return TRUE;
-
-	if (!update_dns (mgr, iface, FALSE, &error)) {
+	if (!priv->updates_queue && !update_dns (mgr, iface, FALSE, &error)) {
 		nm_log_warn (LOGD_DNS, "could not commit DNS changes: (%d) %s",
 		             error ? error->code : -1,
 		             error && error->message ? error->message : "(unknown)");
@@ -901,8 +894,6 @@ nm_dns_manager_add_ip6_config (NMDnsManager *mgr,
 
 	switch (cfg_type) {
 	case NM_DNS_IP_CONFIG_TYPE_VPN:
-		/* FIXME: not quite yet... */
-		g_return_val_if_fail (cfg_type != NM_DNS_IP_CONFIG_TYPE_VPN, FALSE);
 		priv->ip6_vpn_config = config;
 		break;
 	case NM_DNS_IP_CONFIG_TYPE_BEST_DEVICE:
@@ -916,10 +907,7 @@ nm_dns_manager_add_ip6_config (NMDnsManager *mgr,
 	if (!g_slist_find (priv->configs, config))
 		priv->configs = g_slist_append (priv->configs, g_object_ref (config));
 
-	if (!config_changed (mgr))
-		return TRUE;
-
-	if (!update_dns (mgr, iface, FALSE, &error)) {
+	if (!priv->updates_queue && !update_dns (mgr, iface, FALSE, &error)) {
 		nm_log_warn (LOGD_DNS, "could not commit DNS changes: (%d) %s",
 		             error ? error->code : -1,
 		             error && error->message ? error->message : "(unknown)");
@@ -956,10 +944,7 @@ nm_dns_manager_remove_ip6_config (NMDnsManager *mgr,
 
 	g_object_unref (config);	
 
-	if (!config_changed (mgr))
-		return TRUE;
-
-	if (!update_dns (mgr, iface, FALSE, &error)) {
+	if (!priv->updates_queue && !update_dns (mgr, iface, FALSE, &error)) {
 		nm_log_warn (LOGD_DNS, "could not commit DNS changes: (%d) %s",
 		             error ? error->code : -1,
 		             error && error->message ? error->message : "(unknown)");
@@ -997,7 +982,7 @@ nm_dns_manager_set_hostname (NMDnsManager *mgr,
 	 * wants one.  But hostname changes are system-wide and *not* tied to a
 	 * specific interface, so netconfig can't really handle this.  Fake it.
 	 */
-	if (!update_dns (mgr, priv->last_iface, FALSE, &error)) {
+	if (!priv->updates_queue && !update_dns (mgr, priv->last_iface, FALSE, &error)) {
 		nm_log_warn (LOGD_DNS, "could not commit DNS changes: (%d) %s",
 		             error ? error->code : -1,
 		             error && error->message ? error->message : "(unknown)");
@@ -1005,6 +990,58 @@ nm_dns_manager_set_hostname (NMDnsManager *mgr,
 	}
 }
 
+void
+nm_dns_manager_begin_updates (NMDnsManager *mgr, const char *func)
+{
+	NMDnsManagerPrivate *priv;
+
+	g_return_if_fail (mgr != NULL);
+	priv = NM_DNS_MANAGER_GET_PRIVATE (mgr);
+
+	/* Save current hash when starting a new batch */
+	if (priv->updates_queue == 0)
+		memcpy (priv->prev_hash, priv->hash, sizeof (priv->hash));
+
+	priv->updates_queue++;
+
+	nm_log_dbg (LOGD_DNS, "(%s): queueing DNS updates (%d)", func, priv->updates_queue);
+}
+
+void
+nm_dns_manager_end_updates (NMDnsManager *mgr, const char *func)
+{
+	NMDnsManagerPrivate *priv;
+	GError *error = NULL;
+	gboolean changed;
+	guint8 new[HASH_LEN];
+
+	g_return_if_fail (mgr != NULL);
+
+	priv = NM_DNS_MANAGER_GET_PRIVATE (mgr);
+	g_return_if_fail (priv->updates_queue > 0);
+
+	compute_hash (mgr, new);
+	changed = (memcmp (new, priv->prev_hash, sizeof (new)) != 0) ? TRUE : FALSE;
+	nm_log_dbg (LOGD_DNS, "(%s): DNS configuration %s", __func__, changed ? "changed" : "did not change");
+
+	priv->updates_queue--;
+	if ((priv->updates_queue > 0) || (changed == FALSE)) {
+		nm_log_dbg (LOGD_DNS, "(%s): no DNS changes to commit (%d)", func, priv->updates_queue);
+		return;
+	}
+
+	/* Commit all the outstanding changes */
+	nm_log_dbg (LOGD_DNS, "(%s): committing DNS changes (%d)", func, priv->updates_queue);
+	if (!update_dns (mgr, priv->last_iface, FALSE, &error)) {
+		nm_log_warn (LOGD_DNS, "could not commit DNS changes: (%d) %s",
+			         error ? error->code : -1,
+			         error && error->message ? error->message : "(unknown)");
+		g_clear_error (&error);
+	}
+
+	memset (priv->prev_hash, 0, sizeof (priv->prev_hash));
+}
+
 static void
 load_plugins (NMDnsManager *self, const char **plugins)
 {
@@ -1079,8 +1116,10 @@ nm_dns_manager_error_quark (void)
 }
 
 static void
-nm_dns_manager_init (NMDnsManager *mgr)
+nm_dns_manager_init (NMDnsManager *self)
 {
+	/* Set the initial hash */
+	compute_hash (self, NM_DNS_MANAGER_GET_PRIVATE (self)->hash);
 }
 
 static void
diff --git a/src/dns-manager/nm-dns-manager.h b/src/dns-manager/nm-dns-manager.h
index 25d2a981..f559865b 100644
--- a/src/dns-manager/nm-dns-manager.h
+++ b/src/dns-manager/nm-dns-manager.h
@@ -66,6 +66,10 @@ GType nm_dns_manager_get_type (void);
 
 NMDnsManager * nm_dns_manager_get (const char **plugins);
 
+/* Allow changes to be batched together */
+void nm_dns_manager_begin_updates (NMDnsManager *mgr, const char *func);
+void nm_dns_manager_end_updates (NMDnsManager *mgr, const char *func);
+
 gboolean nm_dns_manager_add_ip4_config (NMDnsManager *mgr,
                                         const char *iface,
                                         NMIP4Config *config,
diff --git a/src/dns-manager/nm-dns-plugin.c b/src/dns-manager/nm-dns-plugin.c
index e997948e..b26f2b94 100644
--- a/src/dns-manager/nm-dns-plugin.c
+++ b/src/dns-manager/nm-dns-plugin.c
@@ -13,7 +13,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Copyright (C) 2010 Red Hat, Inc.
+ * Copyright (C) 2010 - 2012 Red Hat, Inc.
  *
  */
 
@@ -27,6 +27,7 @@
 
 #include "nm-dns-plugin.h"
 #include "nm-logging.h"
+#include "nm-posix-signals.h"
 
 typedef struct {
 	gboolean disposed;
@@ -141,6 +142,12 @@ child_setup (gpointer user_data G_GNUC_UNUSED)
 	/* We are in the child process at this point */
 	pid_t pid = getpid ();
 	setpgid (pid, pid);
+
+	/*
+	 * We blocked signals in main(). We need to restore original signal
+	 * mask for DNS plugin here so that it can receive signals.
+	 */
+	nm_unblock_posix_signals (NULL);
 }
 
 GPid
diff --git a/src/dnsmasq-manager/Makefile.am b/src/dnsmasq-manager/Makefile.am
index 66bbdd83..8b7dd683 100644
--- a/src/dnsmasq-manager/Makefile.am
+++ b/src/dnsmasq-manager/Makefile.am
@@ -1,6 +1,7 @@
 INCLUDES = \
 	-I${top_srcdir}/libnm-util \
 	-I${top_srcdir}/src/logging \
+	-I${top_srcdir}/src/posix-signals \
 	-I${top_srcdir}/src \
 	-I${top_srcdir}/include
 
@@ -16,4 +17,5 @@ libdnsmasq_manager_la_CPPFLAGS = \
 
 libdnsmasq_manager_la_LIBADD = \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(GLIB_LIBS)
diff --git a/src/dnsmasq-manager/Makefile.in b/src/dnsmasq-manager/Makefile.in
index bb1e56c0..6da083c4 100644
--- a/src/dnsmasq-manager/Makefile.in
+++ b/src/dnsmasq-manager/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -58,6 +58,7 @@ LTLIBRARIES = $(noinst_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libdnsmasq_manager_la_DEPENDENCIES =  \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(am__DEPENDENCIES_1)
 am_libdnsmasq_manager_la_OBJECTS =  \
 	libdnsmasq_manager_la-nm-dnsmasq-manager.lo
@@ -168,6 +169,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -263,6 +268,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -301,6 +309,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -324,6 +334,7 @@ top_srcdir = @top_srcdir@
 INCLUDES = \
 	-I${top_srcdir}/libnm-util \
 	-I${top_srcdir}/src/logging \
+	-I${top_srcdir}/src/posix-signals \
 	-I${top_srcdir}/src \
 	-I${top_srcdir}/include
 
@@ -338,6 +349,7 @@ libdnsmasq_manager_la_CPPFLAGS = \
 
 libdnsmasq_manager_la_LIBADD = \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(GLIB_LIBS)
 
 all: all-am
diff --git a/src/dnsmasq-manager/nm-dnsmasq-manager.c b/src/dnsmasq-manager/nm-dnsmasq-manager.c
index ca2f9dc4..0b3b629f 100644
--- a/src/dnsmasq-manager/nm-dnsmasq-manager.c
+++ b/src/dnsmasq-manager/nm-dnsmasq-manager.c
@@ -15,7 +15,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Copyright (C) 2008 - 2010 Red Hat, Inc.
+ * Copyright (C) 2008 - 2012 Red Hat, Inc.
  */
 
 #include <config.h>
@@ -30,6 +30,7 @@
 #include "nm-dnsmasq-manager.h"
 #include "nm-logging.h"
 #include "nm-glib-compat.h"
+#include "nm-posix-signals.h"
 
 typedef struct {
 	char *iface;
@@ -356,6 +357,12 @@ dm_child_setup (gpointer user_data G_GNUC_UNUSED)
 	/* We are in the child process at this point */
 	pid_t pid = getpid ();
 	setpgid (pid, pid);
+
+	/*
+	 * We blocked signals in main(). We need to restore original signal
+	 * mask for dnsmasq here so that it can receive signals.
+	 */
+	nm_unblock_posix_signals (NULL);
 }
 
 static void
diff --git a/src/firewall-manager/Makefile.in b/src/firewall-manager/Makefile.in
index 821fa838..59ade87c 100644
--- a/src/firewall-manager/Makefile.in
+++ b/src/firewall-manager/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -168,6 +168,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -263,6 +267,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -301,6 +308,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/generated/Makefile.in b/src/generated/Makefile.in
index 85a346be..966a9638 100644
--- a/src/generated/Makefile.in
+++ b/src/generated/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -167,6 +167,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -262,6 +266,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -300,6 +307,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/generated/nm-enum-types.c b/src/generated/nm-enum-types.c
index a9973b4d..aa73b52e 100644
--- a/src/generated/nm-enum-types.c
+++ b/src/generated/nm-enum-types.c
@@ -5,29 +5,30 @@
 
 #include "nm-enum-types.h"
 
-#include "nm-device-vlan.h" 
+#include "nm-ip4-config.h" 
 #include "nm-device-olpc-mesh.h" 
 #include "nm-hostname-provider.h" 
 #include "nm-device.h" 
 #include "nm-rfkill.h" 
 #include "NetworkManagerUtils.h" 
+#include "nm-device-vlan.h" 
 #include "nm-device-factory.h" 
 #include "nm-active-connection.h" 
 #include "nm-wifi-ap.h" 
-#include "nm-device-ethernet.h" 
 #include "nm-device-bt.h" 
+#include "nm-device-private.h" 
 #include "nm-device-wifi.h" 
 #include "nm-dbus-manager.h" 
 #include "nm-dhcp4-config.h" 
 #include "nm-dhcp6-config.h" 
 #include "nm-netlink-compat.h" 
 #include "nm-session-monitor.h" 
-#include "nm-ip4-config.h" 
 #include "nm-device-bond.h" 
 #include "nm-wifi-ap-utils.h" 
-#include "nm-call-store.h" 
+#include "nm-device-adsl.h" 
 #include "nm-policy-hosts.h" 
 #include "nm-udev-manager.h" 
+#include "nm-connection-provider.h" 
 #include "nm-manager.h" 
 #include "nm-device-modem.h" 
 #include "nm-device-wired.h" 
@@ -37,7 +38,7 @@
 #include "nm-device-infiniband.h" 
 #include "nm-properties-changed-signal.h" 
 #include "nm-ip6-config.h" 
-#include "nm-device-private.h" 
+#include "nm-call-store.h" 
 #include "nm-policy.h" 
 #include "nm-manager-auth.h" 
 #include "nm-config.h" 
@@ -45,6 +46,7 @@
 #include "nm-netlink-monitor.h" 
 #include "nm-system.h" 
 #include "nm-connectivity.h" 
+#include "nm-device-ethernet.h" 
 #include "nm-logging.h" 
 #include "nm-dns-utils.h" 
 #include "nm-dns-plugin.h" 
@@ -56,9 +58,9 @@
 #include "nm-vpn-connection.h" 
 #include "nm-dhcp-dhcpcd.h" 
 #include "nm-dhcp-dhclient.h" 
+#include "nm-dhcp-manager.h" 
 #include "nm-dhcp-client.h" 
 #include "nm-dhcp-dhclient-utils.h" 
-#include "nm-dhcp-manager.h" 
 #include "nm-ip6-manager.h" 
 #include "nm-supplicant-types.h" 
 #include "nm-supplicant-config.h" 
@@ -97,20 +99,30 @@
 #include "nm-wimax-nsp.h"
 
 GType
-nm_vlan_error_get_type (void)
+nm_ip4_config_compare_flags_get_type (void)
 {
   static volatile gsize g_define_type_id__volatile = 0;
 
   if (g_once_init_enter (&g_define_type_id__volatile))
     {
       static const GEnumValue values[] = {
-        { NM_VLAN_ERROR_CONNECTION_NOT_VLAN, "NM_VLAN_ERROR_CONNECTION_NOT_VLAN", "ConnectionNotVlan" },
-        { NM_VLAN_ERROR_CONNECTION_INVALID, "NM_VLAN_ERROR_CONNECTION_INVALID", "ConnectionInvalid" },
-        { NM_VLAN_ERROR_CONNECTION_INCOMPATIBLE, "NM_VLAN_ERROR_CONNECTION_INCOMPATIBLE", "ConnectionIncompatible" },
+        { NM_IP4_COMPARE_FLAG_NONE, "NM_IP4_COMPARE_FLAG_NONE", "none" },
+        { NM_IP4_COMPARE_FLAG_ADDRESSES, "NM_IP4_COMPARE_FLAG_ADDRESSES", "addresses" },
+        { NM_IP4_COMPARE_FLAG_PTP_ADDRESS, "NM_IP4_COMPARE_FLAG_PTP_ADDRESS", "ptp-address" },
+        { NM_IP4_COMPARE_FLAG_NAMESERVERS, "NM_IP4_COMPARE_FLAG_NAMESERVERS", "nameservers" },
+        { NM_IP4_COMPARE_FLAG_ROUTES, "NM_IP4_COMPARE_FLAG_ROUTES", "routes" },
+        { NM_IP4_COMPARE_FLAG_DOMAINS, "NM_IP4_COMPARE_FLAG_DOMAINS", "domains" },
+        { NM_IP4_COMPARE_FLAG_SEARCHES, "NM_IP4_COMPARE_FLAG_SEARCHES", "searches" },
+        { NM_IP4_COMPARE_FLAG_MTU, "NM_IP4_COMPARE_FLAG_MTU", "mtu" },
+        { NM_IP4_COMPARE_FLAG_MSS, "NM_IP4_COMPARE_FLAG_MSS", "mss" },
+        { NM_IP4_COMPARE_FLAG_WINS_SERVERS, "NM_IP4_COMPARE_FLAG_WINS_SERVERS", "wins-servers" },
+        { NM_IP4_COMPARE_FLAG_NIS_SERVERS, "NM_IP4_COMPARE_FLAG_NIS_SERVERS", "nis-servers" },
+        { NM_IP4_COMPARE_FLAG_NIS_DOMAIN, "NM_IP4_COMPARE_FLAG_NIS_DOMAIN", "nis-domain" },
+        { NM_IP4_COMPARE_FLAG_ALL, "NM_IP4_COMPARE_FLAG_ALL", "all" },
         { 0, NULL, NULL }
       };
       GType g_define_type_id =
-        g_enum_register_static (g_intern_static_string ("NMVlanError"), values);
+        g_enum_register_static (g_intern_static_string ("NMIP4ConfigCompareFlags"), values);
       g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
     }
 
@@ -199,20 +211,20 @@ nm_rf_kill_type_get_type (void)
   return g_define_type_id__volatile;
 }
 GType
-nm_ethernet_error_get_type (void)
+nm_vlan_error_get_type (void)
 {
   static volatile gsize g_define_type_id__volatile = 0;
 
   if (g_once_init_enter (&g_define_type_id__volatile))
     {
       static const GEnumValue values[] = {
-        { NM_ETHERNET_ERROR_CONNECTION_NOT_WIRED, "NM_ETHERNET_ERROR_CONNECTION_NOT_WIRED", "ConnectionNotWired" },
-        { NM_ETHERNET_ERROR_CONNECTION_INVALID, "NM_ETHERNET_ERROR_CONNECTION_INVALID", "ConnectionInvalid" },
-        { NM_ETHERNET_ERROR_CONNECTION_INCOMPATIBLE, "NM_ETHERNET_ERROR_CONNECTION_INCOMPATIBLE", "ConnectionIncompatible" },
+        { NM_VLAN_ERROR_CONNECTION_NOT_VLAN, "NM_VLAN_ERROR_CONNECTION_NOT_VLAN", "ConnectionNotVlan" },
+        { NM_VLAN_ERROR_CONNECTION_INVALID, "NM_VLAN_ERROR_CONNECTION_INVALID", "ConnectionInvalid" },
+        { NM_VLAN_ERROR_CONNECTION_INCOMPATIBLE, "NM_VLAN_ERROR_CONNECTION_INCOMPATIBLE", "ConnectionIncompatible" },
         { 0, NULL, NULL }
       };
       GType g_define_type_id =
-        g_enum_register_static (g_intern_static_string ("NMEthernetError"), values);
+        g_enum_register_static (g_intern_static_string ("NMVlanError"), values);
       g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
     }
 
@@ -250,6 +262,7 @@ nm_wifi_error_get_type (void)
         { NM_WIFI_ERROR_CONNECTION_INVALID, "NM_WIFI_ERROR_CONNECTION_INVALID", "ConnectionInvalid" },
         { NM_WIFI_ERROR_CONNECTION_INCOMPATIBLE, "NM_WIFI_ERROR_CONNECTION_INCOMPATIBLE", "ConnectionIncompatible" },
         { NM_WIFI_ERROR_ACCESS_POINT_NOT_FOUND, "NM_WIFI_ERROR_ACCESS_POINT_NOT_FOUND", "AccessPointNotFound" },
+        { NM_WIFI_ERROR_SCAN_NOT_ALLOWED, "NM_WIFI_ERROR_SCAN_NOT_ALLOWED", "ScanNotAllowed" },
         { 0, NULL, NULL }
       };
       GType g_define_type_id =
@@ -260,50 +273,40 @@ nm_wifi_error_get_type (void)
   return g_define_type_id__volatile;
 }
 GType
-nm_ip4_config_compare_flags_get_type (void)
+nm_bond_error_get_type (void)
 {
   static volatile gsize g_define_type_id__volatile = 0;
 
   if (g_once_init_enter (&g_define_type_id__volatile))
     {
       static const GEnumValue values[] = {
-        { NM_IP4_COMPARE_FLAG_NONE, "NM_IP4_COMPARE_FLAG_NONE", "none" },
-        { NM_IP4_COMPARE_FLAG_ADDRESSES, "NM_IP4_COMPARE_FLAG_ADDRESSES", "addresses" },
-        { NM_IP4_COMPARE_FLAG_PTP_ADDRESS, "NM_IP4_COMPARE_FLAG_PTP_ADDRESS", "ptp-address" },
-        { NM_IP4_COMPARE_FLAG_NAMESERVERS, "NM_IP4_COMPARE_FLAG_NAMESERVERS", "nameservers" },
-        { NM_IP4_COMPARE_FLAG_ROUTES, "NM_IP4_COMPARE_FLAG_ROUTES", "routes" },
-        { NM_IP4_COMPARE_FLAG_DOMAINS, "NM_IP4_COMPARE_FLAG_DOMAINS", "domains" },
-        { NM_IP4_COMPARE_FLAG_SEARCHES, "NM_IP4_COMPARE_FLAG_SEARCHES", "searches" },
-        { NM_IP4_COMPARE_FLAG_MTU, "NM_IP4_COMPARE_FLAG_MTU", "mtu" },
-        { NM_IP4_COMPARE_FLAG_MSS, "NM_IP4_COMPARE_FLAG_MSS", "mss" },
-        { NM_IP4_COMPARE_FLAG_WINS_SERVERS, "NM_IP4_COMPARE_FLAG_WINS_SERVERS", "wins-servers" },
-        { NM_IP4_COMPARE_FLAG_NIS_SERVERS, "NM_IP4_COMPARE_FLAG_NIS_SERVERS", "nis-servers" },
-        { NM_IP4_COMPARE_FLAG_NIS_DOMAIN, "NM_IP4_COMPARE_FLAG_NIS_DOMAIN", "nis-domain" },
-        { NM_IP4_COMPARE_FLAG_ALL, "NM_IP4_COMPARE_FLAG_ALL", "all" },
+        { NM_BOND_ERROR_CONNECTION_NOT_BOND, "NM_BOND_ERROR_CONNECTION_NOT_BOND", "ConnectionNotBond" },
+        { NM_BOND_ERROR_CONNECTION_INVALID, "NM_BOND_ERROR_CONNECTION_INVALID", "ConnectionInvalid" },
+        { NM_BOND_ERROR_CONNECTION_INCOMPATIBLE, "NM_BOND_ERROR_CONNECTION_INCOMPATIBLE", "ConnectionIncompatible" },
         { 0, NULL, NULL }
       };
       GType g_define_type_id =
-        g_enum_register_static (g_intern_static_string ("NMIP4ConfigCompareFlags"), values);
+        g_enum_register_static (g_intern_static_string ("NMBondError"), values);
       g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
     }
 
   return g_define_type_id__volatile;
 }
 GType
-nm_bond_error_get_type (void)
+nm_adsl_error_get_type (void)
 {
   static volatile gsize g_define_type_id__volatile = 0;
 
   if (g_once_init_enter (&g_define_type_id__volatile))
     {
       static const GEnumValue values[] = {
-        { NM_BOND_ERROR_CONNECTION_NOT_BOND, "NM_BOND_ERROR_CONNECTION_NOT_BOND", "ConnectionNotBond" },
-        { NM_BOND_ERROR_CONNECTION_INVALID, "NM_BOND_ERROR_CONNECTION_INVALID", "ConnectionInvalid" },
-        { NM_BOND_ERROR_CONNECTION_INCOMPATIBLE, "NM_BOND_ERROR_CONNECTION_INCOMPATIBLE", "ConnectionIncompatible" },
+        { NM_ADSL_ERROR_CONNECTION_NOT_ADSL, "NM_ADSL_ERROR_CONNECTION_NOT_ADSL", "not-adsl" },
+        { NM_ADSL_ERROR_CONNECTION_INVALID, "NM_ADSL_ERROR_CONNECTION_INVALID", "invalid" },
+        { NM_ADSL_ERROR_CONNECTION_INCOMPATIBLE, "NM_ADSL_ERROR_CONNECTION_INCOMPATIBLE", "incompatible" },
         { 0, NULL, NULL }
       };
       GType g_define_type_id =
-        g_enum_register_static (g_intern_static_string ("NMBondError"), values);
+        g_enum_register_static (g_intern_static_string ("NMAdslError"), values);
       g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
     }
 
@@ -512,6 +515,26 @@ nm_netlink_monitor_error_get_type (void)
   return g_define_type_id__volatile;
 }
 GType
+nm_ethernet_error_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+
+  if (g_once_init_enter (&g_define_type_id__volatile))
+    {
+      static const GEnumValue values[] = {
+        { NM_ETHERNET_ERROR_CONNECTION_NOT_WIRED, "NM_ETHERNET_ERROR_CONNECTION_NOT_WIRED", "ConnectionNotWired" },
+        { NM_ETHERNET_ERROR_CONNECTION_INVALID, "NM_ETHERNET_ERROR_CONNECTION_INVALID", "ConnectionInvalid" },
+        { NM_ETHERNET_ERROR_CONNECTION_INCOMPATIBLE, "NM_ETHERNET_ERROR_CONNECTION_INCOMPATIBLE", "ConnectionIncompatible" },
+        { 0, NULL, NULL }
+      };
+      GType g_define_type_id =
+        g_enum_register_static (g_intern_static_string ("NMEthernetError"), values);
+      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+    }
+
+  return g_define_type_id__volatile;
+}
+GType
 nm_logging_error_get_type (void)
 {
   static volatile gsize g_define_type_id__volatile = 0;
@@ -593,6 +616,25 @@ nm_vpn_manager_error_get_type (void)
   return g_define_type_id__volatile;
 }
 GType
+nm_dhcp_manager_error_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+
+  if (g_once_init_enter (&g_define_type_id__volatile))
+    {
+      static const GEnumValue values[] = {
+        { NM_DHCP_MANAGER_ERROR_BAD_CLIENT, "NM_DHCP_MANAGER_ERROR_BAD_CLIENT", "BadClient" },
+        { NM_DHCP_MANAGER_ERROR_INTERNAL, "NM_DHCP_MANAGER_ERROR_INTERNAL", "InternalError" },
+        { 0, NULL, NULL }
+      };
+      GType g_define_type_id =
+        g_enum_register_static (g_intern_static_string ("NMDHCPManagerError"), values);
+      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+    }
+
+  return g_define_type_id__volatile;
+}
+GType
 nm_dhcp_state_get_type (void)
 {
   static volatile gsize g_define_type_id__volatile = 0;
@@ -635,25 +677,6 @@ nm_dhcp_state_get_type (void)
   return g_define_type_id__volatile;
 }
 GType
-nm_dhcp_manager_error_get_type (void)
-{
-  static volatile gsize g_define_type_id__volatile = 0;
-
-  if (g_once_init_enter (&g_define_type_id__volatile))
-    {
-      static const GEnumValue values[] = {
-        { NM_DHCP_MANAGER_ERROR_BAD_CLIENT, "NM_DHCP_MANAGER_ERROR_BAD_CLIENT", "BadClient" },
-        { NM_DHCP_MANAGER_ERROR_INTERNAL, "NM_DHCP_MANAGER_ERROR_INTERNAL", "InternalError" },
-        { 0, NULL, NULL }
-      };
-      GType g_define_type_id =
-        g_enum_register_static (g_intern_static_string ("NMDHCPManagerError"), values);
-      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
-    }
-
-  return g_define_type_id__volatile;
-}
-GType
 nm_opt_type_get_type (void)
 {
   static volatile gsize g_define_type_id__volatile = 0;
diff --git a/src/generated/nm-enum-types.h b/src/generated/nm-enum-types.h
index 324dbf6a..608eaad6 100644
--- a/src/generated/nm-enum-types.h
+++ b/src/generated/nm-enum-types.h
@@ -9,8 +9,8 @@
 #include <glib-object.h>
 
 G_BEGIN_DECLS
-GType nm_vlan_error_get_type (void) G_GNUC_CONST;
-#define NM_TYPE_VLAN_ERROR (nm_vlan_error_get_type ())
+GType nm_ip4_config_compare_flags_get_type (void) G_GNUC_CONST;
+#define NM_TYPE_IP4_CONFIG_COMPARE_FLAGS (nm_ip4_config_compare_flags_get_type ())
 GType nm_olpc_mesh_error_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_OLPC_MESH_ERROR (nm_olpc_mesh_error_get_type ())
 GType nm_device_error_get_type (void) G_GNUC_CONST;
@@ -19,16 +19,16 @@ GType nm_rf_kill_state_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_RF_KILL_STATE (nm_rf_kill_state_get_type ())
 GType nm_rf_kill_type_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_RF_KILL_TYPE (nm_rf_kill_type_get_type ())
-GType nm_ethernet_error_get_type (void) G_GNUC_CONST;
-#define NM_TYPE_ETHERNET_ERROR (nm_ethernet_error_get_type ())
+GType nm_vlan_error_get_type (void) G_GNUC_CONST;
+#define NM_TYPE_VLAN_ERROR (nm_vlan_error_get_type ())
 GType nm_bt_error_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_BT_ERROR (nm_bt_error_get_type ())
 GType nm_wifi_error_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_WIFI_ERROR (nm_wifi_error_get_type ())
-GType nm_ip4_config_compare_flags_get_type (void) G_GNUC_CONST;
-#define NM_TYPE_IP4_CONFIG_COMPARE_FLAGS (nm_ip4_config_compare_flags_get_type ())
 GType nm_bond_error_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_BOND_ERROR (nm_bond_error_get_type ())
+GType nm_adsl_error_get_type (void) G_GNUC_CONST;
+#define NM_TYPE_ADSL_ERROR (nm_adsl_error_get_type ())
 GType nm_manager_error_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_MANAGER_ERROR (nm_manager_error_get_type ())
 GType nm_act_request_dependency_result_get_type (void) G_GNUC_CONST;
@@ -47,6 +47,8 @@ GType nm_nm_nl_prop_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_NM_NL_PROP (nm_nm_nl_prop_get_type ())
 GType nm_netlink_monitor_error_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_NETLINK_MONITOR_ERROR (nm_netlink_monitor_error_get_type ())
+GType nm_ethernet_error_get_type (void) G_GNUC_CONST;
+#define NM_TYPE_ETHERNET_ERROR (nm_ethernet_error_get_type ())
 GType nm_logging_error_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_LOGGING_ERROR (nm_logging_error_get_type ())
 GType nm_dns_manager_error_get_type (void) G_GNUC_CONST;
@@ -55,10 +57,10 @@ GType nm_dns_ip_config_type_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_DNS_IP_CONFIG_TYPE (nm_dns_ip_config_type_get_type ())
 GType nm_vpn_manager_error_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_VPN_MANAGER_ERROR (nm_vpn_manager_error_get_type ())
-GType nm_dhcp_state_get_type (void) G_GNUC_CONST;
-#define NM_TYPE_DHCP_STATE (nm_dhcp_state_get_type ())
 GType nm_dhcp_manager_error_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_DHCP_MANAGER_ERROR (nm_dhcp_manager_error_get_type ())
+GType nm_dhcp_state_get_type (void) G_GNUC_CONST;
+#define NM_TYPE_DHCP_STATE (nm_dhcp_state_get_type ())
 GType nm_opt_type_get_type (void) G_GNUC_CONST;
 #define NM_TYPE_OPT_TYPE (nm_opt_type_get_type ())
 GType nm_ppp_status_get_type (void) G_GNUC_CONST;
diff --git a/src/generated/nm-marshal.c b/src/generated/nm-marshal.c
index 4ba973af..e3d39724 100644
--- a/src/generated/nm-marshal.c
+++ b/src/generated/nm-marshal.c
@@ -5,7 +5,7 @@
 
 #ifdef G_ENABLE_DEBUG
 #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
-#define g_marshal_value_peek_char(v)     g_value_get_char (v)
+#define g_marshal_value_peek_char(v)     g_value_get_schar (v)
 #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
 #define g_marshal_value_peek_int(v)      g_value_get_int (v)
 #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
@@ -163,7 +163,44 @@ _nm_marshal_VOID__INT_UINT_BOOLEAN (GClosure     *closure,
             data2);
 }
 
-/* VOID:OBJECT,STRING (nm-marshal.list:4) */
+/* VOID:OBJECT,OBJECT (nm-marshal.list:4) */
+void
+_nm_marshal_VOID__OBJECT_OBJECT (GClosure     *closure,
+                                 GValue       *return_value G_GNUC_UNUSED,
+                                 guint         n_param_values,
+                                 const GValue *param_values,
+                                 gpointer      invocation_hint G_GNUC_UNUSED,
+                                 gpointer      marshal_data)
+{
+  typedef void (*GMarshalFunc_VOID__OBJECT_OBJECT) (gpointer     data1,
+                                                    gpointer     arg_1,
+                                                    gpointer     arg_2,
+                                                    gpointer     data2);
+  register GMarshalFunc_VOID__OBJECT_OBJECT callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+
+  g_return_if_fail (n_param_values == 3);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_VOID__OBJECT_OBJECT) (marshal_data ? marshal_data : cc->callback);
+
+  callback (data1,
+            g_marshal_value_peek_object (param_values + 1),
+            g_marshal_value_peek_object (param_values + 2),
+            data2);
+}
+
+/* VOID:OBJECT,STRING (nm-marshal.list:5) */
 void
 _nm_marshal_VOID__OBJECT_STRING (GClosure     *closure,
                                  GValue       *return_value G_GNUC_UNUSED,
@@ -200,25 +237,26 @@ _nm_marshal_VOID__OBJECT_STRING (GClosure     *closure,
             data2);
 }
 
-/* VOID:OBJECT,UINT,UINT (nm-marshal.list:5) */
+/* VOID:OBJECT,UINT,UINT,UINT (nm-marshal.list:6) */
 void
-_nm_marshal_VOID__OBJECT_UINT_UINT (GClosure     *closure,
-                                    GValue       *return_value G_GNUC_UNUSED,
-                                    guint         n_param_values,
-                                    const GValue *param_values,
-                                    gpointer      invocation_hint G_GNUC_UNUSED,
-                                    gpointer      marshal_data)
+_nm_marshal_VOID__OBJECT_UINT_UINT_UINT (GClosure     *closure,
+                                         GValue       *return_value G_GNUC_UNUSED,
+                                         guint         n_param_values,
+                                         const GValue *param_values,
+                                         gpointer      invocation_hint G_GNUC_UNUSED,
+                                         gpointer      marshal_data)
 {
-  typedef void (*GMarshalFunc_VOID__OBJECT_UINT_UINT) (gpointer     data1,
-                                                       gpointer     arg_1,
-                                                       guint        arg_2,
-                                                       guint        arg_3,
-                                                       gpointer     data2);
-  register GMarshalFunc_VOID__OBJECT_UINT_UINT callback;
+  typedef void (*GMarshalFunc_VOID__OBJECT_UINT_UINT_UINT) (gpointer     data1,
+                                                            gpointer     arg_1,
+                                                            guint        arg_2,
+                                                            guint        arg_3,
+                                                            guint        arg_4,
+                                                            gpointer     data2);
+  register GMarshalFunc_VOID__OBJECT_UINT_UINT_UINT callback;
   register GCClosure *cc = (GCClosure*) closure;
   register gpointer data1, data2;
 
-  g_return_if_fail (n_param_values == 4);
+  g_return_if_fail (n_param_values == 5);
 
   if (G_CCLOSURE_SWAP_DATA (closure))
     {
@@ -230,18 +268,19 @@ _nm_marshal_VOID__OBJECT_UINT_UINT (GClosure     *closure,
       data1 = g_value_peek_pointer (param_values + 0);
       data2 = closure->data;
     }
-  callback = (GMarshalFunc_VOID__OBJECT_UINT_UINT) (marshal_data ? marshal_data : cc->callback);
+  callback = (GMarshalFunc_VOID__OBJECT_UINT_UINT_UINT) (marshal_data ? marshal_data : cc->callback);
 
   callback (data1,
             g_marshal_value_peek_object (param_values + 1),
             g_marshal_value_peek_uint (param_values + 2),
             g_marshal_value_peek_uint (param_values + 3),
+            g_marshal_value_peek_uint (param_values + 4),
             data2);
 }
 
-/* VOID:POINTER (nm-marshal.list:6) */
+/* VOID:POINTER (nm-marshal.list:7) */
 
-/* VOID:POINTER,POINTER,POINTER,POINTER,INT (nm-marshal.list:7) */
+/* VOID:POINTER,POINTER,POINTER,POINTER,INT (nm-marshal.list:8) */
 void
 _nm_marshal_VOID__POINTER_POINTER_POINTER_POINTER_INT (GClosure     *closure,
                                                        GValue       *return_value G_GNUC_UNUSED,
@@ -284,7 +323,7 @@ _nm_marshal_VOID__POINTER_POINTER_POINTER_POINTER_INT (GClosure     *closure,
             data2);
 }
 
-/* VOID:POINTER,STRING (nm-marshal.list:8) */
+/* VOID:POINTER,STRING (nm-marshal.list:9) */
 void
 _nm_marshal_VOID__POINTER_STRING (GClosure     *closure,
                                   GValue       *return_value G_GNUC_UNUSED,
@@ -321,7 +360,50 @@ _nm_marshal_VOID__POINTER_STRING (GClosure     *closure,
             data2);
 }
 
-/* VOID:STRING,BOXED (nm-marshal.list:9) */
+/* VOID:POINTER,STRING,BOOLEAN,POINTER,POINTER (nm-marshal.list:10) */
+void
+_nm_marshal_VOID__POINTER_STRING_BOOLEAN_POINTER_POINTER (GClosure     *closure,
+                                                          GValue       *return_value G_GNUC_UNUSED,
+                                                          guint         n_param_values,
+                                                          const GValue *param_values,
+                                                          gpointer      invocation_hint G_GNUC_UNUSED,
+                                                          gpointer      marshal_data)
+{
+  typedef void (*GMarshalFunc_VOID__POINTER_STRING_BOOLEAN_POINTER_POINTER) (gpointer     data1,
+                                                                             gpointer     arg_1,
+                                                                             gpointer     arg_2,
+                                                                             gboolean     arg_3,
+                                                                             gpointer     arg_4,
+                                                                             gpointer     arg_5,
+                                                                             gpointer     data2);
+  register GMarshalFunc_VOID__POINTER_STRING_BOOLEAN_POINTER_POINTER callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+
+  g_return_if_fail (n_param_values == 6);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_VOID__POINTER_STRING_BOOLEAN_POINTER_POINTER) (marshal_data ? marshal_data : cc->callback);
+
+  callback (data1,
+            g_marshal_value_peek_pointer (param_values + 1),
+            g_marshal_value_peek_string (param_values + 2),
+            g_marshal_value_peek_boolean (param_values + 3),
+            g_marshal_value_peek_pointer (param_values + 4),
+            g_marshal_value_peek_pointer (param_values + 5),
+            data2);
+}
+
+/* VOID:STRING,BOXED (nm-marshal.list:11) */
 void
 _nm_marshal_VOID__STRING_BOXED (GClosure     *closure,
                                 GValue       *return_value G_GNUC_UNUSED,
@@ -358,7 +440,7 @@ _nm_marshal_VOID__STRING_BOXED (GClosure     *closure,
             data2);
 }
 
-/* VOID:STRING,BOXED,BOXED (nm-marshal.list:10) */
+/* VOID:STRING,BOXED,BOXED (nm-marshal.list:12) */
 void
 _nm_marshal_VOID__STRING_BOXED_BOXED (GClosure     *closure,
                                       GValue       *return_value G_GNUC_UNUSED,
@@ -397,7 +479,7 @@ _nm_marshal_VOID__STRING_BOXED_BOXED (GClosure     *closure,
             data2);
 }
 
-/* VOID:STRING,OBJECT (nm-marshal.list:11) */
+/* VOID:STRING,OBJECT (nm-marshal.list:13) */
 void
 _nm_marshal_VOID__STRING_OBJECT (GClosure     *closure,
                                  GValue       *return_value G_GNUC_UNUSED,
@@ -434,7 +516,7 @@ _nm_marshal_VOID__STRING_OBJECT (GClosure     *closure,
             data2);
 }
 
-/* VOID:STRING,OBJECT,POINTER (nm-marshal.list:12) */
+/* VOID:STRING,OBJECT,POINTER (nm-marshal.list:14) */
 void
 _nm_marshal_VOID__STRING_OBJECT_POINTER (GClosure     *closure,
                                          GValue       *return_value G_GNUC_UNUSED,
@@ -473,7 +555,7 @@ _nm_marshal_VOID__STRING_OBJECT_POINTER (GClosure     *closure,
             data2);
 }
 
-/* VOID:STRING,POINTER (nm-marshal.list:13) */
+/* VOID:STRING,POINTER (nm-marshal.list:15) */
 void
 _nm_marshal_VOID__STRING_POINTER (GClosure     *closure,
                                   GValue       *return_value G_GNUC_UNUSED,
@@ -510,7 +592,7 @@ _nm_marshal_VOID__STRING_POINTER (GClosure     *closure,
             data2);
 }
 
-/* VOID:STRING,STRING (nm-marshal.list:14) */
+/* VOID:STRING,STRING (nm-marshal.list:16) */
 void
 _nm_marshal_VOID__STRING_STRING (GClosure     *closure,
                                  GValue       *return_value G_GNUC_UNUSED,
@@ -547,7 +629,7 @@ _nm_marshal_VOID__STRING_STRING (GClosure     *closure,
             data2);
 }
 
-/* VOID:STRING,STRING,STRING (nm-marshal.list:15) */
+/* VOID:STRING,STRING,STRING (nm-marshal.list:17) */
 void
 _nm_marshal_VOID__STRING_STRING_STRING (GClosure     *closure,
                                         GValue       *return_value G_GNUC_UNUSED,
@@ -586,7 +668,7 @@ _nm_marshal_VOID__STRING_STRING_STRING (GClosure     *closure,
             data2);
 }
 
-/* VOID:STRING,STRING,STRING,UINT (nm-marshal.list:16) */
+/* VOID:STRING,STRING,STRING,UINT (nm-marshal.list:18) */
 void
 _nm_marshal_VOID__STRING_STRING_STRING_UINT (GClosure     *closure,
                                              GValue       *return_value G_GNUC_UNUSED,
@@ -627,7 +709,7 @@ _nm_marshal_VOID__STRING_STRING_STRING_UINT (GClosure     *closure,
             data2);
 }
 
-/* VOID:UINT,UINT (nm-marshal.list:17) */
+/* VOID:UINT,UINT (nm-marshal.list:19) */
 void
 _nm_marshal_VOID__UINT_UINT (GClosure     *closure,
                              GValue       *return_value G_GNUC_UNUSED,
@@ -664,7 +746,7 @@ _nm_marshal_VOID__UINT_UINT (GClosure     *closure,
             data2);
 }
 
-/* VOID:UINT,UINT,UINT (nm-marshal.list:18) */
+/* VOID:UINT,UINT,UINT (nm-marshal.list:20) */
 void
 _nm_marshal_VOID__UINT_UINT_UINT (GClosure     *closure,
                                   GValue       *return_value G_GNUC_UNUSED,
diff --git a/src/generated/nm-marshal.h b/src/generated/nm-marshal.h
index 9f9ea6ad..61ef6479 100644
--- a/src/generated/nm-marshal.h
+++ b/src/generated/nm-marshal.h
@@ -30,7 +30,15 @@ extern void _nm_marshal_VOID__INT_UINT_BOOLEAN (GClosure     *closure,
                                                 gpointer      invocation_hint,
                                                 gpointer      marshal_data);
 
-/* VOID:OBJECT,STRING (nm-marshal.list:4) */
+/* VOID:OBJECT,OBJECT (nm-marshal.list:4) */
+extern void _nm_marshal_VOID__OBJECT_OBJECT (GClosure     *closure,
+                                             GValue       *return_value,
+                                             guint         n_param_values,
+                                             const GValue *param_values,
+                                             gpointer      invocation_hint,
+                                             gpointer      marshal_data);
+
+/* VOID:OBJECT,STRING (nm-marshal.list:5) */
 extern void _nm_marshal_VOID__OBJECT_STRING (GClosure     *closure,
                                              GValue       *return_value,
                                              guint         n_param_values,
@@ -38,18 +46,18 @@ extern void _nm_marshal_VOID__OBJECT_STRING (GClosure     *closure,
                                              gpointer      invocation_hint,
                                              gpointer      marshal_data);
 
-/* VOID:OBJECT,UINT,UINT (nm-marshal.list:5) */
-extern void _nm_marshal_VOID__OBJECT_UINT_UINT (GClosure     *closure,
-                                                GValue       *return_value,
-                                                guint         n_param_values,
-                                                const GValue *param_values,
-                                                gpointer      invocation_hint,
-                                                gpointer      marshal_data);
+/* VOID:OBJECT,UINT,UINT,UINT (nm-marshal.list:6) */
+extern void _nm_marshal_VOID__OBJECT_UINT_UINT_UINT (GClosure     *closure,
+                                                     GValue       *return_value,
+                                                     guint         n_param_values,
+                                                     const GValue *param_values,
+                                                     gpointer      invocation_hint,
+                                                     gpointer      marshal_data);
 
-/* VOID:POINTER (nm-marshal.list:6) */
+/* VOID:POINTER (nm-marshal.list:7) */
 #define _nm_marshal_VOID__POINTER	g_cclosure_marshal_VOID__POINTER
 
-/* VOID:POINTER,POINTER,POINTER,POINTER,INT (nm-marshal.list:7) */
+/* VOID:POINTER,POINTER,POINTER,POINTER,INT (nm-marshal.list:8) */
 extern void _nm_marshal_VOID__POINTER_POINTER_POINTER_POINTER_INT (GClosure     *closure,
                                                                    GValue       *return_value,
                                                                    guint         n_param_values,
@@ -57,7 +65,7 @@ extern void _nm_marshal_VOID__POINTER_POINTER_POINTER_POINTER_INT (GClosure
                                                                    gpointer      invocation_hint,
                                                                    gpointer      marshal_data);
 
-/* VOID:POINTER,STRING (nm-marshal.list:8) */
+/* VOID:POINTER,STRING (nm-marshal.list:9) */
 extern void _nm_marshal_VOID__POINTER_STRING (GClosure     *closure,
                                               GValue       *return_value,
                                               guint         n_param_values,
@@ -65,7 +73,15 @@ extern void _nm_marshal_VOID__POINTER_STRING (GClosure     *closure,
                                               gpointer      invocation_hint,
                                               gpointer      marshal_data);
 
-/* VOID:STRING,BOXED (nm-marshal.list:9) */
+/* VOID:POINTER,STRING,BOOLEAN,POINTER,POINTER (nm-marshal.list:10) */
+extern void _nm_marshal_VOID__POINTER_STRING_BOOLEAN_POINTER_POINTER (GClosure     *closure,
+                                                                      GValue       *return_value,
+                                                                      guint         n_param_values,
+                                                                      const GValue *param_values,
+                                                                      gpointer      invocation_hint,
+                                                                      gpointer      marshal_data);
+
+/* VOID:STRING,BOXED (nm-marshal.list:11) */
 extern void _nm_marshal_VOID__STRING_BOXED (GClosure     *closure,
                                             GValue       *return_value,
                                             guint         n_param_values,
@@ -73,7 +89,7 @@ extern void _nm_marshal_VOID__STRING_BOXED (GClosure     *closure,
                                             gpointer      invocation_hint,
                                             gpointer      marshal_data);
 
-/* VOID:STRING,BOXED,BOXED (nm-marshal.list:10) */
+/* VOID:STRING,BOXED,BOXED (nm-marshal.list:12) */
 extern void _nm_marshal_VOID__STRING_BOXED_BOXED (GClosure     *closure,
                                                   GValue       *return_value,
                                                   guint         n_param_values,
@@ -81,7 +97,7 @@ extern void _nm_marshal_VOID__STRING_BOXED_BOXED (GClosure     *closure,
                                                   gpointer      invocation_hint,
                                                   gpointer      marshal_data);
 
-/* VOID:STRING,OBJECT (nm-marshal.list:11) */
+/* VOID:STRING,OBJECT (nm-marshal.list:13) */
 extern void _nm_marshal_VOID__STRING_OBJECT (GClosure     *closure,
                                              GValue       *return_value,
                                              guint         n_param_values,
@@ -89,7 +105,7 @@ extern void _nm_marshal_VOID__STRING_OBJECT (GClosure     *closure,
                                              gpointer      invocation_hint,
                                              gpointer      marshal_data);
 
-/* VOID:STRING,OBJECT,POINTER (nm-marshal.list:12) */
+/* VOID:STRING,OBJECT,POINTER (nm-marshal.list:14) */
 extern void _nm_marshal_VOID__STRING_OBJECT_POINTER (GClosure     *closure,
                                                      GValue       *return_value,
                                                      guint         n_param_values,
@@ -97,7 +113,7 @@ extern void _nm_marshal_VOID__STRING_OBJECT_POINTER (GClosure     *closure,
                                                      gpointer      invocation_hint,
                                                      gpointer      marshal_data);
 
-/* VOID:STRING,POINTER (nm-marshal.list:13) */
+/* VOID:STRING,POINTER (nm-marshal.list:15) */
 extern void _nm_marshal_VOID__STRING_POINTER (GClosure     *closure,
                                               GValue       *return_value,
                                               guint         n_param_values,
@@ -105,7 +121,7 @@ extern void _nm_marshal_VOID__STRING_POINTER (GClosure     *closure,
                                               gpointer      invocation_hint,
                                               gpointer      marshal_data);
 
-/* VOID:STRING,STRING (nm-marshal.list:14) */
+/* VOID:STRING,STRING (nm-marshal.list:16) */
 extern void _nm_marshal_VOID__STRING_STRING (GClosure     *closure,
                                              GValue       *return_value,
                                              guint         n_param_values,
@@ -113,7 +129,7 @@ extern void _nm_marshal_VOID__STRING_STRING (GClosure     *closure,
                                              gpointer      invocation_hint,
                                              gpointer      marshal_data);
 
-/* VOID:STRING,STRING,STRING (nm-marshal.list:15) */
+/* VOID:STRING,STRING,STRING (nm-marshal.list:17) */
 extern void _nm_marshal_VOID__STRING_STRING_STRING (GClosure     *closure,
                                                     GValue       *return_value,
                                                     guint         n_param_values,
@@ -121,7 +137,7 @@ extern void _nm_marshal_VOID__STRING_STRING_STRING (GClosure     *closure,
                                                     gpointer      invocation_hint,
                                                     gpointer      marshal_data);
 
-/* VOID:STRING,STRING,STRING,UINT (nm-marshal.list:16) */
+/* VOID:STRING,STRING,STRING,UINT (nm-marshal.list:18) */
 extern void _nm_marshal_VOID__STRING_STRING_STRING_UINT (GClosure     *closure,
                                                          GValue       *return_value,
                                                          guint         n_param_values,
@@ -129,7 +145,7 @@ extern void _nm_marshal_VOID__STRING_STRING_STRING_UINT (GClosure     *closure,
                                                          gpointer      invocation_hint,
                                                          gpointer      marshal_data);
 
-/* VOID:UINT,UINT (nm-marshal.list:17) */
+/* VOID:UINT,UINT (nm-marshal.list:19) */
 extern void _nm_marshal_VOID__UINT_UINT (GClosure     *closure,
                                          GValue       *return_value,
                                          guint         n_param_values,
@@ -137,7 +153,7 @@ extern void _nm_marshal_VOID__UINT_UINT (GClosure     *closure,
                                          gpointer      invocation_hint,
                                          gpointer      marshal_data);
 
-/* VOID:UINT,UINT,UINT (nm-marshal.list:18) */
+/* VOID:UINT,UINT,UINT (nm-marshal.list:20) */
 extern void _nm_marshal_VOID__UINT_UINT_UINT (GClosure     *closure,
                                               GValue       *return_value,
                                               guint         n_param_values,
diff --git a/src/ip6-manager/Makefile.in b/src/ip6-manager/Makefile.in
index 59c2e7b4..d0d3129b 100644
--- a/src/ip6-manager/Makefile.in
+++ b/src/ip6-manager/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -169,6 +169,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -264,6 +268,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -302,6 +309,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/ip6-manager/nm-ip6-manager.c b/src/ip6-manager/nm-ip6-manager.c
index 99f85ede..e452c18e 100644
--- a/src/ip6-manager/nm-ip6-manager.c
+++ b/src/ip6-manager/nm-ip6-manager.c
@@ -18,8 +18,12 @@
  * Copyright (C) 2009 - 2010 Red Hat, Inc.
  */
 
+#define _GNU_SOURCE /* for struct in6_pktinfo */
+
 #include <errno.h>
+#include <unistd.h>
 #include <netinet/icmp6.h>
+#include <netinet/in.h>
 
 #include <netlink/route/addr.h>
 #include <netlink/route/rtnl.h>
@@ -32,6 +36,7 @@
 #include "NetworkManagerUtils.h"
 #include "nm-marshal.h"
 #include "nm-logging.h"
+#include "nm-utils.h"
 
 /* Pre-DHCP addrconf timeout, in seconds */
 #define NM_IP6_TIMEOUT 20
@@ -89,6 +94,10 @@ typedef struct {
 	char *iface;
 	int ifindex;
 
+	gboolean has_linklocal;
+	gboolean has_nonlinklocal;
+	guint dhcp_opts;
+
 	char *disable_ip6_path;
 	gboolean disable_ip6_save_valid;
 	gint32 disable_ip6_save;
@@ -102,9 +111,13 @@ typedef struct {
 
 	GArray *rdnss_servers;
 	guint rdnss_timeout_id;
+	guint32 rdnss_timeout;
 
 	GArray *dnssl_domains;
 	guint dnssl_timeout_id;
+	guint32 dnssl_timeout;
+
+	time_t last_solicitation;
 
 	guint ip6flags_poll_id;
 
@@ -209,11 +222,221 @@ nm_ip6_manager_get_device (NMIP6Manager *manager, int ifindex)
 	return g_hash_table_lookup (priv->devices, GINT_TO_POINTER (ifindex));
 }
 
+static int
+get_hwaddr (int ifindex, guint8 *buf)
+{
+	struct rtnl_link *lk;
+	struct nl_addr *addr;
+	int len;
+
+	lk = nm_netlink_index_to_rtnl_link (ifindex);
+	if (!lk)
+		return -1;
+
+	addr = rtnl_link_get_addr (lk);
+	len = nl_addr_get_len (addr);
+	if (len > NM_UTILS_HWADDR_LEN_MAX)
+		len = -1;
+	else
+		memcpy (buf, nl_addr_get_binary_addr (addr), len);
+
+	rtnl_link_put (lk);
+	return len;
+}
+
+static void
+device_send_router_solicitation (NMIP6Device *device, const char *why)
+{
+	int sock, hops;
+	struct sockaddr_in6 sin6;
+	struct nd_router_solicit rs;
+	struct nd_opt_hdr lladdr_hdr;
+	guint8 hwaddr[NM_UTILS_HWADDR_LEN_MAX + 7];
+	int hwaddr_len;
+	static const guint8 local_routers_addr[] =
+		{ 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+		  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 };
+	struct msghdr mhdr;
+	struct iovec iov[3];
+	struct cmsghdr *cmsg;
+	struct in6_pktinfo *ipi;
+	guint8 cmsgbuf[128];
+	int cmsglen = 0;
+	time_t now;
+
+	now = time (NULL);
+	if (device->last_solicitation > now - 5)
+		return;
+	device->last_solicitation = now;
+
+	nm_log_dbg (LOGD_IP6, "(%s): %s: sending router solicitation",
+	            device->iface, why);
+
+	sock = socket (AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
+	if (sock < 0) {
+		nm_log_dbg (LOGD_IP6, "(%s): could not create ICMPv6 socket: %s",
+		            device->iface, g_strerror (errno));
+		return;
+	}
+
+	hops = 255;
+	if (   setsockopt (sock, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, &hops, sizeof (hops)) == -1
+	    || setsockopt (sock, IPPROTO_IPV6, IPV6_UNICAST_HOPS, &hops, sizeof (hops)) == -1) {
+		nm_log_dbg (LOGD_IP6, "(%s): could not set hop limit on ICMPv6 socket: %s",
+		            device->iface, g_strerror (errno));
+		close (sock);
+		return;
+	}
+
+	/* Use the "all link-local routers" multicast address */
+	memset (&sin6, 0, sizeof (sin6));
+	memcpy (&sin6.sin6_addr, local_routers_addr, sizeof (sin6.sin6_addr));
+	mhdr.msg_name = &sin6;
+	mhdr.msg_namelen = sizeof (sin6);
+
+	/* Build the router solicitation */
+	mhdr.msg_iov = iov;
+	memset (&rs, 0, sizeof (rs));
+	rs.nd_rs_type = ND_ROUTER_SOLICIT;
+	iov[0].iov_len  = sizeof (rs);
+	iov[0].iov_base = &rs;
+
+	memset (hwaddr, 0, sizeof (hwaddr));
+	hwaddr_len = get_hwaddr (device->ifindex, hwaddr);
+
+	if (hwaddr_len > 0) {
+		memset (&lladdr_hdr, 0, sizeof (lladdr_hdr));
+		lladdr_hdr.nd_opt_type = ND_OPT_SOURCE_LINKADDR;
+		lladdr_hdr.nd_opt_len = (sizeof (lladdr_hdr) + hwaddr_len + 7) % 8;
+		iov[1].iov_len  = sizeof (lladdr_hdr);
+		iov[1].iov_base = &lladdr_hdr;
+
+		iov[2].iov_len  = (lladdr_hdr.nd_opt_len * 8) - 2;
+		iov[2].iov_base = hwaddr;
+
+		mhdr.msg_iovlen = 3;
+	} else
+		mhdr.msg_iovlen = 1;
+
+	/* Force this to go on the right device */
+	memset (cmsgbuf, 0, sizeof (cmsgbuf));
+	cmsg = (struct cmsghdr *) cmsgbuf;
+	cmsglen = CMSG_SPACE (sizeof (*ipi));
+	cmsg->cmsg_len = CMSG_LEN (sizeof (*ipi));
+	cmsg->cmsg_level = SOL_IPV6;
+	cmsg->cmsg_type = IPV6_PKTINFO;
+	ipi = (struct in6_pktinfo *) CMSG_DATA (cmsg);
+	ipi->ipi6_ifindex = device->ifindex;
+
+	mhdr.msg_control = cmsg;
+	mhdr.msg_controllen = cmsglen;
+
+	if (sendmsg (sock, &mhdr, 0) == -1) {
+		nm_log_dbg (LOGD_IP6, "(%s): could not send router solicitation: %s",
+		            device->iface, g_strerror (errno));
+	}
+
+	close (sock);
+}
+
+static char *
+device_get_iface (NMIP6Device *device)
+{
+	return device ? device->iface : "unknown";
+}
+
+static const char *
+state_to_string (NMIP6DeviceState state)
+{
+	switch (state) {
+	case NM_IP6_DEVICE_UNCONFIGURED:
+		return "unconfigured";
+	case NM_IP6_DEVICE_GOT_LINK_LOCAL:
+		return "got-link-local";
+	case NM_IP6_DEVICE_GOT_ROUTER_ADVERTISEMENT:
+		return "got-ra";
+	case NM_IP6_DEVICE_GOT_ADDRESS:
+		return "got-address";
+	case NM_IP6_DEVICE_TIMED_OUT:
+		return "timed-out";
+	default:
+		return "unknown";
+	}
+}
+
+static gboolean
+device_set_state (NMIP6Device *device, NMIP6DeviceState state)
+{
+	NMIP6DeviceState old_state;
+
+	g_return_val_if_fail (device != NULL, FALSE);
+
+	if (state == device->state)
+		return FALSE;
+
+	old_state = device->state;
+	device->state = state;
+	nm_log_dbg (LOGD_IP6, "(%s) IP6 device state: %s -> %s",
+	            device_get_iface (device),
+	            state_to_string (old_state),
+	            state_to_string (state));
+	return TRUE;
+}
+
+static char *
+ra_flags_to_string (guint32 ra_flags)
+{
+	GString *s = g_string_sized_new (20);
+
+	g_string_append (s, " (");
+	if (ra_flags & IF_RS_SENT)
+		g_string_append_c (s, 'S');
+
+	if (ra_flags & IF_RA_RCVD)
+		g_string_append_c (s, 'R');
+
+	if (ra_flags & IF_RA_MANAGED)
+		g_string_append_c (s, 'M');
+
+	if (ra_flags & IF_RA_OTHERCONF)
+		g_string_append_c (s, 'O');
+
+	g_string_append_c (s, ')');
+	return g_string_free (s, FALSE);
+}
+
+static gboolean
+device_set_ra_flags (NMIP6Device *device, guint ra_flags)
+{
+	guint old_ra_flags;
+	gchar *ra_flags_str, *old_ra_flags_str;
+
+	g_return_val_if_fail (device != NULL, FALSE);
+
+	if (ra_flags == device->ra_flags)
+		return FALSE;
+
+	old_ra_flags = device->ra_flags;
+	device->ra_flags = ra_flags;
+
+	if (nm_logging_level_enabled (LOGL_DEBUG)) {
+		ra_flags_str = ra_flags_to_string (ra_flags);
+		old_ra_flags_str = ra_flags_to_string (old_ra_flags);
+		nm_log_dbg (LOGD_IP6, "(%s) IP6 device ra_flags: 0x%08x %s -> 0x%08x %s",
+		            device_get_iface (device),
+		            old_ra_flags, old_ra_flags_str,
+		            ra_flags, ra_flags_str);
+		g_free (ra_flags_str);
+		g_free (old_ra_flags_str);
+	}
+
+	return TRUE;
+}
+
 /******************************************************************/
 
 typedef struct {
 	NMIP6Device *device;
-	guint dhcp_opts;
 	gboolean success;
 } CallbackInfo;
 
@@ -238,14 +461,14 @@ finish_addrconf (gpointer user_data)
 	/* And tell listeners that addrconf is complete */
 	if (info->success) {
 		g_signal_emit (manager, signals[ADDRCONF_COMPLETE], 0,
-		               ifindex, info->dhcp_opts, TRUE);
+		               ifindex, device->dhcp_opts, TRUE);
 	} else {
 		nm_log_info (LOGD_IP6, "(%s): IP6 addrconf timed out or failed.",
 		             device->iface);
 
 		nm_ip6_manager_cancel_addrconf (manager, ifindex);
 		g_signal_emit (manager, signals[ADDRCONF_COMPLETE], 0,
-		               ifindex, info->dhcp_opts, FALSE);
+		               ifindex, device->dhcp_opts, FALSE);
 	}
 
 	return FALSE;
@@ -261,7 +484,7 @@ emit_config_changed (gpointer user_data)
 	device->config_changed_id = 0;
 	g_signal_emit (manager, signals[CONFIG_CHANGED], 0,
 	               device->ifindex,
-	               info->dhcp_opts,
+	               device->dhcp_opts,
 	               info->success);
 	return FALSE;
 }
@@ -272,7 +495,7 @@ static gboolean
 rdnss_expired (gpointer user_data)
 {
 	NMIP6Device *device = user_data;
-	CallbackInfo info = { device, IP6_DHCP_OPT_NONE, FALSE };
+	CallbackInfo info = { device, FALSE };
 
 	nm_log_dbg (LOGD_IP6, "(%s): IPv6 RDNSS information expired", device->iface);
 
@@ -282,6 +505,22 @@ rdnss_expired (gpointer user_data)
 	return FALSE;
 }
 
+static gboolean
+rdnss_needs_refresh (gpointer user_data)
+{
+	NMIP6Device *device = user_data;
+	gchar *msg;
+
+	msg = g_strdup_printf ("IPv6 RDNSS due to expire in %d seconds",
+	                       device->rdnss_timeout);
+	device_send_router_solicitation (device, msg);
+	g_free (msg);
+
+	set_rdnss_timeout (device);
+
+	return FALSE;
+}
+
 static void
 set_rdnss_timeout (NMIP6Device *device)
 {
@@ -320,9 +559,23 @@ set_rdnss_timeout (NMIP6Device *device)
 	}
 
 	if (expires) {
-		device->rdnss_timeout_id = g_timeout_add_seconds (MIN (expires - now, G_MAXUINT32 - 1),
-		                                                  rdnss_expired,
-		                                                  device);
+		gchar *msg;
+
+		device->rdnss_timeout = MIN (expires - now, G_MAXUINT32 - 1);
+
+		if (device->rdnss_timeout <= 5) {
+			msg = g_strdup_printf ("IPv6 RDNSS about to expire in %d seconds",
+			                       device->rdnss_timeout);
+			device_send_router_solicitation (device, msg);
+			g_free (msg);
+			device->rdnss_timeout_id = g_timeout_add_seconds (device->rdnss_timeout,
+			                                                  rdnss_expired,
+			                                                  device);
+		} else {
+			device->rdnss_timeout_id = g_timeout_add_seconds (device->rdnss_timeout / 2,
+			                                                  rdnss_needs_refresh,
+			                                                  device);
+		}
 	}
 }
 
@@ -332,7 +585,7 @@ static gboolean
 dnssl_expired (gpointer user_data)
 {
 	NMIP6Device *device = user_data;
-	CallbackInfo info = { device, IP6_DHCP_OPT_NONE, FALSE };
+	CallbackInfo info = { device, FALSE };
 
 	nm_log_dbg (LOGD_IP6, "(%s): IPv6 DNSSL information expired", device->iface);
 
@@ -342,6 +595,22 @@ dnssl_expired (gpointer user_data)
 	return FALSE;
 }
 
+static gboolean
+dnssl_needs_refresh (gpointer user_data)
+{
+	NMIP6Device *device = user_data;
+	gchar *msg;
+
+	msg = g_strdup_printf ("IPv6 DNSSL due to expire in %d seconds",
+	                       device->dnssl_timeout);
+	device_send_router_solicitation (device, msg);
+	g_free (msg);
+
+	set_dnssl_timeout (device);
+
+	return FALSE;
+}
+
 static void
 set_dnssl_timeout (NMIP6Device *device)
 {
@@ -376,59 +645,49 @@ set_dnssl_timeout (NMIP6Device *device)
 	}
 
 	if (expires) {
-		device->dnssl_timeout_id = g_timeout_add_seconds (MIN (expires - now, G_MAXUINT32 - 1),
-		                                                  dnssl_expired,
-		                                                  device);
+		gchar *msg;
+
+		device->dnssl_timeout = MIN (expires - now, G_MAXUINT32 - 1);
+
+		if (device->dnssl_timeout <= 5) {
+			msg = g_strdup_printf ("IPv6 DNSSL about to expire in %d seconds",
+			                       device->dnssl_timeout);
+			device_send_router_solicitation (device, msg);
+			g_free (msg);
+			device->dnssl_timeout_id = g_timeout_add_seconds (device->dnssl_timeout,
+			                                                  dnssl_expired,
+			                                                  device);
+		} else {
+			device->dnssl_timeout_id = g_timeout_add_seconds (device->dnssl_timeout / 2,
+			                                                  dnssl_needs_refresh,
+			                                                  device);
+		}
 	}
 }
 
 static CallbackInfo *
-callback_info_new (NMIP6Device *device, guint dhcp_opts, gboolean success)
+callback_info_new (NMIP6Device *device, gboolean success)
 {
 	CallbackInfo *info;
 
 	info = g_malloc0 (sizeof (CallbackInfo));
 	info->device = device;
-	info->dhcp_opts = dhcp_opts;
 	info->success = success;
 	return info;
 }
 
-static const char *
-state_to_string (NMIP6DeviceState state)
-{
-	switch (state) {
-	case NM_IP6_DEVICE_UNCONFIGURED:
-		return "unconfigured";
-	case NM_IP6_DEVICE_GOT_LINK_LOCAL:
-		return "got-link-local";
-	case NM_IP6_DEVICE_GOT_ROUTER_ADVERTISEMENT:
-		return "got-ra";
-	case NM_IP6_DEVICE_GOT_ADDRESS:
-		return "got-address";
-	case NM_IP6_DEVICE_TIMED_OUT:
-		return "timed-out";
-	default:
-		return "unknown";
-	}
-}
-
 static void
-nm_ip6_device_sync_from_netlink (NMIP6Device *device, gboolean config_changed)
+check_addresses (NMIP6Device *device)
 {
 	NMIP6Manager *manager = device->manager;
 	NMIP6ManagerPrivate *priv = NM_IP6_MANAGER_GET_PRIVATE (manager);
 	struct rtnl_addr *rtnladdr;
 	struct nl_addr *nladdr;
 	struct in6_addr *addr;
-	CallbackInfo *info;
-	guint dhcp_opts = IP6_DHCP_OPT_NONE;
-	gboolean found_linklocal = FALSE, found_other = FALSE;
 
-	nm_log_dbg (LOGD_IP6, "(%s): syncing with netlink (ra_flags 0x%X) (state/target '%s'/'%s')",
-	            device->iface, device->ra_flags,
-	            state_to_string (device->state),
-	            state_to_string (device->target_state));
+	/* Reset address information */
+	device->has_linklocal = FALSE;
+	device->has_nonlinklocal = FALSE;
 
 	/* Look for any IPv6 addresses the kernel may have set for the device */
 	for (rtnladdr = (struct rtnl_addr *) nl_cache_get_first (priv->addr_cache);
@@ -453,12 +712,12 @@ nm_ip6_device_sync_from_netlink (NMIP6Device *device, gboolean config_changed)
 
 		if (IN6_IS_ADDR_LINKLOCAL (addr)) {
 			if (device->state == NM_IP6_DEVICE_UNCONFIGURED)
-				device->state = NM_IP6_DEVICE_GOT_LINK_LOCAL;
-			found_linklocal = TRUE;
+				device_set_state (device, NM_IP6_DEVICE_GOT_LINK_LOCAL);
+			device->has_linklocal = TRUE;
 		} else {
 			if (device->state < NM_IP6_DEVICE_GOT_ADDRESS)
-				device->state = NM_IP6_DEVICE_GOT_ADDRESS;
-			found_other = TRUE;
+				device_set_state (device, NM_IP6_DEVICE_GOT_ADDRESS);
+			device->has_nonlinklocal = TRUE;
 		}
 	}
 
@@ -466,27 +725,41 @@ nm_ip6_device_sync_from_netlink (NMIP6Device *device, gboolean config_changed)
 	 * before in the initial run, but if it goes away later, make sure we
 	 * regress from GOT_LINK_LOCAL back to UNCONFIGURED.
 	 */
-	if ((device->state == NM_IP6_DEVICE_GOT_LINK_LOCAL) && !found_linklocal)
-		device->state = NM_IP6_DEVICE_UNCONFIGURED;
+	if ((device->state == NM_IP6_DEVICE_GOT_LINK_LOCAL) && !device->has_linklocal)
+		device_set_state (device, NM_IP6_DEVICE_UNCONFIGURED);
 
-	nm_log_dbg (LOGD_IP6, "(%s): addresses synced (state %s)",
-	            device->iface, state_to_string (device->state));
+	nm_log_dbg (LOGD_IP6, "(%s): addresses checked (state %s)",
+		    device->iface, state_to_string (device->state));
+}
+
+static void
+check_ra_flags (NMIP6Device *device)
+{
+	device->dhcp_opts = IP6_DHCP_OPT_NONE;
 
 	/* We only care about router advertisements if we want a real IPv6 address */
 	if (   (device->target_state == NM_IP6_DEVICE_GOT_ADDRESS)
 	    && (device->ra_flags & IF_RA_RCVD)) {
 
 		if (device->state < NM_IP6_DEVICE_GOT_ROUTER_ADVERTISEMENT)
-			device->state = NM_IP6_DEVICE_GOT_ROUTER_ADVERTISEMENT;
+			device_set_state (device, NM_IP6_DEVICE_GOT_ROUTER_ADVERTISEMENT);
 
 		if (device->ra_flags & IF_RA_MANAGED) {
-			dhcp_opts = IP6_DHCP_OPT_MANAGED;
+			device->dhcp_opts = IP6_DHCP_OPT_MANAGED;
 			nm_log_dbg (LOGD_IP6, "router advertisement deferred to DHCPv6");
 		} else if (device->ra_flags & IF_RA_OTHERCONF) {
-			dhcp_opts = IP6_DHCP_OPT_OTHERCONF;
+			device->dhcp_opts = IP6_DHCP_OPT_OTHERCONF;
 			nm_log_dbg (LOGD_IP6, "router advertisement requests parallel DHCPv6");
 		}
 	}
+	nm_log_dbg (LOGD_IP6, "(%s): router advertisement checked (state %s)",
+		    device->iface, state_to_string (device->state));
+}
+
+static void
+check_addrconf_complete (NMIP6Device *device)
+{
+	CallbackInfo *info;
 
 	if (!device->addrconf_complete) {
 		/* Managed mode (ie DHCP only) short-circuits automatic addrconf, so
@@ -494,7 +767,7 @@ nm_ip6_device_sync_from_netlink (NMIP6Device *device, gboolean config_changed)
 		 * when the RA requests managed mode.
 		 */
 		if (   (device->state >= device->target_state)
-		    || (dhcp_opts == IP6_DHCP_OPT_MANAGED)) {
+		    || (device->dhcp_opts == IP6_DHCP_OPT_MANAGED)) {
 			/* device->finish_addrconf_id may currently be a timeout
 			 * rather than an idle, so we remove the existing source.
 			 */
@@ -503,15 +776,15 @@ nm_ip6_device_sync_from_netlink (NMIP6Device *device, gboolean config_changed)
 
 			nm_log_dbg (LOGD_IP6, "(%s): reached target state or Managed-mode requested (state '%s') (dhcp opts 0x%X)",
 			            device->iface, state_to_string (device->state),
-			            dhcp_opts);
+			            device->dhcp_opts);
 
-			info = callback_info_new (device, dhcp_opts, TRUE);
+			info = callback_info_new (device, TRUE);
 			device->finish_addrconf_id = g_idle_add_full (G_PRIORITY_DEFAULT_IDLE,
 			                                              finish_addrconf,
 			                                              info,
 			                                              (GDestroyNotify) g_free);
 		}
-	} else if (config_changed) {
+	} else {
 		if (!device->config_changed_id) {
 			gboolean success = TRUE;
 
@@ -520,19 +793,35 @@ nm_ip6_device_sync_from_netlink (NMIP6Device *device, gboolean config_changed)
 			 */
 			if (   (device->state == NM_IP6_DEVICE_GOT_ADDRESS)
 			    && (device->target_state == NM_IP6_DEVICE_GOT_ADDRESS)
-			    && !found_other) {
-				nm_log_dbg (LOGD_IP6, "(%s): RA-provided address no longer valid",
+			    && !device->has_nonlinklocal) {
+				nm_log_dbg (LOGD_IP6, "(%s): RA-provided address no longer found",
 				            device->iface);
 				success = FALSE;
 			}
 
-			info = callback_info_new (device, dhcp_opts, success);
+			info = callback_info_new (device, success);
 			device->config_changed_id = g_idle_add_full (G_PRIORITY_DEFAULT_IDLE,
 			                                             emit_config_changed,
 			                                             info,
 			                                             (GDestroyNotify) g_free);
 		}
 	}
+
+	nm_log_dbg (LOGD_IP6, "(%s): dhcp_opts checked (state %s)",
+		    device->iface, state_to_string (device->state));
+}
+
+static void
+nm_ip6_device_sync_from_netlink (NMIP6Device *device)
+{
+	nm_log_dbg (LOGD_IP6, "(%s): syncing with netlink (ra_flags 0x%X) (state/target '%s'/'%s')",
+	            device->iface, device->ra_flags,
+	            state_to_string (device->state),
+	            state_to_string (device->target_state));
+
+	check_addresses (device);
+	check_ra_flags (device);
+	check_addrconf_complete (device);
 }
 
 static void
@@ -544,16 +833,51 @@ ref_object (struct nl_object *obj, void *data)
 	*out = obj;
 }
 
+static void
+dump_address_change (NMIP6Device *device, struct nlmsghdr *hdr, struct rtnl_addr *rtnladdr)
+{
+	char *event;
+	struct nl_addr *addr;
+	char addr_str[40] = "none";
+
+	event = hdr->nlmsg_type == RTM_NEWADDR ? "new" : "lost";
+	addr = rtnl_addr_get_local (rtnladdr);
+	if (addr)
+		nl_addr2str (addr, addr_str, 40);
+
+	nm_log_dbg (LOGD_IP6, "(%s) %s address: %s", device_get_iface (device), event, addr_str);
+}
+
+static void
+dump_route_change (NMIP6Device *device, struct nlmsghdr *hdr, struct rtnl_route *rtnlroute)
+{
+	char *event;
+	struct nl_addr *dst;
+	char dst_str[40] = "none";
+	struct nl_addr *gateway;
+	char gateway_str[40] = "none";
+
+	event = hdr->nlmsg_type == RTM_NEWROUTE ? "new" : "lost";
+	dst = rtnl_route_get_dst (rtnlroute);
+	gateway = rtnl_route_get_gateway (rtnlroute);
+	if (dst)
+		nl_addr2str (dst, dst_str, 40);
+	if (gateway)
+		nl_addr2str (gateway, gateway_str, 40);
+
+	nm_log_dbg (LOGD_IP6, "(%s) %s route: %s via %s",device_get_iface (device), event, dst_str, gateway_str);
+}
+
 static NMIP6Device *
-process_addr (NMIP6Manager *manager, struct nl_msg *msg)
+process_address_change (NMIP6Manager *manager, struct nl_msg *msg)
 {
 	NMIP6ManagerPrivate *priv = NM_IP6_MANAGER_GET_PRIVATE (manager);
 	NMIP6Device *device;
+	struct nlmsghdr *hdr;
 	struct rtnl_addr *rtnladdr;
 	int old_size;
 
-	nm_log_dbg (LOGD_IP6, "processing netlink new/del address message");
-
+	hdr = nlmsg_hdr (msg);
 	rtnladdr = NULL;
 	nl_msg_parse (msg, ref_object, &rtnladdr);
 	if (!rtnladdr) {
@@ -562,39 +886,34 @@ process_addr (NMIP6Manager *manager, struct nl_msg *msg)
 	}
 
 	device = nm_ip6_manager_get_device (manager, rtnl_addr_get_ifindex (rtnladdr));
-	if (!device) {
-		nm_log_dbg (LOGD_IP6, "ignoring message for unknown device");
-		rtnl_addr_put (rtnladdr);
-		return NULL;
-	}
 
 	old_size = nl_cache_nitems (priv->addr_cache);
 	nl_cache_include (priv->addr_cache, (struct nl_object *)rtnladdr, NULL, NULL);
-	rtnl_addr_put (rtnladdr);
 
 	/* The kernel will re-notify us of automatically-added addresses
 	 * every time it gets another router advertisement. We only want
 	 * to notify higher levels if we actually changed something.
 	 */
-	if (nl_cache_nitems (priv->addr_cache) == old_size) {
-		nm_log_dbg (LOGD_IP6, "(%s): address cache unchanged, ignoring message",
-		            device->iface);
+	nm_log_dbg (LOGD_IP6, "(%s): address cache size: %d -> %d:",
+		    device_get_iface (device), old_size, nl_cache_nitems (priv->addr_cache));
+	dump_address_change (device, hdr, rtnladdr);
+	rtnl_addr_put (rtnladdr);
+	if (nl_cache_nitems (priv->addr_cache) == old_size)
 		return NULL;
-	}
 
 	return device;
 }
 
 static NMIP6Device *
-process_route (NMIP6Manager *manager, struct nl_msg *msg)
+process_route_change (NMIP6Manager *manager, struct nl_msg *msg)
 {
 	NMIP6ManagerPrivate *priv = NM_IP6_MANAGER_GET_PRIVATE (manager);
 	NMIP6Device *device;
+	struct nlmsghdr *hdr;
 	struct rtnl_route *rtnlroute;
 	int old_size;
 
-	nm_log_dbg (LOGD_IP6, "processing netlink new/del route message");
-
+	hdr = nlmsg_hdr (msg);
 	rtnlroute = NULL;
 	nl_msg_parse (msg, ref_object, &rtnlroute);
 	if (!rtnlroute) {
@@ -603,53 +922,17 @@ process_route (NMIP6Manager *manager, struct nl_msg *msg)
 	}
 
 	device = nm_ip6_manager_get_device (manager, rtnl_route_get_oif (rtnlroute));
-	if (!device) {
-		nm_log_dbg (LOGD_IP6, "ignoring message for unknown device");
-		rtnl_route_put (rtnlroute);
-		return NULL;
-	}
 
 	old_size = nl_cache_nitems (priv->route_cache);
 	nl_cache_include (priv->route_cache, (struct nl_object *)rtnlroute, NULL, NULL);
-	rtnl_route_put (rtnlroute);
-
-	/* As above in process_addr */
-	if (nl_cache_nitems (priv->route_cache) == old_size) {
-		nm_log_dbg (LOGD_IP6, "(%s): route cache unchanged, ignoring message",
-		            device->iface);
-		return NULL;
-	}
 
-	return device;
-}
-
-static NMIP6Device *
-process_prefix (NMIP6Manager *manager, struct nl_msg *msg)
-{
-	struct prefixmsg *pmsg;
-	NMIP6Device *device;
-
-	/* We don't care about the prefix itself, but if we receive a
-	 * router advertisement telling us to use DHCP, we might not
-	 * get any RTM_NEWADDRs or RTM_NEWROUTEs, so this is our only
-	 * way to notice immediately that an RA was received.
-	 */
-
-	nm_log_dbg (LOGD_IP6, "processing netlink new prefix message");
-
-	if (!nlmsg_valid_hdr (nlmsg_hdr (msg), sizeof(*pmsg))) {
-		nm_log_dbg (LOGD_IP6, "ignoring invalid prefix message");
-		return NULL;
-	}
-
-	pmsg = (struct prefixmsg *) NLMSG_DATA (nlmsg_hdr (msg));
-	device = nm_ip6_manager_get_device (manager, pmsg->prefix_ifindex);
-
-	if (!device || device->addrconf_complete) {
-		nm_log_dbg (LOGD_IP6, "(%s): ignoring unknown or completed device",
-		            device ? device->iface : "(none)");
+	/* As above in process_address_change */
+	nm_log_dbg (LOGD_IP6, "(%s): route cache size: %d -> %d:",
+		    device_get_iface (device), old_size, nl_cache_nitems (priv->route_cache));
+	dump_route_change (device, hdr, rtnlroute);
+	rtnl_route_put (rtnlroute);
+	if (nl_cache_nitems (priv->route_cache) == old_size)
 		return NULL;
-	}
 
 	return device;
 }
@@ -705,7 +988,9 @@ process_nduseropt_rdnss (NMIP6Device *device, struct nd_opt_hdr *opt)
 	 */
 	server.expires = ntohl (rdnss_opt->nd_opt_rdnss_lifetime);
 	if (server.expires > 0)
-		server.expires += now + 10;
+		if (server.expires < 7200)
+			server.expires = 7200;
+		server.expires += now;
 
 	for (addr = (struct in6_addr *) (rdnss_opt + 1); opt_len >= 2; addr++, opt_len -= 2) {
 		char buf[INET6_ADDRSTRLEN + 1];
@@ -836,7 +1121,9 @@ process_nduseropt_dnssl (NMIP6Device *device, struct nd_opt_hdr *opt)
 	 */
 	domain.expires = ntohl (dnssl_opt->nd_opt_dnssl_lifetime);
 	if (domain.expires > 0)
-		domain.expires += now + 10;
+		if (domain.expires < 7200)
+			domain.expires = 7200;
+		domain.expires += now;
 
 	while (opt_len) {
 		const char *domain_str;
@@ -985,28 +1272,6 @@ static struct nla_policy link_prot_policy[IFLA_INET6_MAX + 1] = {
 	[IFLA_INET6_FLAGS]	= { .type = NLA_U32 },
 };
 
-static char *
-ra_flags_to_string (guint32 ra_flags)
-{
-	GString *s = g_string_sized_new (20);
-
-	g_string_append (s, " (");
-	if (ra_flags & IF_RS_SENT)
-		g_string_append_c (s, 'S');
-
-	if (ra_flags & IF_RA_RCVD)
-		g_string_append_c (s, 'R');
-
-	if (ra_flags & IF_RA_OTHERCONF)
-		g_string_append_c (s, 'O');
-
-	if (ra_flags & IF_RA_MANAGED)
-		g_string_append_c (s, 'M');
-
-	g_string_append_c (s, ')');
-	return g_string_free (s, FALSE);
-}
-
 static NMIP6Device *
 process_newlink (NMIP6Manager *manager, struct nl_msg *msg)
 {
@@ -1016,7 +1281,6 @@ process_newlink (NMIP6Manager *manager, struct nl_msg *msg)
 	struct nlattr *tb[IFLA_MAX + 1];
 	struct nlattr *pi[IFLA_INET6_MAX + 1];
 	int err;
-	char *flags_str = NULL;
 
 	/* FIXME: we have to do this manually for now since libnl doesn't yet
 	 * support the IFLA_PROTINFO attribute of NEWLINK messages.  When it does,
@@ -1059,13 +1323,7 @@ process_newlink (NMIP6Manager *manager, struct nl_msg *msg)
 		return NULL;
 	}
 
-	device->ra_flags = nla_get_u32 (pi[IFLA_INET6_FLAGS]);
-
-	if (nm_logging_level_enabled (LOGL_DEBUG))
-		flags_str = ra_flags_to_string (device->ra_flags);
-	nm_log_dbg (LOGD_IP6, "(%s): got IPv6 flags 0x%X%s",
-	            device->iface, device->ra_flags, flags_str ? flags_str : "");
-	g_free (flags_str);
+	device_set_ra_flags (device, nla_get_u32 (pi[IFLA_INET6_FLAGS]));
 
 	return device;
 }
@@ -1076,39 +1334,30 @@ netlink_notification (NMNetlinkMonitor *monitor, struct nl_msg *msg, gpointer us
 	NMIP6Manager *manager = (NMIP6Manager *) user_data;
 	NMIP6Device *device;
 	struct nlmsghdr *hdr;
-	gboolean config_changed = FALSE;
 
 	hdr = nlmsg_hdr (msg);
 	nm_log_dbg (LOGD_HW, "netlink event type %d", hdr->nlmsg_type);
 	switch (hdr->nlmsg_type) {
 	case RTM_NEWADDR:
 	case RTM_DELADDR:
-		device = process_addr (manager, msg);
-		config_changed = TRUE;
+		device = process_address_change (manager, msg);
 		break;
 	case RTM_NEWROUTE:
 	case RTM_DELROUTE:
-		device = process_route (manager, msg);
-		config_changed = TRUE;
-		break;
-	case RTM_NEWPREFIX:
-		device = process_prefix (manager, msg);
+		device = process_route_change (manager, msg);
 		break;
 	case RTM_NEWNDUSEROPT:
 		device = process_nduseropt (manager, msg);
-		config_changed = TRUE;
 		break;
 	case RTM_NEWLINK:
 		device = process_newlink (manager, msg);
-		config_changed = TRUE;
 		break;
 	default:
 		return;
 	}
 
 	if (device) {
-		nm_log_dbg (LOGD_IP6, "(%s): syncing device with netlink changes", device->iface);
-		nm_ip6_device_sync_from_netlink (device, config_changed);
+		nm_ip6_device_sync_from_netlink (device);
 	}
 }
 
@@ -1179,7 +1428,7 @@ nm_ip6_manager_begin_addrconf (NMIP6Manager *manager, int ifindex)
 	device->ra_flags = 0;
 
 	/* Set up a timeout on the transaction to kill it after the timeout */
-	info = callback_info_new (device, 0, FALSE);
+	info = callback_info_new (device, FALSE);
 	device->finish_addrconf_id = g_timeout_add_seconds_full (G_PRIORITY_DEFAULT,
 	                                                         NM_IP6_TIMEOUT,
 	                                                         finish_addrconf,
@@ -1204,7 +1453,7 @@ nm_ip6_manager_begin_addrconf (NMIP6Manager *manager, int ifindex)
 	 * device is already fully configured and schedule the
 	 * ADDRCONF_COMPLETE signal in that case.
 	 */
-	nm_ip6_device_sync_from_netlink (device, FALSE);
+	nm_ip6_device_sync_from_netlink (device);
 }
 
 void
@@ -1235,9 +1484,7 @@ nm_ip6_manager_get_ip6_config (NMIP6Manager *manager, int ifindex)
 	NMIP6Address *ip6addr;
 	struct rtnl_route *rtnlroute;
 	struct nl_addr *nldest, *nlgateway;
-	struct in6_addr *dest, *gateway;
-	gboolean defgw_set = FALSE;
-	struct in6_addr defgw;
+	const struct in6_addr *dest, *gateway;
 	uint32_t metric;
 	NMIP6Route *ip6route;
 	int i;
@@ -1287,11 +1534,9 @@ nm_ip6_manager_get_ip6_config (NMIP6Manager *manager, int ifindex)
 		gateway = nl_addr_get_binary_addr (nlgateway);
 
 		if (rtnl_route_get_dst_len (rtnlroute) == 0) {
-			/* Default gateway route; don't add to normal routes but to each address */
-			if (!defgw_set) {
-				memcpy (&defgw, gateway, sizeof (defgw));
-				defgw_set = TRUE;
-			}
+			/* Default gateway route; cache the router's address for later */
+			if (!nm_ip6_config_get_gateway (config))
+				nm_ip6_config_set_gateway (config, gateway);
 			continue;
 		}
 
@@ -1326,8 +1571,9 @@ nm_ip6_manager_get_ip6_config (NMIP6Manager *manager, int ifindex)
 		nm_ip6_address_set_prefix (ip6addr, rtnl_addr_get_prefixlen (rtnladdr));
 		nm_ip6_address_set_address (ip6addr, addr);
 		nm_ip6_config_take_address (config, ip6addr);
-		if (defgw_set)
-			nm_ip6_address_set_gateway (ip6addr, &defgw);
+		gateway = nm_ip6_config_get_gateway (config);
+		if (gateway)
+			nm_ip6_address_set_gateway (ip6addr, gateway);
 	}
 
 	/* Add DNS servers */
diff --git a/src/logging/Makefile.in b/src/logging/Makefile.in
index c73f71b4..45f84326 100644
--- a/src/logging/Makefile.in
+++ b/src/logging/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -165,6 +165,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -260,6 +264,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -298,6 +305,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/logging/nm-logging.c b/src/logging/nm-logging.c
index a2b0ebaf..f54adcdd 100644
--- a/src/logging/nm-logging.c
+++ b/src/logging/nm-logging.c
@@ -46,7 +46,7 @@ static guint32 log_domains = \
 	LOGD_DHCP4 | LOGD_DHCP6 | LOGD_PPP | LOGD_IP4 | LOGD_IP6 | LOGD_AUTOIP4 | \
 	LOGD_DNS | LOGD_VPN | LOGD_SHARING | LOGD_SUPPLICANT | LOGD_AGENTS | \
 	LOGD_SETTINGS | LOGD_SUSPEND | LOGD_CORE | LOGD_DEVICE | LOGD_OLPC_MESH | \
-	LOGD_WIMAX | LOGD_INFINIBAND | LOGD_FIREWALL;
+	LOGD_WIMAX | LOGD_INFINIBAND | LOGD_FIREWALL | LOGD_ADSL;
 
 typedef struct {
 	guint32 num;
@@ -89,6 +89,7 @@ static const LogDesc domain_descs[] = {
 	{ LOGD_WIMAX,     "WIMAX" },
 	{ LOGD_INFINIBAND,"INFINIBAND" },
 	{ LOGD_FIREWALL,  "FIREWALL" },
+	{ LOGD_ADSL,      "ADSL" },
 	{ 0, NULL }
 };
 
diff --git a/src/logging/nm-logging.h b/src/logging/nm-logging.h
index 7e27f311..b3595d18 100644
--- a/src/logging/nm-logging.h
+++ b/src/logging/nm-logging.h
@@ -54,6 +54,7 @@ enum {
 	LOGD_WIMAX      = 0x00800000,
 	LOGD_INFINIBAND = 0x01000000,
 	LOGD_FIREWALL   = 0x02000000,
+	LOGD_ADSL       = 0x04000000,
 };
 
 #define LOGD_DHCP (LOGD_DHCP4 | LOGD_DHCP6)
diff --git a/src/main.c b/src/main.c
index 4a21959f..e8ff2e4c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -29,6 +29,7 @@
 #include <errno.h>
 #include <stdlib.h>
 #include <signal.h>
+#include <pthread.h>
 #include <unistd.h>
 #include <fcntl.h>
 #include <sys/stat.h>
@@ -53,6 +54,7 @@
 #include "nm-logging.h"
 #include "nm-policy-hosts.h"
 #include "nm-config.h"
+#include "nm-posix-signals.h"
 
 #if !defined(NM_DIST_VERSION)
 # define NM_DIST_VERSION VERSION
@@ -66,101 +68,107 @@
  */
 static NMManager *manager = NULL;
 static GMainLoop *main_loop = NULL;
-static int quit_pipe[2] = { -1, -1 };
-
 static gboolean quit_early = FALSE;
+static sigset_t signal_set;
 
-static void
-nm_signal_handler (int signo)
+void *signal_handling_thread (void *arg);
+/*
+ * Thread function waiting for signals and processing them.
+ * Wait for signals in signal set. The semantics of sigwait() require that all
+ * threads (including the thread calling sigwait()) have the signal masked, for
+ * reliable operation. Otherwise, a signal that arrives while this thread is
+ * not blocked in sigwait() might be delivered to another thread.
+ */
+void *
+signal_handling_thread (void *arg)
 {
-	static int in_fatal = 0, x;
-
-	/* avoid loops */
-	if (in_fatal > 0)
-		return;
-	++in_fatal;
-
-	switch (signo) {
-	case SIGSEGV:
-	case SIGBUS:
-	case SIGILL:
-	case SIGABRT:
-		nm_log_warn (LOGD_CORE, "caught signal %d. Generating backtrace...", signo);
-		nm_logging_backtrace ();
-		exit (1);
-		break;
-	case SIGFPE:
-	case SIGPIPE:
-		/* let the fatal signals interrupt us */
-		--in_fatal;
-		nm_log_warn (LOGD_CORE, "caught signal %d, shutting down abnormally. Generating backtrace...", signo);
-		nm_logging_backtrace ();
-		x = write (quit_pipe[1], "X", 1);
-		break;
-	case SIGINT:
-	case SIGTERM:
-		/* let the fatal signals interrupt us */
-		--in_fatal;
-		nm_log_info (LOGD_CORE, "caught signal %d, shutting down normally.", signo);
-		quit_early = TRUE;
-		x = write (quit_pipe[1], "X", 1);
-		break;
-	case SIGHUP:
-		--in_fatal;
-		/* Reread config stuff like system config files, VPN service files, etc */
-		break;
-	case SIGUSR1:
-		--in_fatal;
-		/* Play with log levels or something */
-		break;
-	default:
-		signal (signo, nm_signal_handler);
-		break;
-	}
+	int signo;
+
+	while (1) {
+		sigwait (&signal_set, &signo);
+
+		switch (signo) {
+		case SIGSEGV:
+		case SIGBUS:
+		case SIGILL:
+		case SIGABRT:
+		case SIGQUIT:
+			nm_log_warn (LOGD_CORE, "caught signal %d. Generating backtrace...", signo);
+			nm_logging_backtrace ();
+			exit (1);
+			break;
+		case SIGFPE:
+		case SIGPIPE:
+			nm_log_warn (LOGD_CORE, "caught signal %d, shutting down abnormally. Generating backtrace...", signo);
+			nm_logging_backtrace ();
+			quit_early = TRUE; /* for quitting before entering the main loop */
+			g_main_loop_quit (main_loop);
+			break;
+		case SIGINT:
+		case SIGTERM:
+			nm_log_info (LOGD_CORE, "caught signal %d, shutting down normally.", signo);
+			quit_early = TRUE; /* for quitting before entering the main loop */
+			g_main_loop_quit (main_loop);
+			break;
+		case SIGHUP:
+			/* Reread config stuff like system config files, VPN service files, etc */
+			nm_log_info (LOGD_CORE, "caught signal %d, not supported yet.", signo);
+			break;
+		case SIGUSR1:
+			/* Play with log levels or something */
+			nm_log_info (LOGD_CORE, "caught signal %d, not supported yet.", signo);
+			break;
+		default:
+			nm_log_err (LOGD_CORE, "caught unexpected signal %d", signo);
+			break;
+		}
+    }
+    return NULL;
 }
 
+/*
+ * Mask the signals we are interested in and create a signal handling thread.
+ * Because all threads inherit the signal mask from their creator, all threads
+ * in the process will have the signals masked. That's why setup_signals() has
+ * to be called before creating other threads.
+ */
 static gboolean
-quit_watch (GIOChannel *src, GIOCondition condition, gpointer user_data)
-{
-
-	if (condition & G_IO_IN) {
-		nm_log_warn (LOGD_CORE, "quit request received, terminating...");
-		g_main_loop_quit (main_loop);
-	}
-
-	return FALSE;
-}
-
-static void
 setup_signals (void)
 {
-	struct sigaction action;
-	sigset_t mask;
-	GIOChannel *quit_channel;
+	pthread_t signal_thread_id;
+	sigset_t old_sig_mask;
+	int status;
+
+	sigemptyset (&signal_set);
+	sigaddset (&signal_set, SIGHUP);
+	sigaddset (&signal_set, SIGINT);
+	sigaddset (&signal_set, SIGQUIT);
+	sigaddset (&signal_set, SIGILL);
+	sigaddset (&signal_set, SIGABRT);
+	sigaddset (&signal_set, SIGFPE);
+	sigaddset (&signal_set, SIGBUS);
+	sigaddset (&signal_set, SIGSEGV);
+	sigaddset (&signal_set, SIGPIPE);
+	sigaddset (&signal_set, SIGTERM);
+	sigaddset (&signal_set, SIGUSR1);
+
+	/* Block all signals of interest. */
+	status = pthread_sigmask (SIG_BLOCK, &signal_set, &old_sig_mask);
+	if (status != 0) {
+		fprintf (stderr, _("Failed to set signal mask: %d"), status);
+		return FALSE;
+	}
+	/* Save original mask so that we could use it for child processes. */
+	nm_save_original_signal_mask (old_sig_mask);
 
-	/* Set up our quit pipe */
-	if (pipe (quit_pipe) < 0) {
-		fprintf (stderr, _("Failed to initialize SIGTERM pipe: %d"), errno);
-		exit (1);
+	/* Create the signal handling thread. */
+	status = pthread_create (&signal_thread_id, NULL, signal_handling_thread, NULL);
+	if (status != 0) {
+		fprintf (stderr, _("Failed to create signal handling thread: %d"), status);
+		return FALSE;
 	}
-	fcntl (quit_pipe[1], F_SETFL, O_NONBLOCK | fcntl (quit_pipe[1], F_GETFL));
-
-	quit_channel = g_io_channel_unix_new (quit_pipe[0]);
-	g_io_add_watch_full (quit_channel, G_PRIORITY_HIGH, G_IO_IN | G_IO_ERR, quit_watch, NULL, NULL);
-
-	sigemptyset (&mask);
-	action.sa_handler = nm_signal_handler;
-	action.sa_mask = mask;
-	action.sa_flags = 0;
-	sigaction (SIGTERM,  &action, NULL);
-	sigaction (SIGINT,  &action, NULL);
-	sigaction (SIGILL,  &action, NULL);
-	sigaction (SIGBUS,  &action, NULL);
-	sigaction (SIGFPE,  &action, NULL);
-	sigaction (SIGHUP,  &action, NULL);
-	sigaction (SIGSEGV, &action, NULL);
-	sigaction (SIGABRT, &action, NULL);
-	sigaction (SIGUSR1,  &action, NULL);
+
+	return TRUE;
 }
 
 static gboolean
@@ -380,7 +388,7 @@ main (int argc, char *argv[])
 		        "                                          [NONE,HW,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,\n"
 		        "                                           WIFI_SCAN,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,\n"
 		        "                                           AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,WIMAX,\n"
-		        "                                           INFINIBAND,FIREWALL]"),
+		        "                                           INFINIBAND,FIREWALL,ADSL]"),
 		        "HW,RFKILL,WIFI" },
 		{ "connectivity-uri", 0, 0, G_OPTION_ARG_STRING, &connectivity_uri, "A http(s) address to check internet connectivity" },
 		{ "connectivity-interval", 0, 0, G_OPTION_ARG_INT, &connectivity_interval, "the interval in seconds how often a connectivity check will be done" },
@@ -393,6 +401,10 @@ main (int argc, char *argv[])
 		exit (1);
 	}
 
+	/* Set up unix signal handling */
+	if (!setup_signals ())
+		exit (1);
+
 	/* Set locale to be able to use environment variables */
 	setlocale (LC_ALL, "");
 
@@ -529,14 +541,19 @@ main (int argc, char *argv[])
 	dbus_glib_global_set_disable_legacy_property_access ();
 #endif
 
-	setup_signals ();
-
 	nm_logging_start (become_daemon);
 
 	nm_log_info (LOGD_CORE, "NetworkManager (version " NM_DIST_VERSION ") is starting...");
 	success = FALSE;
 
 	nm_log_info (LOGD_CORE, "Read config file %s", nm_config_get_path (config));
+	nm_log_info (LOGD_CORE, "WEXT support is %s",
+#if HAVE_WEXT
+	             "enabled"
+#else
+	             "disabled"
+#endif
+	             );
 
 	main_loop = g_main_loop_new (NULL, FALSE);
 
diff --git a/src/modem-manager/Makefile.in b/src/modem-manager/Makefile.in
index 87afed0c..31209330 100644
--- a/src/modem-manager/Makefile.in
+++ b/src/modem-manager/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -171,6 +171,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -266,6 +270,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -304,6 +311,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/modem-manager/nm-modem.c b/src/modem-manager/nm-modem.c
index 91c0b06d..c9c9e9a4 100644
--- a/src/modem-manager/nm-modem.c
+++ b/src/modem-manager/nm-modem.c
@@ -591,7 +591,7 @@ real_deactivate (NMModem *self, NMDevice *device)
 	case MM_MODEM_IP_METHOD_STATIC:
 	case MM_MODEM_IP_METHOD_DHCP:
 		ifindex = nm_device_get_ip_ifindex (device);
-		if (ifindex >= 0) {
+		if (ifindex > 0) {
 			/* FIXME: use AF_UNSPEC here when we have IPv6 support */
 			nm_system_iface_flush_routes (ifindex, AF_INET);
 			nm_system_iface_flush_addresses (ifindex, AF_UNSPEC);
@@ -614,8 +614,9 @@ static void
 disconnect_done (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data)
 {
 	GError *error = NULL;
+	gboolean warn = GPOINTER_TO_UINT (user_data);
 
-	if (!dbus_g_proxy_end_call (proxy, call_id, &error, G_TYPE_INVALID)) {
+	if (!dbus_g_proxy_end_call (proxy, call_id, &error, G_TYPE_INVALID) && warn) {
 		nm_log_info (LOGD_MB, "disconnect failed: (%d) %s",
 		             error ? error->code : -1,
 		             error && error->message ? error->message : "(unknown)");
@@ -628,7 +629,7 @@ nm_modem_device_state_changed (NMModem *self,
                                NMDeviceState old_state,
                                NMDeviceStateReason reason)
 {
-	gboolean was_connected = FALSE;
+	gboolean was_connected = FALSE, warn = TRUE;
 	NMModemPrivate *priv;
 
 	g_return_if_fail (self != NULL);
@@ -658,10 +659,13 @@ nm_modem_device_state_changed (NMModem *self,
 		}
 
 		if (was_connected) {
+			/* Don't bother warning on FAILED since the modem is already gone */
+			if (new_state == NM_DEVICE_STATE_FAILED)
+				warn = FALSE;
 			dbus_g_proxy_begin_call (nm_modem_get_proxy (self, MM_DBUS_INTERFACE_MODEM),
 			                         "Disconnect",
 			                         disconnect_done,
-			                         self,
+			                         GUINT_TO_POINTER (warn),
 			                         NULL,
 			                         G_TYPE_INVALID);
 		}
diff --git a/src/nm-activation-request.c b/src/nm-activation-request.c
index 3fc7b538..1a3cb77a 100644
--- a/src/nm-activation-request.c
+++ b/src/nm-activation-request.c
@@ -36,6 +36,7 @@
 #include "nm-device.h"
 #include "nm-active-connection.h"
 #include "nm-settings-connection.h"
+#include "nm-posix-signals.h"
 
 
 G_DEFINE_TYPE (NMActRequest, nm_act_request, NM_TYPE_ACTIVE_CONNECTION)
@@ -129,6 +130,9 @@ nm_act_request_get_secrets (NMActRequest *self,
 	info->callback = callback;
 	info->callback_data = callback_data;
 
+	if (priv->user_requested)
+		flags |= NM_SETTINGS_GET_SECRETS_FLAG_USER_REQUESTED;
+
 	call_id = nm_settings_connection_get_secrets (NM_SETTINGS_CONNECTION (priv->connection),
 	                                              priv->user_requested,
 	                                              priv->user_uid,
@@ -261,6 +265,8 @@ share_child_setup (gpointer user_data G_GNUC_UNUSED)
 	/* We are in the child process at this point */
 	pid_t pid = getpid ();
 	setpgid (pid, pid);
+
+	nm_unblock_posix_signals (NULL);
 }
 
 void
diff --git a/src/nm-connection-provider.c b/src/nm-connection-provider.c
new file mode 100644
index 00000000..401f8dab
--- /dev/null
+++ b/src/nm-connection-provider.c
@@ -0,0 +1,112 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details:
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ */
+
+#include "nm-connection-provider.h"
+
+GSList *
+nm_connection_provider_get_best_connections (NMConnectionProvider *self,
+                                             guint max_requested,
+                                             const char *ctype1,
+                                             const char *ctype2,
+                                             NMConnectionFilterFunc func,
+                                             gpointer func_data)
+{
+	g_return_val_if_fail (NM_IS_CONNECTION_PROVIDER (self), NULL);
+
+	if (NM_CONNECTION_PROVIDER_GET_INTERFACE (self)->get_best_connections)
+		return NM_CONNECTION_PROVIDER_GET_INTERFACE (self)->get_best_connections (self, max_requested, ctype1, ctype2, func, func_data);
+	return NULL;
+}
+
+const GSList *
+nm_connection_provider_get_connections (NMConnectionProvider *self)
+{
+	g_return_val_if_fail (NM_IS_CONNECTION_PROVIDER (self), NULL);
+
+	if (NM_CONNECTION_PROVIDER_GET_INTERFACE (self)->get_connections)
+		return NM_CONNECTION_PROVIDER_GET_INTERFACE (self)->get_connections (self);
+	return NULL;
+}
+
+/*****************************************************************************/
+
+static void
+nm_connection_provider_init (gpointer g_iface)
+{
+	GType iface_type = G_TYPE_FROM_INTERFACE (g_iface);
+	static gboolean initialized = FALSE;
+
+	if (initialized)
+		return;
+	initialized = TRUE;
+
+	/* Signals */
+	g_signal_new (NM_CP_SIGNAL_CONNECTION_ADDED,
+	              iface_type,
+	              G_SIGNAL_RUN_FIRST,
+	              G_STRUCT_OFFSET (NMConnectionProvider, connection_added),
+	              NULL, NULL,
+	              g_cclosure_marshal_VOID__OBJECT,
+	              G_TYPE_NONE, 1, G_TYPE_OBJECT);
+
+	g_signal_new (NM_CP_SIGNAL_CONNECTION_UPDATED,
+	              iface_type,
+	              G_SIGNAL_RUN_FIRST,
+	              G_STRUCT_OFFSET (NMConnectionProvider, connection_updated),
+	              NULL, NULL,
+	              g_cclosure_marshal_VOID__OBJECT,
+	              G_TYPE_NONE, 1, G_TYPE_OBJECT);
+
+	g_signal_new (NM_CP_SIGNAL_CONNECTION_REMOVED,
+	              iface_type,
+	              G_SIGNAL_RUN_FIRST,
+	              G_STRUCT_OFFSET (NMConnectionProvider, connection_removed),
+	              NULL, NULL,
+	              g_cclosure_marshal_VOID__OBJECT,
+	              G_TYPE_NONE, 1, G_TYPE_OBJECT);
+
+	g_signal_new (NM_CP_SIGNAL_CONNECTIONS_LOADED,
+	              iface_type,
+	              G_SIGNAL_RUN_FIRST,
+	              G_STRUCT_OFFSET (NMConnectionProvider, connections_loaded),
+	              NULL, NULL,
+	              g_cclosure_marshal_VOID__VOID,
+	              G_TYPE_NONE, 0);
+}
+
+GType
+nm_connection_provider_get_type (void)
+{
+	static GType cp_type = 0;
+
+	if (!G_UNLIKELY (cp_type)) {
+		const GTypeInfo cp_info = {
+			sizeof (NMConnectionProvider), /* class_size */
+			nm_connection_provider_init,   /* base_init */
+			NULL,       /* base_finalize */
+			NULL,
+			NULL,       /* class_finalize */
+			NULL,       /* class_data */
+			0,
+			0,          /* n_preallocs */
+			NULL
+		};
+
+		cp_type = g_type_register_static (G_TYPE_INTERFACE, "NMConnectionProvider", &cp_info, 0);
+		g_type_interface_add_prerequisite (cp_type, G_TYPE_OBJECT);
+	}
+
+	return cp_type;
+}
diff --git a/src/nm-connection-provider.h b/src/nm-connection-provider.h
new file mode 100644
index 00000000..942651f7
--- /dev/null
+++ b/src/nm-connection-provider.h
@@ -0,0 +1,106 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details:
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ */
+
+#ifndef NM_CONNECTION_PROVIDER_H
+#define NM_CONNECTION_PROVIDER_H
+
+#include <glib-object.h>
+#include <nm-connection.h>
+
+#define NM_TYPE_CONNECTION_PROVIDER      (nm_connection_provider_get_type ())
+#define NM_CONNECTION_PROVIDER(obj)      (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_CONNECTION_PROVIDER, NMConnectionProvider))
+#define NM_IS_CONNECTION_PROVIDER(obj)   (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_CONNECTION_PROVIDER))
+#define NM_CONNECTION_PROVIDER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), NM_TYPE_CONNECTION_PROVIDER, NMConnectionProvider))
+
+typedef struct _NMConnectionProvider NMConnectionProvider;
+
+#define NM_CP_SIGNAL_CONNECTION_ADDED        "cp-connection-added"
+#define NM_CP_SIGNAL_CONNECTION_UPDATED      "cp-connection-updated"
+#define NM_CP_SIGNAL_CONNECTION_REMOVED      "cp-connection-removed"
+#define NM_CP_SIGNAL_CONNECTIONS_LOADED      "cp-connections-loaded"
+
+
+/**
+ * NMConnectionFilterFunc:
+ * @provider: The provider requesting the filtering
+ * @connection: the connection to be filtered
+ * @func_data: the caller-provided data pointer
+ *
+ * Returns: %TRUE to allow the connection, %FALSE to ignore it
+ */
+typedef gboolean (*NMConnectionFilterFunc) (NMConnectionProvider *provider,
+                                            NMConnection *connection,
+                                            gpointer func_data);
+
+
+struct _NMConnectionProvider {
+	GTypeInterface g_iface;
+
+	/* Methods */
+	GSList * (*get_best_connections) (NMConnectionProvider *self,
+	                                  guint max_requested,
+	                                  const char *ctype1,
+	                                  const char *ctype2,
+	                                  NMConnectionFilterFunc func,
+	                                  gpointer func_data);
+
+	const GSList * (*get_connections) (NMConnectionProvider *self);
+
+	/* Signals */
+	void (*connection_added)   (NMConnectionProvider *self, NMConnection *connection);
+
+	void (*connection_updated) (NMConnectionProvider *self, NMConnection *connection);
+
+	void (*connection_removed) (NMConnectionProvider *self, NMConnection *connection);
+
+	void (*connections_loaded) (NMConnectionProvider *self);
+};
+
+GType nm_connection_provider_get_type (void);
+
+/**
+ * nm_connection_provider_get_best_connections:
+ * @self: the #NMConnectionProvider
+ * @max_requested: if non-zero, the maximum number of connections to return
+ * @ctype1: an #NMSetting base type (eg NM_SETTING_WIRELESS_SETTING_NAME) to
+ *   filter connections against
+ * @ctype2: a second #NMSetting base type (eg NM_SETTING_WIRELESS_SETTING_NAME)
+ *   to filter connections against
+ * @func: caller-supplied function for filtering connections
+ * @func_data: caller-supplied data passed to @func
+ *
+ * Returns: a #GSList of #NMConnection objects in sorted order representing the
+ *   "best" or highest-priority connections filtered by @ctype1 and/or @ctype2,
+ *   and/or @func.  Caller is responsible for freeing the returned #GSList, but
+ *   the contained values do not need to be unreffed.
+ */
+GSList *nm_connection_provider_get_best_connections (NMConnectionProvider *self,
+                                                     guint max_requested,
+                                                     const char *ctype1,
+                                                     const char *ctype2,
+                                                     NMConnectionFilterFunc func,
+                                                     gpointer func_data);
+
+/**
+ * nm_connection_provider_get_connections:
+ * @self: the #NMConnectionProvider
+ *
+ * Returns: a #GSList of #NMConnection objects representing all known
+ *   connections.  Returned list is owned by the connection provider and must
+ *   not be freed.
+ */
+const GSList *nm_connection_provider_get_connections (NMConnectionProvider *self);
+
+#endif /* NM_CONNECTION_PROVIDER_H */
diff --git a/src/nm-device-adsl.c b/src/nm-device-adsl.c
new file mode 100644
index 00000000..e171b46e
--- /dev/null
+++ b/src/nm-device-adsl.c
@@ -0,0 +1,841 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager -- Network link manager
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Pantelis Koukousoulas <pktoss@gmail.com>
+ */
+
+#include <config.h>
+
+#include <sys/socket.h>
+#include <linux/atmdev.h>
+#include <linux/atmbr2684.h>
+
+#include <errno.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "nm-device-adsl.h"
+#include "nm-device-private.h"
+#include "nm-properties-changed-signal.h"
+#include "NetworkManagerUtils.h"
+#include "nm-logging.h"
+#include "nm-enum-types.h"
+#include "nm-system.h"
+#include "nm-netlink-monitor.h"
+
+#include "ppp-manager/nm-ppp-manager.h"
+#include "nm-setting-adsl.h"
+
+#include "nm-device-adsl-glue.h"
+
+G_DEFINE_TYPE (NMDeviceAdsl, nm_device_adsl, NM_TYPE_DEVICE)
+
+#define NM_DEVICE_ADSL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_ADSL, NMDeviceAdslPrivate))
+
+#define NM_ADSL_ERROR (nm_adsl_error_quark ())
+
+static GQuark
+nm_adsl_error_quark (void)
+{
+	static GQuark quark = 0;
+	if (!quark)
+		quark = g_quark_from_static_string ("nm-adsl-error");
+	return quark;
+}
+
+/**********************************************/
+
+typedef struct {
+	gboolean      disposed;
+	gboolean      carrier;
+	guint         carrier_poll_id;
+	int           atm_index;
+
+	/* Watch for 'nas' interfaces going away */
+	NMNetlinkMonitor *monitor;
+	guint             netlink_id;
+
+	/* PPP */
+	NMPPPManager *ppp_manager;
+
+	/* RFC 2684 bridging (PPPoE over ATM) */
+	int           brfd;
+	int           nas_ifindex;
+	char *        nas_ifname;
+} NMDeviceAdslPrivate;
+
+enum {
+	PROPERTIES_CHANGED,
+	LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = { 0 };
+
+enum {
+	PROP_0,
+	PROP_CARRIER,
+
+	LAST_PROP
+};
+
+/**************************************************************/
+
+static guint32
+real_get_generic_capabilities (NMDevice *dev)
+{
+	guint32 caps = NM_DEVICE_CAP_NM_SUPPORTED;
+	caps |= NM_DEVICE_CAP_CARRIER_DETECT;
+	return caps;
+}
+
+static gboolean
+real_can_interrupt_activation (NMDevice *dev)
+{
+	NMDeviceAdsl *self = NM_DEVICE_ADSL (dev);
+	gboolean interrupt = FALSE;
+
+	/* Devices that support carrier detect can interrupt activation
+	 * if the link becomes inactive.
+	 */
+	if (NM_DEVICE_ADSL_GET_PRIVATE (self)->carrier == FALSE)
+		interrupt = TRUE;
+
+	return interrupt;
+}
+
+static gboolean
+real_is_available (NMDevice *dev)
+{
+	NMDeviceAdsl *self = NM_DEVICE_ADSL (dev);
+
+	/* Can't do anything if there isn't a carrier */
+	if (!NM_DEVICE_ADSL_GET_PRIVATE (self)->carrier)
+		return FALSE;
+
+	return TRUE;
+}
+
+static gboolean
+real_check_connection_compatible (NMDevice *device,
+                                  NMConnection *connection,
+                                  GError **error)
+{
+	NMSettingAdsl *s_adsl;
+	const char *protocol;
+
+	if (!nm_connection_is_type (connection, NM_SETTING_ADSL_SETTING_NAME)) {
+		g_set_error (error,
+		             NM_ADSL_ERROR, NM_ADSL_ERROR_CONNECTION_NOT_ADSL,
+		             "The connection was not an ADSL connection.");
+		return FALSE;
+	}
+
+	s_adsl = nm_connection_get_setting_adsl (connection);
+	if (!s_adsl) {
+		g_set_error (error,
+		             NM_ADSL_ERROR, NM_ADSL_ERROR_CONNECTION_INVALID,
+		             "The connection was not a valid ADSL connection.");
+		return FALSE;
+	}
+
+	/* FIXME: we don't yet support IPoATM */
+	protocol = nm_setting_adsl_get_protocol (s_adsl);
+	if (g_strcmp0 (protocol, NM_SETTING_ADSL_PROTOCOL_IPOATM) == 0) {
+		g_set_error (error,
+		             NM_ADSL_ERROR, NM_ADSL_ERROR_CONNECTION_INVALID,
+		             "IPoATM connections are not yet supported.");
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+static gboolean
+real_complete_connection (NMDevice *device,
+                          NMConnection *connection,
+                          const char *specific_object,
+                          const GSList *existing_connections,
+                          GError **error)
+{
+	NMSettingAdsl *s_adsl;
+
+	/*
+	 * We can't telepathically figure out the username, so if
+	 * it wasn't given, we can't complete the connection.
+	 */
+	s_adsl = nm_connection_get_setting_adsl (connection);
+	if (s_adsl && !nm_setting_verify (NM_SETTING (s_adsl), NULL, error))
+		return FALSE;
+
+	nm_utils_complete_generic (connection,
+	                           NM_SETTING_ADSL_SETTING_NAME,
+	                           existing_connections,
+	                           _("ADSL connection %d"),
+	                           NULL,
+	                           FALSE); /* No IPv6 yet by default */
+
+
+	return TRUE;
+}
+
+static NMConnection *
+real_get_best_auto_connection (NMDevice *dev,
+                               GSList *connections,
+                               char **specific_object)
+{
+	GSList *iter;
+
+	for (iter = connections; iter; iter = g_slist_next (iter)) {
+		NMConnection *connection = NM_CONNECTION (iter->data);
+		NMSettingConnection *s_con;
+		NMSettingAdsl *s_adsl;
+
+		if (!nm_connection_is_type (connection, NM_SETTING_ADSL_SETTING_NAME))
+			continue;
+
+		s_adsl = nm_connection_get_setting_adsl (connection);
+		if (!s_adsl)
+			continue;
+
+		s_con = nm_connection_get_setting_connection (connection);
+		g_assert (s_con);
+		if (!nm_setting_connection_get_autoconnect (s_con))
+			continue;
+
+		return connection;
+	}
+	return NULL;
+}
+
+/**************************************************************/
+
+static void
+set_nas_iface (NMDeviceAdsl *self, int idx, const char *name)
+{
+	NMDeviceAdslPrivate *priv = NM_DEVICE_ADSL_GET_PRIVATE (self);
+
+	g_return_if_fail (name != NULL);
+
+	g_warn_if_fail (priv->nas_ifindex <= 0);
+	if (idx > 0)
+		priv->nas_ifindex = idx;
+	else
+		priv->nas_ifindex = nm_netlink_iface_to_index (name);
+	g_warn_if_fail (priv->nas_ifindex > 0);
+
+	g_warn_if_fail (priv->nas_ifname == NULL);
+	priv->nas_ifname = g_strdup (name);
+}
+
+static gboolean
+br2684_create_iface (NMDeviceAdsl *self, NMSettingAdsl *s_adsl)
+{
+	NMDeviceAdslPrivate *priv = NM_DEVICE_ADSL_GET_PRIVATE (self);
+	const char *iface = nm_device_get_iface (NM_DEVICE (self));
+	struct atm_newif_br2684 ni;
+	int err, fd;
+	gboolean success = FALSE;
+	guint num = 0;
+
+	g_return_val_if_fail (s_adsl != NULL, FALSE);
+
+	fd = socket (PF_ATMPVC, SOCK_DGRAM, ATM_AAL5);
+	if (fd < 0) {
+		nm_log_err (LOGD_ADSL, "(%s): failed to open ATM control socket (%d)",
+		            iface, errno);
+		return FALSE;
+	}
+
+	memset (&ni, 0, sizeof (ni));
+	ni.backend_num = ATM_BACKEND_BR2684;
+	ni.media = BR2684_MEDIA_ETHERNET;
+	ni.mtu = 1500;
+
+	/* Loop attempting to create an interface that doesn't exist yet.  The
+	 * kernel can create one for us automatically, but due to API issues it
+	 * cannot return that name to us.  Since we want to know the name right
+	 * away, just brute-force it.
+	 */
+	while (num < 10000) {
+		memset (&ni.ifname, 0, sizeof (ni.ifname));
+		snprintf (ni.ifname, sizeof (ni.ifname), "nas%d", num);
+
+		err = ioctl (fd, ATM_NEWBACKENDIF, &ni);
+		if (err == 0) {
+			set_nas_iface (self, -1, ni.ifname);
+			nm_log_info (LOGD_ADSL, "(%s): using NAS interface %s (%d)",
+			             iface, priv->nas_ifname, priv->nas_ifindex);
+			success = TRUE;
+			break;
+		} else if (errno == -EEXIST) {
+			/* Try again */
+			num++;
+		} else {
+			nm_log_warn (LOGD_ADSL, "(%s): failed to create br2684 interface (%d)",
+			             iface, errno);
+			break;
+		}
+	}
+
+	close (fd);
+	return success;
+}
+
+static gboolean
+br2684_assign_vcc (NMDeviceAdsl *self, NMSettingAdsl *s_adsl)
+{
+	NMDeviceAdslPrivate *priv = NM_DEVICE_ADSL_GET_PRIVATE (self);
+	const char *iface = nm_device_get_iface (NM_DEVICE (self));
+	struct sockaddr_atmpvc addr;
+	struct atm_backend_br2684 be;
+	struct atm_qos qos;
+	int err, bufsize = 8192;
+	const char *encapsulation;
+	gboolean is_llc;
+
+	g_return_val_if_fail (priv->brfd == -1, FALSE);
+	g_return_val_if_fail (priv->nas_ifname != NULL, FALSE);
+
+	priv->brfd = socket (PF_ATMPVC, SOCK_DGRAM, ATM_AAL5);
+	if (priv->brfd < 0) {
+		nm_log_err (LOGD_ADSL, "(%s): failed to open ATM control socket (%d)",
+		            iface, errno);
+		return FALSE;
+	}
+
+	err = setsockopt (priv->brfd, SOL_SOCKET, SO_SNDBUF, &bufsize, sizeof (bufsize));
+	if (err != 0) {
+		nm_log_err (LOGD_ADSL, "(%s): failed to set SNDBUF option (%d)",
+		            iface, errno);
+		goto error;
+	}
+
+	/* QoS */
+	memset (&qos, 0, sizeof (qos));
+	qos.aal = ATM_AAL5;
+	qos.txtp.traffic_class = ATM_UBR;
+	qos.txtp.max_sdu = 1524;
+	qos.txtp.pcr = ATM_MAX_PCR;
+	qos.rxtp = qos.txtp;
+
+	err = setsockopt (priv->brfd, SOL_ATM, SO_ATMQOS, &qos, sizeof (qos));
+	if (err != 0) {
+		nm_log_err (LOGD_ADSL, "(%s): failed to set QoS (%d)",
+		            iface, errno);
+		goto error;
+	}
+
+	encapsulation = nm_setting_adsl_get_encapsulation (s_adsl);
+
+	/* VPI/VCI */
+	memset (&addr, 0, sizeof (addr));
+	addr.sap_family = AF_ATMPVC;
+	addr.sap_addr.itf = priv->atm_index;
+	addr.sap_addr.vpi = (guint16) nm_setting_adsl_get_vpi (s_adsl);
+	addr.sap_addr.vci = (int) nm_setting_adsl_get_vci (s_adsl);
+
+	nm_log_dbg (LOGD_ADSL, "(%s): assigning address %d.%d.%d encapsulation %s",
+	            nm_device_get_iface (NM_DEVICE (self)),
+	            priv->atm_index, addr.sap_addr.vpi, addr.sap_addr.vci,
+	            encapsulation);
+
+	err = connect (priv->brfd, (struct sockaddr*) &addr, sizeof (addr));
+	if (err != 0) {
+		nm_log_err (LOGD_ADSL, "(%s): failed to set VPI/VCI (%d)",
+		            iface, errno);
+		goto error;
+	}
+
+	/* And last attach the VCC to the interface */
+	is_llc = (g_strcmp0 (encapsulation, "llc") == 0);
+
+	memset (&be, 0, sizeof (be));
+	be.backend_num = ATM_BACKEND_BR2684;
+	be.ifspec.method = BR2684_FIND_BYIFNAME;
+	strcpy (be.ifspec.spec.ifname, priv->nas_ifname);
+	be.fcs_in = BR2684_FCSIN_NO;
+	be.fcs_out = BR2684_FCSOUT_NO;
+	be.encaps = is_llc ? BR2684_ENCAPS_LLC : BR2684_ENCAPS_VC;
+	err = ioctl (priv->brfd, ATM_SETBACKEND, &be);
+	if (err != 0) {
+		nm_log_err (LOGD_ADSL, "(%s): failed to attach VCC (%d)",
+		            iface, errno);
+		goto error;
+	}
+
+	return TRUE;
+
+error:
+	close (priv->brfd);
+	priv->brfd = -1;
+	return FALSE;
+}
+
+static void
+netlink_notification (NMNetlinkMonitor *monitor,
+                      struct nl_msg *msg,
+                      gpointer user_data)
+{
+	NMDeviceAdsl *self = NM_DEVICE_ADSL (user_data);
+	NMDeviceAdslPrivate *priv = NM_DEVICE_ADSL_GET_PRIVATE (self);
+	NMDevice *device = NM_DEVICE (user_data);
+	struct nlmsghdr *hdr = nlmsg_hdr (msg);
+	const char *iface = nm_device_get_iface (device);
+
+	/* This only gets called for PPPoE connections and "nas" interfaces */
+
+	if ((hdr->nlmsg_type == RTM_DELLINK) && (priv->nas_ifindex >= 0)) {
+		struct ifinfomsg *ifi = nlmsg_data (hdr);
+
+		if (ifi->ifi_index == priv->nas_ifindex) {
+			/* NAS device went away for some reason; kill the connection */
+			nm_log_dbg (LOGD_ADSL, "(%s): NAS interface disappeared", iface);
+			nm_device_state_changed (device,
+			                         NM_DEVICE_STATE_FAILED,
+			                         NM_DEVICE_STATE_REASON_BR2684_FAILED);
+		}
+	}
+}
+
+static NMActStageReturn
+real_act_stage2_config (NMDevice *device, NMDeviceStateReason *out_reason)
+{
+	NMDeviceAdsl *self = NM_DEVICE_ADSL (device);
+	NMDeviceAdslPrivate *priv = NM_DEVICE_ADSL_GET_PRIVATE (self);
+	NMActStageReturn ret = NM_ACT_STAGE_RETURN_FAILURE;
+	NMSettingAdsl *s_adsl;
+	const char *protocol;
+
+	g_assert (out_reason);
+
+	s_adsl = nm_connection_get_setting_adsl (nm_device_get_connection (device));
+	g_assert (s_adsl);
+
+	protocol = nm_setting_adsl_get_protocol (s_adsl);
+	nm_log_dbg (LOGD_ADSL, "(%s): using ADSL protocol '%s'",
+	             nm_device_get_iface (device), protocol);
+
+	if (g_strcmp0 (protocol, NM_SETTING_ADSL_PROTOCOL_PPPOE) == 0) {
+
+		/* PPPoE needs RFC2684 bridging before we can do PPP over it */
+		if (!br2684_create_iface (self, s_adsl)) {
+			*out_reason = NM_DEVICE_STATE_REASON_BR2684_FAILED;
+			goto done;
+		}
+
+		/* Set up the VCC */
+		if (!br2684_assign_vcc (self, s_adsl)) {
+			*out_reason = NM_DEVICE_STATE_REASON_BR2684_FAILED;
+			goto done;
+		}
+
+		/* Watch for the 'nas' interface going away */
+		priv->netlink_id = g_signal_connect (priv->monitor, "notification",
+		                                     G_CALLBACK (netlink_notification),
+		                                     self);
+
+		nm_log_dbg (LOGD_ADSL, "(%s): ATM setup successful", nm_device_get_iface (device));
+
+		/* otherwise we're good for stage3 */
+		nm_system_iface_set_up (priv->nas_ifindex, TRUE, NULL);
+		ret = NM_ACT_STAGE_RETURN_SUCCESS;
+
+	} else if (g_strcmp0 (protocol, NM_SETTING_ADSL_PROTOCOL_PPPOA) == 0) {
+		/* PPPoA doesn't need anything special */
+		ret = NM_ACT_STAGE_RETURN_SUCCESS;
+	} else {
+		nm_log_warn (LOGD_ADSL, "(%s): unhandled ADSL protocol '%s'",
+		             nm_device_get_iface (device), protocol);
+	}
+
+done:
+	return ret;
+}
+
+static void
+ppp_state_changed (NMPPPManager *ppp_manager, NMPPPStatus status, gpointer user_data)
+{
+	NMDevice *device = NM_DEVICE (user_data);
+
+	switch (status) {
+	case NM_PPP_STATUS_DISCONNECT:
+		nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_PPP_DISCONNECT);
+		break;
+	case NM_PPP_STATUS_DEAD:
+		nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_PPP_FAILED);
+		break;
+	default:
+		break;
+	}
+}
+
+static void
+ppp_ip4_config (NMPPPManager *ppp_manager,
+                const char *iface,
+                NMIP4Config *config,
+                gpointer user_data)
+{
+	NMDevice *device = NM_DEVICE (user_data);
+
+	/* Ignore PPP IP4 events that come in after initial configuration */
+	if (nm_device_activate_ip4_state_in_conf (device)) {
+		nm_device_set_ip_iface (device, iface);
+		nm_device_activate_schedule_ip4_config_result (device, config);
+	}
+}
+
+static NMActStageReturn
+real_act_stage3_ip4_config_start (NMDevice *device,
+                                  NMIP4Config **out_config,
+                                  NMDeviceStateReason *reason)
+{
+	NMDeviceAdsl *self = NM_DEVICE_ADSL (device);
+	NMDeviceAdslPrivate *priv = NM_DEVICE_ADSL_GET_PRIVATE (self);
+	NMConnection *connection;
+	NMSettingAdsl *s_adsl;
+	NMActRequest *req;
+	GError *err = NULL;
+	NMActStageReturn ret = NM_ACT_STAGE_RETURN_FAILURE;
+	const char *iface = nm_device_get_iface (device);
+	const char *ppp_iface;
+
+	req = nm_device_get_act_request (device);
+	g_assert (req);
+
+	connection = nm_act_request_get_connection (req);
+	g_assert (req);
+
+	s_adsl = nm_connection_get_setting_adsl (connection);
+	g_assert (s_adsl);
+
+	/* PPPoE uses the NAS inteface, not the ATM interface */
+	if (g_strcmp0 (nm_setting_adsl_get_protocol (s_adsl), NM_SETTING_ADSL_PROTOCOL_PPPOE) == 0) {
+		g_assert (priv->nas_ifname);
+		ppp_iface = priv->nas_ifname;
+
+		nm_log_dbg (LOGD_ADSL, "(%s): starting PPPoE on NAS interface %s",
+			        iface, priv->nas_ifname);
+	} else {
+		ppp_iface = iface;
+		nm_log_dbg (LOGD_ADSL, "(%s): starting PPPoA", iface);
+	}
+
+	priv->ppp_manager = nm_ppp_manager_new (ppp_iface);
+	if (nm_ppp_manager_start (priv->ppp_manager, req, nm_setting_adsl_get_username (s_adsl), 30, &err)) {
+		g_signal_connect (priv->ppp_manager, "state-changed",
+		                  G_CALLBACK (ppp_state_changed),
+		                  self);
+		g_signal_connect (priv->ppp_manager, "ip4-config",
+		                  G_CALLBACK (ppp_ip4_config),
+		                  self);
+		ret = NM_ACT_STAGE_RETURN_POSTPONE;
+	} else {
+		nm_log_warn (LOGD_ADSL, "(%s): PPP failed to start: %s", iface, err->message);
+		g_error_free (err);
+
+		g_object_unref (priv->ppp_manager);
+		priv->ppp_manager = NULL;
+
+		*reason = NM_DEVICE_STATE_REASON_PPP_START_FAILED;
+	}
+
+	return ret;
+}
+
+static void
+real_deactivate (NMDevice *device)
+{
+	NMDeviceAdsl *self = NM_DEVICE_ADSL (device);
+	NMDeviceAdslPrivate *priv = NM_DEVICE_ADSL_GET_PRIVATE (self);
+
+	if (priv->ppp_manager) {
+		g_object_unref (priv->ppp_manager);
+		priv->ppp_manager = NULL;
+	}
+
+	if (priv->netlink_id) {
+		g_signal_handler_disconnect (priv->monitor, priv->netlink_id);
+		priv->netlink_id = 0;
+	}
+
+	if (priv->brfd >= 0) {
+		close (priv->brfd);
+		priv->brfd = -1;
+	}
+
+	/* FIXME: kernel has no way of explicitly deleting the 'nasX' interface yet,
+	 * so it gets leaked.  It does get destroyed when it's no longer in use,
+	 * but we have no control over that.
+	 */
+	if (priv->nas_ifindex >= 0)
+		priv->nas_ifindex = -1;
+	g_free (priv->nas_ifname);
+	priv->nas_ifname = NULL;
+}
+
+/**************************************************************/
+
+static void
+set_carrier (NMDeviceAdsl *self, const gboolean carrier)
+{
+	NMDeviceAdslPrivate *priv;
+	NMDeviceState state;
+
+	g_return_if_fail (NM_IS_DEVICE (self));
+
+	priv = NM_DEVICE_ADSL_GET_PRIVATE (self);
+
+	if (priv->carrier == carrier)
+		return;
+
+	priv->carrier = carrier;
+	g_object_notify (G_OBJECT (self), NM_DEVICE_ADSL_CARRIER);
+
+	state = nm_device_get_state (NM_DEVICE (self));
+	nm_log_info (LOGD_HW, "(%s): carrier now %s (device state %d)",
+	             nm_device_get_iface (NM_DEVICE (self)),
+	             carrier ? "ON" : "OFF",
+	             state);
+
+	if (state == NM_DEVICE_STATE_UNAVAILABLE) {
+		if (priv->carrier)
+			nm_device_state_changed (NM_DEVICE (self), NM_DEVICE_STATE_DISCONNECTED, NM_DEVICE_STATE_REASON_CARRIER);
+	} else if (state >= NM_DEVICE_STATE_DISCONNECTED) {
+		if (!priv->carrier)
+			nm_device_state_changed (NM_DEVICE (self), NM_DEVICE_STATE_UNAVAILABLE, NM_DEVICE_STATE_REASON_CARRIER);
+	}
+}
+
+static gboolean
+carrier_update_cb (gpointer user_data)
+{
+	NMDeviceAdsl *self = NM_DEVICE_ADSL (user_data);
+	GError *error = NULL;
+	gboolean carrier = FALSE;
+	char *path, *contents;
+	const char *iface;
+	gboolean success;
+
+	iface = nm_device_get_iface (NM_DEVICE (self));
+
+	path  = g_strdup_printf ("/sys/class/atm/%s/carrier", iface);
+	success = g_file_get_contents (path, &contents, NULL, &error);
+	g_free (path);
+
+	if (!success) {
+		nm_log_dbg (LOGD_ADSL, "error reading %s: (%d) %s",
+		            path,
+		            error ? error->code : -1,
+		            error && error->message ? error->message : "(unknown)");
+		g_clear_error (&error);
+		return TRUE;
+	}
+
+	carrier = (gboolean) atoi (contents);
+	g_free (contents);
+	set_carrier (self, carrier);
+	return TRUE;
+}
+
+/**************************************************************/
+
+NMDevice *
+nm_device_adsl_new (const char *udi,
+                    const char *iface,
+                    const char *driver)
+{
+	g_return_val_if_fail (udi != NULL, NULL);
+
+	return (NMDevice *) g_object_new (NM_TYPE_DEVICE_ADSL,
+	                                  NM_DEVICE_UDI, udi,
+	                                  NM_DEVICE_IFACE, iface,
+	                                  NM_DEVICE_DRIVER, driver,
+	                                  NM_DEVICE_TYPE_DESC, "ADSL",
+	                                  NM_DEVICE_DEVICE_TYPE, NM_DEVICE_TYPE_ADSL,
+	                                  NULL);
+}
+
+static int
+get_atm_index (const char *iface, GError **error)
+{
+	char *path, *contents;
+	int idx = -1;
+
+	path = g_strdup_printf ("/sys/class/atm/%s/atmindex", iface);
+	if (g_file_get_contents (path, &contents, NULL, error))
+		idx = atoi (contents);
+	g_free (path);
+	g_free (contents);
+	return idx;
+}
+
+static GObject*
+constructor (GType type,
+			 guint n_construct_params,
+			 GObjectConstructParam *construct_params)
+{
+	GObject *object;
+	NMDeviceAdslPrivate *priv;
+	GError *error = NULL;
+
+	object = G_OBJECT_CLASS (nm_device_adsl_parent_class)->constructor (type,
+	                                                                    n_construct_params,
+	                                                                    construct_params);
+	if (!object)
+		return NULL;
+
+	priv = NM_DEVICE_ADSL_GET_PRIVATE (object);
+
+	priv->atm_index = get_atm_index (nm_device_get_iface (NM_DEVICE (object)), &error);
+	if (priv->atm_index < 0) {
+		nm_log_dbg (LOGD_ADSL, "error reading ATM device index: (%d) %s",
+		            error ? error->code : -1,
+		            error && error->message ? error->message : "(unknown)");
+		g_clear_error (&error);
+		g_object_unref (object);
+		return NULL;
+	} else {
+		nm_log_dbg (LOGD_ADSL, "(%s): ATM device index %d",
+				    nm_device_get_iface (NM_DEVICE (object)), priv->atm_index);
+	}
+
+	/* Poll the carrier */
+	priv->carrier_poll_id = g_timeout_add_seconds (5, carrier_update_cb, object);
+
+	return object;
+}
+
+static void
+dispose (GObject *object)
+{
+	NMDeviceAdsl *self = NM_DEVICE_ADSL (object);
+	NMDeviceAdslPrivate *priv = NM_DEVICE_ADSL_GET_PRIVATE (self);
+
+	if (priv->disposed) {
+		G_OBJECT_CLASS (nm_device_adsl_parent_class)->dispose (object);
+		return;
+	}
+
+	priv->disposed = TRUE;
+
+	if (priv->carrier_poll_id) {
+		g_source_remove (priv->carrier_poll_id);
+		priv->carrier_poll_id = 0;
+	}
+
+	if (priv->netlink_id) {
+		g_source_remove (priv->netlink_id);
+		priv->netlink_id = 0;
+	}
+
+	if (priv->monitor) {
+		nm_netlink_monitor_unsubscribe (priv->monitor, RTNLGRP_LINK);
+		g_object_unref (priv->monitor);
+		priv->monitor = NULL;
+	}
+
+	g_free (priv->nas_ifname);
+	priv->nas_ifname = NULL;
+
+	G_OBJECT_CLASS (nm_device_adsl_parent_class)->dispose (object);
+}
+
+static void
+get_property (GObject *object, guint prop_id,
+              GValue *value, GParamSpec *pspec)
+{
+	NMDeviceAdsl *self = NM_DEVICE_ADSL (object);
+	NMDeviceAdslPrivate *priv = NM_DEVICE_ADSL_GET_PRIVATE(self);
+
+	switch (prop_id) {
+	case PROP_CARRIER:
+		g_value_set_boolean (value, priv->carrier);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+set_property (GObject *object, guint prop_id,
+			  const GValue *value, GParamSpec *pspec)
+{
+	switch (prop_id) {
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+nm_device_adsl_init (NMDeviceAdsl *self)
+{
+	NMDeviceAdslPrivate *priv = NM_DEVICE_ADSL_GET_PRIVATE (self);
+
+	priv->monitor = nm_netlink_monitor_get ();
+	nm_netlink_monitor_subscribe (priv->monitor, RTNLGRP_LINK, NULL);
+}
+
+static void
+nm_device_adsl_class_init (NMDeviceAdslClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+	NMDeviceClass *parent_class = NM_DEVICE_CLASS (klass);
+
+	g_type_class_add_private (object_class, sizeof (NMDeviceAdslPrivate));
+
+	object_class->constructor  = constructor;
+	object_class->dispose      = dispose;
+	object_class->get_property = get_property;
+	object_class->set_property = set_property;
+
+	parent_class->get_generic_capabilities = real_get_generic_capabilities;
+	parent_class->can_interrupt_activation = real_can_interrupt_activation;
+	parent_class->is_available = real_is_available;
+
+	parent_class->check_connection_compatible = real_check_connection_compatible;
+	parent_class->get_best_auto_connection = real_get_best_auto_connection;
+	parent_class->complete_connection = real_complete_connection;
+
+	parent_class->act_stage2_config = real_act_stage2_config;
+	parent_class->act_stage3_ip4_config_start = real_act_stage3_ip4_config_start;
+	parent_class->deactivate = real_deactivate;
+
+	/* properties */
+	g_object_class_install_property
+		(object_class, PROP_CARRIER,
+		 g_param_spec_boolean (NM_DEVICE_ADSL_CARRIER,
+							   "Carrier",
+							   "Carrier",
+							   FALSE,
+							   G_PARAM_READABLE));
+
+	/* Signals */
+	signals[PROPERTIES_CHANGED] =
+		nm_properties_changed_signal_new (object_class,
+		                                  G_STRUCT_OFFSET (NMDeviceAdslClass, properties_changed));
+
+	dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
+	                                 &dbus_glib_nm_device_adsl_object_info);
+}
diff --git a/src/nm-device-adsl.h b/src/nm-device-adsl.h
new file mode 100644
index 00000000..50ea43e3
--- /dev/null
+++ b/src/nm-device-adsl.h
@@ -0,0 +1,66 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager -- Network link manager
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Author: Pantelis Koukousoulas <pktoss@gmail.com>
+ * Copyright (C) 2009 - 2011 Red Hat Inc.
+ */
+
+#ifndef NM_DEVICE_ADSL_H
+#define NM_DEVICE_ADSL_H
+
+#include <glib-object.h>
+
+// Parent class
+#include "nm-device.h"
+
+G_BEGIN_DECLS
+
+#define NM_TYPE_DEVICE_ADSL            (nm_device_adsl_get_type ())
+#define NM_DEVICE_ADSL(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DEVICE_ADSL, NMDeviceAdsl))
+#define NM_DEVICE_ADSL_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass),  NM_TYPE_DEVICE_ADSL, NMDeviceAdslClass))
+#define NM_IS_DEVICE_ADSL(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_DEVICE_ADSL))
+#define NM_IS_DEVICE_ADSL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),  NM_TYPE_DEVICE_ADSL))
+#define NM_DEVICE_ADSL_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj),  NM_TYPE_DEVICE_ADSL, NMDeviceAdslClass))
+
+typedef enum {
+	NM_ADSL_ERROR_CONNECTION_NOT_ADSL = 0,
+	NM_ADSL_ERROR_CONNECTION_INVALID,
+	NM_ADSL_ERROR_CONNECTION_INCOMPATIBLE,
+} NMAdslError;
+
+#define NM_DEVICE_ADSL_CARRIER "carrier"
+
+typedef struct {
+	NMDevice parent;
+} NMDeviceAdsl;
+
+typedef struct {
+	NMDeviceClass parent;
+
+	/* Signals */
+	void (*properties_changed) (NMDeviceAdsl *device, GHashTable *properties);
+} NMDeviceAdslClass;
+
+GType nm_device_adsl_get_type (void);
+
+NMDevice *nm_device_adsl_new (const char *udi,
+                              const char *iface,
+                              const char *driver);
+
+G_END_DECLS
+
+#endif	/* NM_DEVICE_ADSL_H */
diff --git a/src/nm-device-bt.c b/src/nm-device-bt.c
index 726762b6..f61aeb57 100644
--- a/src/nm-device-bt.c
+++ b/src/nm-device-bt.c
@@ -668,14 +668,18 @@ nm_device_bt_modem_removed (NMDeviceBt *self, NMModem *modem)
 	if (modem != priv->modem)
 		return FALSE;
 
+	/* Fail the device if the modem was removed while active */
 	state = nm_device_get_state (NM_DEVICE (self));
-	nm_modem_device_state_changed (priv->modem,
-	                               NM_DEVICE_STATE_DISCONNECTED,
-	                               state,
-	                               NM_DEVICE_STATE_REASON_USER_REQUESTED);
+	if (   state == NM_DEVICE_STATE_ACTIVATED
+	    || nm_device_is_activating (NM_DEVICE (self))) {
+		nm_device_state_changed (NM_DEVICE (self),
+		                         NM_DEVICE_STATE_FAILED,
+		                         NM_DEVICE_STATE_REASON_BT_FAILED);
+	} else {
+		g_object_unref (priv->modem);
+		priv->modem = NULL;
+	}
 
-	g_object_unref (priv->modem);
-	priv->modem = NULL;
 	return TRUE;
 }
 
diff --git a/src/nm-device-ethernet.c b/src/nm-device-ethernet.c
index df0ae94f..ede31cc1 100644
--- a/src/nm-device-ethernet.c
+++ b/src/nm-device-ethernet.c
@@ -753,8 +753,9 @@ link_timeout_cb (gpointer user_data)
 	req = nm_device_get_act_request (dev);
 
 	if (nm_device_get_state (dev) == NM_DEVICE_STATE_ACTIVATED) {
-		nm_device_state_changed (dev, NM_DEVICE_STATE_DISCONNECTED,
-		                         NM_DEVICE_STATE_REASON_SUPPLICANT_DISCONNECT);
+		nm_device_state_changed (dev,
+		                         NM_DEVICE_STATE_FAILED,
+		                         NM_DEVICE_STATE_REASON_SUPPLICANT_TIMEOUT);
 		return FALSE;
 	}
 
diff --git a/src/nm-device-modem.c b/src/nm-device-modem.c
index 7f81e981..e7cd9259 100644
--- a/src/nm-device-modem.c
+++ b/src/nm-device-modem.c
@@ -311,11 +311,12 @@ real_set_enabled (NMDevice *device, gboolean enabled)
 		nm_modem_set_mm_enabled (priv->modem, enabled);
 
 		if (enabled == FALSE) {
-			state = nm_device_get_state (NM_DEVICE (device));
-			if (state == NM_DEVICE_STATE_ACTIVATED) {
-				nm_device_state_changed (NM_DEVICE (device),
+			state = nm_device_get_state (device);
+			if (nm_device_is_activating (device) || state == NM_DEVICE_STATE_ACTIVATED) {
+				/* user-initiated action, hence DISCONNECTED not FAILED */
+				nm_device_state_changed (device,
 				                         NM_DEVICE_STATE_DISCONNECTED,
-				                         NM_DEVICE_STATE_REASON_NONE);
+				                         NM_DEVICE_STATE_REASON_USER_REQUESTED);
 			}
 		}
 	}
diff --git a/src/nm-device-olpc-mesh.c b/src/nm-device-olpc-mesh.c
index f6390c16..8e3cb952 100644
--- a/src/nm-device-olpc-mesh.c
+++ b/src/nm-device-olpc-mesh.c
@@ -55,6 +55,9 @@
 #include "nm-manager.h"
 #include "nm-enum-types.h"
 #include "wifi-utils.h"
+#if HAVE_WEXT
+#include "wifi-utils-wext.h"
+#endif
 
 /* This is a bug; but we can't really change API now... */
 #include "NetworkManagerVPN.h"
@@ -153,9 +156,16 @@ constructor (GType type,
 	            nm_device_get_iface (NM_DEVICE (self)),
 	            nm_device_get_ifindex (NM_DEVICE (self)));
 
-	priv->wifi_data = wifi_utils_init (nm_device_get_iface (NM_DEVICE (self)),
-	                                   nm_device_get_ifindex (NM_DEVICE (self)),
-	                                   FALSE);
+	/*
+	 * The kernel driver now uses nl80211, but we force use of WEXT because
+	 * the cfg80211 interactions are not quite ready to support access to
+	 * mesh control through nl80211 just yet.
+	 */
+#if HAVE_WEXT
+	priv->wifi_data = wifi_wext_init (nm_device_get_iface (NM_DEVICE (self)),
+	                                  nm_device_get_ifindex (NM_DEVICE (self)),
+	                                  FALSE);
+#endif
 	if (priv->wifi_data == NULL) {
 		nm_log_warn (LOGD_HW | LOGD_OLPC_MESH, "(%s): failed to initialize WiFi driver",
 		             nm_device_get_iface (NM_DEVICE (self)));
diff --git a/src/nm-device-private.h b/src/nm-device-private.h
index 9b78db12..824beb5a 100644
--- a/src/nm-device-private.h
+++ b/src/nm-device-private.h
@@ -67,4 +67,6 @@ gboolean nm_device_dhcp4_renew (NMDevice *device, gboolean release);
 
 gboolean nm_device_match_ip_config (NMDevice *device, NMConnection *connection);
 
+NMConnectionProvider *nm_device_get_connection_provider (NMDevice *device);
+
 #endif	/* NM_DEVICE_PRIVATE_H */
diff --git a/src/nm-device-vlan.c b/src/nm-device-vlan.c
index 14be849f..b9c93234 100644
--- a/src/nm-device-vlan.c
+++ b/src/nm-device-vlan.c
@@ -643,17 +643,17 @@ nm_device_vlan_new (const char *udi, const char *iface, NMDevice *parent)
 			g_object_unref (device);
 			return NULL;
 		}
-		priv->vlan_id = vlan_id;
 
 		if (   parent_ifindex < 0
 		    || parent_ifindex != nm_device_get_ip_ifindex (parent)
-		    || priv->vlan_id < 0) {
+		    || vlan_id < 0) {
 			nm_log_warn (LOGD_DEVICE, "(%s): VLAN parent ifindex (%d) or VLAN ID (%d) invalid.",
 			             iface, parent_ifindex, priv->vlan_id);
 			g_object_unref (device);
 			return NULL;
 		}
 
+		priv->vlan_id = vlan_id;
 		priv->parent = g_object_ref (parent);
 		priv->parent_state_id = g_signal_connect (priv->parent,
 		                                          "state-changed",
diff --git a/src/nm-device-wifi.c b/src/nm-device-wifi.c
index ed964a57..5fbbac7a 100644
--- a/src/nm-device-wifi.c
+++ b/src/nm-device-wifi.c
@@ -56,6 +56,7 @@
 #include "nm-setting-ip4-config.h"
 #include "nm-setting-ip6-config.h"
 #include "nm-system.h"
+#include "nm-manager-auth.h"
 #include "nm-settings-connection.h"
 #include "nm-enum-types.h"
 #include "wifi-utils.h"
@@ -64,11 +65,15 @@ static gboolean impl_device_get_access_points (NMDeviceWifi *device,
                                                GPtrArray **aps,
                                                GError **err);
 
+static void impl_device_request_scan (NMDeviceWifi *device,
+                                      GHashTable *options,
+                                      DBusGMethodInvocation *context);
+
 #include "nm-device-wifi-glue.h"
 
 
 /* All of these are in seconds */
-#define SCAN_INTERVAL_MIN 0
+#define SCAN_INTERVAL_MIN 3
 #define SCAN_INTERVAL_STEP 20
 #define SCAN_INTERVAL_MAX 120
 
@@ -138,7 +143,7 @@ struct _NMDeviceWifiPrivate {
 	guint32           rate;
 	gboolean          enabled; /* rfkilled or not */
 	
-	glong             scheduled_scan_time;
+	time_t            scheduled_scan_time;
 	guint8            scan_interval; /* seconds */
 	guint             pending_scan_id;
 	guint             scanlist_cull_id;
@@ -153,7 +158,7 @@ struct _NMDeviceWifiPrivate {
 	NMDeviceWifiCapabilities capabilities;
 };
 
-static gboolean request_wireless_scan (gpointer user_data);
+static gboolean check_scanning_allowed (NMDeviceWifi *self);
 
 static void schedule_scan (NMDeviceWifi *self, gboolean backoff);
 
@@ -193,6 +198,8 @@ static void supplicant_iface_notify_scanning_cb (NMSupplicantInterface * iface,
 
 static void schedule_scanlist_cull (NMDeviceWifi *self);
 
+static gboolean request_wireless_scan (gpointer user_data);
+
 /*****************************************************************/
 
 #define NM_WIFI_ERROR (nm_wifi_error_quark ())
@@ -1014,14 +1021,6 @@ real_check_connection_compatible (NMDevice *device,
 	const GByteArray *mac;
 	const GSList *mac_blacklist, *mac_blacklist_iter;
 
-	if (is_adhoc_wpa (connection)) {
-		g_set_error_literal (error,
-				             NM_WIFI_ERROR,
-				             NM_WIFI_ERROR_CONNECTION_INCOMPATIBLE,
-				             "WPA Ad-Hoc disabled due to kernel bugs");
-		return FALSE;
-	}
-
 	s_con = nm_connection_get_setting_connection (connection);
 	g_assert (s_con);
 
@@ -1040,6 +1039,7 @@ real_check_connection_compatible (NMDevice *device,
 		return FALSE;
 	}
 
+
 	mac = nm_setting_wireless_get_mac_address (s_wireless);
 	if (mac && memcmp (mac->data, &priv->perm_hw_addr, ETH_ALEN)) {
 		g_set_error (error,
@@ -1067,6 +1067,14 @@ real_check_connection_compatible (NMDevice *device,
 		}
 	}
 
+	if (is_adhoc_wpa (connection)) {
+		g_set_error_literal (error,
+		                     NM_WIFI_ERROR,
+		                     NM_WIFI_ERROR_CONNECTION_INCOMPATIBLE,
+		                     "WPA Ad-Hoc disabled due to kernel bugs");
+		return FALSE;
+	}
+
 	// FIXME: check channel/freq/band against bands the hardware supports
 	// FIXME: check encryption against device capabilities
 	// FIXME: check bitrate against device capabilities
@@ -1233,9 +1241,9 @@ real_complete_connection (NMDevice *device,
 	 */
 	if (is_adhoc_wpa (connection)) {
 		g_set_error_literal (error,
-				             NM_SETTING_WIRELESS_ERROR,
-				             NM_SETTING_WIRELESS_ERROR_INVALID_PROPERTY,
-				             "WPA Ad-Hoc disabled due to kernel bugs");
+		                     NM_SETTING_WIRELESS_ERROR,
+		                     NM_SETTING_WIRELESS_ERROR_INVALID_PROPERTY,
+		                     "WPA Ad-Hoc disabled due to kernel bugs");
 		return FALSE;
 	}
 
@@ -1257,9 +1265,9 @@ real_complete_connection (NMDevice *device,
 		/* Make sure the setting MAC (if any) matches the device's permanent MAC */
 		if (memcmp (setting_mac->data, priv->perm_hw_addr, ETH_ALEN)) {
 			g_set_error (error,
-				         NM_SETTING_WIRELESS_ERROR,
-				         NM_SETTING_WIRELESS_ERROR_INVALID_PROPERTY,
-				         NM_SETTING_WIRELESS_MAC_ADDRESS);
+			             NM_SETTING_WIRELESS_ERROR,
+			             NM_SETTING_WIRELESS_ERROR_INVALID_PROPERTY,
+			             NM_SETTING_WIRELESS_MAC_ADDRESS);
 			return FALSE;
 		}
 	} else {
@@ -1442,6 +1450,80 @@ impl_device_get_access_points (NMDeviceWifi *self,
 	return TRUE;
 }
 
+static void
+request_scan_cb (NMDevice *device,
+                 DBusGMethodInvocation *context,
+                 GError *error,
+                 gpointer user_data)
+{
+	NMDeviceWifi *self = NM_DEVICE_WIFI (device);
+
+	if (error) {
+		dbus_g_method_return_error (context, error);
+		g_clear_error (&error);
+	} else if (!check_scanning_allowed (self)) {
+		error = g_error_new_literal (NM_WIFI_ERROR,
+		                             NM_WIFI_ERROR_SCAN_NOT_ALLOWED,
+		                             "Scanning not allowed at this time");
+		dbus_g_method_return_error (context, error);
+		g_error_free (error);
+	} else {
+		cancel_pending_scan (self);
+		request_wireless_scan (self);
+		dbus_g_method_return (context);
+	}
+}
+
+static void
+impl_device_request_scan (NMDeviceWifi *self,
+                          GHashTable *options,
+                          DBusGMethodInvocation *context)
+{
+	NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self);
+	NMDevice *device = NM_DEVICE (self);
+	time_t last_scan;
+	GError *error;
+
+	if (   !priv->enabled
+	    || !priv->supplicant.iface
+	    || nm_device_get_state (device) < NM_DEVICE_STATE_DISCONNECTED
+	    || nm_device_is_activating (device)) {
+		error = g_error_new_literal (NM_WIFI_ERROR,
+		                             NM_WIFI_ERROR_SCAN_NOT_ALLOWED,
+		                             "Scanning not allowed while unavailable or activating");
+		goto error;
+	}
+
+	if (nm_supplicant_interface_get_scanning (priv->supplicant.iface)) {
+		error = g_error_new_literal (NM_WIFI_ERROR,
+		                             NM_WIFI_ERROR_SCAN_NOT_ALLOWED,
+		                             "Scanning not allowed while already scanning");
+		goto error;
+	}
+
+	last_scan = nm_supplicant_interface_get_last_scan_time (priv->supplicant.iface);
+	if ((time (NULL) - last_scan) < 10) {
+		error = g_error_new_literal (NM_WIFI_ERROR,
+		                             NM_WIFI_ERROR_SCAN_NOT_ALLOWED,
+		                             "Scanning not allowed immediately following previous scan");
+		goto error;
+	}
+
+	/* Ask the manager to authenticate this request for us */
+	g_signal_emit_by_name (device,
+	                       NM_DEVICE_AUTH_REQUEST,
+	                       context,
+	                       NM_AUTH_PERMISSION_NETWORK_CONTROL,
+	                       TRUE,
+	                       request_scan_cb,
+	                       NULL);
+	return;
+
+error:
+	dbus_g_method_return_error (context, error);
+	g_error_free (error);
+}
+
 static gboolean
 scanning_allowed (NMDeviceWifi *self)
 {
@@ -1544,20 +1626,102 @@ check_scanning_allowed (NMDeviceWifi *self)
 }
 
 static gboolean
+hidden_filter_func (NMConnectionProvider *provider,
+                    NMConnection *connection,
+                    gpointer user_data)
+{
+	NMSettingWireless *s_wifi;
+
+	s_wifi = (NMSettingWireless *) nm_connection_get_setting_wireless (connection);
+	return s_wifi ? nm_setting_wireless_get_hidden (s_wifi) : FALSE;
+}
+
+static GPtrArray *
+build_hidden_probe_list (NMDeviceWifi *self)
+{
+	NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self);
+	guint max_scan_ssids = nm_supplicant_interface_get_max_scan_ssids (priv->supplicant.iface);
+	NMConnectionProvider *provider = nm_device_get_connection_provider (NM_DEVICE (self));
+	GSList *connections, *iter;
+	GPtrArray *ssids = NULL;
+	static GByteArray *nullssid = NULL;
+
+	/* Need at least two: wildcard SSID and one or more hidden SSIDs */
+	if (max_scan_ssids < 2)
+		return NULL;
+
+	/* Static wildcard SSID used for every scan */
+	if (G_UNLIKELY (nullssid == NULL))
+		nullssid = g_byte_array_new ();
+
+	connections = nm_connection_provider_get_best_connections (provider,
+	                                                           max_scan_ssids - 1,
+	                                                           NM_SETTING_WIRELESS_SETTING_NAME,
+	                                                           NULL,
+	                                                           hidden_filter_func,
+	                                                           NULL);
+	if (connections && connections->data) {
+		ssids = g_ptr_array_sized_new (max_scan_ssids - 1);
+		g_ptr_array_add (ssids, nullssid);  /* Add wildcard SSID */
+	}
+
+	for (iter = connections; iter; iter = g_slist_next (iter)) {
+		NMConnection *connection = iter->data;
+		NMSettingWireless *s_wifi;
+		const GByteArray *ssid;
+
+		s_wifi = (NMSettingWireless *) nm_connection_get_setting_wireless (connection);
+		g_assert (s_wifi);
+		ssid = nm_setting_wireless_get_ssid (s_wifi);
+		g_assert (ssid);
+		g_ptr_array_add (ssids, (gpointer) ssid);
+	}
+	g_slist_free (connections);
+
+	return ssids;
+}
+
+static gboolean
 request_wireless_scan (gpointer user_data)
 {
 	NMDeviceWifi *self = NM_DEVICE_WIFI (user_data);
 	NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self);
 	gboolean backoff = FALSE;
+	GPtrArray *ssids = NULL;
 
 	if (check_scanning_allowed (self)) {
 		nm_log_dbg (LOGD_WIFI_SCAN, "(%s): scanning requested",
 		            nm_device_get_iface (NM_DEVICE (self)));
 
-		if (nm_supplicant_interface_request_scan (priv->supplicant.iface)) {
+		ssids = build_hidden_probe_list (self);
+
+		if (nm_logging_level_enabled (LOGL_DEBUG)) {
+			if (ssids) {
+				guint i;
+				char *foo;
+
+				for (i = 0; i < ssids->len; i++) {
+					foo = nm_utils_ssid_to_utf8 (g_ptr_array_index (ssids, i));
+					nm_log_dbg (LOGD_WIFI_SCAN, "(%s): (%d) probe scanning SSID '%s'",
+					            nm_device_get_iface (NM_DEVICE (self)),
+					            i, foo ? foo : "<hidden>");
+					g_free (foo);
+				}
+			} else {
+				nm_log_dbg (LOGD_WIFI_SCAN, "(%s): no SSIDs to probe scan",
+				            nm_device_get_iface (NM_DEVICE (self)));
+			}
+		}
+
+		if (nm_supplicant_interface_request_scan (priv->supplicant.iface, ssids)) {
 			/* success */
 			backoff = TRUE;
 		}
+
+		if (ssids) {
+			/* Elements owned by the connections, so we don't free them here */
+			g_ptr_array_free (ssids, TRUE);
+		}
 	} else {
 		nm_log_dbg (LOGD_WIFI_SCAN, "(%s): scan requested but not allowed at this time",
 		            nm_device_get_iface (NM_DEVICE (self)));
@@ -1579,13 +1743,11 @@ static void
 schedule_scan (NMDeviceWifi *self, gboolean backoff)
 {
 	NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self);
-	GTimeVal now;
-
-	g_get_current_time (&now);
+	time_t now = time (NULL);
 
 	/* Cancel the pending scan if it would happen later than (now + the scan_interval) */
 	if (priv->pending_scan_id) {
-		if (now.tv_sec + priv->scan_interval < priv->scheduled_scan_time)
+		if (now + priv->scan_interval < priv->scheduled_scan_time)
 			cancel_pending_scan (self);
 	}
 
@@ -1600,7 +1762,7 @@ schedule_scan (NMDeviceWifi *self, gboolean backoff)
 		                                               request_wireless_scan,
 		                                               self);
 
-		priv->scheduled_scan_time = now.tv_sec + priv->scan_interval;
+		priv->scheduled_scan_time = now + priv->scan_interval;
 		if (backoff && (priv->scan_interval < (SCAN_INTERVAL_MAX / factor))) {
 				priv->scan_interval += (SCAN_INTERVAL_STEP / factor);
 				/* Ensure the scan interval will never be less than 20s... */
@@ -1643,8 +1805,7 @@ supplicant_iface_scan_done_cb (NMSupplicantInterface *iface,
 	            nm_device_get_iface (NM_DEVICE (self)),
 	            success ? "successful" : "failed");
 
-	if (check_scanning_allowed (self))
-		schedule_scan (self, TRUE);
+	schedule_scan (self, success);
 
 	/* Ensure that old APs get removed, which otherwise only
 	 * happens when there are new BSSes.
@@ -1763,7 +1924,7 @@ static gboolean
 cull_scan_list (NMDeviceWifi *self)
 {
 	NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self);
-	GTimeVal now;
+	time_t now = time (NULL);
 	GSList *outdated_list = NULL;
 	GSList *elt;
 	guint32 removed = 0, total = 0;
@@ -1776,7 +1937,6 @@ cull_scan_list (NMDeviceWifi *self)
 	/* Walk the access point list and remove any access points older than
 	 * three times the inactive scan interval.
 	 */
-	g_get_current_time (&now);
 	for (elt = priv->ap_list; elt; elt = g_slist_next (elt), total++) {
 		NMAccessPoint *ap = elt->data;
 		const guint prune_interval_s = SCAN_INTERVAL_MAX * 3;
@@ -1796,7 +1956,7 @@ cull_scan_list (NMDeviceWifi *self)
 		    && g_object_get_data (G_OBJECT (ap), WPAS_REMOVED_TAG) == NULL)
 			continue;
 
-		if (nm_ap_get_last_seen (ap) + prune_interval_s < now.tv_sec)
+		if (nm_ap_get_last_seen (ap) + prune_interval_s < now)
 			outdated_list = g_slist_append (outdated_list, ap);
 	}
 
@@ -1886,7 +2046,6 @@ supplicant_iface_bss_updated_cb (NMSupplicantInterface *iface,
 {
 	NMDeviceState state;
 	NMAccessPoint *ap;
-	GTimeVal now;
 
 	g_return_if_fail (self != NULL);
 	g_return_if_fail (object_path != NULL);
@@ -1899,10 +2058,8 @@ supplicant_iface_bss_updated_cb (NMSupplicantInterface *iface,
 
 	/* Update the AP's last-seen property */
 	ap = get_ap_by_supplicant_path (self, object_path);
-	if (ap) {
-		g_get_current_time (&now);
-		nm_ap_set_last_seen (ap, now.tv_sec);
-	}
+	if (ap)
+		nm_ap_set_last_seen (ap, (guint32) time (NULL));
 
 	/* Remove outdated access points */
 	schedule_scanlist_cull (self);
@@ -1991,8 +2148,11 @@ link_timeout_cb (gpointer user_data)
 	 * to reassociate within the timeout period, so the connection must
 	 * fail.
 	 */
-	if (nm_device_get_state (dev) == NM_DEVICE_STATE_ACTIVATED)
-		nm_device_state_changed (dev, NM_DEVICE_STATE_DISCONNECTED, NM_DEVICE_STATE_REASON_SUPPLICANT_TIMEOUT);
+	if (nm_device_get_state (dev) == NM_DEVICE_STATE_ACTIVATED) {
+		nm_device_state_changed (dev,
+		                         NM_DEVICE_STATE_FAILED,
+		                         NM_DEVICE_STATE_REASON_SUPPLICANT_TIMEOUT);
+	}
 
 	return FALSE;
 }
@@ -3365,7 +3525,7 @@ get_property (GObject *object, guint prop_id,
 
 static void
 set_property (GObject *object, guint prop_id,
-			  const GValue *value, GParamSpec *pspec)
+              const GValue *value, GParamSpec *pspec)
 {
 	NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (object);
 
@@ -3409,7 +3569,7 @@ nm_device_wifi_class_init (NMDeviceWifiClass *klass)
 	parent_class->is_available = real_is_available;
 	parent_class->check_connection_compatible = real_check_connection_compatible;
 	parent_class->complete_connection = real_complete_connection;
-    parent_class->set_enabled = real_set_enabled;
+	parent_class->set_enabled = real_set_enabled;
 
 	parent_class->act_stage1_prepare = real_act_stage1_prepare;
 	parent_class->act_stage2_config = real_act_stage2_config;
diff --git a/src/nm-device-wifi.h b/src/nm-device-wifi.h
index 1e665fc3..b22c78b3 100644
--- a/src/nm-device-wifi.h
+++ b/src/nm-device-wifi.h
@@ -46,6 +46,7 @@ typedef enum {
 	NM_WIFI_ERROR_CONNECTION_INVALID,          /*< nick=ConnectionInvalid >*/
 	NM_WIFI_ERROR_CONNECTION_INCOMPATIBLE,     /*< nick=ConnectionIncompatible >*/
 	NM_WIFI_ERROR_ACCESS_POINT_NOT_FOUND,      /*< nick=AccessPointNotFound >*/
+	NM_WIFI_ERROR_SCAN_NOT_ALLOWED,            /*< nick=ScanNotAllowed >*/
 } NMWifiError;
 
 #define NM_DEVICE_WIFI_HW_ADDRESS          "hw-address"
diff --git a/src/nm-device-wired.c b/src/nm-device-wired.c
index a476faad..60e5f262 100644
--- a/src/nm-device-wired.c
+++ b/src/nm-device-wired.c
@@ -162,6 +162,7 @@ set_carrier (NMDeviceWired *self,
 {
 	NMDeviceWiredPrivate *priv;
 	NMDeviceState state;
+	guint32 caps;
 
 	g_return_if_fail (NM_IS_DEVICE (self));
 
@@ -172,16 +173,25 @@ set_carrier (NMDeviceWired *self,
 	/* Clear any previous deferred action */
 	carrier_action_defer_clear (self);
 
+	/* Warn if we try to set carrier down on a device that
+	 * doesn't support carrier detect.  These devices assume
+	 * the carrier is always up.
+	 */
+	caps = nm_device_get_capabilities (NM_DEVICE (self));
+	g_return_if_fail (caps & NM_DEVICE_CAP_CARRIER_DETECT);
+
 	priv->carrier = carrier;
 	g_object_notify (G_OBJECT (self), "carrier");
 
 	state = nm_device_get_state (NM_DEVICE (self));
-	nm_log_info (LOGD_HW | NM_DEVICE_WIRED_LOG_LEVEL (NM_DEVICE (self)),
-	             "(%s): carrier now %s (device state %d%s)",
-	             nm_device_get_iface (NM_DEVICE (self)),
-	             carrier ? "ON" : "OFF",
-	             state,
-	             defer_action ? ", deferring action for 4 seconds" : "");
+	if (state >= NM_DEVICE_STATE_UNAVAILABLE) {
+		nm_log_info (LOGD_HW | NM_DEVICE_WIRED_LOG_LEVEL (NM_DEVICE (self)),
+		             "(%s): carrier now %s (device state %d%s)",
+		             nm_device_get_iface (NM_DEVICE (self)),
+		             carrier ? "ON" : "OFF",
+		             state,
+		             defer_action ? ", deferring action for 4 seconds" : "");
+	}
 
 	if (defer_action)
 		priv->carrier_action_defer_id = g_timeout_add_seconds (4, carrier_action_defer_cb, self);
@@ -200,10 +210,8 @@ carrier_on (NMNetlinkMonitor *monitor,
 
 	/* Make sure signal is for us */
 	if (idx == nm_device_get_ifindex (device)) {
-		/* Ignore spurious netlink messages */
 		caps = nm_device_get_capabilities (device);
-		if (!(caps & NM_DEVICE_CAP_CARRIER_DETECT))
-			return;
+		g_return_if_fail (caps & NM_DEVICE_CAP_CARRIER_DETECT);
 
 		set_carrier (self, TRUE, FALSE);
 		set_speed (self, ethtool_get_speed (self));
@@ -224,10 +232,8 @@ carrier_off (NMNetlinkMonitor *monitor,
 		NMDeviceState state;
 		gboolean defer = FALSE;
 
-		/* Ignore spurious netlink messages */
 		caps = nm_device_get_capabilities (device);
-		if (!(caps & NM_DEVICE_CAP_CARRIER_DETECT))
-			return;
+		g_return_if_fail (caps & NM_DEVICE_CAP_CARRIER_DETECT);
 
 		/* Defer carrier-off event actions while connected by a few seconds
 		 * so that tripping over a cable, power-cycling a switch, or breaking
@@ -350,11 +356,15 @@ static gboolean
 real_hw_bring_up (NMDevice *dev, gboolean *no_firmware)
 {
 	gboolean success, carrier;
+	guint32 caps;
 
 	success = nm_system_iface_set_up (nm_device_get_ip_ifindex (dev), TRUE, no_firmware);
 	if (success) {
-		carrier = get_carrier_sync (NM_DEVICE_WIRED (dev));
-		set_carrier (NM_DEVICE_WIRED (dev), carrier, carrier ? FALSE : TRUE);
+		caps = nm_device_get_capabilities (dev);
+		if (caps & NM_DEVICE_CAP_CARRIER_DETECT) {
+			carrier = get_carrier_sync (NM_DEVICE_WIRED (dev));
+			set_carrier (NM_DEVICE_WIRED (dev), carrier, carrier ? FALSE : TRUE);
+		}
 	}
 	return success;
 }
diff --git a/src/nm-device.c b/src/nm-device.c
index 1dc94ee9..cf01003c 100644
--- a/src/nm-device.c
+++ b/src/nm-device.c
@@ -27,6 +27,8 @@
 #include <string.h>
 #include <unistd.h>
 #include <errno.h>
+#include <linux/sockios.h>
+#include <linux/ethtool.h>
 #include <sys/ioctl.h>
 #include <signal.h>
 #include <sys/types.h>
@@ -43,7 +45,6 @@
 #include "nm-system.h"
 #include "nm-dhcp-manager.h"
 #include "nm-dbus-manager.h"
-#include "nm-dns-manager.h"
 #include "nm-utils.h"
 #include "nm-logging.h"
 #include "nm-netlink-monitor.h"
@@ -61,6 +62,9 @@
 #include "nm-properties-changed-signal.h"
 #include "nm-enum-types.h"
 #include "nm-settings-connection.h"
+#include "nm-connection-provider.h"
+#include "nm-posix-signals.h"
+#include "nm-manager-auth.h"
 
 static void impl_device_disconnect (NMDevice *device, DBusGMethodInvocation *context);
 
@@ -87,8 +91,10 @@ nm_device_error_quark (void)
 
 enum {
 	STATE_CHANGED,
-	DISCONNECT_REQUEST,
 	AUTOCONNECT_ALLOWED,
+	AUTH_REQUEST,
+	IP4_CONFIG_CHANGED,
+	IP6_CONFIG_CHANGED,
 	LAST_SIGNAL,
 };
 static guint signals[LAST_SIGNAL] = { 0 };
@@ -99,6 +105,8 @@ enum {
 	PROP_IFACE,
 	PROP_IP_IFACE,
 	PROP_DRIVER,
+	PROP_DRIVER_VERSION,
+	PROP_FIRMWARE_VERSION,
 	PROP_CAPABILITIES,
 	PROP_IP4_ADDRESS,
 	PROP_IP4_CONFIG,
@@ -110,6 +118,7 @@ enum {
 	PROP_ACTIVE_CONNECTION,
 	PROP_DEVICE_TYPE,
 	PROP_MANAGED,
+	PROP_AUTOCONNECT,
 	PROP_FIRMWARE_MISSING,
 	PROP_TYPE_DESC,
 	PROP_RFKILL_TYPE,
@@ -117,6 +126,8 @@ enum {
 	LAST_PROP
 };
 
+#define DEFAULT_AUTOCONNECT TRUE
+
 /***********************************************************/
 
 G_DEFINE_ABSTRACT_TYPE (NMDevice, nm_device, G_TYPE_OBJECT)
@@ -153,6 +164,8 @@ typedef struct {
 	char *        type_desc;
 	guint32       capabilities;
 	char *        driver;
+	char *        driver_version;
+	char *        firmware_version;
 	gboolean      managed; /* whether managed by NM or not */
 	RfKillType    rfkill_type;
 	gboolean      firmware_missing;
@@ -221,11 +234,13 @@ typedef struct {
 	/* IP6 config from DHCP */
 	NMIP6Config *   dhcp6_ip6_config;
 
-	/* inhibit autoconnect feature */
-	gboolean	autoconnect_inhibit;
+	/* allow autoconnect feature */
+	gboolean        autoconnect;
 
 	/* master interface for bridge, bond, vlan, etc */
 	NMDevice *	master;
+
+	NMConnectionProvider *con_provider;
 } NMDevicePrivate;
 
 static void nm_device_take_down (NMDevice *dev, gboolean wait, NMDeviceStateReason reason);
@@ -239,7 +254,6 @@ static gboolean nm_device_set_ip4_config (NMDevice *dev,
                                           NMDeviceStateReason *reason);
 static gboolean nm_device_set_ip6_config (NMDevice *dev,
                                           NMIP6Config *config,
-                                          gboolean assumed,
                                           NMDeviceStateReason *reason);
 
 static gboolean nm_device_activate_ip6_config_commit (gpointer user_data);
@@ -259,6 +273,7 @@ nm_device_init (NMDevice *self)
 	priv->state_reason = NM_DEVICE_STATE_REASON_NONE;
 	priv->dhcp_timeout = 0;
 	priv->rfkill_type = RFKILL_TYPE_UNKNOWN;
+	priv->autoconnect = DEFAULT_AUTOCONNECT;
 }
 
 static void
@@ -332,18 +347,57 @@ update_ip6_privacy_save (NMDevice *self)
 	}
 }
 
+/*
+ * Get driver info from SIOCETHTOOL ioctl() for 'iface'
+ * Returns driver and firmware versions to 'driver_version and' 'firmware_version'
+ */
+static gboolean
+device_get_driver_info (const char *iface, char **driver_version, char **firmware_version)
+{
+	struct ethtool_drvinfo drvinfo;
+	struct ifreq req;
+	int fd;
+
+	fd = socket (PF_INET, SOCK_DGRAM, 0);
+	if (fd < 0) {
+		nm_log_warn (LOGD_HW, "couldn't open control socket.");
+		return FALSE;
+	}
+
+	/* Get driver and firmware version info */
+	memset (&req, 0, sizeof (struct ifreq));
+	strncpy (req.ifr_name, iface, IFNAMSIZ);
+	drvinfo.cmd = ETHTOOL_GDRVINFO;
+	req.ifr_data = &drvinfo;
+
+	errno = 0;
+	if (ioctl (fd, SIOCETHTOOL, &req) < 0) {
+		nm_log_dbg (LOGD_HW, "SIOCETHTOOL ioctl() failed: cmd=ETHTOOL_GDRVINFO, iface=%s, errno=%d",
+		            iface, errno);
+		close (fd);
+		return FALSE;
+	}
+	if (driver_version)
+		*driver_version = g_strdup (drvinfo.version);
+	if (firmware_version)
+		*firmware_version = g_strdup (drvinfo.fw_version);
+
+	close (fd);
+	return TRUE;
+}
+
 static GObject*
 constructor (GType type,
-			 guint n_construct_params,
-			 GObjectConstructParam *construct_params)
+             guint n_construct_params,
+             GObjectConstructParam *construct_params)
 {
 	GObject *object;
 	NMDevice *dev;
 	NMDevicePrivate *priv;
 
 	object = G_OBJECT_CLASS (nm_device_parent_class)->constructor (type,
-													   n_construct_params,
-													   construct_params);
+	                         n_construct_params,
+	                         construct_params);
 	if (!object)
 		return NULL;
 
@@ -370,6 +424,8 @@ constructor (GType type,
 
 	priv->fw_manager = nm_firewall_manager_get ();
 
+	device_get_driver_info (priv->iface, &priv->driver_version, &priv->firmware_version);
+
 	update_accept_ra_save (dev);
 	update_ip6_privacy_save (dev);
 
@@ -503,7 +559,8 @@ nm_device_set_ip_iface (NMDevice *self, const char *iface)
 	priv->ip_iface = g_strdup (iface);
 	if (priv->ip_iface) {
 		priv->ip_ifindex = nm_netlink_iface_to_index (priv->ip_iface);
-		if (priv->ip_ifindex < 0) {
+		if (priv->ip_ifindex <= 0) {
+			/* Device IP interface must always be a kernel network interface */
 			nm_log_warn (LOGD_HW, "(%s): failed to look up interface index", iface);
 		}
 	}
@@ -526,6 +583,22 @@ nm_device_get_driver (NMDevice *self)
 	return NM_DEVICE_GET_PRIVATE (self)->driver;
 }
 
+const char *
+nm_device_get_driver_version (NMDevice *self)
+{
+	g_return_val_if_fail (self != NULL, NULL);
+
+	return NM_DEVICE_GET_PRIVATE (self)->driver_version;
+}
+
+const char *
+nm_device_get_firmware_version (NMDevice *self)
+{
+	g_return_val_if_fail (self != NULL, NULL);
+
+	return NM_DEVICE_GET_PRIVATE (self)->firmware_version;
+}
+
 
 /*
  * Get/set functions for type
@@ -539,12 +612,52 @@ nm_device_get_device_type (NMDevice *self)
 }
 
 
+/**
+ * nm_device_get_priority():
+ * @dev: the #NMDevice
+ *
+ * Returns: the device's routing priority.  Lower numbers means a "better"
+ *  device, eg higher priority.
+ */
 int
 nm_device_get_priority (NMDevice *dev)
 {
-	g_return_val_if_fail (NM_IS_DEVICE (dev), -1);
+	g_return_val_if_fail (NM_IS_DEVICE (dev), 100);
 
-	return (int) nm_device_get_device_type (dev);
+	/* Device 'priority' is used for two things:
+	 *
+	 * a) two devices on the same IP subnet: the "better" (ie, lower number)
+	 *     device is the default outgoing device for that subnet
+	 * b) default route: the "better" device gets the default route.  This can
+	 *     always be modified by setting a connection to never-default=TRUE, in
+	 *     which case that device will never take the default route when
+	 *     it's using that connection.
+	 */
+
+	switch (nm_device_get_device_type (dev)) {
+	case NM_DEVICE_TYPE_ETHERNET:
+		return 1;
+	case NM_DEVICE_TYPE_INFINIBAND:
+		return 2;
+	case NM_DEVICE_TYPE_ADSL:
+		return 3;
+	case NM_DEVICE_TYPE_WIMAX:
+		return 4;
+	case NM_DEVICE_TYPE_BOND:
+		return 5;
+	case NM_DEVICE_TYPE_VLAN:
+		return 6;
+	case NM_DEVICE_TYPE_MODEM:
+		return 7;
+	case NM_DEVICE_TYPE_BT:
+		return 8;
+	case NM_DEVICE_TYPE_WIFI:
+		return 9;
+	case NM_DEVICE_TYPE_OLPC_MESH:
+		return 10;
+	default:
+		return 20;
+	}
 }
 
 
@@ -585,6 +698,30 @@ nm_device_get_type_desc (NMDevice *self)
 	return NM_DEVICE_GET_PRIVATE (self)->type_desc;
 }
 
+void
+nm_device_set_connection_provider (NMDevice *device,
+                                   NMConnectionProvider *provider)
+{
+	NMDevicePrivate *priv;
+
+	g_return_if_fail (device != NULL);
+	g_return_if_fail (provider != NULL);
+	g_return_if_fail (NM_IS_CONNECTION_PROVIDER (provider));
+
+	priv = NM_DEVICE_GET_PRIVATE (device);
+	g_return_if_fail (priv->con_provider == NULL);
+
+	priv->con_provider = provider;
+}
+
+NMConnectionProvider *
+nm_device_get_connection_provider (NMDevice *device)
+{
+	g_return_val_if_fail (device != NULL, NULL);
+
+	return NM_DEVICE_GET_PRIVATE (device)->con_provider;
+}
+
 /**
  * nm_device_enslave_slave:
  * @dev: the master device
@@ -716,10 +853,10 @@ nm_device_autoconnect_allowed (NMDevice *self)
 	g_value_take_object (&instance, self);
 
 	g_value_init (&retval, G_TYPE_BOOLEAN);
-	if (priv->autoconnect_inhibit)
-		g_value_set_boolean (&retval, FALSE);
-	else
+	if (priv->autoconnect)
 		g_value_set_boolean (&retval, TRUE);
+	else
+		g_value_set_boolean (&retval, FALSE);
 
 	/* Use g_signal_emitv() rather than g_signal_emit() to avoid the return
 	 * value being changed if no handlers are connected */
@@ -776,14 +913,6 @@ nm_device_complete_connection (NMDevice *self,
 	if (success)
 		success = nm_connection_verify (connection, error);
 
-	/* If ip6-privacy is unknown, enable it with temporary address preferred */
-	if (success) {
-		NMSettingIP6Config *s_ip6 = nm_connection_get_setting_ip6_config (connection);
-		if (s_ip6 && nm_setting_ip6_config_get_ip6_privacy (s_ip6) == NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN)
-			g_object_set (s_ip6, NM_SETTING_IP6_CONFIG_IP6_PRIVACY,
-			              NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_TEMP_ADDR, NULL);
-	}
-
 	return success;
 }
 
@@ -1311,6 +1440,12 @@ aipd_child_setup (gpointer user_data G_GNUC_UNUSED)
 	 */
 	pid_t pid = getpid ();
 	setpgid (pid, pid);
+
+	/*
+	 * We blocked signals in main(). We need to restore original signal
+	 * mask for avahi-autoipd here so that it can receive signals.
+	 */
+	nm_unblock_posix_signals (NULL);
 }
 
 static NMActStageReturn
@@ -1715,6 +1850,10 @@ merge_ip6_configs (NMIP6Config *dst, NMIP6Config *src)
 	for (i = 0; i < nm_ip6_config_get_num_nameservers (src); i++)
 		nm_ip6_config_add_nameserver (dst, nm_ip6_config_get_nameserver (src, i));
 
+	/* default gateway */
+	if (!nm_ip6_config_get_gateway (dst))
+		nm_ip6_config_set_gateway (dst, nm_ip6_config_get_gateway (src));
+
 	/* routes */
 	for (i = 0; i < nm_ip6_config_get_num_routes (src); i++)
 		nm_ip6_config_add_route (dst, nm_ip6_config_get_route (src, i));
@@ -1738,7 +1877,7 @@ ip6_config_merge_and_apply (NMDevice *self,
 {
 	NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
 	NMConnection *connection;
-	gboolean assumed, success;
+	gboolean success;
 	NMIP6Config *composite;
 
 	connection = nm_device_get_connection (self);
@@ -1761,8 +1900,7 @@ ip6_config_merge_and_apply (NMDevice *self,
 	/* Merge user overrides into the composite config */
 	nm_utils_merge_ip6_config (composite, nm_connection_get_setting_ip6_config (connection));
 
-	assumed = nm_act_request_get_assumed (priv->act_request);
-	success = nm_device_set_ip6_config (self, composite, assumed, out_reason);
+	success = nm_device_set_ip6_config (self, composite, out_reason);
 	g_object_unref (composite);
 	return success;
 }
@@ -2532,6 +2670,8 @@ share_child_setup (gpointer user_data G_GNUC_UNUSED)
 	/* We are in the child process at this point */
 	pid_t pid = getpid ();
 	setpgid (pid, pid);
+
+	nm_unblock_posix_signals (NULL);
 }
 
 static gboolean
@@ -3092,7 +3232,7 @@ nm_device_deactivate (NMDevice *self, NMDeviceStateReason reason)
 	/* Take out any entries in the routing table and any IP address the device had. */
 	ifindex = nm_device_get_ip_ifindex (self);
 	family = tried_ipv6 ? AF_UNSPEC : AF_INET;
-	if (ifindex >= 0) {
+	if (ifindex > 0) {
 		nm_system_iface_flush_routes (ifindex, family);
 		nm_system_iface_flush_addresses (ifindex, family);
 	}
@@ -3100,35 +3240,59 @@ nm_device_deactivate (NMDevice *self, NMDeviceStateReason reason)
 
 	/* Clean up nameservers and addresses */
 	nm_device_set_ip4_config (self, NULL, FALSE, &ignored);
-	nm_device_set_ip6_config (self, NULL, FALSE, &ignored);
+	nm_device_set_ip6_config (self, NULL, &ignored);
 }
 
-gboolean
-nm_device_disconnect (NMDevice *device, GError **error)
+static void
+disconnect_cb (NMDevice *device,
+               DBusGMethodInvocation *context,
+               GError *error,
+               gpointer user_data)
 {
-	NMDevicePrivate *priv;
-
-	g_return_val_if_fail (device != NULL, FALSE);
-	g_return_val_if_fail (NM_IS_DEVICE (device), FALSE);
+	NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (device);
+	GError *local = NULL;
 
-	priv = NM_DEVICE_GET_PRIVATE (device);
-	if (priv->state <= NM_DEVICE_STATE_DISCONNECTED) {
-		g_set_error_literal (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_NOT_ACTIVE,
-		                     "Cannot disconnect an inactive device.");
-		return FALSE;
+	if (error)
+		dbus_g_method_return_error (context, error);
+	else {
+		/* Authorized */
+		if (priv->state <= NM_DEVICE_STATE_DISCONNECTED) {
+			local = g_error_new_literal (NM_DEVICE_ERROR,
+			                             NM_DEVICE_ERROR_NOT_ACTIVE,
+			                             "Device is not active");
+			dbus_g_method_return_error (context, local);
+			g_error_free (local);
+		} else {
+			priv->autoconnect = FALSE;
+			nm_device_state_changed (device,
+			                         NM_DEVICE_STATE_DISCONNECTED,
+			                         NM_DEVICE_STATE_REASON_USER_REQUESTED);
+			dbus_g_method_return (context);
+		}
 	}
-
-	priv->autoconnect_inhibit = TRUE;	
-	nm_device_state_changed (device,
-	                         NM_DEVICE_STATE_DISCONNECTED,
-	                         NM_DEVICE_STATE_REASON_USER_REQUESTED);
-	return TRUE;
 }
 
 static void
 impl_device_disconnect (NMDevice *device, DBusGMethodInvocation *context)
 {
-	g_signal_emit (device, signals[DISCONNECT_REQUEST], 0, context);
+	GError *error = NULL;
+
+	if (NM_DEVICE_GET_PRIVATE (device)->act_request == NULL) {
+		error = g_error_new_literal (NM_DEVICE_ERROR,
+		                             NM_DEVICE_ERROR_NOT_ACTIVE,
+		                             "This device is not active");
+		dbus_g_method_return_error (context, error);
+		g_error_free (error);
+		return;
+	}
+
+	/* Ask the manager to authenticate this request for us */
+	g_signal_emit (device, signals[AUTH_REQUEST], 0,
+	               context,
+	               NM_AUTH_PERMISSION_NETWORK_CONTROL,
+	               TRUE,
+	               disconnect_cb,
+	               NULL);
 }
 
 static gboolean
@@ -3222,6 +3386,7 @@ nm_device_activate (NMDevice *self, NMActRequest *req, GError **error)
 	}
 
 	priv->act_request = g_object_ref (req);
+	g_object_notify (G_OBJECT (self), NM_DEVICE_ACTIVE_CONNECTION);
 
 	if (!nm_act_request_get_assumed (req)) {
 		NMActiveConnection *dep_ac;
@@ -3345,7 +3510,6 @@ nm_device_set_ip4_config (NMDevice *self,
 	NMIP4Config *old_config = NULL;
 	gboolean success = TRUE;
 	NMIP4ConfigCompareFlags diff = NM_IP4_COMPARE_FLAG_ALL;
-	NMDnsManager *dns_mgr;
 	int ip_ifindex;
 
 	g_return_val_if_fail (NM_IS_DEVICE (self), FALSE);
@@ -3353,23 +3517,18 @@ nm_device_set_ip4_config (NMDevice *self,
 
 	priv = NM_DEVICE_GET_PRIVATE (self);
 	ip_iface = nm_device_get_ip_iface (self);
+	ip_ifindex = nm_device_get_ip_ifindex (self);
 
 	old_config = priv->ip4_config;
 
-	if (new_config && old_config)
+	if (new_config && old_config) {
 		diff = nm_ip4_config_diff (new_config, old_config);
-
-	/* No actual change, do nothing */
-	if (diff == NM_IP4_COMPARE_FLAG_NONE)
+		if (diff == NM_IP4_COMPARE_FLAG_NONE)
+			return TRUE;  /* no actual change */
+	} else if (!new_config && !old_config)
 		return TRUE;
 
-	dns_mgr = nm_dns_manager_get (NULL);
-	if (old_config) {
-		/* Remove any previous IP4 Config from the DNS manager */
-		nm_dns_manager_remove_ip4_config (dns_mgr, ip_iface, old_config);
-		g_object_unref (old_config);
-		priv->ip4_config = NULL;
-	}
+	priv->ip4_config = NULL;
 
 	if (new_config) {
 		priv->ip4_config = g_object_ref (new_config);
@@ -3377,25 +3536,22 @@ nm_device_set_ip4_config (NMDevice *self,
 		/* Don't touch the device's actual IP config if the connection is
 		 * assumed when NM starts.
 		 */
-		if (!assumed) {
-			ip_ifindex = nm_device_get_ip_ifindex (self);
+		if (!assumed)
 			success = nm_system_apply_ip4_config (ip_ifindex, new_config, nm_device_get_priority (self), diff);
-		}
 
 		if (success || assumed) {
 			/* Export over D-Bus */
 			if (!nm_ip4_config_get_dbus_path (new_config))
 				nm_ip4_config_export (new_config);
-
-			/* Add the DNS information to the DNS manager */
-			nm_dns_manager_add_ip4_config (dns_mgr, ip_iface, new_config, NM_DNS_IP_CONFIG_TYPE_DEFAULT);
-
 			_update_ip4_address (self);
 		}
 	}
-	g_object_unref (dns_mgr);
 
 	g_object_notify (G_OBJECT (self), NM_DEVICE_IP4_CONFIG);
+	g_signal_emit (self, signals[IP4_CONFIG_CHANGED], 0, priv->ip4_config, old_config);
+
+	if (old_config)
+		g_object_unref (old_config);
 
 	return success;
 }
@@ -3403,7 +3559,6 @@ nm_device_set_ip4_config (NMDevice *self,
 static gboolean
 nm_device_set_ip6_config (NMDevice *self,
                           NMIP6Config *new_config,
-                          gboolean assumed,
                           NMDeviceStateReason *reason)
 {
 	NMDevicePrivate *priv;
@@ -3411,7 +3566,6 @@ nm_device_set_ip6_config (NMDevice *self,
 	NMIP6Config *old_config = NULL;
 	gboolean success = TRUE;
 	NMIP6ConfigCompareFlags diff = NM_IP6_COMPARE_FLAG_ALL;
-	NMDnsManager *dns_mgr;
 	int ip_ifindex;
 
 	g_return_val_if_fail (NM_IS_DEVICE (self), FALSE);
@@ -3423,42 +3577,32 @@ nm_device_set_ip6_config (NMDevice *self,
 
 	old_config = priv->ip6_config;
 
-	if (new_config && old_config)
+	if (new_config && old_config) {
 		diff = nm_ip6_config_diff (new_config, old_config);
-
-	/* No actual change, do nothing */
-	if (diff == NM_IP6_COMPARE_FLAG_NONE)
+		if (diff == NM_IP6_COMPARE_FLAG_NONE)
+			return TRUE;  /* no actual change */
+	} else if (!new_config && !old_config)
 		return TRUE;
 
-	dns_mgr = nm_dns_manager_get (NULL);
-	if (old_config) {
-		/* Remove any previous IP6 Config from the DNS manager */
-		nm_dns_manager_remove_ip6_config (dns_mgr, ip_iface, old_config);
-		g_object_unref (old_config);
-		priv->ip6_config = NULL;
-	}
+	priv->ip6_config = NULL;
 
 	if (new_config) {
 		priv->ip6_config = g_object_ref (new_config);
 
-		/* Don't touch the device's actual IP config if the connection is
-		 * assumed when NM starts.
-		 */
-		if (!assumed)
-			success = nm_system_apply_ip6_config (ip_ifindex, new_config, nm_device_get_priority (self), diff);
+		success = nm_system_apply_ip6_config (ip_ifindex, new_config, nm_device_get_priority (self), diff);
 
-		if (success || assumed) {
+		if (success) {
 			/* Export over D-Bus */
 			if (!nm_ip6_config_get_dbus_path (new_config))
 				nm_ip6_config_export (new_config);
-
-			/* Add the DNS information to the DNS manager */
-			nm_dns_manager_add_ip6_config (dns_mgr, ip_iface, new_config, NM_DNS_IP_CONFIG_TYPE_DEFAULT);
 		}
 	}
-	g_object_unref (dns_mgr);
 
 	g_object_notify (G_OBJECT (self), NM_DEVICE_IP6_CONFIG);
+	g_signal_emit (self, signals[IP6_CONFIG_CHANGED], 0, priv->ip6_config, old_config);
+
+	if (old_config)
+		g_object_unref (old_config);
 
 	return success;
 }
@@ -3683,6 +3827,8 @@ finalize (GObject *object)
 	g_free (priv->iface);
 	g_free (priv->ip_iface);
 	g_free (priv->driver);
+	g_free (priv->driver_version);
+	g_free (priv->firmware_version);
 	g_free (priv->type_desc);
 	if (priv->dhcp_anycast_address)
 		g_byte_array_free (priv->dhcp_anycast_address, TRUE);
@@ -3710,18 +3856,31 @@ set_property (GObject *object, guint prop_id,
 		g_free (priv->iface);
 		priv->ifindex = 0;
 		priv->iface = g_value_dup_string (value);
-		if (priv->iface) {
+
+		/* Only look up the ifindex if it appears to be an actual kernel
+		 * interface name.  eg Bluetooth devices won't have one until we know
+		 * the IP interface.
+		 */
+		if (priv->iface && !strchr (priv->iface, ':')) {
 			priv->ifindex = nm_netlink_iface_to_index (priv->iface);
-			if (priv->ifindex <= 0) {
+			if (priv->ifindex <= 0)
 				nm_log_warn (LOGD_HW, "(%s): failed to look up interface index", priv->iface);
-			}
 		}
 		break;
 	case PROP_IP_IFACE:
 		break;
 	case PROP_DRIVER:
+		g_free (priv->driver);
 		priv->driver = g_strdup (g_value_get_string (value));
 		break;
+	case PROP_DRIVER_VERSION:
+		g_free (priv->driver_version);
+		priv->driver_version = g_strdup (g_value_get_string (value));
+		break;
+	case PROP_FIRMWARE_VERSION:
+		g_free (priv->firmware_version);
+		priv->firmware_version = g_strdup (g_value_get_string (value));
+		break;
 	case PROP_CAPABILITIES:
 		priv->capabilities = g_value_get_uint (value);
 		break;
@@ -3731,6 +3890,9 @@ set_property (GObject *object, guint prop_id,
 	case PROP_MANAGED:
 		priv->managed = g_value_get_boolean (value);
 		break;
+	case PROP_AUTOCONNECT:
+		priv->autoconnect = g_value_get_boolean (value);
+		break;
 	case PROP_FIRMWARE_MISSING:
 		priv->firmware_missing = g_value_get_boolean (value);
 		break;
@@ -3787,6 +3949,12 @@ get_property (GObject *object, guint prop_id,
 	case PROP_DRIVER:
 		g_value_set_string (value, priv->driver);
 		break;
+	case PROP_DRIVER_VERSION:
+		g_value_set_string (value, priv->driver_version);
+		break;
+	case PROP_FIRMWARE_VERSION:
+		g_value_set_string (value, priv->firmware_version);
+		break;
 	case PROP_CAPABILITIES:
 		g_value_set_uint (value, priv->capabilities);
 		break;
@@ -3839,6 +4007,9 @@ get_property (GObject *object, guint prop_id,
 	case PROP_MANAGED:
 		g_value_set_boolean (value, priv->managed);
 		break;
+	case PROP_AUTOCONNECT:
+		g_value_set_boolean (value, priv->autoconnect);
+		break;
 	case PROP_FIRMWARE_MISSING:
 		g_value_set_boolean (value, priv->firmware_missing);
 		break;
@@ -3913,6 +4084,22 @@ nm_device_class_init (NMDeviceClass *klass)
 		                      G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
 
 	g_object_class_install_property
+		(object_class, PROP_DRIVER_VERSION,
+		 g_param_spec_string (NM_DEVICE_DRIVER_VERSION,
+		                      "Driver Version",
+		                      "Driver Version",
+		                      NULL,
+		                      G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+	g_object_class_install_property
+		(object_class, PROP_FIRMWARE_VERSION,
+		 g_param_spec_string (NM_DEVICE_FIRMWARE_VERSION,
+		                      "Firmware Version",
+		                      "Firmware Version",
+		                      NULL,
+		                      G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+	g_object_class_install_property
 		(object_class, PROP_CAPABILITIES,
 		 g_param_spec_uint (NM_DEVICE_CAPABILITIES,
 		                    "Capabilities",
@@ -4000,6 +4187,14 @@ nm_device_class_init (NMDeviceClass *klass)
 		                       G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
 
 	g_object_class_install_property
+		(object_class, PROP_AUTOCONNECT,
+		 g_param_spec_boolean (NM_DEVICE_AUTOCONNECT,
+		                       "Autoconnect",
+		                       "Autoconnect",
+		                       DEFAULT_AUTOCONNECT,
+		                       G_PARAM_READWRITE));
+
+	g_object_class_install_property
 		(object_class, PROP_FIRMWARE_MISSING,
 		 g_param_spec_boolean (NM_DEVICE_FIRMWARE_MISSING,
 		                       "FirmwareMissing",
@@ -4043,14 +4238,6 @@ nm_device_class_init (NMDeviceClass *klass)
 		              G_TYPE_NONE, 3,
 		              G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT);
 
-	signals[DISCONNECT_REQUEST] =
-		g_signal_new (NM_DEVICE_DISCONNECT_REQUEST,
-		              G_OBJECT_CLASS_TYPE (object_class),
-		              G_SIGNAL_RUN_FIRST,
-		              0, NULL, NULL,
-		              g_cclosure_marshal_VOID__POINTER,
-		              G_TYPE_NONE, 1, G_TYPE_POINTER);
-
 	signals[AUTOCONNECT_ALLOWED] =
 		g_signal_new ("autoconnect-allowed",
 		              G_OBJECT_CLASS_TYPE (object_class),
@@ -4060,6 +4247,31 @@ nm_device_class_init (NMDeviceClass *klass)
 		              _nm_marshal_BOOLEAN__VOID,
 		              G_TYPE_BOOLEAN, 0);
 
+	signals[AUTH_REQUEST] =
+		g_signal_new (NM_DEVICE_AUTH_REQUEST,
+		              G_OBJECT_CLASS_TYPE (object_class),
+		              G_SIGNAL_RUN_FIRST,
+		              0, NULL, NULL,
+		              /* dbus-glib context, permission, allow_interaction, callback, user_data */
+		              _nm_marshal_VOID__POINTER_STRING_BOOLEAN_POINTER_POINTER,
+		              G_TYPE_NONE, 5, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_POINTER, G_TYPE_POINTER);
+
+	signals[IP4_CONFIG_CHANGED] =
+		g_signal_new (NM_DEVICE_IP4_CONFIG_CHANGED,
+		              G_OBJECT_CLASS_TYPE (object_class),
+		              G_SIGNAL_RUN_FIRST,
+		              0, NULL, NULL,
+		              _nm_marshal_VOID__OBJECT_OBJECT,
+		              G_TYPE_NONE, 2, G_TYPE_OBJECT, G_TYPE_OBJECT);
+
+	signals[IP6_CONFIG_CHANGED] =
+		g_signal_new (NM_DEVICE_IP6_CONFIG_CHANGED,
+		              G_OBJECT_CLASS_TYPE (object_class),
+		              G_SIGNAL_RUN_FIRST,
+		              0, NULL, NULL,
+		              _nm_marshal_VOID__OBJECT_OBJECT,
+		              G_TYPE_NONE, 2, G_TYPE_OBJECT, G_TYPE_OBJECT);
+
 	dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
 	                                 &dbus_glib_nm_device_interface_object_info);
 
@@ -4225,6 +4437,8 @@ reason_to_string (NMDeviceStateReason reason)
 		return "infiniband-mode";
 	case NM_DEVICE_STATE_REASON_DEPENDENCY_FAILED:
 		return "dependency-failed";
+	case NM_DEVICE_STATE_REASON_BR2684_FAILED:
+		return "br2684 bridge failed";
 	default:
 		break;
 	}
@@ -4307,7 +4521,7 @@ nm_device_state_changed (NMDevice *device,
 			nm_device_deactivate (device, reason);
 		break;
 	default:
-		priv->autoconnect_inhibit = FALSE;
+		priv->autoconnect = TRUE;
 		break;
 	}
 
@@ -4627,12 +4841,11 @@ nm_device_set_dhcp_anycast_address (NMDevice *device, guint8 *addr)
 	}
 }
 
-
-void
-nm_device_clear_autoconnect_inhibit (NMDevice *device)
+gboolean
+nm_device_get_autoconnect (NMDevice *device)
 {
-	NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (device);
-	g_return_if_fail (priv);
-	priv->autoconnect_inhibit = FALSE;
+	g_return_val_if_fail (NM_IS_DEVICE (device), FALSE);
+
+	return NM_DEVICE_GET_PRIVATE (device)->autoconnect;
 }
 
diff --git a/src/nm-device.h b/src/nm-device.h
index bf76ecb5..91d9166a 100644
--- a/src/nm-device.h
+++ b/src/nm-device.h
@@ -15,7 +15,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Copyright (C) 2005 - 2011 Red Hat, Inc.
+ * Copyright (C) 2005 - 2012 Red Hat, Inc.
  * Copyright (C) 2006 - 2008 Novell, Inc.
  */
 
@@ -23,7 +23,7 @@
 #define NM_DEVICE_H
 
 #include <glib-object.h>
-#include <dbus/dbus.h>
+#include <dbus/dbus-glib.h>
 #include <netinet/in.h>
 
 #include "NetworkManager.h"
@@ -34,12 +34,15 @@
 #include "nm-dhcp6-config.h"
 #include "nm-connection.h"
 #include "nm-rfkill.h"
+#include "nm-connection-provider.h"
 
 /* Properties */
 #define NM_DEVICE_UDI              "udi"
 #define NM_DEVICE_IFACE            "interface"
 #define NM_DEVICE_IP_IFACE         "ip-interface"
 #define NM_DEVICE_DRIVER           "driver"
+#define NM_DEVICE_DRIVER_VERSION   "driver-version"
+#define NM_DEVICE_FIRMWARE_VERSION "firmware-version"
 #define NM_DEVICE_CAPABILITIES     "capabilities"
 #define NM_DEVICE_IP4_ADDRESS      "ip4-address"
 #define NM_DEVICE_IP4_CONFIG       "ip4-config"
@@ -51,13 +54,16 @@
 #define NM_DEVICE_ACTIVE_CONNECTION "active-connection"
 #define NM_DEVICE_DEVICE_TYPE      "device-type" /* ugh */
 #define NM_DEVICE_MANAGED          "managed"
+#define NM_DEVICE_AUTOCONNECT      "autoconnect"
 #define NM_DEVICE_FIRMWARE_MISSING "firmware-missing"
 #define NM_DEVICE_TYPE_DESC        "type-desc"    /* Internal only */
 #define NM_DEVICE_RFKILL_TYPE      "rfkill-type"  /* Internal only */
 #define NM_DEVICE_IFINDEX          "ifindex"      /* Internal only */
 
-/* Internal signal */
-#define NM_DEVICE_DISCONNECT_REQUEST "disconnect-request"
+/* Internal signals */
+#define NM_DEVICE_AUTH_REQUEST "auth-request"
+#define NM_DEVICE_IP4_CONFIG_CHANGED "ip4-config-changed"
+#define NM_DEVICE_IP6_CONFIG_CHANGED "ip6-config-changed"
 
 
 G_BEGIN_DECLS
@@ -169,6 +175,11 @@ typedef struct {
 } NMDeviceClass;
 
 
+typedef void (*NMDeviceAuthRequestFunc) (NMDevice *device,
+                                         DBusGMethodInvocation *context,
+                                         GError *error,
+                                         gpointer user_data);
+
 GType nm_device_get_type (void);
 
 const char *    nm_device_get_path (NMDevice *dev);
@@ -180,6 +191,8 @@ int             nm_device_get_ifindex	(NMDevice *dev);
 const char *	nm_device_get_ip_iface	(NMDevice *dev);
 int             nm_device_get_ip_ifindex(NMDevice *dev);
 const char *	nm_device_get_driver	(NMDevice *dev);
+const char *	nm_device_get_driver_version	(NMDevice *dev);
+const char *	nm_device_get_firmware_version	(NMDevice *dev);
 const char *	nm_device_get_type_desc (NMDevice *dev);
 NMDeviceType	nm_device_get_device_type	(NMDevice *dev);
 
@@ -243,7 +256,7 @@ void nm_device_set_managed (NMDevice *device,
                             gboolean managed,
                             NMDeviceStateReason reason);
 
-void nm_device_clear_autoconnect_inhibit (NMDevice *device);
+gboolean nm_device_get_autoconnect (NMDevice *device);
 
 void nm_device_handle_autoip4_event (NMDevice *self,
                                      const char *event,
@@ -261,7 +274,7 @@ gboolean nm_device_get_firmware_missing (NMDevice *self);
 
 gboolean nm_device_activate (NMDevice *device, NMActRequest *req, GError **error);
 
-gboolean nm_device_disconnect (NMDevice *device, GError **error);
+void nm_device_set_connection_provider (NMDevice *device, NMConnectionProvider *provider);
 
 G_END_DECLS
 
diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c
index ef284d80..0722981e 100644
--- a/src/nm-ip4-config.c
+++ b/src/nm-ip4-config.c
@@ -143,11 +143,17 @@ nm_ip4_config_add_address (NMIP4Config *config,
                            NMIP4Address *address)
 {
 	NMIP4ConfigPrivate *priv;
+	GSList *iter;
 
 	g_return_if_fail (NM_IS_IP4_CONFIG (config));
 	g_return_if_fail (address != NULL);
 
 	priv = NM_IP4_CONFIG_GET_PRIVATE (config);
+	for (iter = priv->addresses; iter; iter = g_slist_next (iter)) {
+		if (nm_ip4_address_compare ((NMIP4Address *) iter->data, address))
+			return;
+	}
+
 	priv->addresses = g_slist_append (priv->addresses, nm_ip4_address_dup (address));
 }
 
@@ -210,7 +216,8 @@ void nm_ip4_config_add_nameserver (NMIP4Config *config, guint32 nameserver)
 		guint32 s = g_array_index (priv->nameservers, guint32, i);
 
 		/* No dupes */
-		g_return_if_fail (nameserver != s);
+		if (nameserver == s)
+			return;
 	}
 
 	g_array_append_val (priv->nameservers, nameserver);
@@ -254,7 +261,8 @@ void nm_ip4_config_add_wins (NMIP4Config *config, guint32 wins)
 		guint32 s = g_array_index (priv->wins, guint32, i);
 
 		/* No dupes */
-		g_return_if_fail (wins != s);
+		if (wins == s)
+			return;
 	}
 
 	g_array_append_val (priv->wins, wins);
@@ -301,11 +309,17 @@ void
 nm_ip4_config_add_route (NMIP4Config *config, NMIP4Route *route)
 {
 	NMIP4ConfigPrivate *priv;
+	GSList *iter;
 
 	g_return_if_fail (NM_IS_IP4_CONFIG (config));
 	g_return_if_fail (route != NULL);
 
 	priv = NM_IP4_CONFIG_GET_PRIVATE (config);
+	for (iter = priv->routes; iter; iter = g_slist_next (iter)) {
+		if (nm_ip4_route_compare ((NMIP4Route *) iter->data, route))
+			return;
+	}
+
 	priv->routes = g_slist_append (priv->routes, nm_ip4_route_dup (route));
 }
 
@@ -743,7 +757,7 @@ nm_ip4_config_diff (NMIP4Config *a, NMIP4Config *b)
 	NMIP4ConfigCompareFlags flags = NM_IP4_COMPARE_FLAG_NONE;
 
 	if ((a && !b) || (b && !a))
-		return 0xFFFFFFFF;
+		return NM_IP4_COMPARE_FLAG_ALL;
 	if (!a && !b)
 		return NM_IP4_COMPARE_FLAG_NONE;
 
@@ -799,6 +813,68 @@ nm_ip4_config_diff (NMIP4Config *a, NMIP4Config *b)
 	return flags;
 }
 
+static inline void
+hash_u32 (GChecksum *sum, guint32 n)
+{
+	g_checksum_update (sum, (const guint8 *) &n, sizeof (n));
+}
+
+void
+nm_ip4_config_hash (NMIP4Config *config, GChecksum *sum, gboolean dns_only)
+{
+	guint32 i, n;
+	const char *s;
+
+	g_return_if_fail (config != NULL);
+	g_return_if_fail (sum != NULL);
+
+	if (dns_only == FALSE) {
+		for (i = 0; i < nm_ip4_config_get_num_addresses (config); i++) {
+			NMIP4Address *a = nm_ip4_config_get_address (config, i);
+
+			hash_u32 (sum, nm_ip4_address_get_address (a));
+			hash_u32 (sum, nm_ip4_address_get_prefix (a));
+			hash_u32 (sum, nm_ip4_address_get_gateway (a));
+		}
+
+		for (i = 0; i < nm_ip4_config_get_num_routes (config); i++) {
+			NMIP4Route *r = nm_ip4_config_get_route (config, i);
+
+			hash_u32 (sum, nm_ip4_route_get_dest (r));
+			hash_u32 (sum, nm_ip4_route_get_prefix (r));
+			hash_u32 (sum, nm_ip4_route_get_next_hop (r));
+			hash_u32 (sum, nm_ip4_route_get_metric (r));
+		}
+
+		n = nm_ip4_config_get_ptp_address (config);
+		if (n)
+			hash_u32 (sum, n);
+
+		for (i = 0; i < nm_ip4_config_get_num_nis_servers (config); i++)
+			hash_u32 (sum, nm_ip4_config_get_nis_server (config, i));
+
+		s = nm_ip4_config_get_nis_domain (config);
+		if (s)
+			g_checksum_update (sum, (const guint8 *) s, strlen (s));
+	}
+
+	for (i = 0; i < nm_ip4_config_get_num_nameservers (config); i++)
+		hash_u32 (sum, nm_ip4_config_get_nameserver (config, i));
+
+	for (i = 0; i < nm_ip4_config_get_num_wins (config); i++)
+		hash_u32 (sum, nm_ip4_config_get_wins (config, i));
+
+	for (i = 0; i < nm_ip4_config_get_num_domains (config); i++) {
+		s = nm_ip4_config_get_domain (config, i);
+		g_checksum_update (sum, (const guint8 *) s, strlen (s));
+	}
+
+	for (i = 0; i < nm_ip4_config_get_num_searches (config); i++) {
+		s = nm_ip4_config_get_search (config, i);
+		g_checksum_update (sum, (const guint8 *) s, strlen (s));
+	}
+}
+
 static void
 nm_ip4_config_init (NMIP4Config *config)
 {
diff --git a/src/nm-ip4-config.h b/src/nm-ip4-config.h
index 2d27acff..6b86bc47 100644
--- a/src/nm-ip4-config.h
+++ b/src/nm-ip4-config.h
@@ -139,4 +139,6 @@ typedef enum {
 /* Returns a bitfield representing how the two IP4 configs differ */
 NMIP4ConfigCompareFlags nm_ip4_config_diff (NMIP4Config *a, NMIP4Config *b);
 
+void nm_ip4_config_hash (NMIP4Config *config, GChecksum *sum, gboolean dns_only);
+
 #endif /* NM_IP4_CONFIG_H */
diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c
index f06e4069..511cbf46 100644
--- a/src/nm-ip6-config.c
+++ b/src/nm-ip6-config.c
@@ -53,6 +53,8 @@ typedef struct {
 	GPtrArray *domains;
 	GPtrArray *searches;
 
+	gboolean gateway_set;
+	struct in6_addr gateway;
 	GSList *routes;
 
 	gboolean never_default;
@@ -138,11 +140,17 @@ nm_ip6_config_add_address (NMIP6Config *config,
                            NMIP6Address *address)
 {
 	NMIP6ConfigPrivate *priv;
+	GSList *iter;
 
 	g_return_if_fail (NM_IS_IP6_CONFIG (config));
 	g_return_if_fail (address != NULL);
 
 	priv = NM_IP6_CONFIG_GET_PRIVATE (config);
+	for (iter = priv->addresses; iter; iter = g_slist_next (iter)) {
+		if (nm_ip6_address_compare ((NMIP6Address *) iter->data, address))
+			return;
+	}
+
 	priv->addresses = g_slist_append (priv->addresses, nm_ip6_address_dup (address));
 }
 
@@ -205,8 +213,10 @@ void nm_ip6_config_add_nameserver (NMIP6Config *config, const struct in6_addr *n
 
 	/* No dupes */
 	nameservers = (struct in6_addr *)priv->nameservers->data;
-	for (i = 0; i < priv->nameservers->len; i++)
-		g_return_if_fail (IN6_ARE_ADDR_EQUAL (nameserver, &nameservers[i]) == FALSE);
+	for (i = 0; i < priv->nameservers->len; i++) {
+		if (IN6_ARE_ADDR_EQUAL (nameserver, &nameservers[i]))
+			return;
+	}
 
 	g_array_append_val (priv->nameservers, *nameserver);
 }
@@ -237,6 +247,30 @@ void nm_ip6_config_reset_nameservers (NMIP6Config *config)
 }
 
 void
+nm_ip6_config_set_gateway (NMIP6Config *config, const struct in6_addr *gateway)
+{
+	NMIP6ConfigPrivate *priv;
+
+	g_return_if_fail (NM_IS_IP6_CONFIG (config));
+
+	priv = NM_IP6_CONFIG_GET_PRIVATE (config);
+	if (gateway)
+		memcpy (&priv->gateway, gateway, sizeof (priv->gateway));
+	priv->gateway_set = !!gateway;
+}
+
+const struct in6_addr *
+nm_ip6_config_get_gateway (NMIP6Config *config)
+{
+	NMIP6ConfigPrivate *priv;
+
+	g_return_val_if_fail (NM_IS_IP6_CONFIG (config), NULL);
+
+	priv = NM_IP6_CONFIG_GET_PRIVATE (config);
+	return priv->gateway_set ? &priv->gateway : NULL;
+}
+
+void
 nm_ip6_config_take_route (NMIP6Config *config, NMIP6Route *route)
 {
 	NMIP6ConfigPrivate *priv;
@@ -252,11 +286,17 @@ void
 nm_ip6_config_add_route (NMIP6Config *config, NMIP6Route *route)
 {
 	NMIP6ConfigPrivate *priv;
+	GSList *iter;
 
 	g_return_if_fail (NM_IS_IP6_CONFIG (config));
 	g_return_if_fail (route != NULL);
 
 	priv = NM_IP6_CONFIG_GET_PRIVATE (config);
+	for (iter = priv->routes; iter; iter = g_slist_next (iter)) {
+		if (nm_ip6_route_compare ((NMIP6Route *) iter->data, route))
+			return;
+	}
+
 	priv->routes = g_slist_append (priv->routes, nm_ip6_route_dup (route));
 }
 
@@ -598,7 +638,7 @@ nm_ip6_config_diff (NMIP6Config *a, NMIP6Config *b)
 	NMIP6ConfigCompareFlags flags = NM_IP6_COMPARE_FLAG_NONE;
 
 	if ((a && !b) || (b && !a))
-		return 0xFFFFFFFF;
+		return NM_IP6_COMPARE_FLAG_ALL;
 	if (!a && !b)
 		return NM_IP6_COMPARE_FLAG_NONE;
 
@@ -637,6 +677,65 @@ nm_ip6_config_diff (NMIP6Config *a, NMIP6Config *b)
 	return flags;
 }
 
+static inline void
+hash_u32 (GChecksum *sum, guint32 n)
+{
+	g_checksum_update (sum, (const guint8 *) &n, sizeof (n));
+}
+
+static inline void
+hash_in6addr (GChecksum *sum, const struct in6_addr *a)
+{
+	g_checksum_update (sum, (const guint8 *) a, sizeof (*a));
+}
+
+void
+nm_ip6_config_hash (NMIP6Config *config, GChecksum *sum, gboolean dns_only)
+{
+	guint32 i;
+	const struct in6_addr *in6a;
+	const char *s;
+
+	g_return_if_fail (config != NULL);
+	g_return_if_fail (sum != NULL);
+
+	if (dns_only == FALSE) {
+		for (i = 0; i < nm_ip6_config_get_num_addresses (config); i++) {
+			NMIP6Address *a = nm_ip6_config_get_address (config, i);
+
+			hash_in6addr (sum, nm_ip6_address_get_address (a));
+			hash_u32 (sum, nm_ip6_address_get_prefix (a));
+			hash_in6addr (sum, nm_ip6_address_get_gateway (a));
+		}
+
+		for (i = 0; i < nm_ip6_config_get_num_routes (config); i++) {
+			NMIP6Route *r = nm_ip6_config_get_route (config, i);
+
+			hash_in6addr (sum, nm_ip6_route_get_dest (r));
+			hash_u32 (sum, nm_ip6_route_get_prefix (r));
+			hash_in6addr (sum, nm_ip6_route_get_next_hop (r));
+			hash_u32 (sum, nm_ip6_route_get_metric (r));
+		}
+
+		in6a = nm_ip6_config_get_ptp_address (config);
+		if (in6a)
+			hash_in6addr (sum, in6a);
+	}
+
+	for (i = 0; i < nm_ip6_config_get_num_nameservers (config); i++)
+		hash_in6addr (sum, nm_ip6_config_get_nameserver (config, i));
+
+	for (i = 0; i < nm_ip6_config_get_num_domains (config); i++) {
+		s = nm_ip6_config_get_domain (config, i);
+		g_checksum_update (sum, (const guint8 *) s, strlen (s));
+	}
+
+	for (i = 0; i < nm_ip6_config_get_num_searches (config); i++) {
+		s = nm_ip6_config_get_search (config, i);
+		g_checksum_update (sum, (const guint8 *) s, strlen (s));
+	}
+}
+
 static void
 nm_ip6_config_init (NMIP6Config *config)
 {
@@ -645,6 +744,7 @@ nm_ip6_config_init (NMIP6Config *config)
 	priv->nameservers = g_array_new (FALSE, TRUE, sizeof (struct in6_addr));
 	priv->domains = g_ptr_array_sized_new (3);
 	priv->searches = g_ptr_array_sized_new (3);
+	priv->gateway_set = FALSE;
 }
 
 static void
diff --git a/src/nm-ip6-config.h b/src/nm-ip6-config.h
index 1e75a121..2e8ae18f 100644
--- a/src/nm-ip6-config.h
+++ b/src/nm-ip6-config.h
@@ -67,6 +67,9 @@ const struct in6_addr *nm_ip6_config_get_nameserver      (NMIP6Config *config, g
 guint32       nm_ip6_config_get_num_nameservers (NMIP6Config *config);
 void          nm_ip6_config_reset_nameservers   (NMIP6Config *config);
 
+void                   nm_ip6_config_set_gateway  (NMIP6Config *config, const struct in6_addr *gateway);
+const struct in6_addr *nm_ip6_config_get_gateway  (NMIP6Config *config);
+
 void          nm_ip6_config_take_route          (NMIP6Config *config, NMIP6Route *route);
 void          nm_ip6_config_add_route           (NMIP6Config *config, NMIP6Route *route);
 void          nm_ip6_config_replace_route       (NMIP6Config *config, guint32 i, NMIP6Route *new_route);
@@ -117,4 +120,6 @@ typedef enum {
 /* Returns a bitfield representing how the two IP6 configs differ */
 NMIP6ConfigCompareFlags nm_ip6_config_diff (NMIP6Config *a, NMIP6Config *b);
 
+void nm_ip6_config_hash (NMIP6Config *config, GChecksum *sum, gboolean dns_only);
+
 #endif /* NM_IP6_CONFIG_H */
diff --git a/src/nm-manager.c b/src/nm-manager.c
index 7c812bdc..f2816cd7 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
@@ -48,6 +48,7 @@
 #include "nm-device-infiniband.h"
 #include "nm-device-bond.h"
 #include "nm-device-vlan.h"
+#include "nm-device-adsl.h"
 #include "nm-system.h"
 #include "nm-properties-changed-signal.h"
 #include "nm-setting-bluetooth.h"
@@ -127,18 +128,16 @@ static gboolean impl_manager_set_logging (NMManager *manager,
 #include "nm-manager-glue.h"
 
 static void bluez_manager_bdaddr_added_cb (NMBluezManager *bluez_mgr,
-					   const char *bdaddr,
-					   const char *name,
-					   const char *object_path,
-					   guint32 uuids,
-					   NMManager *manager);
+                                           const char *bdaddr,
+                                           const char *name,
+                                           const char *object_path,
+                                           guint32 uuids,
+                                           NMManager *manager);
 
 static void bluez_manager_bdaddr_removed_cb (NMBluezManager *bluez_mgr,
-					     const char *bdaddr,
-					     const char *object_path,
-					     gpointer user_data);
-
-static void bluez_manager_resync_devices (NMManager *self);
+                                             const char *bdaddr,
+                                             const char *object_path,
+                                             gpointer user_data);
 
 static void add_device (NMManager *self, NMDevice *device);
 
@@ -356,19 +355,20 @@ manager_sleeping (NMManager *self)
 static void
 vpn_manager_connection_activated_cb (NMVPNManager *manager,
                                      NMVPNConnection *vpn,
-                                     NMVPNConnectionState state,
-                                     NMVPNConnectionStateReason reason,
                                      gpointer user_data)
 {
+	NMConnection *connection = nm_vpn_connection_get_connection (vpn);
+
 	/* Update timestamp for the VPN connection */
-	nm_settings_connection_update_timestamp (NM_SETTINGS_CONNECTION (nm_vpn_connection_get_connection (vpn)),
+	nm_settings_connection_update_timestamp (NM_SETTINGS_CONNECTION (connection),
 	                                         (guint64) time (NULL), TRUE);
 }
 
 static void
 vpn_manager_connection_deactivated_cb (NMVPNManager *manager,
                                        NMVPNConnection *vpn,
-                                       NMVPNConnectionState state,
+                                       NMVPNConnectionState new_state,
+                                       NMVPNConnectionState old_state,
                                        NMVPNConnectionStateReason reason,
                                        gpointer user_data)
 {
@@ -1160,8 +1160,6 @@ connection_added (NMSettings *settings,
                   NMSettingsConnection *connection,
                   NMManager *manager)
 {
-	bluez_manager_resync_devices (manager);
-
 	if (connection_needs_virtual_device (NM_CONNECTION (connection)))
 		system_create_virtual_device (manager, NM_CONNECTION (connection));
 }
@@ -1171,8 +1169,6 @@ connection_changed (NMSettings *settings,
                      NMSettingsConnection *connection,
                      NMManager *manager)
 {
-	bluez_manager_resync_devices (manager);
-
 	/* FIXME: Some virtual devices may need to be updated in the future. */
 }
 
@@ -1181,8 +1177,6 @@ connection_removed (NMSettings *settings,
                     NMSettingsConnection *connection,
                     NMManager *manager)
 {
-	bluez_manager_resync_devices (manager);
-
 	/*
 	 * Do not delete existing virtual devices to keep connectivity up.
 	 * Virtual devices are reused when NetworkManager is restarted.
@@ -1539,111 +1533,96 @@ manager_modem_enabled_changed (NMModem *device, gpointer user_data)
 	nm_manager_rfkill_update (NM_MANAGER (user_data), RFKILL_TYPE_WWAN);
 }
 
-static GError *
-deactivate_disconnect_check_error (GError *auth_error,
-                                   NMAuthCallResult result,
-                                   const char *detail)
-{
-	if (auth_error) {
-		nm_log_dbg (LOGD_CORE, "%s request failed: %s", detail, auth_error->message);
-		return g_error_new (NM_MANAGER_ERROR,
-		                    NM_MANAGER_ERROR_PERMISSION_DENIED,
-		                    "%s request failed: %s",
-		                    detail, auth_error->message);
-	} else if (result != NM_AUTH_CALL_RESULT_YES) {
-		return g_error_new (NM_MANAGER_ERROR,
-		                    NM_MANAGER_ERROR_PERMISSION_DENIED,
-		                    "Not authorized to %s connections",
-		                    detail);
-	}
-	return NULL;
-}
-
 static void
-disconnect_net_auth_done_cb (NMAuthChain *chain,
-                             GError *auth_error,
-                             DBusGMethodInvocation *context,
-                             gpointer user_data)
+device_auth_done_cb (NMAuthChain *chain,
+                     GError *auth_error,
+                     DBusGMethodInvocation *context,
+                     gpointer user_data)
 {
 	NMManager *self = NM_MANAGER (user_data);
 	NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
 	GError *error = NULL;
 	NMAuthCallResult result;
 	NMDevice *device;
+	const char *permission;
+	NMDeviceAuthRequestFunc callback;
 
 	priv->auth_chains = g_slist_remove (priv->auth_chains, chain);
 
-	result = GPOINTER_TO_UINT (nm_auth_chain_get_data (chain, NM_AUTH_PERMISSION_NETWORK_CONTROL));
-	error = deactivate_disconnect_check_error (auth_error, result, "Disconnect");
-	if (!error) {
-		device = nm_auth_chain_get_data (chain, "device");
-		if (!nm_device_disconnect (device, &error))
-			g_assert (error);
+	permission = nm_auth_chain_get_data (chain, "requested-permission");
+	g_assert (permission);
+	callback = nm_auth_chain_get_data (chain, "callback");
+	g_assert (callback);
+	device = nm_auth_chain_get_data (chain, "device");
+	g_assert (device);
+
+	result = GPOINTER_TO_UINT (nm_auth_chain_get_data (chain, permission));
+	if (auth_error) {
+		/* translate the auth error into a manager permission denied error */
+		nm_log_dbg (LOGD_CORE, "%s request failed: %s", permission, auth_error->message);
+		error = g_error_new (NM_MANAGER_ERROR,
+		                     NM_MANAGER_ERROR_PERMISSION_DENIED,
+		                     "%s request failed: %s",
+		                     permission, auth_error->message);
+	} else if (result != NM_AUTH_CALL_RESULT_YES) {
+		nm_log_dbg (LOGD_CORE, "%s request failed: not authorized", permission);
+		error = g_error_new (NM_MANAGER_ERROR,
+		                     NM_MANAGER_ERROR_PERMISSION_DENIED,
+		                     "%s request failed: not authorized",
+		                     permission);
 	}
 
-	if (error)
-		dbus_g_method_return_error (context, error);
-	else
-		dbus_g_method_return (context);
+	g_assert (error || (result == NM_AUTH_CALL_RESULT_YES));
+
+	callback (device,
+	          context,
+	          error,
+	          nm_auth_chain_get_data (chain, "user-data"));
 
 	g_clear_error (&error);
 	nm_auth_chain_unref (chain);
 }
 
 static void
-manager_device_disconnect_request (NMDevice *device,
-                                   DBusGMethodInvocation *context,
-                                   NMManager *self)
+device_auth_request_cb (NMDevice *device,
+                        DBusGMethodInvocation *context,
+                        const char *permission,
+                        gboolean allow_interaction,
+                        NMDeviceAuthRequestFunc callback,
+                        gpointer user_data,
+                        NMManager *self)
 {
 	NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
-	NMActRequest *req;
 	GError *error = NULL;
 	gulong sender_uid = G_MAXULONG;
 	char *error_desc = NULL;
+	NMAuthChain *chain;
 
-	req = nm_device_get_act_request (device);
-	if (!req) {
-		error = g_error_new_literal (NM_MANAGER_ERROR,
-		                             NM_MANAGER_ERROR_UNKNOWN_CONNECTION,
-		                             "This device is not active");
-		dbus_g_method_return_error (context, error);
-		g_error_free (error);
-		return;
-	}
-
-	/* Need to check the caller's permissions and stuff before we can
-	 * deactivate the connection.
-	 */
-	if (!nm_auth_get_caller_uid (context,
-		                         priv->dbus_mgr,
-	                             &sender_uid,
-	                             &error_desc)) {
+	/* Get the caller's UID for the root check */
+	if (!nm_auth_get_caller_uid (context, priv->dbus_mgr, &sender_uid, &error_desc)) {
 		error = g_error_new_literal (NM_MANAGER_ERROR,
 		                             NM_MANAGER_ERROR_PERMISSION_DENIED,
 		                             error_desc);
-		dbus_g_method_return_error (context, error);
+		callback (device, context, error, user_data);
 		g_error_free (error);
 		g_free (error_desc);
 		return;
 	}
 
 	/* Yay for root */
-	if (0 == sender_uid) {
-		if (!nm_device_disconnect (device, &error)) {
-			dbus_g_method_return_error (context, error);
-			g_clear_error (&error);
-		} else
-			dbus_g_method_return (context);
-	} else {
-		NMAuthChain *chain;
-
-		/* Otherwise validate the user request */
-		chain = nm_auth_chain_new (context, NULL, disconnect_net_auth_done_cb, self);
+	if (0 == sender_uid)
+		callback (device, context, NULL, user_data);
+	else {
+		/* Otherwise validate the non-root request */
+		chain = nm_auth_chain_new (context, NULL, device_auth_done_cb, self);
 		g_assert (chain);
 		priv->auth_chains = g_slist_append (priv->auth_chains, chain);
 
 		nm_auth_chain_set_data (chain, "device", g_object_ref (device), g_object_unref);
-		nm_auth_chain_add_call (chain, NM_AUTH_PERMISSION_NETWORK_CONTROL, TRUE);
+		nm_auth_chain_set_data (chain, "requested-permission", g_strdup (permission), g_free);
+		nm_auth_chain_set_data (chain, "callback", callback, NULL);
+		nm_auth_chain_set_data (chain, "user-data", user_data, NULL);
+		nm_auth_chain_add_call (chain, permission, allow_interaction);
 	}
 }
 
@@ -1678,15 +1657,17 @@ add_device (NMManager *self, NMDevice *device)
 		return;
 	}
 
+	nm_device_set_connection_provider (device, NM_CONNECTION_PROVIDER (priv->settings));
+
 	priv->devices = g_slist_append (priv->devices, device);
 
 	g_signal_connect (device, "state-changed",
 					  G_CALLBACK (manager_device_state_changed),
 					  self);
 
-	g_signal_connect (device, NM_DEVICE_DISCONNECT_REQUEST,
-					  G_CALLBACK (manager_device_disconnect_request),
-					  self);
+	g_signal_connect (device, NM_DEVICE_AUTH_REQUEST,
+	                  G_CALLBACK (device_auth_request_cb),
+	                  self);
 
 	if (devtype == NM_DEVICE_TYPE_WIFI) {
 		/* Attach to the access-point-added signal so that the manager can fill
@@ -1791,120 +1772,6 @@ add_device (NMManager *self, NMDevice *device)
 	}
 }
 
-static gboolean
-bdaddr_matches_connection (NMSettingBluetooth *s_bt, const char *bdaddr)
-{
-	const GByteArray *arr;
-	gboolean ret = FALSE;
-
-	arr = nm_setting_bluetooth_get_bdaddr (s_bt);
-
-	if (   arr != NULL 
-	       && arr->len == ETH_ALEN) {
-		char *str;
-
-		str = g_strdup_printf ("%02X:%02X:%02X:%02X:%02X:%02X",
-				       arr->data[0],
-				       arr->data[1],
-				       arr->data[2],
-				       arr->data[3],
-				       arr->data[4],
-				       arr->data[5]);
-		ret = g_str_equal (str, bdaddr);
-		g_free (str);
-	}
-
-	return ret;
-}
-
-static NMConnection *
-bluez_manager_find_connection (NMManager *manager,
-                               const char *bdaddr,
-                               guint32 capabilities)
-{
-	NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (manager);
-	NMConnection *found = NULL;
-	GSList *connections, *l;
-
-	connections = nm_settings_get_connections (priv->settings);
-
-	for (l = connections; l != NULL; l = l->next) {
-		NMConnection *candidate = NM_CONNECTION (l->data);
-		NMSettingConnection *s_con;
-		NMSettingBluetooth *s_bt;
-		const char *con_type;
-		const char *bt_type;
-
-		s_con = nm_connection_get_setting_connection (candidate);
-		g_assert (s_con);
-		con_type = nm_setting_connection_get_connection_type (s_con);
-		g_assert (con_type);
-		if (!g_str_equal (con_type, NM_SETTING_BLUETOOTH_SETTING_NAME))
-			continue;
-
-		s_bt = nm_connection_get_setting_bluetooth (candidate);
-		if (!s_bt)
-			continue;
-
-		if (!bdaddr_matches_connection (s_bt, bdaddr))
-			continue;
-
-		bt_type = nm_setting_bluetooth_get_connection_type (s_bt);
-		if (   g_str_equal (bt_type, NM_SETTING_BLUETOOTH_TYPE_DUN)
-		    && !(capabilities & NM_BT_CAPABILITY_DUN))
-		    	continue;
-		if (   g_str_equal (bt_type, NM_SETTING_BLUETOOTH_TYPE_PANU)
-		    && !(capabilities & NM_BT_CAPABILITY_NAP))
-		    	continue;
-
-		found = candidate;
-		break;
-	}
-
-	g_slist_free (connections);
-	return found;
-}
-
-static void
-bluez_manager_resync_devices (NMManager *self)
-{
-	NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
-	GSList *iter, *gone = NULL, *keep = NULL;
-
-	/* Remove devices from the device list that don't have a corresponding connection */
-	for (iter = priv->devices; iter; iter = g_slist_next (iter)) {
-		NMDevice *candidate = NM_DEVICE (iter->data);
-		guint32 uuids;
-		const char *bdaddr;
-
-		if (nm_device_get_device_type (candidate) == NM_DEVICE_TYPE_BT) {
-			uuids = nm_device_bt_get_capabilities (NM_DEVICE_BT (candidate));
-			bdaddr = nm_device_bt_get_hw_address (NM_DEVICE_BT (candidate));
-
-			if (bluez_manager_find_connection (self, bdaddr, uuids))
-				keep = g_slist_prepend (keep, candidate);
-			else
-				gone = g_slist_prepend (gone, candidate);
-		} else
-			keep = g_slist_prepend (keep, candidate);
-	}
-
-	/* Only touch the device list if anything actually changed */
-	if (g_slist_length (gone)) {
-		g_slist_free (priv->devices);
-		priv->devices = keep;
-
-		while (g_slist_length (gone))
-			gone = remove_one_device (self, gone, NM_DEVICE (gone->data), FALSE);
-	} else {
-		g_slist_free (keep);
-		g_slist_free (gone);
-	}
-
-	/* Now look for devices without connections */
-	nm_bluez_manager_query_devices (priv->bluez_mgr);
-}
-
 static void
 bluez_manager_bdaddr_added_cb (NMBluezManager *bluez_mgr,
                                const char *bdaddr,
@@ -1926,12 +1793,6 @@ bluez_manager_bdaddr_added_cb (NMBluezManager *bluez_mgr,
 	if (nm_manager_get_device_by_udi (manager, object_path))
 		return;
 
-	if (has_dun == FALSE && has_nap == FALSE)
-		return;
-
-	if (!bluez_manager_find_connection (manager, bdaddr, capabilities))
-		return;
-
 	device = nm_device_bt_new (object_path, bdaddr, name, capabilities, FALSE);
 	if (device) {
 		nm_log_info (LOGD_HW, "BT device %s (%s) added (%s%s%s)",
@@ -1953,19 +1814,15 @@ bluez_manager_bdaddr_removed_cb (NMBluezManager *bluez_mgr,
 {
 	NMManager *self = NM_MANAGER (user_data);
 	NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
-	GSList *iter;
+	NMDevice *device;
 
 	g_return_if_fail (bdaddr != NULL);
 	g_return_if_fail (object_path != NULL);
 
-	for (iter = priv->devices; iter; iter = iter->next) {
-		NMDevice *device = NM_DEVICE (iter->data);
-
-		if (!strcmp (nm_device_get_udi (device), object_path)) {
-			nm_log_info (LOGD_HW, "BT device %s removed", bdaddr);
-			priv->devices = remove_one_device (self, priv->devices, device, FALSE);
-			break;
-		}
+	device = nm_manager_get_device_by_udi (self, object_path);
+	if (device) {
+		nm_log_info (LOGD_HW, "BT device %s removed", bdaddr);
+		priv->devices = remove_one_device (self, priv->devices, device, FALSE);
 	}
 }
 
@@ -2155,6 +2012,12 @@ is_vlan (int ifindex)
 	return (nm_system_get_iface_type (ifindex, NULL) == NM_IFACE_TYPE_VLAN);
 }
 
+static gboolean
+is_adsl (GUdevDevice *device)
+{
+	return (g_strcmp0 (g_udev_device_get_subsystem (device), "atm") == 0);
+}
+
 static void
 udev_device_added_cb (NMUdevManager *udev_mgr,
                       GUdevDevice *udev_device,
@@ -2174,14 +2037,22 @@ udev_device_added_cb (NMUdevManager *udev_mgr,
 	g_return_if_fail (iface != NULL);
 	g_return_if_fail (sysfs_path != NULL);
 	g_return_if_fail (driver != NULL);
-	g_return_if_fail (ifindex >= 0);
 
-	device = find_device_by_ifindex (self, ifindex);
-	if (device) {
-		/* If it's a virtual device we may need to update its UDI */
-		if (nm_system_get_iface_type (ifindex, iface) != NM_IFACE_TYPE_UNSPEC)
-			g_object_set (G_OBJECT (device), NM_DEVICE_UDI, sysfs_path, NULL);
-		return;
+	/* Most devices will have an ifindex here */
+	if (ifindex > 0) {
+		device = find_device_by_ifindex (self, ifindex);
+		if (device) {
+			/* If it's a virtual device we may need to update its UDI */
+			if (nm_system_get_iface_type (ifindex, iface) != NM_IFACE_TYPE_UNSPEC)
+				g_object_set (G_OBJECT (device), NM_DEVICE_UDI, sysfs_path, NULL);
+			return;
+		}
+	} else {
+		/* But ATM/ADSL devices don't */
+		g_return_if_fail (is_adsl (udev_device));
+		device = find_device_by_ip_iface (self, iface);
+		if (device)
+			return;
 	}
 
 	/* Try registered device factories */
@@ -2233,7 +2104,9 @@ udev_device_added_cb (NMUdevManager *udev_mgr,
 				}
 			} else
 				nm_log_err (LOGD_HW, "(%s): failed to get VLAN parent ifindex", iface);
-		} else
+		} else if (is_adsl (udev_device))
+			device = nm_device_adsl_new (sysfs_path, iface, driver);
+		else
 			device = nm_device_ethernet_new (sysfs_path, iface, driver);
 	}
 
@@ -3098,8 +2971,18 @@ deactivate_net_auth_done_cb (NMAuthChain *chain,
 	priv->auth_chains = g_slist_remove (priv->auth_chains, chain);
 
 	result = GPOINTER_TO_UINT (nm_auth_chain_get_data (chain, NM_AUTH_PERMISSION_NETWORK_CONTROL));
-	error = deactivate_disconnect_check_error (auth_error, result, "Deactivate");
-	if (!error) {
+	if (auth_error) {
+		nm_log_dbg (LOGD_CORE, "Disconnect request failed: %s", auth_error->message);
+		error = g_error_new (NM_MANAGER_ERROR,
+		                     NM_MANAGER_ERROR_PERMISSION_DENIED,
+		                     "Deactivate request failed: %s",
+		                     auth_error->message);
+	} else if (result != NM_AUTH_CALL_RESULT_YES) {
+		error = g_error_new_literal (NM_MANAGER_ERROR,
+		                             NM_MANAGER_ERROR_PERMISSION_DENIED,
+		                             "Not authorized to deactivate connections");
+	} else {
+		/* success; deactivation allowed */
 		active_path = nm_auth_chain_get_data (chain, "path");
 		if (!nm_manager_deactivate_connection (self,
 		                                       active_path,
@@ -3246,15 +3129,13 @@ do_sleep_wake (NMManager *self)
 					nm_device_set_enabled (device, enabled);
 			}
 
-			nm_device_clear_autoconnect_inhibit (device);
+			g_object_set (G_OBJECT (device), NM_DEVICE_AUTOCONNECT, TRUE, NULL);
+
 			if (nm_device_spec_match_list (device, unmanaged_specs))
 				nm_device_set_managed (device, FALSE, NM_DEVICE_STATE_REASON_NOW_UNMANAGED);
 			else
 				nm_device_set_managed (device, TRUE, NM_DEVICE_STATE_REASON_NOW_MANAGED);
 		}
-
-		/* Ask for new bluetooth devices */
-		bluez_manager_resync_devices (self);
 	}
 
 	nm_manager_update_state (self);
@@ -3671,7 +3552,7 @@ nm_manager_start (NMManager *self)
 	system_hostname_changed_cb (priv->settings, NULL, self);
 
 	nm_udev_manager_query_devices (priv->udev_mgr);
-	bluez_manager_resync_devices (self);
+	nm_bluez_manager_query_devices (priv->bluez_mgr);
 
 	/* Query devices again to ensure that we catch all virtual interfaces (like
 	 * VLANs) that require a parent.  If during the first pass the VLAN
@@ -3766,7 +3647,8 @@ firmware_dir_changed (GFileMonitor *monitor,
 	}
 }
 
-#define PERM_DENIED_ERROR "org.freedesktop.NetworkManager.PermissionDenied"
+#define NM_PERM_DENIED_ERROR "org.freedesktop.NetworkManager.PermissionDenied"
+#define DEV_PERM_DENIED_ERROR "org.freedesktop.NetworkManager.Device.PermissionDenied"
 
 static void
 prop_set_auth_done_cb (NMAuthChain *chain,
@@ -3779,9 +3661,13 @@ prop_set_auth_done_cb (NMAuthChain *chain,
 	DBusGConnection *bus;
 	DBusConnection *dbus_connection;
 	NMAuthCallResult result;
-	DBusMessage *reply, *request;
-	const char *permission, *prop;
+	DBusMessage *reply = NULL, *request;
+	GError *ret_error;
+	const char *permission, *prop, *objpath;
 	gboolean set_enabled = TRUE;
+	gboolean is_device = FALSE;
+	size_t objpath_len;
+	size_t devpath_len;
 
 	priv->auth_chains = g_slist_remove (priv->auth_chains, chain);
 
@@ -3789,9 +3675,16 @@ prop_set_auth_done_cb (NMAuthChain *chain,
 	permission = nm_auth_chain_get_data (chain, "permission");
 	prop = nm_auth_chain_get_data (chain, "prop");
 	set_enabled = GPOINTER_TO_UINT (nm_auth_chain_get_data (chain, "enabled"));
+	objpath = nm_auth_chain_get_data (chain, "objectpath");
+
+	objpath_len = strlen (objpath);
+	devpath_len = strlen (NM_DBUS_PATH "/Devices");
+	if (   strncmp (objpath, NM_DBUS_PATH "/Devices", devpath_len) == 0
+	    && objpath_len > devpath_len)
+		is_device = TRUE;
 
 	if (error) {
-		reply = dbus_message_new_error (request, PERM_DENIED_ERROR,
+		reply = dbus_message_new_error (request, is_device ? DEV_PERM_DENIED_ERROR : NM_PERM_DENIED_ERROR,
 		                                "Not authorized to perform this operation");
 	} else {
 		/* Caller has had a chance to obtain authorization, so we only need to
@@ -3799,11 +3692,27 @@ prop_set_auth_done_cb (NMAuthChain *chain,
 		 */
 		result = GPOINTER_TO_UINT (nm_auth_chain_get_data (chain, permission));
 		if (result != NM_AUTH_CALL_RESULT_YES) {
-			reply = dbus_message_new_error (request, PERM_DENIED_ERROR,
-				                            "Not authorized to perform this operation");
+			reply = dbus_message_new_error (request, is_device ? DEV_PERM_DENIED_ERROR : NM_PERM_DENIED_ERROR,
+			                                "Not authorized to perform this operation");
 		} else {
-			g_object_set (self, prop, set_enabled, NULL);
-			reply = dbus_message_new_method_return (request);
+			if (is_device) {
+				/* Find the device */
+				NMDevice *device = nm_manager_get_device_by_path (self, objpath);
+				if (device) {
+					g_object_set (device, prop, set_enabled, NULL);
+					reply = dbus_message_new_method_return (request);
+				}
+				else {
+					ret_error = g_error_new_literal (NM_MANAGER_ERROR,
+					                                 NM_MANAGER_ERROR_UNKNOWN_DEVICE,
+					                                 "Can't find device for this operation");
+					dbus_g_method_return_error (context, ret_error);
+					g_error_free (ret_error);
+				}
+			} else {
+				g_object_set (self, prop, set_enabled, NULL);
+				reply = dbus_message_new_method_return (request);
+			}
 		}
 	}
 
@@ -3831,6 +3740,7 @@ prop_filter (DBusConnection *connection,
 	const char *propiface = NULL;
 	const char *propname = NULL;
 	const char *sender = NULL;
+	const char *objpath = NULL;
 	const char *glib_propname = NULL, *permission = NULL;
 	DBusError dbus_error;
 	gulong uid = G_MAXULONG;
@@ -3852,7 +3762,7 @@ prop_filter (DBusConnection *connection,
 	if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_STRING)
 		return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
 	dbus_message_iter_get_basic (&iter, &propiface);
-	if (!propiface || strcmp (propiface, NM_DBUS_INTERFACE))
+	if (!propiface || (strcmp (propiface, NM_DBUS_INTERFACE) && strcmp (propiface, NM_DBUS_INTERFACE_DEVICE)))
 		return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
 	dbus_message_iter_next (&iter);
 
@@ -3871,6 +3781,9 @@ prop_filter (DBusConnection *connection,
 	} else if (!strcmp (propname, "WimaxEnabled")) {
 		glib_propname = NM_MANAGER_WIMAX_ENABLED;
 		permission = NM_AUTH_PERMISSION_ENABLE_DISABLE_WIMAX;
+	} else if (!strcmp (propname, "Autoconnect")) {
+		glib_propname = NM_DEVICE_AUTOCONNECT;
+		permission = NM_AUTH_PERMISSION_NETWORK_CONTROL;
 	} else
 		return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
 
@@ -3884,15 +3797,22 @@ prop_filter (DBusConnection *connection,
 
 	sender = dbus_message_get_sender (message);
 	if (!sender) {
-		reply = dbus_message_new_error (message, PERM_DENIED_ERROR,
+		reply = dbus_message_new_error (message, NM_PERM_DENIED_ERROR,
 		                                "Could not determine D-Bus requestor");
 		goto out;
 	}
 
+	objpath = dbus_message_get_path (message);
+	if (!objpath) {
+		reply = dbus_message_new_error (message, NM_PERM_DENIED_ERROR,
+		                                "Could not determine D-Bus object path");
+		goto out;
+	}
+
 	dbus_error_init (&dbus_error);
 	uid = dbus_bus_get_unix_user (connection, sender, &dbus_error);
 	if (dbus_error_is_set (&dbus_error)) {
-		reply = dbus_message_new_error (message, PERM_DENIED_ERROR,
+		reply = dbus_message_new_error (message, NM_PERM_DENIED_ERROR,
 		                                "Could not determine the user ID of the requestor");
 		dbus_error_free (&dbus_error);
 		goto out;
@@ -3907,6 +3827,7 @@ prop_filter (DBusConnection *connection,
 		nm_auth_chain_set_data (chain, "permission", g_strdup (permission), g_free);
 		nm_auth_chain_set_data (chain, "enabled", GUINT_TO_POINTER (set_enabled), NULL);
 		nm_auth_chain_set_data (chain, "message", dbus_message_ref (message), (GDestroyNotify) dbus_message_unref);
+		nm_auth_chain_set_data (chain, "objectpath", g_strdup (objpath), g_free);
 		nm_auth_chain_add_call (chain, permission, TRUE);
 	} else {
 		/* Yay for root */
@@ -4013,17 +3934,17 @@ nm_manager_new (NMSettings *settings,
 	                  G_CALLBACK (udev_manager_rfkill_changed_cb),
 	                  singleton);
 
-	priv->bluez_mgr = nm_bluez_manager_get ();
+	priv->bluez_mgr = nm_bluez_manager_get (NM_CONNECTION_PROVIDER (priv->settings));
 
 	g_signal_connect (priv->bluez_mgr,
-			  "bdaddr-added",
-			  G_CALLBACK (bluez_manager_bdaddr_added_cb),
-			  singleton);
+	                  NM_BLUEZ_MANAGER_BDADDR_ADDED,
+	                  G_CALLBACK (bluez_manager_bdaddr_added_cb),
+	                  singleton);
 
 	g_signal_connect (priv->bluez_mgr,
-			  "bdaddr-removed",
-			  G_CALLBACK (bluez_manager_bdaddr_removed_cb),
-			  singleton);
+	                  NM_BLUEZ_MANAGER_BDADDR_REMOVED,
+	                  G_CALLBACK (bluez_manager_bdaddr_removed_cb),
+	                  singleton);
 
 	return singleton;
 }
diff --git a/src/nm-netlink-compat.c b/src/nm-netlink-compat.c
index 974121ad..e30ec37a 100644
--- a/src/nm-netlink-compat.c
+++ b/src/nm-netlink-compat.c
@@ -121,7 +121,7 @@ rtnl_link_vlan_get_id (struct rtnl_link *l)
 	if ((if_name = rtnl_link_get_name (l)) == NULL)
 		return -1;
 
-	strcpy (if_request.device1, if_name);
+	g_strlcpy (if_request.device1, if_name, sizeof (if_request.device1));
 
 	if ((fd = socket (AF_INET, SOCK_STREAM, 0)) < 0) {
 		nm_log_err (LOGD_DEVICE, "couldn't open control socket.");
@@ -158,7 +158,7 @@ rtnl_link_vlan_set_flags (struct rtnl_link *l, unsigned int flags)
 	}
 
 	memset (&if_request, 0, sizeof (struct vlan_ioctl_args));
-	strcpy (if_request.device1, if_name);
+	g_strlcpy (if_request.device1, if_name, sizeof (if_request.device1));
 	if_request.cmd = SET_VLAN_FLAG_CMD;
 	if_request.u.flag = flags;
 
@@ -190,7 +190,7 @@ rtnl_link_vlan_set_ingress_map (struct rtnl_link *l, int from, uint32_t to)
 	}
 
 	memset (&if_request, 0, sizeof (struct vlan_ioctl_args));
-	strcpy (if_request.device1, if_name);
+	g_strlcpy (if_request.device1, if_name, sizeof (if_request.device1));
 	if_request.cmd = SET_VLAN_INGRESS_PRIORITY_CMD;
 	if_request.u.skb_priority = from;
 	if_request.vlan_qos = to;
@@ -223,7 +223,7 @@ rtnl_link_vlan_set_egress_map (struct rtnl_link *l, int from, uint32_t to)
 	}
 
 	memset (&if_request, 0, sizeof (struct vlan_ioctl_args));
-	strcpy (if_request.device1, if_name);
+	g_strlcpy (if_request.device1, if_name, sizeof (if_request.device1));
 	if_request.cmd = SET_VLAN_EGRESS_PRIORITY_CMD;
 	if_request.u.skb_priority = from;
 	if_request.vlan_qos = to;
diff --git a/src/nm-netlink-utils.c b/src/nm-netlink-utils.c
index 99aebcb8..be8c17ed 100644
--- a/src/nm-netlink-utils.c
+++ b/src/nm-netlink-utils.c
@@ -136,7 +136,7 @@ nm_netlink_route_new (int ifindex,
 	route = rtnl_route_alloc ();
 	g_return_val_if_fail (route != NULL, NULL);
 
-	if (ifindex >= 0)
+	if (ifindex > 0)
 		rtnl_route_set_oif (route, ifindex);
 	if (family != AF_UNSPEC)
 		rtnl_route_set_family (route, family);
@@ -385,7 +385,7 @@ foreach_route_cb (struct nl_object *object, void *user_data)
 	if (nm_logging_level_enabled (LOGL_DEBUG))
 		dump_route (route);
 
-	if (   info->ifindex >= 0
+	if (   info->ifindex > 0
 	    && rtnl_route_get_oif (route) != info->ifindex)
 		return;
 
diff --git a/src/nm-policy.c b/src/nm-policy.c
index babf1649..57b1ee36 100644
--- a/src/nm-policy.c
+++ b/src/nm-policy.c
@@ -15,7 +15,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Copyright (C) 2004 - 2011 Red Hat, Inc.
+ * Copyright (C) 2004 - 2012 Red Hat, Inc.
  * Copyright (C) 2007 - 2008 Novell, Inc.
  */
 
@@ -81,7 +81,7 @@ static void schedule_activate_all (NMPolicy *policy);
 
 
 static NMDevice *
-get_best_ip4_device (NMManager *manager, NMActRequest **out_req)
+get_best_ip4_device (NMManager *manager)
 {
 	GSList *devices, *iter;
 	NMDevice *best = NULL;
@@ -89,8 +89,6 @@ get_best_ip4_device (NMManager *manager, NMActRequest **out_req)
 
 	g_return_val_if_fail (manager != NULL, NULL);
 	g_return_val_if_fail (NM_IS_MANAGER (manager), NULL);
-	g_return_val_if_fail (out_req != NULL, NULL);
-	g_return_val_if_fail (*out_req == NULL, NULL);
 
 	devices = nm_manager_get_devices (manager);
 	for (iter = devices; iter; iter = g_slist_next (iter)) {
@@ -148,7 +146,6 @@ get_best_ip4_device (NMManager *manager, NMActRequest **out_req)
 		if (prio > 0 && prio < best_prio) {
 			best = dev;
 			best_prio = prio;
-			*out_req = req;
 		}
 	}
 
@@ -156,7 +153,7 @@ get_best_ip4_device (NMManager *manager, NMActRequest **out_req)
 }
 
 static NMDevice *
-get_best_ip6_device (NMManager *manager, NMActRequest **out_req)
+get_best_ip6_device (NMManager *manager)
 {
 	GSList *devices, *iter;
 	NMDevice *best = NULL;
@@ -164,8 +161,6 @@ get_best_ip6_device (NMManager *manager, NMActRequest **out_req)
 
 	g_return_val_if_fail (manager != NULL, NULL);
 	g_return_val_if_fail (NM_IS_MANAGER (manager), NULL);
-	g_return_val_if_fail (out_req != NULL, NULL);
-	g_return_val_if_fail (*out_req == NULL, NULL);
 
 	devices = nm_manager_get_devices (manager);
 	for (iter = devices; iter; iter = g_slist_next (iter)) {
@@ -222,7 +217,6 @@ get_best_ip6_device (NMManager *manager, NMActRequest **out_req)
 		if (prio > 0 && prio < best_prio) {
 			best = dev;
 			best_prio = prio;
-			*out_req = req;
 		}
 	}
 
@@ -295,8 +289,6 @@ static void
 update_system_hostname (NMPolicy *policy, NMDevice *best4, NMDevice *best6)
 {
 	char *configured_hostname = NULL;
-	NMActRequest *best_req4 = NULL;
-	NMActRequest *best_req6 = NULL;
 	const char *dhcp_hostname, *p;
 
 	g_return_if_fail (policy != NULL);
@@ -325,9 +317,9 @@ update_system_hostname (NMPolicy *policy, NMDevice *best4, NMDevice *best6)
 
 	/* Try automatically determined hostname from the best device's IP config */
 	if (!best4)
-		best4 = get_best_ip4_device (policy->manager, &best_req4);
+		best4 = get_best_ip4_device (policy->manager);
 	if (!best6)
-		best6 = get_best_ip6_device (policy->manager, &best_req6);
+		best6 = get_best_ip6_device (policy->manager);
 
 	if (!best4 && !best6) {
 		/* No best device; fall back to original hostname or if there wasn't
@@ -433,270 +425,370 @@ update_system_hostname (NMPolicy *policy, NMDevice *best4, NMDevice *best6)
 }
 
 static void
-update_ip4_routing_and_dns (NMPolicy *policy, gboolean force_update)
+update_default_ac (NMPolicy *policy,
+                   NMActiveConnection *best,
+                   void (*set_active_func)(NMActiveConnection*, gboolean))
 {
-	NMDnsIPConfigType dns_type = NM_DNS_IP_CONFIG_TYPE_BEST_DEVICE;
-	NMDevice *best = NULL;
-	NMActRequest *best_req = NULL;
-	NMDnsManager *dns_mgr;
-	GSList *devices = NULL, *iter, *vpns;
-	NMIP4Config *ip4_config = NULL;
-	NMIP4Address *addr;
-	const char *ip_iface = NULL;
-	NMConnection *connection = NULL;
-	NMSettingConnection *s_con = NULL;
-	const char *connection_id;
-	int ip_ifindex = 0;
+	GSList *devices, *vpns, *iter;
+	NMActRequest *req;
 
-	best = get_best_ip4_device (policy->manager, &best_req);
-	if (!best)
-		goto out;
-	if (!force_update && (best == policy->default_device4))
-		goto out;
+	/* Clear the 'default[6]' flag on all active connections that aren't the new
+	 * default active connection.  We'll set the new default after; this ensures
+	 * we don't ever have two marked 'default[6]' simultaneously.
+	 */
+	devices = nm_manager_get_devices (policy->manager);
+	for (iter = devices; iter; iter = g_slist_next (iter)) {
+		req = nm_device_get_act_request (NM_DEVICE (iter->data));
+		if (req && (NM_ACTIVE_CONNECTION (req) != best))
+			set_active_func (NM_ACTIVE_CONNECTION (req), FALSE);
+	}
+
+	vpns = nm_vpn_manager_get_active_connections (policy->vpn_manager);
+	for (iter = vpns; iter; iter = g_slist_next (iter)) {
+		if (NM_ACTIVE_CONNECTION (iter->data) != best)
+			set_active_func (NM_ACTIVE_CONNECTION (iter->data), FALSE);
+	}
+	g_slist_free (vpns);
+
+	/* Mark new default active connection */
+	if (best)
+		set_active_func (best, TRUE);
+}
+
+static NMIP4Config *
+get_best_ip4_config (NMPolicy *policy,
+                     gboolean ignore_never_default,
+                     const char **out_ip_iface,
+                     int *out_ip_ifindex,
+                     NMActiveConnection **out_ac,
+                     NMDevice **out_device,
+                     NMVPNConnection **out_vpn)
+{
+	GSList *vpns, *iter;
+	NMDevice *device;
+	NMActRequest *req = NULL;
+	NMIP4Config *ip4_config = NULL;
 
 	/* If a VPN connection is active, it is preferred */
 	vpns = nm_vpn_manager_get_active_connections (policy->vpn_manager);
 	for (iter = vpns; iter; iter = g_slist_next (iter)) {
 		NMVPNConnection *candidate = NM_VPN_CONNECTION (iter->data);
-		NMConnection *vpn_connection;
+		NMIP4Config *vpn_ip4;
+		NMConnection *tmp;
 		NMSettingIP4Config *s_ip4;
-		gboolean can_default = TRUE;
 		NMVPNConnectionState vpn_state;
 
-		/* If it's marked 'never-default', don't make it default */
-		vpn_connection = nm_vpn_connection_get_connection (candidate);
-		g_assert (vpn_connection);
-
-		/* Check the active IP4 config from the VPN service daemon */
-		ip4_config = nm_vpn_connection_get_ip4_config (candidate);
-		if (ip4_config && nm_ip4_config_get_never_default (ip4_config))
-			can_default = FALSE;
-
-		/* Check the user's preference from the NMConnection */
-		s_ip4 = nm_connection_get_setting_ip4_config (vpn_connection);
-		if (s_ip4 && nm_setting_ip4_config_get_never_default (s_ip4))
-			can_default = FALSE;
+		tmp = nm_vpn_connection_get_connection (candidate);
+		g_assert (tmp);
 
 		vpn_state = nm_vpn_connection_get_vpn_state (candidate);
-		if (can_default && (vpn_state == NM_VPN_CONNECTION_STATE_ACTIVATED)) {
-			NMIP4Config *parent_ip4;
-			NMDevice *parent;
-
-			ip_iface = nm_vpn_connection_get_ip_iface (candidate);
-			ip_ifindex = nm_vpn_connection_get_ip_ifindex (candidate);
-			connection = nm_vpn_connection_get_connection (candidate);
-			addr = nm_ip4_config_get_address (ip4_config, 0);
+		if (vpn_state != NM_VPN_CONNECTION_STATE_ACTIVATED)
+			continue;
 
-			parent = nm_vpn_connection_get_parent_device (candidate);
-			parent_ip4 = nm_device_get_ip4_config (parent);
+		vpn_ip4 = nm_vpn_connection_get_ip4_config (candidate);
+		if (!vpn_ip4)
+			continue;
 
-			nm_system_replace_default_ip4_route_vpn (ip_ifindex,
-			                                         nm_ip4_address_get_gateway (addr),
-			                                         nm_vpn_connection_get_ip4_internal_gateway (candidate),
-			                                         nm_ip4_config_get_mss (ip4_config),
-			                                         nm_device_get_ip_ifindex (parent),
-			                                         nm_ip4_config_get_mss (parent_ip4));
+		if (ignore_never_default == FALSE) {
+			/* Check for a VPN-provided config never-default */
+			if (nm_ip4_config_get_never_default (vpn_ip4))
+				continue;
 
-			dns_type = NM_DNS_IP_CONFIG_TYPE_VPN;
+			/* Check the user's preference from the NMConnection */
+			s_ip4 = nm_connection_get_setting_ip4_config (tmp);
+			if (s_ip4 && nm_setting_ip4_config_get_never_default (s_ip4))
+				continue;
 		}
+
+		ip4_config = vpn_ip4;
+		if (out_vpn)
+			*out_vpn = candidate;
+		if (out_ac)
+			*out_ac = NM_ACTIVE_CONNECTION (candidate);
+		if (out_ip_iface)
+			*out_ip_iface = nm_vpn_connection_get_ip_iface (candidate);
+		if (out_ip_ifindex)
+			*out_ip_ifindex = nm_vpn_connection_get_ip_ifindex (candidate);
+		break;
 	}
 	g_slist_free (vpns);
 
-	/* The best device gets the default route if a VPN connection didn't */
-	if (!ip_iface || !ip4_config) {
-		connection = nm_act_request_get_connection (best_req);
-		ip_iface = nm_device_get_ip_iface (best);
-		ip_ifindex = nm_device_get_ip_ifindex (best);
-		ip4_config = nm_device_get_ip4_config (best);
-		g_assert (ip4_config);
-		addr = nm_ip4_config_get_address (ip4_config, 0);
-
-		nm_system_replace_default_ip4_route (ip_ifindex,
-		                                     nm_ip4_address_get_gateway (addr),
-		                                     nm_ip4_config_get_mss (ip4_config));
-		dns_type = NM_DNS_IP_CONFIG_TYPE_BEST_DEVICE;
+	/* If no VPN connections, we use the best device instead */
+	if (!ip4_config) {
+		device = get_best_ip4_device (policy->manager);
+		if (device) {
+			ip4_config = nm_device_get_ip4_config (device);
+			g_assert (ip4_config);
+			req = nm_device_get_act_request (device);
+			g_assert (req);
+
+			if (out_device)
+				*out_device = device;
+			if (out_ac)
+				*out_ac = NM_ACTIVE_CONNECTION (req);
+			if (out_ip_iface)
+				*out_ip_iface = nm_device_get_ip_iface (device);
+			if (out_ip_ifindex)
+				*out_ip_ifindex = nm_device_get_ip_ifindex (device);
+		}
 	}
 
-	if (!ip_iface || !ip4_config) {
-		nm_log_warn (LOGD_CORE, "couldn't determine IP interface (%p) or IPv4 config (%p)!",
-		             ip_iface, ip4_config);
-		goto out;
-	}
+	return ip4_config;
+}
 
-	/* Update the default active connection.  Only mark the new default
-	 * active connection after setting default = FALSE on all other connections
-	 * first.  The order is important, we don't want two connections marked
-	 * default at the same time ever.
-	 */
-	devices = nm_manager_get_devices (policy->manager);
-	for (iter = devices; iter; iter = g_slist_next (iter)) {
-		NMDevice *dev = NM_DEVICE (iter->data);
-		NMActRequest *req;
+static void
+update_ip4_dns (NMPolicy *policy, NMDnsManager *dns_mgr)
+{
+	NMIP4Config *ip4_config;
+	const char *ip_iface = NULL;
+	NMVPNConnection *vpn = NULL;
+	NMDnsIPConfigType dns_type = NM_DNS_IP_CONFIG_TYPE_BEST_DEVICE;
 
-		req = nm_device_get_act_request (dev);
-		if (req && (req != best_req))
-			nm_active_connection_set_default (NM_ACTIVE_CONNECTION (req), FALSE);
+	ip4_config = get_best_ip4_config (policy, TRUE, &ip_iface, NULL, NULL, NULL, &vpn);
+	if (ip4_config) {
+		if (vpn)
+			dns_type = NM_DNS_IP_CONFIG_TYPE_VPN;
+
+		/* Tell the DNS manager this config is preferred by re-adding it with
+		 * a different IP config type.
+		 */
+		nm_dns_manager_add_ip4_config (dns_mgr, ip_iface, ip4_config, dns_type);
 	}
+}
 
-	dns_mgr = nm_dns_manager_get (NULL);
-	nm_dns_manager_add_ip4_config (dns_mgr, ip_iface, ip4_config, dns_type);
-	g_object_unref (dns_mgr);
+static void
+update_ip4_routing (NMPolicy *policy, gboolean force_update)
+{
+	NMDevice *best = NULL, *parent;
+	NMConnection *connection = NULL;
+	NMVPNConnection *vpn = NULL;
+	NMActiveConnection *best_ac = NULL;
+	NMIP4Config *ip4_config = NULL, *parent_ip4;
+	NMIP4Address *addr;
+	const char *ip_iface = NULL;
+	int ip_ifindex = -1;
+	guint32 parent_mss;
 
-	/* Now set new default active connection _after_ updating DNS info, so that
-	 * if the connection is shared dnsmasq picks up the right stuff.
+	/* Note that we might have an IPv4 VPN tunneled over an IPv6-only device,
+	 * so we can get (vpn != NULL && best == NULL).
 	 */
-	if (best_req)
-		nm_active_connection_set_default (NM_ACTIVE_CONNECTION (best_req), TRUE);
+	ip4_config = get_best_ip4_config (policy, FALSE, &ip_iface, &ip_ifindex, &best_ac, &best, &vpn);
+	if (!ip4_config) {
+		policy->default_device4 = NULL;
+		return;
+	}
+	g_assert ((best || vpn) && best_ac);
 
-	if (connection)
-		s_con = nm_connection_get_setting_connection (connection);
+	if (!force_update && best && (best == policy->default_device4))
+		return;
 
-	connection_id = s_con ? nm_setting_connection_get_id (s_con) : NULL;
-	if (connection_id) {
-		nm_log_info (LOGD_CORE, "Policy set '%s' (%s) as default for IPv4 routing and DNS.", connection_id, ip_iface);
+	/* We set the default route to the gateway of the first IP address of the config */
+	addr = nm_ip4_config_get_address (ip4_config, 0);
+	g_assert (addr);
+
+	if (vpn) {
+		parent = nm_vpn_connection_get_parent_device (vpn);
+		parent_ip4 = nm_device_get_ip4_config (parent);
+		parent_mss = parent_ip4 ? nm_ip4_config_get_mss (parent_ip4) : 0;
+
+		nm_system_replace_default_ip4_route_vpn (ip_ifindex,
+		                                         nm_ip4_address_get_gateway (addr),
+		                                         nm_vpn_connection_get_ip4_internal_gateway (vpn),
+		                                         nm_ip4_config_get_mss (ip4_config),
+		                                         nm_device_get_ip_ifindex (parent),
+		                                         parent_mss);
 	} else {
-		nm_log_info (LOGD_CORE, "Policy set (%s) as default for IPv4 routing and DNS.", ip_iface);
+		nm_system_replace_default_ip4_route (ip_ifindex,
+		                                     nm_ip4_address_get_gateway (addr),
+		                                     nm_ip4_config_get_mss (ip4_config));
 	}
 
-out:
+	update_default_ac (policy, best_ac, nm_active_connection_set_default);
 	policy->default_device4 = best;
+
+	connection = nm_active_connection_get_connection (best_ac);
+	nm_log_info (LOGD_CORE, "Policy set '%s' (%s) as default for IPv4 routing and DNS.",
+	             nm_connection_get_id (connection), ip_iface);
 }
 
-static void
-update_ip6_routing_and_dns (NMPolicy *policy, gboolean force_update)
+static NMIP6Config *
+get_best_ip6_config (NMPolicy *policy,
+                     gboolean ignore_never_default,
+                     const char **out_ip_iface,
+                     int *out_ip_ifindex,
+                     NMActiveConnection **out_ac,
+                     NMDevice **out_device,
+                     NMVPNConnection **out_vpn)
 {
-	NMDnsIPConfigType dns_type = NM_DNS_IP_CONFIG_TYPE_BEST_DEVICE;
-	NMDevice *best = NULL;
-	NMActRequest *best_req = NULL;
-	NMDnsManager *dns_mgr;
-	GSList *devices = NULL, *iter;
-#if 0
-	GSList *vpns;
-#endif
+	GSList *vpns, *iter;
+	NMDevice *device;
+	NMActRequest *req = NULL;
 	NMIP6Config *ip6_config = NULL;
-	NMIP6Address *addr;
-	const char *ip_iface = NULL;
-	int ip_ifindex = -1;
-	NMConnection *connection = NULL;
-	NMSettingConnection *s_con = NULL;
-	const char *connection_id;
 
-	best = get_best_ip6_device (policy->manager, &best_req);
-	if (!best)
-		goto out;
-	if (!force_update && (best == policy->default_device6))
-		goto out;
-
-#if 0
 	/* If a VPN connection is active, it is preferred */
 	vpns = nm_vpn_manager_get_active_connections (policy->vpn_manager);
 	for (iter = vpns; iter; iter = g_slist_next (iter)) {
 		NMVPNConnection *candidate = NM_VPN_CONNECTION (iter->data);
-		NMConnection *vpn_connection;
+		NMIP6Config *vpn_ip6;
+		NMConnection *tmp;
 		NMSettingIP6Config *s_ip6;
-		gboolean can_default = TRUE;
 		NMVPNConnectionState vpn_state;
 
-		/* If it's marked 'never-default', don't make it default */
-		vpn_connection = nm_vpn_connection_get_connection (candidate);
-		g_assert (vpn_connection);
-		s_ip6 = nm_connection_get_setting_ip6_config (vpn_connection);
-		if (s_ip6 && nm_setting_ip6_config_get_never_default (s_ip6))
-			can_default = FALSE;
+		tmp = nm_vpn_connection_get_connection (candidate);
+		g_assert (tmp);
 
 		vpn_state = nm_vpn_connection_get_vpn_state (candidate);
-		if (can_default && (vpn_state == NM_VPN_CONNECTION_STATE_ACTIVATED)) {
-			NMIP6Config *parent_ip6;
-			NMDevice *parent;
-
-			ip_iface = nm_vpn_connection_get_ip_iface (candidate);
-			connection = nm_vpn_connection_get_connection (candidate);
-			ip6_config = nm_vpn_connection_get_ip6_config (candidate);
-			addr = nm_ip6_config_get_address (ip6_config, 0);
+		if (vpn_state != NM_VPN_CONNECTION_STATE_ACTIVATED)
+			continue;
 
-			parent = nm_vpn_connection_get_parent_device (candidate);
-			parent_ip6 = nm_device_get_ip6_config (parent);
+		vpn_ip6 = nm_vpn_connection_get_ip6_config (candidate);
+		if (!vpn_ip6)
+			continue;
 
-			nm_system_replace_default_ip6_route_vpn (ip_iface,
-			                                         nm_ip6_address_get_gateway (addr),
-			                                         nm_vpn_connection_get_ip4_internal_gateway (candidate),
-			                                         nm_ip6_config_get_mss (ip4_config),
-			                                         nm_device_get_ip_iface (parent),
-			                                         nm_ip6_config_get_mss (parent_ip4));
+		if (ignore_never_default == FALSE) {
+			/* Check for a VPN-provided config never-default */
+			if (nm_ip6_config_get_never_default (vpn_ip6))
+				continue;
 
-			dns_type = NM_DNS_IP_CONFIG_TYPE_VPN;
+			/* Check the user's preference from the NMConnection */
+			s_ip6 = nm_connection_get_setting_ip6_config (tmp);
+			if (s_ip6 && nm_setting_ip6_config_get_never_default (s_ip6))
+				continue;
 		}
+
+		ip6_config = vpn_ip6;
+		if (out_vpn)
+			*out_vpn = candidate;
+		if (out_ac)
+			*out_ac = NM_ACTIVE_CONNECTION (candidate);
+		if (out_ip_iface)
+			*out_ip_iface = nm_vpn_connection_get_ip_iface (candidate);
+		if (out_ip_ifindex)
+			*out_ip_ifindex = nm_vpn_connection_get_ip_ifindex (candidate);
+		break;
 	}
 	g_slist_free (vpns);
-#endif
 
-	/* The best device gets the default route if a VPN connection didn't */
-	if (!ip_iface || !ip6_config) {
-		connection = nm_act_request_get_connection (best_req);
-		ip_iface = nm_device_get_ip_iface (best);
-		ip_ifindex = nm_device_get_ip_ifindex (best);
-		ip6_config = nm_device_get_ip6_config (best);
-		g_assert (ip6_config);
-		addr = nm_ip6_config_get_address (ip6_config, 0);
-
-		nm_system_replace_default_ip6_route (ip_ifindex, nm_ip6_address_get_gateway (addr));
-
-		dns_type = NM_DNS_IP_CONFIG_TYPE_BEST_DEVICE;
+	/* If no VPN connections, we use the best device instead */
+	if (!ip6_config) {
+		device = get_best_ip6_device (policy->manager);
+		if (device) {
+			req = nm_device_get_act_request (device);
+			g_assert (req);
+			ip6_config = nm_device_get_ip6_config (device);
+			g_assert (ip6_config);
+
+			if (out_device)
+				*out_device = device;
+			if (out_ac)
+				*out_ac = NM_ACTIVE_CONNECTION (req);
+			if (out_ip_iface)
+				*out_ip_iface = nm_device_get_ip_iface (device);
+			if (out_ip_ifindex)
+				*out_ip_ifindex = nm_device_get_ip_ifindex (device);
+		}
 	}
 
-	if (!ip_iface || !ip6_config) {
-		nm_log_warn (LOGD_CORE, "couldn't determine IP interface (%p) or IPv6 config (%p)!",
-		             ip_iface, ip6_config);
-		goto out;
-	}
+	return ip6_config;
+}
 
-	/* Update the default active connection.  Only mark the new default
-	 * active connection after setting default = FALSE on all other connections
-	 * first.  The order is important, we don't want two connections marked
-	 * default at the same time ever.
-	 */
-	devices = nm_manager_get_devices (policy->manager);
-	for (iter = devices; iter; iter = g_slist_next (iter)) {
-		NMDevice *dev = NM_DEVICE (iter->data);
-		NMActRequest *req;
+static void
+update_ip6_dns (NMPolicy *policy, NMDnsManager *dns_mgr)
+{
+	NMIP6Config *ip6_config;
+	const char *ip_iface = NULL;
+	NMVPNConnection *vpn = NULL;
+	NMDnsIPConfigType dns_type = NM_DNS_IP_CONFIG_TYPE_BEST_DEVICE;
 
-		req = nm_device_get_act_request (dev);
-		if (req && (req != best_req))
-			nm_active_connection_set_default6 (NM_ACTIVE_CONNECTION (req), FALSE);
+	ip6_config = get_best_ip6_config (policy, TRUE, &ip_iface, NULL, NULL, NULL, &vpn);
+	if (ip6_config) {
+		if (vpn)
+			dns_type = NM_DNS_IP_CONFIG_TYPE_VPN;
+
+		/* Tell the DNS manager this config is preferred by re-adding it with
+		 * a different IP config type.
+		 */
+		nm_dns_manager_add_ip6_config (dns_mgr, ip_iface, ip6_config, dns_type);
 	}
+}
 
-	dns_mgr = nm_dns_manager_get (NULL);
-	nm_dns_manager_add_ip6_config (dns_mgr, ip_iface, ip6_config, dns_type);
-	g_object_unref (dns_mgr);
+static void
+update_ip6_routing (NMPolicy *policy, gboolean force_update)
+{
+	NMDevice *best = NULL, *parent;
+	NMConnection *connection = NULL;
+	NMVPNConnection *vpn = NULL;
+	NMActiveConnection *best_ac = NULL;
+	NMIP6Config *ip6_config = NULL, *parent_ip6;
+	NMIP6Address *addr;
+	const char *ip_iface = NULL;
+	int ip_ifindex = -1;
+	guint32 parent_mss;
 
-	/* Now set new default active connection _after_ updating DNS info, so that
-	 * if the connection is shared dnsmasq picks up the right stuff.
+	/* Note that we might have an IPv6 VPN tunneled over an IPv4-only device,
+	 * so we can get (vpn != NULL && best == NULL).
 	 */
-	if (best_req)
-		nm_active_connection_set_default6 (NM_ACTIVE_CONNECTION (best_req), TRUE);
+	ip6_config = get_best_ip6_config (policy, FALSE, &ip_iface, &ip_ifindex, &best_ac, &best, &vpn);
+	if (!ip6_config) {
+		policy->default_device6 = NULL;
+		return;
+	}
+	g_assert ((best || vpn) && best_ac);
 
-	if (connection)
-		s_con = nm_connection_get_setting_connection (connection);
+	if (!force_update && best && (best == policy->default_device6))
+		return;
 
-	connection_id = s_con ? nm_setting_connection_get_id (s_con) : NULL;
-	if (connection_id) {
-		nm_log_info (LOGD_CORE, "Policy set '%s' (%s) as default for IPv6 routing and DNS.", connection_id, ip_iface);
+	/* We set the default route to the gateway of the first IP address of the config */
+	addr = nm_ip6_config_get_address (ip6_config, 0);
+	g_assert (addr);
+
+	if (vpn) {
+		parent = nm_vpn_connection_get_parent_device (vpn);
+		parent_ip6 = nm_device_get_ip6_config (parent);
+		parent_mss = parent_ip6 ? nm_ip6_config_get_mss (parent_ip6) : 0;
+
+		nm_system_replace_default_ip6_route_vpn (ip_ifindex,
+		                                         nm_ip6_address_get_gateway (addr),
+		                                         nm_vpn_connection_get_ip6_internal_gateway (vpn),
+		                                         nm_ip6_config_get_mss (ip6_config),
+		                                         nm_device_get_ip_ifindex (parent),
+		                                         parent_mss);
 	} else {
-		nm_log_info (LOGD_CORE, "Policy set (%s) as default for IPv6 routing and DNS.", ip_iface);
+		if (memcmp (nm_ip6_address_get_gateway (addr)->s6_addr, in6addr_any.s6_addr, sizeof (in6addr_any.s6_addr)) != 0)
+			nm_system_replace_default_ip6_route (ip_ifindex, nm_ip6_address_get_gateway (addr));
+		else if (nm_ip6_config_get_gateway (ip6_config))
+			nm_system_replace_default_ip6_route (ip_ifindex, nm_ip6_config_get_gateway (ip6_config));
+		else
+			nm_log_dbg (LOGD_IP6, "missing default IPv6 route");
 	}
 
-out:
+	update_default_ac (policy, best_ac, nm_active_connection_set_default6);
 	policy->default_device6 = best;
+
+	connection = nm_active_connection_get_connection (best_ac);
+	nm_log_info (LOGD_CORE, "Policy set '%s' (%s) as default for IPv6 routing and DNS.",
+	             nm_connection_get_id (connection), ip_iface);
 }
 
 static void
 update_routing_and_dns (NMPolicy *policy, gboolean force_update)
 {
-	update_ip4_routing_and_dns (policy, force_update);
-	update_ip6_routing_and_dns (policy, force_update);
+	NMDnsManager *mgr;
+
+	mgr = nm_dns_manager_get (NULL);
+	nm_dns_manager_begin_updates (mgr, __func__);
+
+	update_ip4_dns (policy, mgr);
+	update_ip6_dns (policy, mgr);
+
+	update_ip4_routing (policy, force_update);
+	update_ip6_routing (policy, force_update);
 
 	/* Update the system hostname */
 	update_system_hostname (policy, policy->default_device4, policy->default_device6);
+
+	nm_dns_manager_end_updates (mgr, __func__);
+	g_object_unref (mgr);
 }
 
 static void
@@ -842,17 +934,96 @@ vpn_connection_activated (NMVPNManager *manager,
                           NMVPNConnection *vpn,
                           gpointer user_data)
 {
+	NMDnsManager *mgr;
+	NMIP4Config *ip4_config;
+	NMIP6Config *ip6_config;
+	const char *ip_iface;
+
+	mgr = nm_dns_manager_get (NULL);
+	nm_dns_manager_begin_updates (mgr, __func__);
+
+	ip_iface = nm_vpn_connection_get_ip_iface (vpn);
+
+	/* Add the VPN connection's IP configs from DNS */
+
+	ip4_config = nm_vpn_connection_get_ip4_config (vpn);
+	if (ip4_config)
+		nm_dns_manager_add_ip4_config (mgr, ip_iface, ip4_config, NM_DNS_IP_CONFIG_TYPE_VPN);
+
+	ip6_config = nm_vpn_connection_get_ip6_config (vpn);
+	if (ip6_config)
+		nm_dns_manager_add_ip6_config (mgr, ip_iface, ip6_config, NM_DNS_IP_CONFIG_TYPE_VPN);
+
 	update_routing_and_dns ((NMPolicy *) user_data, TRUE);
+
+	nm_dns_manager_end_updates (mgr, __func__);
 }
 
 static void
 vpn_connection_deactivated (NMVPNManager *manager,
                             NMVPNConnection *vpn,
-                            NMVPNConnectionState state,
+                            NMVPNConnectionState new_state,
+                            NMVPNConnectionState old_state,
                             NMVPNConnectionStateReason reason,
                             gpointer user_data)
 {
+	NMDnsManager *mgr;
+	NMIP4Config *ip4_config, *parent_ip4 = NULL;
+	NMIP6Config *ip6_config, *parent_ip6 = NULL;
+	const char *ip_iface;
+	NMDevice *parent;
+
+	mgr = nm_dns_manager_get (NULL);
+	nm_dns_manager_begin_updates (mgr, __func__);
+
+	ip_iface = nm_vpn_connection_get_ip_iface (vpn);
+	parent = nm_vpn_connection_get_parent_device (vpn);
+
+	ip4_config = nm_vpn_connection_get_ip4_config (vpn);
+	if (ip4_config) {
+		/* Remove the VPN connection's IP4 config from DNS */
+		nm_dns_manager_remove_ip4_config (mgr, ip_iface, ip4_config);
+
+		/* Re-apply routes and addresses of the VPN connection's parent interface,
+		 * which the VPN might have overridden.
+		 */
+		if (parent) {
+			parent_ip4 = nm_device_get_ip4_config (parent);
+			if (parent_ip4) {
+				if (!nm_system_apply_ip4_config (nm_device_get_ip_ifindex (parent),
+				                                 parent_ip4,
+				                                 nm_device_get_priority (parent),
+				                                 NM_IP4_COMPARE_FLAG_ADDRESSES | NM_IP4_COMPARE_FLAG_ROUTES)) {
+					nm_log_err (LOGD_VPN, "failed to re-apply VPN parent device IPv4 addresses and routes.");
+				}
+			}
+		}
+	}
+
+	ip6_config = nm_vpn_connection_get_ip6_config (vpn);
+	if (ip6_config) {
+		/* Remove the VPN connection's IP6 config from DNS */
+		nm_dns_manager_remove_ip6_config (mgr, ip_iface, ip6_config);
+
+		/* Re-apply routes and addresses of the VPN connection's parent interface,
+		 * which the VPN might have overridden.
+		 */
+		if (parent) {
+			parent_ip6 = nm_device_get_ip6_config (parent);
+			if (parent_ip6) {
+				if (!nm_system_apply_ip6_config (nm_device_get_ip_ifindex (parent),
+				                                 parent_ip6,
+				                                 nm_device_get_priority (parent),
+				                                 NM_IP6_COMPARE_FLAG_ADDRESSES | NM_IP6_COMPARE_FLAG_ROUTES)) {
+					nm_log_err (LOGD_VPN, "failed to re-apply VPN parent device IPv6 addresses and routes.");
+				}
+			}
+		}
+	}
+
 	update_routing_and_dns ((NMPolicy *) user_data, TRUE);
+
+	nm_dns_manager_end_updates (mgr, __func__);
 }
 
 static void
@@ -976,15 +1147,6 @@ reset_connections_retries (gpointer user_data)
 	return FALSE;
 }
 
-static NMConnection *
-get_device_connection (NMDevice *device)
-{
-	NMActRequest *req = NULL;
-
-	req = nm_device_get_act_request (device);
-	return req ? nm_act_request_get_connection (req) : NULL;
-}
-
 static void schedule_activate_all (NMPolicy *policy);
 
 static void
@@ -1025,7 +1187,11 @@ device_state_changed (NMDevice *device,
                       gpointer user_data)
 {
 	NMPolicy *policy = (NMPolicy *) user_data;
-	NMConnection *connection = get_device_connection (device);
+	NMConnection *connection = nm_device_get_connection (device);
+	const char *ip_iface = nm_device_get_ip_iface (device);
+	NMIP4Config *ip4_config;
+	NMIP6Config *ip6_config;
+	NMDnsManager *dns_mgr;
 
 	if (connection)
 		g_object_set_data (G_OBJECT (connection), FAILURE_REASON_TAG, GUINT_TO_POINTER (0));
@@ -1081,20 +1247,33 @@ device_state_changed (NMDevice *device,
 			nm_connection_clear_secrets (connection);
 		}
 
-		update_routing_and_dns (policy, FALSE);
+		/* Add device's new IPv4 and IPv6 configs to DNS */
+
+		dns_mgr = nm_dns_manager_get (NULL);
+		nm_dns_manager_begin_updates (dns_mgr, __func__);
+
+		ip4_config = nm_device_get_ip4_config (device);
+		if (ip4_config) {
+			nm_dns_manager_add_ip4_config (dns_mgr, ip_iface, ip4_config, NM_DNS_IP_CONFIG_TYPE_DEFAULT);
+			update_ip4_dns (policy, dns_mgr);
+		}
+		ip6_config = nm_device_get_ip6_config (device);
+		if (ip6_config) {
+			nm_dns_manager_add_ip6_config (dns_mgr, ip_iface, ip6_config, NM_DNS_IP_CONFIG_TYPE_DEFAULT);
+			update_ip6_dns (policy, dns_mgr);
+		}
+
+		nm_dns_manager_end_updates (dns_mgr, __func__);
+		g_object_unref (dns_mgr);
+
+		/* And make sure the best devices have the default route */
+		update_ip4_routing (policy, FALSE);
+		update_ip6_routing (policy, FALSE);
 		break;
 	case NM_DEVICE_STATE_UNMANAGED:
-		if (   old_state == NM_DEVICE_STATE_UNAVAILABLE
-		    || old_state == NM_DEVICE_STATE_DISCONNECTED) {
-			/* If the device was never activated, there's no point in
-			 * updating routing or DNS.  This allows us to keep the previous
-			 * resolv.conf or routes from before NM started if no device was
-			 * ever managed by NM.
-			 */
-			break;
-		}
 	case NM_DEVICE_STATE_UNAVAILABLE:
-		update_routing_and_dns (policy, FALSE);
+		if (old_state > NM_DEVICE_STATE_DISCONNECTED)
+			update_routing_and_dns (policy, FALSE);
 		break;
 	case NM_DEVICE_STATE_DISCONNECTED:
 		/* Reset RETRIES_TAG when carrier on. If cable was unplugged
@@ -1102,8 +1281,10 @@ device_state_changed (NMDevice *device,
 		if (reason == NM_DEVICE_STATE_REASON_CARRIER && old_state == NM_DEVICE_STATE_UNAVAILABLE)
 			reset_retries_all (policy->settings, device);
 
+		if (old_state > NM_DEVICE_STATE_DISCONNECTED)
+			update_routing_and_dns (policy, FALSE);
+
 		/* Device is now available for auto-activation */
-		update_routing_and_dns (policy, FALSE);
 		schedule_activate_check (policy, device, 0);
 		break;
 
@@ -1119,11 +1300,86 @@ device_state_changed (NMDevice *device,
 }
 
 static void
-device_ip_config_changed (NMDevice *device,
-                          GParamSpec *pspec,
-                          gpointer user_data)
+device_ip4_config_changed (NMDevice *device,
+                           NMIP4Config *new_config,
+                           NMIP4Config *old_config,
+                           gpointer user_data)
 {
-	update_routing_and_dns ((NMPolicy *) user_data, TRUE);
+	NMPolicy *policy = user_data;
+	NMDnsManager *dns_mgr;
+	const char *ip_iface = nm_device_get_ip_iface (device);
+	NMIP4ConfigCompareFlags diff = NM_IP4_COMPARE_FLAG_ALL;
+
+	dns_mgr = nm_dns_manager_get (NULL);
+	nm_dns_manager_begin_updates (dns_mgr, __func__);
+
+	/* Old configs get removed immediately */
+	if (old_config)
+		nm_dns_manager_remove_ip4_config (dns_mgr, ip_iface, old_config);
+
+	/* Ignore IP config changes while the device is activating, because we'll
+	 * catch all the changes when the device moves to ACTIVATED state.
+	 * Prevents unecessary changes to DNS information.
+	 */
+	if (!nm_device_is_activating (device)) {
+		if (new_config)
+			nm_dns_manager_add_ip4_config (dns_mgr, ip_iface, new_config, NM_DNS_IP_CONFIG_TYPE_DEFAULT);
+		update_ip4_dns (policy, dns_mgr);
+
+		/* Only change routing if something actually changed */
+		diff = nm_ip4_config_diff (new_config, old_config);
+		if (diff & (NM_IP4_COMPARE_FLAG_ADDRESSES | NM_IP4_COMPARE_FLAG_PTP_ADDRESS | NM_IP4_COMPARE_FLAG_ROUTES))
+			update_ip4_routing (policy, TRUE);
+	}
+
+	nm_dns_manager_end_updates (dns_mgr, __func__);
+	g_object_unref (dns_mgr);
+}
+
+static void
+device_ip6_config_changed (NMDevice *device,
+                           NMIP6Config *new_config,
+                           NMIP6Config *old_config,
+                           gpointer user_data)
+{
+	NMPolicy *policy = user_data;
+	NMDnsManager *dns_mgr;
+	const char *ip_iface = nm_device_get_ip_iface (device);
+	NMIP4ConfigCompareFlags diff = NM_IP4_COMPARE_FLAG_ALL;
+
+	dns_mgr = nm_dns_manager_get (NULL);
+	nm_dns_manager_begin_updates (dns_mgr, __func__);
+
+	/* Old configs get removed immediately */
+	if (old_config)
+		nm_dns_manager_remove_ip6_config (dns_mgr, ip_iface, old_config);
+
+	/* Ignore IP config changes while the device is activating, because we'll
+	 * catch all the changes when the device moves to ACTIVATED state.
+	 * Prevents unecessary changes to DNS information.
+	 */
+	if (!nm_device_is_activating (device)) {
+		if (new_config)
+			nm_dns_manager_add_ip6_config (dns_mgr, ip_iface, new_config, NM_DNS_IP_CONFIG_TYPE_DEFAULT);
+		update_ip6_dns (policy, dns_mgr);
+
+		/* Only change routing if something actually changed */
+		diff = nm_ip6_config_diff (new_config, old_config);
+		if (diff & (NM_IP6_COMPARE_FLAG_ADDRESSES | NM_IP6_COMPARE_FLAG_PTP_ADDRESS | NM_IP6_COMPARE_FLAG_ROUTES))
+			update_ip6_routing (policy, TRUE);
+	}
+
+	nm_dns_manager_end_updates (dns_mgr, __func__);
+	g_object_unref (dns_mgr);
+}
+
+static void
+device_autoconnect_changed (NMDevice *device,
+                            GParamSpec *pspec,
+                            gpointer user_data)
+{
+	if (nm_device_get_autoconnect (device))
+		schedule_activate_check ((NMPolicy *) user_data, device, 0);
 }
 
 static void
@@ -1167,8 +1423,9 @@ device_added (NMManager *manager, NMDevice *device, gpointer user_data)
 	NMPolicy *policy = (NMPolicy *) user_data;
 
 	_connect_device_signal (policy, device, "state-changed", device_state_changed);
-	_connect_device_signal (policy, device, "notify::" NM_DEVICE_IP4_CONFIG, device_ip_config_changed);
-	_connect_device_signal (policy, device, "notify::" NM_DEVICE_IP6_CONFIG, device_ip_config_changed);
+	_connect_device_signal (policy, device, NM_DEVICE_IP4_CONFIG_CHANGED, device_ip4_config_changed);
+	_connect_device_signal (policy, device, NM_DEVICE_IP6_CONFIG_CHANGED, device_ip6_config_changed);
+	_connect_device_signal (policy, device, "notify::" NM_DEVICE_AUTOCONNECT, device_autoconnect_changed);
 
 	switch (nm_device_get_device_type (device)) {
 	case NM_DEVICE_TYPE_WIFI:
@@ -1215,7 +1472,9 @@ device_removed (NMManager *manager, NMDevice *device, gpointer user_data)
 		iter = next;
 	}
 
-	update_routing_and_dns (policy, FALSE);
+	/* Don't update routing and DNS here as we've already handled that
+	 * for devices that need it when the device's state changed to UNMANAGED.
+	 */
 }
 
 static void
@@ -1273,7 +1532,7 @@ firewall_update_zone (NMPolicy *policy, NMConnection *connection)
 	for (iter = devices; iter; iter = g_slist_next (iter)) {
 		NMDevice *dev = NM_DEVICE (iter->data);
 
-		if (   (get_device_connection (dev) == connection)
+		if (   (nm_device_get_connection (dev) == connection)
 		    && (nm_device_get_state (dev) == NM_DEVICE_STATE_ACTIVATED)) {
 			nm_firewall_manager_add_or_change_zone (policy->fw_manager,
 			                                        nm_device_get_ip_iface (dev),
@@ -1299,7 +1558,7 @@ firewall_started (NMFirewallManager *manager,
 	for (iter = devices; iter; iter = g_slist_next (iter)) {
 		NMDevice *dev = NM_DEVICE (iter->data);
 
-		connection = get_device_connection (dev);
+		connection = nm_device_get_connection (dev);
 		s_con = nm_connection_get_setting_connection (connection);
 		if (nm_device_get_state (dev) == NM_DEVICE_STATE_ACTIVATED) {
 			nm_firewall_manager_add_or_change_zone (policy->fw_manager,
diff --git a/src/nm-system.c b/src/nm-system.c
index 91153ec2..b980dc53 100644
--- a/src/nm-system.c
+++ b/src/nm-system.c
@@ -349,14 +349,15 @@ add_ip4_addresses (NMIP4Config *config, int ifindex)
 }
 
 struct rtnl_route *
-nm_system_add_ip4_vpn_gateway_route (NMDevice *parent_device, NMIP4Config *vpn_config)
+nm_system_add_ip4_vpn_gateway_route (NMDevice *parent_device, guint32 vpn_gw)
 {
 	NMIP4Config *parent_config;
-	guint32 parent_gw = 0, parent_prefix = 0, vpn_gw = 0, i;
+	guint32 parent_gw = 0, parent_prefix = 0, i;
 	NMIP4Address *tmp;
 	struct rtnl_route *route = NULL;
 
 	g_return_val_if_fail (NM_IS_DEVICE (parent_device), NULL);
+	g_return_val_if_fail (vpn_gw != 0, NULL);
 
 	/* Set up a route to the VPN gateway's public IP address through the default
 	 * network device if the VPN gateway is on a different subnet.
@@ -374,15 +375,7 @@ nm_system_add_ip4_vpn_gateway_route (NMDevice *parent_device, NMIP4Config *vpn_c
 		}
 	}
 
-	for (i = 0; i < nm_ip4_config_get_num_addresses (vpn_config); i++) {
-		tmp = nm_ip4_config_get_address (vpn_config, i);
-		if (nm_ip4_address_get_gateway (tmp)) {
-			vpn_gw = nm_ip4_address_get_gateway (tmp);
-			break;
-		}
-	}
-
-	if (!parent_gw || !vpn_gw)
+	if (!parent_gw)
 		return NULL;
 
 	/* If the VPN gateway is in the same subnet as one of the parent device's
@@ -479,7 +472,7 @@ nm_system_set_ip6_route (int ifindex,
 	struct rtnl_route *route;
 	int err = 0;
 
-	g_return_val_if_fail (ifindex >= 0, -1);
+	g_return_val_if_fail (ifindex > 0, -1);
 
 	nlh = nm_netlink_get_default_handle ();
 	g_return_val_if_fail (nlh != NULL, -1);
@@ -520,6 +513,96 @@ nm_system_set_ip6_route (int ifindex,
 }
 
 static gboolean
+ip6_dest_in_same_subnet (NMIP6Config *config, const struct in6_addr *dest, guint32 dest_prefix)
+{
+	int num;
+	int i;
+
+	num = nm_ip6_config_get_num_addresses (config);
+	for (i = 0; i < num; i++) {
+		NMIP6Address *addr = nm_ip6_config_get_address (config, i);
+		guint32 prefix = nm_ip6_address_get_prefix (addr);
+		const struct in6_addr *address = nm_ip6_address_get_address (addr);
+
+		if (prefix <= dest_prefix) {
+			const guint8 *maskbytes = (const guint8 *)address;
+			const guint8 *addrbytes = (const guint8 *)dest;
+			int nbytes, nbits;
+
+			/* Copied from g_inet_address_mask_matches() */
+			nbytes = prefix / 8;
+			if (nbytes != 0 && memcmp (maskbytes, addrbytes, nbytes) != 0)
+				continue;
+
+			nbits = prefix % 8;
+			if (nbits == 0)
+				return TRUE;
+
+			if (maskbytes[nbytes] == (addrbytes[nbytes] & (0xFF << (8 - nbits))))
+				return TRUE;
+		}
+	}
+
+	return FALSE;
+}
+
+struct rtnl_route *
+nm_system_add_ip6_vpn_gateway_route (NMDevice *parent_device,
+                                     const struct in6_addr *vpn_gw)
+{
+	NMIP6Config *parent_config;
+	const struct in6_addr *parent_gw = NULL;
+	guint32 parent_prefix = 0;
+	int i, err;
+	NMIP6Address *tmp;
+	struct rtnl_route *route = NULL;
+
+	g_return_val_if_fail (NM_IS_DEVICE (parent_device), NULL);
+	g_return_val_if_fail (vpn_gw != NULL, NULL);
+
+	/* This is all just the same as
+	 * nm_system_add_ip4_vpn_gateway_route(), except with an IPv6
+	 * address for the VPN gateway.
+	 */
+
+	parent_config = nm_device_get_ip6_config (parent_device);
+	g_return_val_if_fail (parent_config != NULL, NULL);
+
+	for (i = 0; i < nm_ip6_config_get_num_addresses (parent_config); i++) {
+		tmp = nm_ip6_config_get_address (parent_config, i);
+		if (nm_ip6_address_get_gateway (tmp)) {
+			parent_gw = nm_ip6_address_get_gateway (tmp);
+			parent_prefix = nm_ip6_address_get_prefix (tmp);
+			break;
+		}
+	}
+
+	if (!parent_gw)
+		return NULL;
+
+	if (ip6_dest_in_same_subnet (parent_config, vpn_gw, parent_prefix)) {
+		err = nm_system_set_ip6_route (nm_device_get_ip_ifindex (parent_device),
+		                               vpn_gw, 128, NULL, 0,
+		                               nm_ip6_config_get_mss (parent_config),
+		                               RTPROT_UNSPEC, RT_TABLE_UNSPEC,
+		                               &route);
+	} else {
+		err = nm_system_set_ip6_route (nm_device_get_ip_ifindex (parent_device),
+		                               vpn_gw, 128, parent_gw, 0,
+		                               nm_ip6_config_get_mss (parent_config),
+		                               RTPROT_UNSPEC, RT_TABLE_UNSPEC,
+		                               &route);
+	}
+
+	if (err) {
+		nm_log_err (LOGD_DEVICE | LOGD_IP6,
+		            "(%s): failed to add IPv6 route to VPN gateway (%d)",
+		            nm_device_get_iface (parent_device), err);
+	}
+	return route;
+}
+
+static gboolean
 add_ip6_addresses (NMIP6Config *config, int ifindex)
 {
 	char *iface;
@@ -909,7 +992,7 @@ nm_system_replace_default_ip4_route_vpn (int ifindex,
 		goto out;
 
 	if ((err != -NLE_OBJ_NOTFOUND) && (err != -NLE_FAILURE)) {
-		nm_log_err (LOGD_DEVICE | LOGD_IP4,
+		nm_log_err (LOGD_DEVICE | LOGD_VPN | LOGD_IP4,
 		            "(%s): failed to set IPv4 default route: %d",
 		            iface, err);
 		goto out;
@@ -924,7 +1007,7 @@ nm_system_replace_default_ip4_route_vpn (int ifindex,
 	err = replace_default_ip4_route (ifindex, int_gw, mss);
 	if (err != 0) {
 		nm_netlink_route_delete (gw_route);
-		nm_log_err (LOGD_DEVICE | LOGD_IP4,
+		nm_log_err (LOGD_DEVICE | LOGD_VPN | LOGD_IP4,
 		            "(%s): failed to set IPv4 default route (pass #2): %d",
 		            iface, err);
 	} else
@@ -989,7 +1072,7 @@ out:
 }
 
 static struct rtnl_route *
-add_ip6_route_to_gateway (int ifindex, const struct in6_addr *gw)
+add_ip6_route_to_gateway (int ifindex, const struct in6_addr *gw, int mss)
 {
 	struct nl_sock *nlh;
 	struct rtnl_route *route = NULL;
@@ -999,7 +1082,7 @@ add_ip6_route_to_gateway (int ifindex, const struct in6_addr *gw)
 	g_return_val_if_fail (nlh != NULL, NULL);
 
 	/* Gateway might be over a bridge; try adding a route to gateway first */
-	route = nm_netlink_route_new (ifindex, AF_INET6, 0,
+	route = nm_netlink_route_new (ifindex, AF_INET6, mss,
 	                              NMNL_PROP_SCOPE, RT_SCOPE_LINK,
 	                              NMNL_PROP_TABLE, RT_TABLE_MAIN,
 	                              NULL);
@@ -1023,7 +1106,7 @@ add_ip6_route_to_gateway (int ifindex, const struct in6_addr *gw)
 }
 
 static int
-replace_default_ip6_route (int ifindex, const struct in6_addr *gw)
+add_default_ip6_route (int ifindex, const struct in6_addr *gw, int mss)
 {
 	struct rtnl_route *route = NULL;
 	struct nl_sock *nlh;
@@ -1034,25 +1117,81 @@ replace_default_ip6_route (int ifindex, const struct in6_addr *gw)
 	nlh = nm_netlink_get_default_handle ();
 	g_return_val_if_fail (nlh != NULL, -ENOMEM);
 
-	route = nm_netlink_route_new (ifindex, AF_INET6, 0,
+	route = nm_netlink_route_new (ifindex, AF_INET6, mss,
 	                              NMNL_PROP_SCOPE, RT_SCOPE_UNIVERSE,
 	                              NMNL_PROP_TABLE, RT_TABLE_MAIN,
+	                              NMNL_PROP_PRIO, 1,
 	                              NULL);
 	g_return_val_if_fail (route != NULL, -ENOMEM);
 
 	/* Add the new default route */
-	err = nm_netlink_route6_add (route, &in6addr_any, 0, gw, NLM_F_REPLACE);
-	if (err == -NLE_EXIST) {
-		/* FIXME: even though we use NLM_F_REPLACE the kernel won't replace
-		 * the route if it's the same.  Suppress the pointless error.
-		 */
+	err = nm_netlink_route6_add (route, &in6addr_any, 0, gw, NLM_F_CREATE);
+	if (err == -NLE_EXIST)
 		err = 0;
-	}
 
 	rtnl_route_put (route);
 	return err;
 }
 
+static struct rtnl_route *
+find_static_default_routes (struct rtnl_route *route,
+                            struct nl_addr *dst,
+                            const char *iface,
+                            gpointer user_data)
+{
+	GList **def_routes = user_data;
+
+	if (   nl_addr_get_prefixlen (dst) == 0
+	    && rtnl_route_get_protocol (route) == RTPROT_STATIC) {
+		rtnl_route_get (route);
+		*def_routes = g_list_prepend (*def_routes, route);
+	}
+
+	return NULL;
+}
+
+static int
+replace_default_ip6_route (int ifindex, const struct in6_addr *gw, int mss)
+{
+	GList *def_routes, *iter;
+	struct rtnl_route *route;
+	char *iface;
+	char gw_str[INET6_ADDRSTRLEN + 1];
+
+	g_return_val_if_fail (ifindex > 0, FALSE);
+	g_return_val_if_fail (gw != NULL, FALSE);
+
+	if (nm_logging_level_enabled (LOGL_DEBUG)) {
+		memset (gw_str, 0, sizeof (gw_str));
+		if (inet_ntop (AF_INET6, gw, gw_str, sizeof (gw_str) - 1))
+			nm_log_dbg (LOGD_IP6, "Setting IPv6 default route via %s", gw_str);
+	}
+
+	/* We can't just use NLM_F_REPLACE here like in the IPv4 case, because
+	 * the kernel doesn't like it if we replace the default routes it
+	 * creates. (See rh#785772.) So we delete any non-kernel default routes,
+	 * and then add a new default route of our own with a lower metric than
+	 * the kernel ones.
+	 */
+	def_routes = NULL;
+	nm_netlink_foreach_route (ifindex, AF_INET6, RT_SCOPE_UNIVERSE, TRUE,
+	                          find_static_default_routes, &def_routes);
+	for (iter = def_routes; iter; iter = iter->next) {
+		route = iter->data;
+		if (!nm_netlink_route_delete (route)) {
+			iface = nm_netlink_index_to_iface (ifindex);
+			nm_log_err (LOGD_DEVICE | LOGD_IP6,
+			            "(%s): failed to delete existing IPv6 default route",
+			            iface);
+			g_free (iface);
+		}
+		rtnl_route_put (route);
+	}
+	g_list_free (def_routes);
+
+	return add_default_ip6_route (ifindex, gw, mss);
+}
+
 /*
  * nm_system_replace_default_ip6_route
  *
@@ -1067,11 +1206,8 @@ nm_system_replace_default_ip6_route (int ifindex, const struct in6_addr *gw)
 	char *iface;
 	int err;
 
-	err = replace_default_ip6_route (ifindex, gw);
-	if (err == 0)
-		return TRUE;
-
-	if (err == -NLE_EXIST)
+	err = replace_default_ip6_route (ifindex, gw, 0);
+	if (err == 0 || err == -NLE_EXIST)
 		return TRUE;
 
 	iface = nm_netlink_index_to_iface (ifindex);
@@ -1086,12 +1222,12 @@ nm_system_replace_default_ip6_route (int ifindex, const struct in6_addr *gw)
 	}
 
 	/* Try adding a direct route to the gateway first */
-	gw_route = add_ip6_route_to_gateway (ifindex, gw);
+	gw_route = add_ip6_route_to_gateway (ifindex, gw, 0);
 	if (!gw_route)
 		goto out;
 
 	/* Try adding the original route again */
-	err = replace_default_ip6_route (ifindex, gw);
+	err = replace_default_ip6_route (ifindex, gw, 0);
 	if (err != 0) {
 		nm_netlink_route_delete (gw_route);
 		nm_log_err (LOGD_DEVICE | LOGD_IP6,
@@ -1107,6 +1243,60 @@ out:
 	return success;
 }
 
+gboolean
+nm_system_replace_default_ip6_route_vpn (int ifindex,
+                                         const struct in6_addr *ext_gw,
+                                         const struct in6_addr *int_gw,
+                                         guint32 mss,
+                                         int parent_ifindex,
+                                         guint32 parent_mss)
+{
+	struct rtnl_route *gw_route = NULL;
+	struct nl_sock *nlh;
+	gboolean success = FALSE;
+	int err;
+	char *iface;
+
+	nlh = nm_netlink_get_default_handle ();
+	g_return_val_if_fail (nlh != NULL, FALSE);
+
+	err = replace_default_ip6_route (ifindex, int_gw, mss);
+	if (err == 0)
+		return TRUE;
+
+	iface = nm_netlink_index_to_iface (ifindex);
+	if (!iface)
+		goto out;
+
+	if ((err != -NLE_OBJ_NOTFOUND) && (err != -NLE_FAILURE)) {
+		nm_log_err (LOGD_DEVICE | LOGD_VPN | LOGD_IP6,
+		            "(%s): failed to set IPv6 default route: %d",
+		            iface, err);
+		goto out;
+	}
+
+	/* Try adding a direct route to the gateway first */
+	gw_route = add_ip6_route_to_gateway (parent_ifindex, ext_gw, parent_mss);
+	if (!gw_route)
+		goto out;
+
+	/* Try adding the original route again */
+	err = replace_default_ip6_route (ifindex, int_gw, mss);
+	if (err != 0) {
+		nm_netlink_route_delete (gw_route);
+		nm_log_err (LOGD_DEVICE | LOGD_VPN | LOGD_IP6,
+		            "(%s): failed to set IPv6 default route (pass #2): %d",
+		            iface, err);
+	} else
+		success = TRUE;
+
+out:
+	if (gw_route)
+		rtnl_route_put (gw_route);
+	g_free (iface);
+	return success;
+}
+
 /*
  * nm_system_iface_flush_addresses
  *
@@ -1435,9 +1625,9 @@ nm_system_iface_enslave (gint master_ifindex,
 	struct nl_sock *sock;
 	int err;
 
-	g_return_val_if_fail (master_ifindex >= 0, FALSE);
+	g_return_val_if_fail (master_ifindex > 0, FALSE);
 	g_return_val_if_fail (master_iface != NULL, FALSE);
-	g_return_val_if_fail (slave_ifindex >= 0, FALSE);
+	g_return_val_if_fail (slave_ifindex > 0, FALSE);
 	g_return_val_if_fail (slave_iface != NULL, FALSE);
 
 	sock = nm_netlink_get_default_handle ();
@@ -1520,9 +1710,9 @@ nm_system_iface_release (gint master_ifindex,
 	struct nl_sock *sock;
 	int err;
 
-	g_return_val_if_fail (master_ifindex >= 0, FALSE);
+	g_return_val_if_fail (master_ifindex > 0, FALSE);
 	g_return_val_if_fail (master_iface != NULL, FALSE);
-	g_return_val_if_fail (slave_ifindex >= 0, FALSE);
+	g_return_val_if_fail (slave_ifindex > 0, FALSE);
 	g_return_val_if_fail (slave_iface != NULL, FALSE);
 
 	sock = nm_netlink_get_default_handle ();
@@ -1561,7 +1751,7 @@ nm_system_get_iface_type (int ifindex, const char *name)
 	char *type;
 	int res = NM_IFACE_TYPE_UNSPEC;
 
-	g_return_val_if_fail (ifindex >= 0 || name, NM_IFACE_TYPE_UNSPEC);
+	g_return_val_if_fail (ifindex > 0 || name, NM_IFACE_TYPE_UNSPEC);
 
 	nlh = nm_netlink_get_default_handle ();
 	if (!nlh)
@@ -1706,7 +1896,7 @@ nm_system_iface_compat_add_vlan_device (const char *master, int vid)
 	}
 
 	memset (&if_request, 0, sizeof (struct vlan_ioctl_args));
-	strcpy (if_request.device1, master);
+	g_strlcpy (if_request.device1, master, sizeof (if_request.device1));
 	if_request.cmd = ADD_VLAN_CMD;
 	if_request.u.VID = vid;
 
@@ -1732,7 +1922,7 @@ nm_system_iface_compat_rem_vlan_device (const char *iface)
 	}
 
 	memset (&if_request, 0, sizeof (struct vlan_ioctl_args));
-        strcpy (if_request.device1, iface);
+	g_strlcpy (if_request.device1, iface, sizeof (if_request.device1));
 	if_request.cmd = DEL_VLAN_CMD;
 
 	if (ioctl (fd, SIOCSIFVLAN, &if_request) < 0) {
@@ -1868,7 +2058,7 @@ nm_system_add_vlan_iface (NMConnection *connection,
 	guint32 vlan_flags = 0;
 	guint32 num, i, from, to;
 
-	g_return_val_if_fail (parent_ifindex >= 0, FALSE);
+	g_return_val_if_fail (parent_ifindex > 0, FALSE);
 
 	nlh = nm_netlink_get_default_handle ();
 	g_return_val_if_fail (nlh != NULL, FALSE);
diff --git a/src/nm-system.h b/src/nm-system.h
index 84ae6c27..1acb8853 100644
--- a/src/nm-system.h
+++ b/src/nm-system.h
@@ -53,8 +53,17 @@ gboolean		nm_system_replace_default_ip4_route_vpn (int ifindex,
                                                          int parent_ifindex,
                                                          guint32 parent_mss);
 
-struct rtnl_route *nm_system_add_ip4_vpn_gateway_route (NMDevice *parent_device, NMIP4Config *vpn_config);
+gboolean		nm_system_replace_default_ip6_route_vpn (int ifindex,
+                                                         const struct in6_addr *ext_gw,
+                                                         const struct in6_addr *int_gw,
+                                                         guint32 mss,
+                                                         int parent_ifindex,
+                                                         guint32 parent_mss);
 
+struct rtnl_route *nm_system_add_ip4_vpn_gateway_route (NMDevice *parent_device,
+                                                        guint32 vpn_gw);
+struct rtnl_route *nm_system_add_ip6_vpn_gateway_route (NMDevice *parent_device,
+                                                        const struct in6_addr *vpn_gw);
 
 gboolean        nm_system_iface_flush_addresses         (int ifindex, int family);
 
diff --git a/src/nm-udev-manager.c b/src/nm-udev-manager.c
index 45262f87..57b36d38 100644
--- a/src/nm-udev-manager.c
+++ b/src/nm-udev-manager.c
@@ -329,52 +329,34 @@ rfkill_remove (NMUdevManager *self,
 	}
 }
 
-static void
-net_add (NMUdevManager *self, GUdevDevice *udev_device)
+static gboolean
+dev_get_attrs (GUdevDevice *udev_device,
+               const char **out_ifname,
+               const char **out_path,
+               char **out_driver,
+               int *out_ifindex)
 {
 	GUdevDevice *parent = NULL, *grandparent = NULL;
-	gint ifindex;
-	gint etype;
-	const char *ifname, *driver, *path, *subsys, *tmp;
-	gboolean is_ctc;
+	const char *ifname, *driver, *path, *subsys;
+	gint ifindex = -1;
+	gboolean success = FALSE;
 
-	g_return_if_fail (udev_device != NULL);
+	g_return_val_if_fail (udev_device != NULL, FALSE);
+	g_return_val_if_fail (out_ifname != NULL, FALSE);
+	g_return_val_if_fail (out_path != NULL, FALSE);
+	g_return_val_if_fail (out_driver != NULL, FALSE);
+	g_return_val_if_fail (out_ifindex != NULL, FALSE);
 
 	ifname = g_udev_device_get_name (udev_device);
 	if (!ifname) {
 		nm_log_dbg (LOGD_HW, "failed to get device's interface");
-		return;
-	}
-
-	etype = g_udev_device_get_sysfs_attr_as_int (udev_device, "type");
-	is_ctc = (strncmp (ifname, "ctc", 3) == 0) && (etype == 256);
-
-	/* Ignore devices that don't report Ethernet encapsulation, except for
-	 * s390 CTC-type devices that report 256 for some reason.
-	 * FIXME: use something other than interface name to detect CTC here.
-	 */
-	if ((etype != ARPHRD_ETHER) && (etype != ARPHRD_INFINIBAND) && (is_ctc == FALSE)) {
-		nm_log_dbg (LOGD_HW, "(%s): ignoring interface with type %d", ifname, etype);
-		return;
-	}
-
-	/* Not all ethernet devices are immediately usable; newer mobile broadband
-	 * devices (Ericsson, Option, Sierra) require setup on the tty before the
-	 * ethernet device is usable.  2.6.33 and later kernels set the 'DEVTYPE'
-	 * uevent variable which we can use to ignore the interface as a NMDevice
-	 * subclass.  ModemManager will pick it up though and so we'll handle it
-	 * through the mobile broadband stuff.
-	 */
-	tmp = g_udev_device_get_property (udev_device, "DEVTYPE");
-	if (g_strcmp0 (tmp, "wwan") == 0) {
-		nm_log_dbg (LOGD_HW, "(%s): ignoring interface with devtype '%s'", ifname, tmp);
-		return;
+		return FALSE;
 	}
 
 	path = g_udev_device_get_sysfs_path (udev_device);
 	if (!path) {
 		nm_log_warn (LOGD_HW, "couldn't determine device path; ignoring...");
-		return;
+		return FALSE;
 	}
 
 	driver = g_udev_device_get_driver (udev_device);
@@ -399,11 +381,8 @@ net_add (NMUdevManager *self, GUdevDevice *udev_device)
 		}
 	}
 
-	ifindex = g_udev_device_get_sysfs_attr_as_int (udev_device, "ifindex");
-	if (ifindex <= 0) {
-		nm_log_warn (LOGD_HW, "%s: device had invalid ifindex %d; ignoring...", path, (guint32) ifindex);
-		goto out;
-	}
+	if (g_udev_device_get_sysfs_attr (udev_device, "ifindex"))
+		ifindex = g_udev_device_get_sysfs_attr_as_int (udev_device, "ifindex");
 
 	if (!driver) {
 		switch (nm_system_get_iface_type (ifindex, ifname)) {
@@ -425,13 +404,69 @@ net_add (NMUdevManager *self, GUdevDevice *udev_device)
 		}
 	}
 
-	g_signal_emit (self, signals[DEVICE_ADDED], 0, udev_device, ifname, path, driver, ifindex);
+	*out_ifname = ifname;
+	*out_path = path;
+	*out_driver = g_strdup (driver);
+	*out_ifindex = ifindex;
+	success = TRUE;
 
 out:
 	if (grandparent)
 		g_object_unref (grandparent);
 	if (parent)
 		g_object_unref (parent);
+
+	return success;
+}
+
+static void
+net_add (NMUdevManager *self, GUdevDevice *udev_device)
+{
+	gint ifindex = -1;
+	gint etype;
+	const char *ifname = NULL, *path = NULL, *tmp;
+	char *driver = NULL;
+	gboolean is_ctc;
+
+	g_return_if_fail (udev_device != NULL);
+
+	if (!dev_get_attrs (udev_device, &ifname, &path, &driver, &ifindex))
+		return;
+
+	if (ifindex < 0) {
+		nm_log_warn (LOGD_HW, "%s: device had invalid ifindex %d; ignoring...", path, ifindex);
+		goto out;
+	}
+
+	etype = g_udev_device_get_sysfs_attr_as_int (udev_device, "type");
+	is_ctc = (strncmp (ifname, "ctc", 3) == 0) && (etype == 256);
+
+	/* Ignore devices that don't report Ethernet encapsulation, except for
+	 * s390 CTC-type devices that report 256 for some reason.
+	 * FIXME: use something other than interface name to detect CTC here.
+	 */
+	if ((etype != ARPHRD_ETHER) && (etype != ARPHRD_INFINIBAND) && (is_ctc == FALSE)) {
+		nm_log_dbg (LOGD_HW, "(%s): ignoring interface with type %d", ifname, etype);
+		goto out;
+	}
+
+	/* Not all ethernet devices are immediately usable; newer mobile broadband
+	 * devices (Ericsson, Option, Sierra) require setup on the tty before the
+	 * ethernet device is usable.  2.6.33 and later kernels set the 'DEVTYPE'
+	 * uevent variable which we can use to ignore the interface as a NMDevice
+	 * subclass.  ModemManager will pick it up though and so we'll handle it
+	 * through the mobile broadband stuff.
+	 */
+	tmp = g_udev_device_get_property (udev_device, "DEVTYPE");
+	if (g_strcmp0 (tmp, "wwan") == 0) {
+		nm_log_dbg (LOGD_HW, "(%s): ignoring interface with devtype '%s'", ifname, tmp);
+		goto out;
+	}
+
+	g_signal_emit (self, signals[DEVICE_ADDED], 0, udev_device, ifname, path, driver, ifindex);
+
+out:
+	g_free (driver);
 }
 
 static void
@@ -440,6 +475,30 @@ net_remove (NMUdevManager *self, GUdevDevice *device)
 	g_signal_emit (self, signals[DEVICE_REMOVED], 0, device);
 }
 
+static void
+adsl_add (NMUdevManager *self, GUdevDevice *udev_device)
+{
+	gint ifindex = -1;
+	const char *ifname = NULL, *path = NULL;
+	char *driver = NULL;
+
+	g_return_if_fail (udev_device != NULL);
+
+	nm_log_dbg (LOGD_HW, "adsl_add: ATM Device detected from udev. Adding ..");
+
+	if (dev_get_attrs (udev_device, &ifname, &path, &driver, &ifindex))
+		g_signal_emit (self, signals[DEVICE_ADDED], 0, udev_device, ifname, path, driver, ifindex);
+	g_free (driver);
+}
+
+static void
+adsl_remove (NMUdevManager *self, GUdevDevice *device)
+{
+	nm_log_dbg (LOGD_HW, "adsl_remove: Removing ATM Device");
+
+	g_signal_emit (self, signals[DEVICE_REMOVED], 0, device);
+}
+
 void
 nm_udev_manager_query_devices (NMUdevManager *self)
 {
@@ -455,6 +514,14 @@ nm_udev_manager_query_devices (NMUdevManager *self)
 		g_object_unref (G_UDEV_DEVICE (iter->data));
 	}
 	g_list_free (devices);
+
+
+	devices = g_udev_client_query_by_subsystem (priv->client, "atm");
+	for (iter = devices; iter; iter = g_list_next (iter)) {
+		adsl_add (self, G_UDEV_DEVICE (iter->data));
+		g_object_unref (G_UDEV_DEVICE (iter->data));
+	}
+	g_list_free (devices);
 }
 
 static void
@@ -475,18 +542,23 @@ handle_uevent (GUdevClient *client,
 	nm_log_dbg (LOGD_HW, "UDEV event: action '%s' subsys '%s' device '%s'",
 	            action, subsys, g_udev_device_get_name (device));
 
-	g_return_if_fail (!strcmp (subsys, "rfkill") || !strcmp (subsys, "net"));
+	g_return_if_fail (!strcmp (subsys, "rfkill") || !strcmp (subsys, "net") ||
+	                  !strcmp (subsys, "atm"));
 
 	if (!strcmp (action, "add")) {
 		if (!strcmp (subsys, "rfkill"))
 			rfkill_add (self, device);
 		else if (!strcmp (subsys, "net"))
 			net_add (self, device);
+		else if (!strcmp (subsys, "atm"))
+			adsl_add (self, device);
 	} else if (!strcmp (action, "remove")) {
 		if (!strcmp (subsys, "rfkill"))
 			rfkill_remove (self, device);
 		else if (!strcmp (subsys, "net"))
 			net_remove (self, device);
+		else if (!strcmp (subsys, "atm"))
+			adsl_remove (self, device);
 	}
 
 	recheck_killswitches (self);
@@ -496,7 +568,7 @@ static void
 nm_udev_manager_init (NMUdevManager *self)
 {
 	NMUdevManagerPrivate *priv = NM_UDEV_MANAGER_GET_PRIVATE (self);
-	const char *subsys[3] = { "rfkill", "net", NULL };
+	const char *subsys[4] = { "rfkill", "net", "atm", NULL };
 	GList *switches, *iter;
 	guint32 i;
 
diff --git a/src/nm-wifi-ap.c b/src/nm-wifi-ap.c
index 92a99b69..6a607960 100644
--- a/src/nm-wifi-ap.c
+++ b/src/nm-wifi-ap.c
@@ -509,7 +509,6 @@ NMAccessPoint *
 nm_ap_new_from_properties (const char *supplicant_path, GHashTable *properties)
 {
 	NMAccessPoint *ap;
-	GTimeVal cur_time;
 	const struct ether_addr * addr;
 	const char bad_bssid1[ETH_ALEN] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
 	const char bad_bssid2[ETH_ALEN] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
@@ -531,8 +530,7 @@ nm_ap_new_from_properties (const char *supplicant_path, GHashTable *properties)
 		return NULL;
 	}
 
-	g_get_current_time (&cur_time);
-	nm_ap_set_last_seen (ap, cur_time.tv_sec);
+	nm_ap_set_last_seen (ap, (guint32) time (NULL));
 
 	if (!nm_ap_get_ssid (ap))
 		nm_ap_set_broadcast (ap, FALSE);
@@ -966,16 +964,15 @@ void nm_ap_set_mode (NMAccessPoint *ap, const NM80211Mode mode)
 	NMAccessPointPrivate *priv;
 
 	g_return_if_fail (NM_IS_AP (ap));
+	g_return_if_fail (   mode == NM_802_11_MODE_ADHOC
+	                  || mode == NM_802_11_MODE_INFRA);
 
-	if (mode == NM_802_11_MODE_ADHOC || mode == NM_802_11_MODE_INFRA) {
-		priv = NM_AP_GET_PRIVATE (ap);
+	priv = NM_AP_GET_PRIVATE (ap);
 
-		if (priv->mode != mode) {
-			priv->mode = mode;
-			g_object_notify (G_OBJECT (ap), NM_AP_MODE);
-		}
-	} else
-		nm_log_warn (LOGD_WIFI, "Invalid AP mode '%d'", mode);
+	if (priv->mode != mode) {
+		priv->mode = mode;
+		g_object_notify (G_OBJECT (ap), NM_AP_MODE);
+	}
 }
 
 
diff --git a/src/org.freedesktop.NetworkManager.conf b/src/org.freedesktop.NetworkManager.conf
index 15b11b7e..7df1c8e8 100644
--- a/src/org.freedesktop.NetworkManager.conf
+++ b/src/org.freedesktop.NetworkManager.conf
@@ -43,15 +43,12 @@
                        send_interface="org.freedesktop.NetworkManager.Connection.Active"/>
 
                 <allow send_destination="org.freedesktop.NetworkManager"
-                       send_interface="org.freedesktop.NetworkManager.Device.Cdma"/>
+                       send_interface="org.freedesktop.NetworkManager.Device.Modem"/>
 
                 <allow send_destination="org.freedesktop.NetworkManager"
                        send_interface="org.freedesktop.NetworkManager.Device.Wired"/>
 
                 <allow send_destination="org.freedesktop.NetworkManager"
-                       send_interface="org.freedesktop.NetworkManager.Device.Gsm"/>
-
-                <allow send_destination="org.freedesktop.NetworkManager"
                        send_interface="org.freedesktop.NetworkManager.Device.Serial"/>
 
                 <allow send_destination="org.freedesktop.NetworkManager"
@@ -115,7 +112,5 @@
                        send_interface="org.freedesktop.NetworkManager"
                        send_member="wake"/>
         </policy>
-
-        <limit name="max_replies_per_connection">512</limit>
 </busconfig>
 
diff --git a/src/posix-signals/Makefile.am b/src/posix-signals/Makefile.am
new file mode 100644
index 00000000..88c3d8d4
--- /dev/null
+++ b/src/posix-signals/Makefile.am
@@ -0,0 +1,15 @@
+noinst_LTLIBRARIES = libnm-posix-signals.la
+
+libnm_posix_signals_la_SOURCES = \
+	nm-posix-signals.c \
+	nm-posix-signals.h
+
+libnm_posix_signals_la_CPPFLAGS = \
+	$(GLIB_CFLAGS) \
+	-DLIBEXECDIR=\"$(libexecdir)\" \
+	-DG_DISABLE_DEPRECATED
+
+libnm_posix_signals_la_LIBADD = \
+	-ldl \
+	$(GLIB_LIBS)
+
diff --git a/src/posix-signals/Makefile.in b/src/posix-signals/Makefile.in
new file mode 100644
index 00000000..3cacb29f
--- /dev/null
+++ b/src/posix-signals/Makefile.in
@@ -0,0 +1,640 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/posix-signals
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/introspection.m4 \
+	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libnl-check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libnm_posix_signals_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_libnm_posix_signals_la_OBJECTS =  \
+	libnm_posix_signals_la-nm-posix-signals.lo
+libnm_posix_signals_la_OBJECTS = $(am_libnm_posix_signals_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libnm_posix_signals_la_SOURCES)
+DIST_SOURCES = $(libnm_posix_signals_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DBUS_SYS_DIR = @DBUS_SYS_DIR@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DHCLIENT_PATH = @DHCLIENT_PATH@
+DHCLIENT_VERSION = @DHCLIENT_VERSION@
+DHCPCD_PATH = @DHCPCD_PATH@
+DISABLE_DEPRECATED = @DISABLE_DEPRECATED@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GIO_CFLAGS = @GIO_CFLAGS@
+GIO_LIBS = @GIO_LIBS@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MAKEFILE = @GLIB_MAKEFILE@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMODULE_CFLAGS = @GMODULE_CFLAGS@
+GMODULE_LIBS = @GMODULE_LIBS@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
+GNUTLS_LIBS = @GNUTLS_LIBS@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GUDEV_CFLAGS = @GUDEV_CFLAGS@
+GUDEV_LIBS = @GUDEV_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
+INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
+INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
+INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
+INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
+INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
+IPTABLES_PATH = @IPTABLES_PATH@
+IWMX_SDK_CFLAGS = @IWMX_SDK_CFLAGS@
+IWMX_SDK_LIBS = @IWMX_SDK_LIBS@
+KERNEL_FIRMWARE_DIR = @KERNEL_FIRMWARE_DIR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBDL = @LIBDL@
+LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@
+LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@
+LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBNL1_CFLAGS = @LIBNL1_CFLAGS@
+LIBNL1_LIBS = @LIBNL1_LIBS@
+LIBNL2_CFLAGS = @LIBNL2_CFLAGS@
+LIBNL2_LIBS = @LIBNL2_LIBS@
+LIBNL3_CFLAGS = @LIBNL3_CFLAGS@
+LIBNL3_LIBS = @LIBNL3_LIBS@
+LIBNL_CFLAGS = @LIBNL_CFLAGS@
+LIBNL_GENL3_CFLAGS = @LIBNL_GENL3_CFLAGS@
+LIBNL_GENL3_LIBS = @LIBNL_GENL3_LIBS@
+LIBNL_LIBS = @LIBNL_LIBS@
+LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@
+LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSOUP_CFLAGS = @LIBSOUP_CFLAGS@
+LIBSOUP_LIBS = @LIBSOUP_LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MOC = @MOC@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+NM_MAJOR_VERSION = @NM_MAJOR_VERSION@
+NM_MICRO_VERSION = @NM_MICRO_VERSION@
+NM_MINOR_VERSION = @NM_MINOR_VERSION@
+NM_VERSION = @NM_VERSION@
+NSS_CFLAGS = @NSS_CFLAGS@
+NSS_LIBS = @NSS_LIBS@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKGCONFIG_PATH = @PKGCONFIG_PATH@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POLKIT_CFLAGS = @POLKIT_CFLAGS@
+POLKIT_LIBS = @POLKIT_LIBS@
+POSUB = @POSUB@
+PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
+QT_CFLAGS = @QT_CFLAGS@
+QT_LIBS = @QT_LIBS@
+RANLIB = @RANLIB@
+RESOLVCONF_PATH = @RESOLVCONF_PATH@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
+SYSTEMD_LIBS = @SYSTEMD_LIBS@
+SYSTEM_CA_PATH = @SYSTEM_CA_PATH@
+UDEV_BASE_DIR = @UDEV_BASE_DIR@
+USE_NLS = @USE_NLS@
+UUID_CFLAGS = @UUID_CFLAGS@
+UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+systemdsystemunitdir = @systemdsystemunitdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+noinst_LTLIBRARIES = libnm-posix-signals.la
+libnm_posix_signals_la_SOURCES = \
+	nm-posix-signals.c \
+	nm-posix-signals.h
+
+libnm_posix_signals_la_CPPFLAGS = \
+	$(GLIB_CFLAGS) \
+	-DLIBEXECDIR=\"$(libexecdir)\" \
+	-DG_DISABLE_DEPRECATED
+
+libnm_posix_signals_la_LIBADD = \
+	-ldl \
+	$(GLIB_LIBS)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/posix-signals/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/posix-signals/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libnm-posix-signals.la: $(libnm_posix_signals_la_OBJECTS) $(libnm_posix_signals_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK)  $(libnm_posix_signals_la_OBJECTS) $(libnm_posix_signals_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_posix_signals_la-nm-posix-signals.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+
+libnm_posix_signals_la-nm-posix-signals.lo: nm-posix-signals.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_posix_signals_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnm_posix_signals_la-nm-posix-signals.lo -MD -MP -MF $(DEPDIR)/libnm_posix_signals_la-nm-posix-signals.Tpo -c -o libnm_posix_signals_la-nm-posix-signals.lo `test -f 'nm-posix-signals.c' || echo '$(srcdir)/'`nm-posix-signals.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnm_posix_signals_la-nm-posix-signals.Tpo $(DEPDIR)/libnm_posix_signals_la-nm-posix-signals.Plo
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='nm-posix-signals.c' object='libnm_posix_signals_la-nm-posix-signals.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_posix_signals_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnm_posix_signals_la-nm-posix-signals.lo `test -f 'nm-posix-signals.c' || echo '$(srcdir)/'`nm-posix-signals.c
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/posix-signals/nm-posix-signals.c b/src/posix-signals/nm-posix-signals.c
new file mode 100644
index 00000000..22fed831
--- /dev/null
+++ b/src/posix-signals/nm-posix-signals.c
@@ -0,0 +1,62 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager -- Network link manager
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ */
+
+#include "config.h"
+
+#include <signal.h>
+
+#include "nm-posix-signals.h"
+
+
+/* Stores the original signal mask of NetworkManager process */
+static sigset_t nm_original_signal_mask;
+
+void
+nm_save_original_signal_mask (sigset_t sig_mask)
+{
+	nm_original_signal_mask = sig_mask;
+}
+
+const sigset_t *
+nm_get_original_signal_mask (void)
+{
+	return &nm_original_signal_mask;
+}
+
+/* 
+ * Unblock signals.
+ * If a signal set is passed, those signals are unblocked. If user_data is NULL
+ * the process' signal mask is set to the saved original mask.
+ * Note: This function can be used in g_spawn_* as GSpawnChildSetupFunc()
+ *       callback.
+ */
+void
+nm_unblock_posix_signals (gpointer user_data)
+{
+	sigset_t *user_sigset = (sigset_t *) user_data;
+
+	if (user_sigset != NULL) {
+		pthread_sigmask (SIG_UNBLOCK, user_sigset, NULL);
+	} else {
+		const sigset_t *orig_sig_mask = nm_get_original_signal_mask ();
+		pthread_sigmask (SIG_SETMASK, orig_sig_mask, NULL);
+	}
+}
+
diff --git a/src/posix-signals/nm-posix-signals.h b/src/posix-signals/nm-posix-signals.h
new file mode 100644
index 00000000..81be5e1c
--- /dev/null
+++ b/src/posix-signals/nm-posix-signals.h
@@ -0,0 +1,36 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager -- Network link manager
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ */
+
+#ifndef NM_POSIX_SIGNALS_H
+#define NM_POSIX_SIGNALS_H
+
+#include <glib.h>
+#include <signal.h>
+
+/*
+ * This function can be used in g_spawn_* as GSpawnChildSetupFunc()
+ * callback.
+ */
+void nm_unblock_posix_signals (gpointer user_data);
+
+void nm_save_original_signal_mask (sigset_t sig_mask);
+const sigset_t *nm_get_original_signal_mask (void);
+
+#endif /* NM_POSIX_SIGNALS_H */
diff --git a/src/ppp-manager/Makefile.am b/src/ppp-manager/Makefile.am
index 8df2f584..36e54ec9 100644
--- a/src/ppp-manager/Makefile.am
+++ b/src/ppp-manager/Makefile.am
@@ -7,7 +7,8 @@ INCLUDES = \
 	-I${top_srcdir}/src \
 	-I${top_srcdir}/src/generated \
 	-I${top_builddir}/src/generated \
-	-I${top_srcdir}/src/logging
+	-I${top_srcdir}/src/logging \
+	-I${top_srcdir}/src/posix-signals
 
 noinst_LTLIBRARIES = libppp-manager.la
 
@@ -33,6 +34,7 @@ libppp_manager_la_CPPFLAGS = \
 libppp_manager_la_LIBADD = \
 	$(top_builddir)/src/generated/libnm-generated.la \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(DBUS_LIBS) \
 	$(GLIB_LIBS)
 
diff --git a/src/ppp-manager/Makefile.in b/src/ppp-manager/Makefile.in
index 55355a7d..c9ff095a 100644
--- a/src/ppp-manager/Makefile.in
+++ b/src/ppp-manager/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -81,6 +81,7 @@ am__DEPENDENCIES_1 =
 libppp_manager_la_DEPENDENCIES =  \
 	$(top_builddir)/src/generated/libnm-generated.la \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 am_libppp_manager_la_OBJECTS = libppp_manager_la-nm-ppp-manager.lo
 libppp_manager_la_OBJECTS = $(am_libppp_manager_la_OBJECTS)
@@ -204,6 +205,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -299,6 +304,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -337,6 +345,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -366,7 +376,8 @@ INCLUDES = \
 	-I${top_srcdir}/src \
 	-I${top_srcdir}/src/generated \
 	-I${top_builddir}/src/generated \
-	-I${top_srcdir}/src/logging
+	-I${top_srcdir}/src/logging \
+	-I${top_srcdir}/src/posix-signals
 
 noinst_LTLIBRARIES = libppp-manager.la
 libppp_manager_la_SOURCES = \
@@ -385,6 +396,7 @@ libppp_manager_la_CPPFLAGS = \
 libppp_manager_la_LIBADD = \
 	$(top_builddir)/src/generated/libnm-generated.la \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(DBUS_LIBS) \
 	$(GLIB_LIBS)
 
diff --git a/src/ppp-manager/nm-ppp-manager.c b/src/ppp-manager/nm-ppp-manager.c
index 59698c34..73cc566f 100644
--- a/src/ppp-manager/nm-ppp-manager.c
+++ b/src/ppp-manager/nm-ppp-manager.c
@@ -16,7 +16,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
  * Copyright (C) 2008 Novell, Inc.
- * Copyright (C) 2008 - 2011 Red Hat, Inc.
+ * Copyright (C) 2008 - 2012 Red Hat, Inc.
  */
 
 #include <config.h>
@@ -47,11 +47,13 @@
 #include "nm-setting-connection.h"
 #include "nm-setting-ppp.h"
 #include "nm-setting-pppoe.h"
+#include "nm-setting-adsl.h"
 #include "nm-setting-gsm.h"
 #include "nm-setting-cdma.h"
 #include "nm-dbus-manager.h"
 #include "nm-logging.h"
 #include "nm-marshal.h"
+#include "nm-posix-signals.h"
 
 static void impl_ppp_manager_need_secrets (NMPPPManager *manager,
                                            DBusGMethodInvocation *context);
@@ -304,18 +306,20 @@ monitor_cb (gpointer user_data)
 {
 	NMPPPManager *manager = NM_PPP_MANAGER (user_data);
 	NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (manager);
-	struct ifpppstatsreq req;
+	struct ifreq req;
+	struct ppp_stats stats;
 
 	memset (&req, 0, sizeof (req));
-	req.stats_ptr = (caddr_t) &req.stats;
+	memset (&stats, 0, sizeof (stats));
+	req.ifr_data = (caddr_t) &stats;
 
-	strncpy (req.ifr__name, priv->ip_iface, sizeof (req.ifr__name));
+	strncpy (req.ifr_name, priv->ip_iface, sizeof (req.ifr_name));
 	if (ioctl (priv->monitor_fd, SIOCGPPPSTATS, &req) < 0) {
 		nm_log_warn (LOGD_PPP, "could not read ppp stats: %s", strerror (errno));
 	} else {
 		g_signal_emit (manager, signals[STATS], 0, 
-		               req.stats.p.ppp_ibytes,
-		               req.stats.p.ppp_obytes);
+		               stats.p.ppp_ibytes,
+		               stats.p.ppp_obytes);
 	}
 
 	return TRUE;
@@ -391,6 +395,9 @@ extract_details_from_connection (NMConnection *connection,
 	if (NM_IS_SETTING_PPPOE (setting)) {
 		*username = nm_setting_pppoe_get_username (NM_SETTING_PPPOE (setting));
 		*password = nm_setting_pppoe_get_password (NM_SETTING_PPPOE (setting));
+	} else if (NM_IS_SETTING_ADSL (setting)) {
+		*username = nm_setting_adsl_get_username (NM_SETTING_ADSL (setting));
+		*password = nm_setting_adsl_get_password (NM_SETTING_ADSL (setting));
 	} else if (NM_IS_SETTING_GSM (setting)) {
 		*username = nm_setting_gsm_get_username (NM_SETTING_GSM (setting));
 		*password = nm_setting_gsm_get_password (NM_SETTING_GSM (setting));
@@ -792,6 +799,7 @@ static NMCmdLine *
 create_pppd_cmd_line (NMPPPManager *self,
                       NMSettingPPP *setting, 
                       NMSettingPPPOE *pppoe,
+                      NMSettingAdsl  *adsl,
                       const char *ppp_name,
                       GError **err)
 {
@@ -819,6 +827,10 @@ create_pppd_cmd_line (NMPPPManager *self,
 	/* NM handles setting the default route */
 	nm_cmd_line_add_string (cmd, "nodefaultroute");
 
+	/* Allow IPv6 to be configured by IPV6CP */
+	nm_cmd_line_add_string (cmd, "ipv6");
+	nm_cmd_line_add_string (cmd, ",");
+
 	ppp_debug = !!getenv ("NM_PPP_DEBUG");
 	if (   nm_logging_level_enabled (LOGL_DEBUG)
 	    && nm_logging_domain_enabled (LOGD_PPP))
@@ -848,6 +860,34 @@ create_pppd_cmd_line (NMPPPManager *self,
 			nm_cmd_line_add_string (cmd, "rp_pppoe_service");
 			nm_cmd_line_add_string (cmd, pppoe_service);
 		}
+	} else if (adsl) {
+		const gchar *protocol = nm_setting_adsl_get_protocol (adsl);
+
+		if (!strcmp (protocol, NM_SETTING_ADSL_PROTOCOL_PPPOA)) {
+			guint32 vpi = nm_setting_adsl_get_vpi (adsl);
+			guint32 vci = nm_setting_adsl_get_vci (adsl);
+			const char *encaps = nm_setting_adsl_get_encapsulation (adsl);
+			gchar *vpivci;
+
+			nm_cmd_line_add_string (cmd, "plugin");
+			nm_cmd_line_add_string (cmd, "pppoatm.so");
+
+			vpivci = g_strdup_printf("%d.%d", vpi, vci);
+			nm_cmd_line_add_string (cmd, vpivci);
+			g_free (vpivci);
+
+			if (g_strcmp0 (encaps, NM_SETTING_ADSL_ENCAPSULATION_LLC) == 0)
+				nm_cmd_line_add_string (cmd, "llc-encaps");
+			else if (g_strcmp0 (encaps, NM_SETTING_ADSL_ENCAPSULATION_VCMUX) == 0)
+				nm_cmd_line_add_string (cmd, "vc-encaps");
+
+		} else if (!strcmp (protocol, NM_SETTING_ADSL_PROTOCOL_PPPOE)) {
+			nm_cmd_line_add_string (cmd, "plugin");
+			nm_cmd_line_add_string (cmd, "rp-pppoe.so");
+			nm_cmd_line_add_string (cmd, priv->parent_iface);
+		}
+
+		nm_cmd_line_add_string (cmd, "noipdefault");
 	} else {
 		nm_cmd_line_add_string (cmd, priv->parent_iface);
 		/* Don't send some random address as the local address */
@@ -924,6 +964,12 @@ pppd_child_setup (gpointer user_data G_GNUC_UNUSED)
 	/* We are in the child process at this point */
 	pid_t pid = getpid ();
 	setpgid (pid, pid);
+
+	/*
+	 * We blocked signals in main(). We need to restore original signal
+	 * mask for pppd here so that it can receive signals.
+	 */
+	nm_unblock_posix_signals (NULL);
 }
 
 static void
@@ -965,6 +1011,7 @@ nm_ppp_manager_start (NMPPPManager *manager,
 	NMSettingPPP *s_ppp;
 	gboolean s_ppp_created = FALSE;
 	NMSettingPPPOE *pppoe_setting;
+	NMSettingAdsl *adsl_setting;
 	NMCmdLine *ppp_cmd;
 	char *cmd_str;
 	struct stat st;
@@ -1006,7 +1053,9 @@ nm_ppp_manager_start (NMPPPManager *manager,
 	if (pppoe_setting)
 		pppoe_fill_defaults (s_ppp);
 
-	ppp_cmd = create_pppd_cmd_line (manager, s_ppp, pppoe_setting, ppp_name, err);
+	adsl_setting = (NMSettingAdsl *) nm_connection_get_setting (connection, NM_TYPE_SETTING_ADSL);
+
+	ppp_cmd = create_pppd_cmd_line (manager, s_ppp, pppoe_setting, adsl_setting, ppp_name, err);
 	if (!ppp_cmd)
 		goto out;
 
diff --git a/src/settings/Makefile.in b/src/settings/Makefile.in
index d1278206..b8cbffc4 100644
--- a/src/settings/Makefile.in
+++ b/src/settings/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -230,6 +230,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -325,6 +329,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -363,6 +370,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/settings/nm-settings-connection.c b/src/settings/nm-settings-connection.c
index 5d240c77..ddc758c7 100644
--- a/src/settings/nm-settings-connection.c
+++ b/src/settings/nm-settings-connection.c
@@ -1355,7 +1355,7 @@ dbus_secrets_auth_cb (NMSettingsConnection *self,
 			                                          TRUE,
 			                                          sender_uid,
 			                                          setting_name,
-			                                          NM_SETTINGS_GET_SECRETS_FLAG_NONE,
+			                                          NM_SETTINGS_GET_SECRETS_FLAG_USER_REQUESTED,
 			                                          NULL,
 			                                          dbus_get_agent_secrets_cb,
 			                                          context,
diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c
index 1ead4f8b..96564605 100644
--- a/src/settings/nm-settings.c
+++ b/src/settings/nm-settings.c
@@ -49,6 +49,7 @@
 #include <nm-setting-serial.h>
 #include <nm-setting-vpn.h>
 #include <nm-setting-wired.h>
+#include <nm-setting-adsl.h>
 #include <nm-setting-wireless.h>
 #include <nm-setting-wireless-security.h>
 #include <nm-setting-bond.h>
@@ -68,6 +69,7 @@
 #include "plugins/keyfile/plugin.h"
 #include "nm-agent-manager.h"
 #include "nm-settings-utils.h"
+#include "nm-connection-provider.h"
 
 #define CONFIG_KEY_NO_AUTO_DEFAULT "no-auto-default"
 
@@ -110,6 +112,12 @@ static void impl_settings_save_hostname (NMSettings *self,
 
 static void unmanaged_specs_changed (NMSystemConfigInterface *config, gpointer user_data);
 
+static void connection_provider_init (NMConnectionProvider *cp_class);
+
+G_DEFINE_TYPE_EXTENDED (NMSettings, nm_settings, G_TYPE_OBJECT, 0,
+                        G_IMPLEMENT_INTERFACE (NM_TYPE_CONNECTION_PROVIDER, connection_provider_init))
+
+
 typedef struct {
 	NMDBusManager *dbus_mgr;
 	DBusGConnection *bus;
@@ -127,8 +135,6 @@ typedef struct {
 	GSList *unmanaged_specs;
 } NMSettingsPrivate;
 
-G_DEFINE_TYPE (NMSettings, nm_settings, G_TYPE_OBJECT)
-
 #define NM_SETTINGS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTINGS, NMSettingsPrivate))
 
 enum {
@@ -186,6 +192,7 @@ load_connections (NMSettings *self)
 	unmanaged_specs_changed (NULL, self);
 
 	g_signal_emit (self, signals[CONNECTIONS_LOADED], 0);
+	g_signal_emit_by_name (self, NM_CP_SIGNAL_CONNECTIONS_LOADED);
 }
 
 void
@@ -674,6 +681,7 @@ connection_removed (NMSettingsConnection *obj, gpointer user_data)
 
 	/* Re-emit for listeners like NMPolicy */
 	g_signal_emit (NM_SETTINGS (user_data), signals[CONNECTION_REMOVED], 0, connection);
+	g_signal_emit_by_name (NM_SETTINGS (user_data), NM_CP_SIGNAL_CONNECTION_REMOVED, connection);
 
 	g_object_unref (connection);
 }
@@ -701,6 +709,7 @@ connection_updated (NMSettingsConnection *connection, gpointer user_data)
 	               signals[CONNECTION_UPDATED],
 	               0,
 	               connection);
+	g_signal_emit_by_name (NM_SETTINGS (user_data), NM_CP_SIGNAL_CONNECTION_UPDATED, connection);
 }
 
 static void
@@ -849,6 +858,7 @@ claim_connection (NMSettings *self,
 	if (priv->connections_loaded) {
 		/* Internal added signal */
 		g_signal_emit (self, signals[CONNECTION_ADDED], 0, connection);
+		g_signal_emit_by_name (self, NM_CP_SIGNAL_CONNECTION_ADDED, connection);
 
 		/* Exported D-Bus signal */
 		g_signal_emit (self, signals[NEW_CONNECTION], 0, connection);
@@ -1621,6 +1631,100 @@ nm_settings_device_removed (NMSettings *self, NMDevice *device)
 
 /***************************************************************/
 
+static gint
+best_connection_sort (gconstpointer a, gconstpointer b, gpointer user_data)
+{
+	NMSettingsConnection *ac = (NMSettingsConnection *) a;
+	NMSettingsConnection *bc = (NMSettingsConnection *) b;
+	guint64 ats, bts;
+
+	if (!ac && bc)
+		return -1;
+	else if (ac && !bc)
+		return 1;
+	else if (!ac && !bc)
+		return 0;
+
+	g_assert (ac && bc);
+
+	/* In the future we may use connection priorities in addition to timestamps */
+	ats = nm_settings_connection_get_timestamp (ac);
+	bts = nm_settings_connection_get_timestamp (bc);
+
+	if (ats < bts)
+		return -1;
+	else if (ats > bts)
+		return 1;
+	return 0;
+}
+
+static GSList *
+get_best_connections (NMConnectionProvider *provider,
+                      guint max_requested,
+                      const char *ctype1,
+                      const char *ctype2,
+                      NMConnectionFilterFunc func,
+                      gpointer func_data)
+{
+	NMSettings *self = NM_SETTINGS (provider);
+	NMSettingsPrivate *priv = NM_SETTINGS_GET_PRIVATE (self);
+	GSList *sorted = NULL;
+	GHashTableIter iter;
+	NMSettingsConnection *connection;
+	guint added = 0;
+	guint64 oldest = 0;
+
+	g_hash_table_iter_init (&iter, priv->connections);
+	while (g_hash_table_iter_next (&iter, NULL, (gpointer) &connection)) {
+		if (ctype1 && !nm_connection_is_type (NM_CONNECTION (connection), ctype1))
+			continue;
+		if (ctype2 && !nm_connection_is_type (NM_CONNECTION (connection), ctype2))
+			continue;
+		if (func && !func (provider, NM_CONNECTION (connection), func_data))
+			continue;
+
+		/* Don't bother with a connection that's older than the oldest one in the list */
+		if (   max_requested
+		    && added >= max_requested
+		    && nm_settings_connection_get_timestamp (connection) <= oldest)
+			continue;
+
+		/* List is sorted with oldest first */
+		sorted = g_slist_insert_sorted_with_data (sorted, connection, best_connection_sort, NULL);
+		added++;
+
+		if (max_requested && added > max_requested) {
+			/* Over the limit, remove the oldest one */
+			sorted = g_slist_delete_link (sorted, sorted);
+			added--;
+		}
+
+		oldest = nm_settings_connection_get_timestamp (NM_SETTINGS_CONNECTION (sorted->data));
+	}
+
+	return g_slist_reverse (sorted);
+}
+
+static const GSList *
+get_connections (NMConnectionProvider *provider)
+{
+	static GSList *list = NULL;
+	NMSettings *self = NM_SETTINGS (provider);
+	GHashTableIter iter;
+	NMSettingsConnection *connection;
+
+	/* Lazily free the list with every call so we can keep it 'const' for callers */
+	g_slist_free (list);
+	list = NULL;
+
+	g_hash_table_iter_init (&iter, NM_SETTINGS_GET_PRIVATE (self)->connections);
+	while (g_hash_table_iter_next (&iter, NULL, (gpointer) &connection))
+		list = g_slist_prepend (list, connection);
+	return g_slist_reverse (list);
+}
+
+/***************************************************************/
+
 NMSettings *
 nm_settings_new (const char *config_file,
                  const char **plugins,
@@ -1660,6 +1764,13 @@ nm_settings_new (const char *config_file,
 }
 
 static void
+connection_provider_init (NMConnectionProvider *cp_class)
+{
+    cp_class->get_best_connections = get_best_connections;
+    cp_class->get_connections = get_connections;
+}
+
+static void
 nm_settings_init (NMSettings *self)
 {
 	NMSettingsPrivate *priv = NM_SETTINGS_GET_PRIVATE (self);
@@ -1873,6 +1984,7 @@ nm_settings_class_init (NMSettingsClass *class)
 	dbus_g_error_domain_register (NM_SETTING_PPP_ERROR, NULL, NM_TYPE_SETTING_PPP_ERROR);
 	dbus_g_error_domain_register (NM_SETTING_PPPOE_ERROR, NULL, NM_TYPE_SETTING_PPPOE_ERROR);
 	dbus_g_error_domain_register (NM_SETTING_SERIAL_ERROR, NULL, NM_TYPE_SETTING_SERIAL_ERROR);
+	dbus_g_error_domain_register (NM_SETTING_ADSL_ERROR, NULL, NM_TYPE_SETTING_ADSL_ERROR);
 	dbus_g_error_domain_register (NM_SETTING_VPN_ERROR, NULL, NM_TYPE_SETTING_VPN_ERROR);
 	dbus_g_error_domain_register (NM_SETTING_WIRED_ERROR, NULL, NM_TYPE_SETTING_WIRED_ERROR);
 	dbus_g_error_domain_register (NM_SETTING_WIRELESS_SECURITY_ERROR, NULL, NM_TYPE_SETTING_WIRELESS_SECURITY_ERROR);
diff --git a/src/settings/plugins/Makefile.am b/src/settings/plugins/Makefile.am
index 5df57d5e..d4ba12f0 100644
--- a/src/settings/plugins/Makefile.am
+++ b/src/settings/plugins/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS=keyfile
+SUBDIRS=keyfile example
 
 if TARGET_REDHAT
 SUBDIRS+=ifcfg-rh
diff --git a/src/settings/plugins/Makefile.in b/src/settings/plugins/Makefile.in
index 0997f445..11560049 100644
--- a/src/settings/plugins/Makefile.in
+++ b/src/settings/plugins/Makefile.in
@@ -51,7 +51,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -80,7 +80,7 @@ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
 	distdir
 ETAGS = etags
 CTAGS = ctags
-DIST_SUBDIRS = keyfile ifcfg-rh ifcfg-suse ifupdown ifnet
+DIST_SUBDIRS = keyfile example ifcfg-rh ifcfg-suse ifupdown ifnet
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -179,6 +179,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -274,6 +278,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -312,6 +319,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -332,8 +341,8 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-SUBDIRS = keyfile $(am__append_1) $(am__append_2) $(am__append_3) \
-	$(am__append_4) $(am__append_5)
+SUBDIRS = keyfile example $(am__append_1) $(am__append_2) \
+	$(am__append_3) $(am__append_4) $(am__append_5)
 all: all-recursive
 
 .SUFFIXES:
diff --git a/src/settings/plugins/example/Makefile.am b/src/settings/plugins/example/Makefile.am
new file mode 100644
index 00000000..027f6f89
--- /dev/null
+++ b/src/settings/plugins/example/Makefile.am
@@ -0,0 +1,40 @@
+INCLUDES = \
+	-I$(top_srcdir)/src/settings \
+	-I$(top_srcdir)/include \
+	-I$(top_builddir)/include \
+	-I$(top_srcdir)/libnm-util \
+	-I$(top_builddir)/libnm-util
+
+# 'noinst' here because this is an example plugin we don't want to install
+noinst_LTLIBRARIES = libnm-settings-plugin-example.la
+
+# The actual plugins typically pull reader.c and writer.c out into
+# their own static library so that unit tests can use them without
+# having to build the entire plugin.  But since this is a simple
+# plugin we don't do that yet.
+
+libnm_settings_plugin_example_la_SOURCES = \
+	nm-example-connection.c \
+	nm-example-connection.h \
+	plugin.c \
+	plugin.h \
+	errors.c \
+	common.h \
+	reader.c \
+	writer.c
+
+libnm_settings_plugin_example_la_CPPFLAGS = \
+	$(GLIB_CFLAGS) \
+	$(GMODULE_CFLAGS) \
+	$(DBUS_CFLAGS) \
+	-DSYSCONFDIR=\"$(sysconfdir)\" \
+	-DG_DISABLE_DEPRECATED
+
+libnm_settings_plugin_example_la_LIBADD = \
+	$(top_builddir)/libnm-util/libnm-util.la \
+	$(GLIB_LIBS) \
+	$(GMODULE_LIBS) \
+	$(GIO_LIBS)
+
+libnm_settings_plugin_example_la_LDFLAGS = -module -avoid-version
+
diff --git a/src/settings/plugins/example/Makefile.in b/src/settings/plugins/example/Makefile.in
new file mode 100644
index 00000000..463ebac9
--- /dev/null
+++ b/src/settings/plugins/example/Makefile.in
@@ -0,0 +1,712 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/settings/plugins/example
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/introspection.m4 \
+	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libnl-check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libnm_settings_plugin_example_la_DEPENDENCIES =  \
+	$(top_builddir)/libnm-util/libnm-util.la $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am_libnm_settings_plugin_example_la_OBJECTS =  \
+	libnm_settings_plugin_example_la-nm-example-connection.lo \
+	libnm_settings_plugin_example_la-plugin.lo \
+	libnm_settings_plugin_example_la-errors.lo \
+	libnm_settings_plugin_example_la-reader.lo \
+	libnm_settings_plugin_example_la-writer.lo
+libnm_settings_plugin_example_la_OBJECTS =  \
+	$(am_libnm_settings_plugin_example_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libnm_settings_plugin_example_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) \
+	$(libnm_settings_plugin_example_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libnm_settings_plugin_example_la_SOURCES)
+DIST_SOURCES = $(libnm_settings_plugin_example_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DBUS_SYS_DIR = @DBUS_SYS_DIR@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DHCLIENT_PATH = @DHCLIENT_PATH@
+DHCLIENT_VERSION = @DHCLIENT_VERSION@
+DHCPCD_PATH = @DHCPCD_PATH@
+DISABLE_DEPRECATED = @DISABLE_DEPRECATED@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GIO_CFLAGS = @GIO_CFLAGS@
+GIO_LIBS = @GIO_LIBS@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MAKEFILE = @GLIB_MAKEFILE@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMODULE_CFLAGS = @GMODULE_CFLAGS@
+GMODULE_LIBS = @GMODULE_LIBS@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
+GNUTLS_LIBS = @GNUTLS_LIBS@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GUDEV_CFLAGS = @GUDEV_CFLAGS@
+GUDEV_LIBS = @GUDEV_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
+INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
+INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
+INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
+INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
+INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
+IPTABLES_PATH = @IPTABLES_PATH@
+IWMX_SDK_CFLAGS = @IWMX_SDK_CFLAGS@
+IWMX_SDK_LIBS = @IWMX_SDK_LIBS@
+KERNEL_FIRMWARE_DIR = @KERNEL_FIRMWARE_DIR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBDL = @LIBDL@
+LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@
+LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@
+LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBNL1_CFLAGS = @LIBNL1_CFLAGS@
+LIBNL1_LIBS = @LIBNL1_LIBS@
+LIBNL2_CFLAGS = @LIBNL2_CFLAGS@
+LIBNL2_LIBS = @LIBNL2_LIBS@
+LIBNL3_CFLAGS = @LIBNL3_CFLAGS@
+LIBNL3_LIBS = @LIBNL3_LIBS@
+LIBNL_CFLAGS = @LIBNL_CFLAGS@
+LIBNL_GENL3_CFLAGS = @LIBNL_GENL3_CFLAGS@
+LIBNL_GENL3_LIBS = @LIBNL_GENL3_LIBS@
+LIBNL_LIBS = @LIBNL_LIBS@
+LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@
+LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSOUP_CFLAGS = @LIBSOUP_CFLAGS@
+LIBSOUP_LIBS = @LIBSOUP_LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MOC = @MOC@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+NM_MAJOR_VERSION = @NM_MAJOR_VERSION@
+NM_MICRO_VERSION = @NM_MICRO_VERSION@
+NM_MINOR_VERSION = @NM_MINOR_VERSION@
+NM_VERSION = @NM_VERSION@
+NSS_CFLAGS = @NSS_CFLAGS@
+NSS_LIBS = @NSS_LIBS@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKGCONFIG_PATH = @PKGCONFIG_PATH@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POLKIT_CFLAGS = @POLKIT_CFLAGS@
+POLKIT_LIBS = @POLKIT_LIBS@
+POSUB = @POSUB@
+PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
+QT_CFLAGS = @QT_CFLAGS@
+QT_LIBS = @QT_LIBS@
+RANLIB = @RANLIB@
+RESOLVCONF_PATH = @RESOLVCONF_PATH@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
+SYSTEMD_LIBS = @SYSTEMD_LIBS@
+SYSTEM_CA_PATH = @SYSTEM_CA_PATH@
+UDEV_BASE_DIR = @UDEV_BASE_DIR@
+USE_NLS = @USE_NLS@
+UUID_CFLAGS = @UUID_CFLAGS@
+UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+systemdsystemunitdir = @systemdsystemunitdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+INCLUDES = \
+	-I$(top_srcdir)/src/settings \
+	-I$(top_srcdir)/include \
+	-I$(top_builddir)/include \
+	-I$(top_srcdir)/libnm-util \
+	-I$(top_builddir)/libnm-util
+
+
+# 'noinst' here because this is an example plugin we don't want to install
+noinst_LTLIBRARIES = libnm-settings-plugin-example.la
+
+# The actual plugins typically pull reader.c and writer.c out into
+# their own static library so that unit tests can use them without
+# having to build the entire plugin.  But since this is a simple
+# plugin we don't do that yet.
+libnm_settings_plugin_example_la_SOURCES = \
+	nm-example-connection.c \
+	nm-example-connection.h \
+	plugin.c \
+	plugin.h \
+	errors.c \
+	common.h \
+	reader.c \
+	writer.c
+
+libnm_settings_plugin_example_la_CPPFLAGS = \
+	$(GLIB_CFLAGS) \
+	$(GMODULE_CFLAGS) \
+	$(DBUS_CFLAGS) \
+	-DSYSCONFDIR=\"$(sysconfdir)\" \
+	-DG_DISABLE_DEPRECATED
+
+libnm_settings_plugin_example_la_LIBADD = \
+	$(top_builddir)/libnm-util/libnm-util.la \
+	$(GLIB_LIBS) \
+	$(GMODULE_LIBS) \
+	$(GIO_LIBS)
+
+libnm_settings_plugin_example_la_LDFLAGS = -module -avoid-version
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/settings/plugins/example/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/settings/plugins/example/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libnm-settings-plugin-example.la: $(libnm_settings_plugin_example_la_OBJECTS) $(libnm_settings_plugin_example_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libnm_settings_plugin_example_la_LINK)  $(libnm_settings_plugin_example_la_OBJECTS) $(libnm_settings_plugin_example_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_settings_plugin_example_la-errors.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_settings_plugin_example_la-nm-example-connection.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_settings_plugin_example_la-plugin.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_settings_plugin_example_la-reader.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnm_settings_plugin_example_la-writer.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+
+libnm_settings_plugin_example_la-nm-example-connection.lo: nm-example-connection.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_settings_plugin_example_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnm_settings_plugin_example_la-nm-example-connection.lo -MD -MP -MF $(DEPDIR)/libnm_settings_plugin_example_la-nm-example-connection.Tpo -c -o libnm_settings_plugin_example_la-nm-example-connection.lo `test -f 'nm-example-connection.c' || echo '$(srcdir)/'`nm-example-connection.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnm_settings_plugin_example_la-nm-example-connection.Tpo $(DEPDIR)/libnm_settings_plugin_example_la-nm-example-connection.Plo
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='nm-example-connection.c' object='libnm_settings_plugin_example_la-nm-example-connection.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_settings_plugin_example_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnm_settings_plugin_example_la-nm-example-connection.lo `test -f 'nm-example-connection.c' || echo '$(srcdir)/'`nm-example-connection.c
+
+libnm_settings_plugin_example_la-plugin.lo: plugin.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_settings_plugin_example_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnm_settings_plugin_example_la-plugin.lo -MD -MP -MF $(DEPDIR)/libnm_settings_plugin_example_la-plugin.Tpo -c -o libnm_settings_plugin_example_la-plugin.lo `test -f 'plugin.c' || echo '$(srcdir)/'`plugin.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnm_settings_plugin_example_la-plugin.Tpo $(DEPDIR)/libnm_settings_plugin_example_la-plugin.Plo
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='plugin.c' object='libnm_settings_plugin_example_la-plugin.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_settings_plugin_example_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnm_settings_plugin_example_la-plugin.lo `test -f 'plugin.c' || echo '$(srcdir)/'`plugin.c
+
+libnm_settings_plugin_example_la-errors.lo: errors.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_settings_plugin_example_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnm_settings_plugin_example_la-errors.lo -MD -MP -MF $(DEPDIR)/libnm_settings_plugin_example_la-errors.Tpo -c -o libnm_settings_plugin_example_la-errors.lo `test -f 'errors.c' || echo '$(srcdir)/'`errors.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnm_settings_plugin_example_la-errors.Tpo $(DEPDIR)/libnm_settings_plugin_example_la-errors.Plo
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='errors.c' object='libnm_settings_plugin_example_la-errors.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_settings_plugin_example_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnm_settings_plugin_example_la-errors.lo `test -f 'errors.c' || echo '$(srcdir)/'`errors.c
+
+libnm_settings_plugin_example_la-reader.lo: reader.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_settings_plugin_example_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnm_settings_plugin_example_la-reader.lo -MD -MP -MF $(DEPDIR)/libnm_settings_plugin_example_la-reader.Tpo -c -o libnm_settings_plugin_example_la-reader.lo `test -f 'reader.c' || echo '$(srcdir)/'`reader.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnm_settings_plugin_example_la-reader.Tpo $(DEPDIR)/libnm_settings_plugin_example_la-reader.Plo
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='reader.c' object='libnm_settings_plugin_example_la-reader.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_settings_plugin_example_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnm_settings_plugin_example_la-reader.lo `test -f 'reader.c' || echo '$(srcdir)/'`reader.c
+
+libnm_settings_plugin_example_la-writer.lo: writer.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_settings_plugin_example_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnm_settings_plugin_example_la-writer.lo -MD -MP -MF $(DEPDIR)/libnm_settings_plugin_example_la-writer.Tpo -c -o libnm_settings_plugin_example_la-writer.lo `test -f 'writer.c' || echo '$(srcdir)/'`writer.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnm_settings_plugin_example_la-writer.Tpo $(DEPDIR)/libnm_settings_plugin_example_la-writer.Plo
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='writer.c' object='libnm_settings_plugin_example_la-writer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnm_settings_plugin_example_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnm_settings_plugin_example_la-writer.lo `test -f 'writer.c' || echo '$(srcdir)/'`writer.c
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/settings/plugins/example/README b/src/settings/plugins/example/README
new file mode 100644
index 00000000..224814d1
--- /dev/null
+++ b/src/settings/plugins/example/README
@@ -0,0 +1,35 @@
+Plugins generally have three components:
+
+1) plugin object: manages the individual "connections", which are
+  just objects wrapped around on-disk config data.  The plugin handles requests
+  to add new connections via the NM D-Bus API, and also watches config
+  directories for changes to configuration data.  It also handles reading and
+  writing the persistent hostname, if the plugin supports hostnames.  Plugins
+  implement the NMSystemConfigInterface interface.  See plugin.c.
+
+2) "connections": subclasses of NMSettingsConnection.  They handle updates to
+  configuration data, deletion, etc.  See NMExampleConnection.c.
+
+3) reader/writer code: typically a separate static library that gets linked
+  into the main plugin shared object, so they can be unit tested separately
+  from the plugin.  This code should read config data from disk and create
+  an NMConnection from it, and be capable of taking an NMConnection and writing
+  out appropriate configuration data to disk.
+
+NM will first call the "factory" function that every module must provide, which
+is nm_system_config_factory().  That function creates and returns a singleton
+instance of the plugin's main object, which implements NMSystemConfigInterface.
+That interface is implemented via the object definition in G_DEFINE_TYPE_EXTENDED
+in plugin.c, which registers the interface setup function
+system_config_interface_init(), which when called actually sets up the vtables
+for the functions defined by NMSystemConfigInterface.  Thus there are two
+entry points into the plugin:  nm_system_config_factory() and
+the NMSystemConfigInterface methods.
+
+The plugin also emits various signals (defined by NMSystemConfigInterface)
+which NetworkManager listens for.  These include persistent hostname changes
+(if something modified the file in which the persistent hostname is stored)
+and notifications of new connections if they were created via changes to
+the on-disk files.  The "connection" objects can also emit signals
+(defined by the NMSettingsConnection and NMConnection superclasses) when the
+connections' backing storage gets changed or deleted. 
diff --git a/src/settings/plugins/example/common.h b/src/settings/plugins/example/common.h
new file mode 100644
index 00000000..a4197070
--- /dev/null
+++ b/src/settings/plugins/example/common.h
@@ -0,0 +1,56 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager system settings service
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * (C) Copyright 2012 Red Hat, Inc.
+ */
+
+#ifndef __COMMON_H__
+#define __COMMON_H__
+
+#include <glib.h>
+
+#include <nm-connection.h>
+
+/* General info about the plugin that the code may want to use for logging
+ * purposes.
+ */
+#define EXAMPLE_PLUGIN_NAME "example"
+#define EXAMPLE_PLUGIN_INFO "(c) 2012 Red Hat, Inc.  To report bugs please use the NetworkManager mailing list."
+
+#define EXAMPLE_DIR SYSCONFDIR"/NetworkManager/example-plugin"
+
+/* Boilerplate stuff for the plugin's error domain.  Bits of the code that
+ * create new errors in the plugin's domain will create errors of
+ * type EXAMPLE_PLUGIN_ERROR like so:
+ *
+ *  error = g_error_new_literal (EXAMPLE_PLUGIN_ERROR,
+ *                               <specific error number>,
+ *                               "This is a really bad error.");
+ */
+#define EXAMPLE_PLUGIN_ERROR (example_plugin_error_quark ())
+GQuark example_plugin_error_quark (void);
+
+/* Prototypes for the reader/writer functions */
+NMConnection *connection_from_file (const char *filename, GError **error);
+
+gboolean write_connection (NMConnection *connection,
+                           const char *existing_path,
+                           char **out_path,
+                           GError **error);
+
+#endif  /* __COMMON_H__ */
+
diff --git a/src/settings/plugins/example/errors.c b/src/settings/plugins/example/errors.c
new file mode 100644
index 00000000..8181f8a3
--- /dev/null
+++ b/src/settings/plugins/example/errors.c
@@ -0,0 +1,40 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager system settings service
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * (C) Copyright 2012 Red Hat, Inc.
+ */
+
+#include <glib.h>
+#include "common.h"
+
+/* This is boilerplate code for defining the error domain that the plugin may
+ * return to NetworkManager for various operations.  It just registers a
+ * GObject "quark" (a UUID really) for the error which allows glib to keep
+ * track of all the different error domains.
+ */
+GQuark
+example_plugin_error_quark (void)
+{
+	static GQuark error_quark = 0;
+
+	if (G_UNLIKELY (error_quark == 0))
+		error_quark = g_quark_from_static_string ("example-plugin-error-quark");
+
+	return error_quark;
+}
+
+
diff --git a/src/settings/plugins/example/nm-example-connection.c b/src/settings/plugins/example/nm-example-connection.c
new file mode 100644
index 00000000..e4a69f9b
--- /dev/null
+++ b/src/settings/plugins/example/nm-example-connection.c
@@ -0,0 +1,191 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager system settings service - keyfile plugin
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ */
+
+#include <string.h>
+#include <glib/gstdio.h>
+#include <NetworkManager.h>
+#include <nm-setting-connection.h>
+#include <nm-utils.h>
+
+#include "nm-system-config-interface.h"
+#include "nm-dbus-glib-types.h"
+#include "nm-example-connection.h"
+#include "common.h"
+
+/* GObject boilerplate; this object is a subclass of NMSettingsConnection
+ * which is specified by the NM_TYPE_SETTINGS_CONNECTION bit here.  That
+ * in turn is a subclass of NMConnection, so it ends up that NMExampleConnection
+ * is a subclass of NMConnection too.
+ */
+G_DEFINE_TYPE (NMExampleConnection, nm_example_connection, NM_TYPE_SETTINGS_CONNECTION)
+
+#define NM_EXAMPLE_CONNECTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_EXAMPLE_CONNECTION, NMExampleConnectionPrivate))
+
+/* Object private instance data */
+typedef struct {
+	char *path;
+} NMExampleConnectionPrivate;
+
+
+/* Creates a new object which encapsulates an on-disk connection and any
+ * plugin-specific operations or data.
+ */
+NMExampleConnection *
+nm_example_connection_new (const char *full_path,
+                           NMConnection *source,
+                           GError **error)
+{
+	GObject *object;
+	NMExampleConnectionPrivate *priv;
+	NMConnection *tmp;
+	const char *uuid;
+
+	g_return_val_if_fail (full_path != NULL, NULL);
+
+	/* If we're given a connection already, prefer that instead of re-reading */
+	if (source)
+		tmp = g_object_ref (source);
+	else {
+		/* Read the data offdisk and translate it into a simple NMConnection object */
+		tmp = connection_from_file (full_path, error);
+		if (!tmp)
+			return NULL;
+	}
+
+	/* Actually create the new NMExampleConnection object */
+	object = (GObject *) g_object_new (NM_TYPE_EXAMPLE_CONNECTION, NULL);
+	if (!object)
+		goto out;
+
+	priv = NM_EXAMPLE_CONNECTION_GET_PRIVATE (object);
+	priv->path = g_strdup (full_path);
+
+	/* Update our settings with what was read from the file or what got passed
+	 * in as a source NMConnection.
+	 */
+	if (!nm_settings_connection_replace_settings (NM_SETTINGS_CONNECTION (object), tmp, error)) {
+		g_object_unref (object);
+		object = NULL;
+		goto out;
+	}
+
+	/* Make sure we have a UUID; just a sanity check */
+	uuid = nm_connection_get_uuid (NM_CONNECTION (object));
+	if (!uuid) {
+		g_set_error (error, EXAMPLE_PLUGIN_ERROR, 0,
+		             "Connection in file %s had no UUID", full_path);
+		g_object_unref (object);
+		object = NULL;
+	}
+
+out:
+	g_object_unref (tmp);
+	return (NMExampleConnection *) object;
+}
+
+const char *
+nm_example_connection_get_path (NMExampleConnection *self)
+{
+	g_return_val_if_fail (NM_IS_EXAMPLE_CONNECTION (self), NULL);
+
+	/* Simple accessor that returns the file path from our private instance data */
+	return NM_EXAMPLE_CONNECTION_GET_PRIVATE (self)->path;
+}
+
+static void
+commit_changes (NMSettingsConnection *connection,
+                NMSettingsConnectionCommitFunc callback,
+                gpointer user_data)
+{
+	NMExampleConnectionPrivate *priv = NM_EXAMPLE_CONNECTION_GET_PRIVATE (connection);
+	char *path = NULL;
+	GError *error = NULL;
+
+	/* Write the new connection data out to disk.  This function passes
+	 * back the path of the file it wrote out so that we know what that
+	 * path is if the connection is a completely new one.
+	 */
+	if (!write_connection (NM_CONNECTION (connection), priv->path, &path, &error)) {
+		callback (connection, error, user_data);
+		g_clear_error (&error);
+		return;
+	}
+
+	/* Update the filename if it changed */
+	if (path) {
+		g_free (priv->path);
+		priv->path = path;
+	}
+
+	/* Chain up to parent for generic commit stuff */
+	NM_SETTINGS_CONNECTION_CLASS (nm_example_connection_parent_class)->commit_changes (connection,
+	                                                                                   callback,
+	                                                                                   user_data);
+}
+
+static void 
+do_delete (NMSettingsConnection *connection,
+           NMSettingsConnectionDeleteFunc callback,
+           gpointer user_data)
+{
+	NMExampleConnectionPrivate *priv = NM_EXAMPLE_CONNECTION_GET_PRIVATE (connection);
+
+	g_unlink (priv->path);
+
+	/* Chain up to parent for generic deletion stuff */
+	NM_SETTINGS_CONNECTION_CLASS (nm_example_connection_parent_class)->delete (connection,
+	                                                                           callback,
+	                                                                           user_data);
+}
+
+/**************************************************************/
+
+static void
+nm_example_connection_init (NMExampleConnection *connection)
+{
+}
+
+static void
+finalize (GObject *object)
+{
+	NMExampleConnectionPrivate *priv = NM_EXAMPLE_CONNECTION_GET_PRIVATE (object);
+
+	/* Zero out any secrets so we don't leave them in memory */
+	nm_connection_clear_secrets (NM_CONNECTION (object));
+
+	g_free (priv->path);
+
+	G_OBJECT_CLASS (nm_example_connection_parent_class)->finalize (object);
+}
+
+static void
+nm_example_connection_class_init (NMExampleConnectionClass *keyfile_connection_class)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (keyfile_connection_class);
+	NMSettingsConnectionClass *settings_class = NM_SETTINGS_CONNECTION_CLASS (keyfile_connection_class);
+
+	/* Tells GObject to allocate and zero our instance data pointer */
+	g_type_class_add_private (keyfile_connection_class, sizeof (NMExampleConnectionPrivate));
+
+	/* Overrides of various superclass methods */
+	object_class->finalize = finalize;
+	settings_class->commit_changes = commit_changes;
+	settings_class->delete = do_delete;
+}
diff --git a/src/settings/plugins/example/nm-example-connection.h b/src/settings/plugins/example/nm-example-connection.h
new file mode 100644
index 00000000..d6d09e16
--- /dev/null
+++ b/src/settings/plugins/example/nm-example-connection.h
@@ -0,0 +1,55 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager system settings service - keyfile plugin
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ */
+
+#ifndef NM_EXAMPLE_CONNECTION_H
+#define NM_EXAMPLE_CONNECTION_H
+
+#include <nm-settings-connection.h>
+
+G_BEGIN_DECLS
+
+/* GObject boilerplate */
+#define NM_TYPE_EXAMPLE_CONNECTION            (nm_example_connection_get_type ())
+#define NM_EXAMPLE_CONNECTION(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_EXAMPLE_CONNECTION, NMExampleConnection))
+#define NM_EXAMPLE_CONNECTION_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_EXAMPLE_CONNECTION, NMExampleConnectionClass))
+#define NM_IS_EXAMPLE_CONNECTION(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_EXAMPLE_CONNECTION))
+#define NM_IS_EXAMPLE_CONNECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NM_TYPE_EXAMPLE_CONNECTION))
+#define NM_EXAMPLE_CONNECTION_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_EXAMPLE_CONNECTION, NMExampleConnectionClass))
+
+typedef struct {
+	NMSettingsConnection parent;
+} NMExampleConnection;
+
+typedef struct {
+	NMSettingsConnectionClass parent;
+} NMExampleConnectionClass;
+
+GType nm_example_connection_get_type (void);
+
+/* Actual API that plugin.c will call */
+NMExampleConnection *nm_example_connection_new (const char *filename,
+                                                NMConnection *source,
+                                                GError **error);
+
+const char *nm_example_connection_get_path (NMExampleConnection *self);
+
+G_END_DECLS
+
+#endif /* NM_EXAMPLE_CONNECTION_H */
diff --git a/src/settings/plugins/example/plugin.c b/src/settings/plugins/example/plugin.c
new file mode 100644
index 00000000..04af03e7
--- /dev/null
+++ b/src/settings/plugins/example/plugin.c
@@ -0,0 +1,868 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager system settings service - keyfile plugin
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ */
+
+#include <config.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <netinet/ether.h>
+#include <string.h>
+
+#include <gmodule.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gio/gio.h>
+
+#include <nm-connection.h>
+#include <nm-setting.h>
+#include <nm-setting-connection.h>
+
+#include "plugin.h"
+#include "nm-system-config-interface.h"
+#include "common.h"
+#include "nm-example-connection.h"
+
+static char *plugin_get_hostname (SCPluginExample *plugin);
+static void system_config_interface_init (NMSystemConfigInterface *system_config_interface_class);
+
+/* GObject object definition.  This actually defines the object and tells
+ * GObject about the interfaces this object provides.  Here we provide
+ * the "system config interface" which is the API that NetworkManager uses
+ * to communicate with this plugin.
+ *
+ * Interface and super/sub-class access with GObject works via casting and
+ * GObject magically figures out what needs to be called.  So, given:
+ *
+ *    SCPluginExample *plugin = <new plugin>;
+ *
+ * you can call GObject methods since SCPluginExample inherits from GObject
+ * via the G_TYPE_OBJECT argument of G_DEFINE_TYPE_EXTENDED below:
+ *
+ *    g_object_set_data (G_OBJECT (plugin), ...);
+ *
+ * and since SCPluginExample implements NMSystemConfigInterface via the
+ * G_IMPLEMENT_INTERFACE bit below, we can also call any methods of
+ * NMSystemConfigInterface (defined in NM sources in nm-system-config-interface.c):
+ *
+ *    connections = nm_system_config_interface_get_connections (NM_SYSTEM_CONFIG_INTERFACE (plugin));
+ *
+ * For the call to nm_system_config_interface_get_connections() that eventually
+ * ends up in the get_connections() method in this file because the
+ * system_config_interface_init() function sets up the vtable for this objects
+ * implementation of NMSystemConfigInterface.
+ */
+G_DEFINE_TYPE_EXTENDED (SCPluginExample, sc_plugin_example, G_TYPE_OBJECT, 0,
+                        G_IMPLEMENT_INTERFACE (NM_TYPE_SYSTEM_CONFIG_INTERFACE, system_config_interface_init))
+
+/* Quick define to access the object's private data pointer; this pointer
+ * points to the object's instance data.
+ */
+#define SC_PLUGIN_EXAMPLE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SC_TYPE_PLUGIN_EXAMPLE, SCPluginExamplePrivate))
+
+/* Instance data.  When the object is created, a new structure of this type
+ * will be created and zeroed for this instance of the object to use.  This
+ * is actually done by g_type_class_add_private() when called from the object's
+ * class init function.
+ */
+typedef struct {
+	/* This hash holds each connection known to this plugin */
+	GHashTable *connections;
+
+	/* A watch for changes on the directory that holds the configuration files
+	 * so the plugin can respond to configuration changes on-the-fly and
+	 * tell NM that the connection data has changed.  Typically the plugin
+	 * needs to monitor the directory itself (to watch for completely new files)
+	 * while the individual connections watch their individual config files.
+	 */
+	GFileMonitor *monitor;
+	guint monitor_id;
+
+	/* Tracks changes to the global NM config file, just in case our
+	 * plugin has some specific options (like unmanaged devices) that
+	 * might be changed at runtime.
+	 */
+	char *conf_file;
+	GFileMonitor *conf_file_monitor;
+	guint conf_file_monitor_id;
+
+	/* Persistent hostname if the plugin supports hostnames.  Normally used
+	 * for distro plugins; ie Red Hat uses /etc/sysconfig/hostname while
+	 * Debian uses /etc/hostname.  Plugins can abstract the storage location
+	 * and just tell NM what the persisten hostname is and when its backing
+	 * file has changed.  NM handles actually setting the hostname.
+	 */
+	char *hostname;
+} SCPluginExamplePrivate;
+
+static NMSettingsConnection *
+_internal_new_connection (SCPluginExample *self,
+                          const char *full_path,
+                          NMConnection *source,
+                          GError **error)
+{
+	SCPluginExamplePrivate *priv = SC_PLUGIN_EXAMPLE_GET_PRIVATE (self);
+	NMExampleConnection *connection;
+
+	g_return_val_if_fail (full_path != NULL, NULL);
+
+	/* 'source' will usually be NULL if we're going to read the connection
+	 * off disk.  But if the new connection is coming from NetworkManager
+	 * (ie, from a D-Bus AddConnection request) then we'll have 'source' too.
+	 * This function expects the connection to already be written to disk
+	 * so that the NMExampleConnection object can re-read it and intialize
+	 * state in the same manner as when getting a change notification from
+	 * the config directory.  That simplifies things somewhat.
+	 */
+
+	connection = nm_example_connection_new (full_path, source, error);
+	if (connection) {
+		g_hash_table_insert (priv->connections,
+		                     (gpointer) nm_example_connection_get_path (connection),
+		                     connection);
+	}
+
+	return (NMSettingsConnection *) connection;
+}
+
+/* Read each file in our config directory and try to create a new
+ * NMExamplePlugin for it.
+ */
+static void
+read_connections (NMSystemConfigInterface *config)
+{
+	SCPluginExample *self = SC_PLUGIN_EXAMPLE (config);
+	GDir *dir;
+	GError *error = NULL;
+	const char *item;
+
+	dir = g_dir_open (EXAMPLE_DIR, 0, &error);
+	if (!dir) {
+		PLUGIN_WARN (EXAMPLE_PLUGIN_NAME, "Cannot read directory '%s': (%d) %s",
+		             EXAMPLE_DIR,
+		             error ? error->code : -1,
+		             error && error->message ? error->message : "(unknown)");
+		g_clear_error (&error);
+		return;
+	}
+
+	while ((item = g_dir_read_name (dir))) {
+		NMSettingsConnection *connection;
+		char *full_path;
+
+		/* XXX: Check file extension and ignore "~", ".tmp", ".bak", etc */
+
+		full_path = g_build_filename (EXAMPLE_DIR, item, NULL);
+		PLUGIN_PRINT (EXAMPLE_PLUGIN_NAME, "parsing %s ... ", item);
+
+		connection = _internal_new_connection (self, full_path, NULL, &error);
+		if (connection) {
+			PLUGIN_PRINT (EXAMPLE_PLUGIN_NAME, "    read connection '%s'",
+			              nm_connection_get_id (NM_CONNECTION (connection)));
+		} else {
+			PLUGIN_PRINT (EXAMPLE_PLUGIN_NAME, "    error: %s",
+				          (error && error->message) ? error->message : "(unknown)");
+		}
+		g_clear_error (&error);
+		g_free (full_path);
+	}
+	g_dir_close (dir);
+}
+
+static void
+update_connection_settings_commit_cb (NMSettingsConnection *orig, GError *error, gpointer user_data)
+{
+	/* If there was an error updating the connection's internal stuff, then
+	 * we can't do anything except log it and remove the connection.  This might
+	 * happen due to invalid data, but as the data would already have been
+	 * verified before it ever got to this plugin, we shouldn't ever get
+	 * an error here.
+	 */
+	if (error) {
+		g_warning ("%s: '%s' / '%s' invalid: %d",
+		       	   __func__,
+		       	   error ? g_type_name (nm_connection_lookup_setting_type_by_quark (error->domain)) : "(none)",
+		       	   (error && error->message) ? error->message : "(none)",
+		       	   error ? error->code : -1);
+		g_clear_error (&error);
+
+		nm_settings_connection_signal_remove (orig);
+	}
+}
+
+static void
+update_connection_settings (NMExampleConnection *orig,
+                            NMExampleConnection *new)
+{
+	/* This just replaces the orig's internal settings with those from new */
+	nm_settings_connection_replace_and_commit (NM_SETTINGS_CONNECTION (orig),
+	                                           NM_CONNECTION (new),
+	                                           update_connection_settings_commit_cb, NULL);
+}
+
+/* Monitoring */
+
+static void
+remove_connection (SCPluginExample *self,
+                   NMExampleConnection *connection,
+                   const char *name)
+{
+	g_return_if_fail (connection != NULL);
+	g_return_if_fail (name != NULL);
+
+	/* Removing from the hash table should drop the last reference, but since
+	 * we need the object to stay alive across the signal emission to NM,
+	 * we grab a temporary reference.
+	 */
+	g_object_ref (connection);
+	g_hash_table_remove (SC_PLUGIN_EXAMPLE_GET_PRIVATE (self)->connections, name);
+
+	/* Tell NM the connection is gone */
+	nm_settings_connection_signal_remove (NM_SETTINGS_CONNECTION (connection));
+
+	/* Remove the temporary reference; connection will now be destroyed */
+	g_object_unref (connection);
+}
+
+/* Look through all connections we know about and return one with a given UUID */
+static NMExampleConnection *
+find_by_uuid (SCPluginExample *self, const char *uuid)
+{
+	SCPluginExamplePrivate *priv = SC_PLUGIN_EXAMPLE_GET_PRIVATE (self);
+	GHashTableIter iter;
+	gpointer data = NULL;
+
+	g_return_val_if_fail (uuid != NULL, NULL);
+
+	g_hash_table_iter_init (&iter, priv->connections);
+	while (g_hash_table_iter_next (&iter, NULL, &data)) {
+		NMConnection *candidate = NM_CONNECTION (data);
+
+		if (strcmp (uuid, nm_connection_get_uuid (candidate)) == 0)
+			return NM_EXAMPLE_CONNECTION (candidate);
+	}
+	return NULL;
+}
+
+
+static void
+dir_changed (GFileMonitor *monitor,
+             GFile *file,
+             GFile *other_file,
+             GFileMonitorEvent event_type,
+             gpointer user_data)
+{
+	NMSystemConfigInterface *config = NM_SYSTEM_CONFIG_INTERFACE (user_data);
+	SCPluginExample *self = SC_PLUGIN_EXAMPLE (config);
+	SCPluginExamplePrivate *priv = SC_PLUGIN_EXAMPLE_GET_PRIVATE (self);
+	char *full_path;
+	NMExampleConnection *connection;
+	GError *error = NULL;
+
+	full_path = g_file_get_path (file);
+	/* XXX: Check here if you need to ignore this file, ie by checking for
+	 * extensions like "~" and ".bak" or ".tmp".  If so just return;
+	 */
+
+	/* Check if we know about this connection already */
+	connection = g_hash_table_lookup (priv->connections, full_path);
+
+	switch (event_type) {
+	case G_FILE_MONITOR_EVENT_DELETED:
+		if (connection) {
+			PLUGIN_PRINT (EXAMPLE_PLUGIN_NAME, "removed %s.", full_path);
+			remove_connection (SC_PLUGIN_EXAMPLE (config), connection, full_path);
+		}
+		break;
+	case G_FILE_MONITOR_EVENT_CREATED:
+	case G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT:
+		if (connection) {
+			/* Update of an existing connection.  Here we re-read the file and
+			 * compare it against the existing connection to check if anything
+			 * actually changed.
+			 */
+			NMExampleConnection *tmp;
+
+			tmp = nm_example_connection_new (full_path, NULL, &error);
+			if (tmp) {
+				if (!nm_connection_compare (NM_CONNECTION (connection),
+				                            NM_CONNECTION (tmp),
+				                            NM_SETTING_COMPARE_FLAG_IGNORE_AGENT_OWNED_SECRETS |
+				                              NM_SETTING_COMPARE_FLAG_IGNORE_NOT_SAVED_SECRETS)) {
+					/* Connection changed; update our internal connection object */
+					PLUGIN_PRINT (EXAMPLE_PLUGIN_NAME, "updating %s", full_path);
+					update_connection_settings (connection, tmp);
+				}
+				g_object_unref (tmp);
+			} else {
+				/* There was an error parsing the updated connection; it may
+				 * no longer be valid and thus we've got to delete it.  If it
+				 * becomes valid again later we'll get another change
+				 * notification, we'll re-read it, and we'll treat it as new.
+				 */
+				PLUGIN_PRINT (EXAMPLE_PLUGIN_NAME, "    error: %s",
+						      (error && error->message) ? error->message : "(unknown)");
+				remove_connection (SC_PLUGIN_EXAMPLE (config), connection, full_path);
+			}
+			g_clear_error (&error);
+		} else {
+			PLUGIN_PRINT (EXAMPLE_PLUGIN_NAME, "updating %s", full_path);
+
+			/* We don't know about the connection yet, so the change represents
+			 * a completely new connection.
+			 */
+			connection = nm_example_connection_new (full_path, NULL, &error);
+			if (connection) {
+				NMExampleConnection *found = NULL;
+
+				/* Connection renames will show up as different files but with
+				 * the same UUID.  Try to find the original connection.
+				 * A connection rename is treated just like an update except
+				 * there's a bit more housekeeping with the hash table.
+				 */
+				found = find_by_uuid (self, nm_connection_get_uuid (NM_CONNECTION (connection)));
+				if (found) {
+					const char *old_path = nm_example_connection_get_path (connection);
+
+					/* Removing from the hash table should drop the last reference,
+					 * but of course we want to keep the connection around.
+					 */
+					g_object_ref (found);
+					g_hash_table_remove (priv->connections, old_path);
+
+					/* Updating settings should update the NMExampleConnection's
+					 * filename property too.
+					 */
+					update_connection_settings (found, connection);
+
+					/* Re-insert the connection back into the hash with the new filename */
+					g_hash_table_insert (priv->connections,
+					                     (gpointer) nm_example_connection_get_path (found),
+					                     found);
+
+					/* Get rid of the temporary connection */
+					g_object_unref (connection);
+				} else {
+					/* Completely new connection, not a rename. */
+					g_hash_table_insert (priv->connections,
+					                     (gpointer) nm_example_connection_get_path (connection),
+					                     connection);
+					/* Tell NM we found a new connection */
+					g_signal_emit_by_name (config, NM_SYSTEM_CONFIG_INTERFACE_CONNECTION_ADDED, connection);
+				}
+			} else {
+				PLUGIN_PRINT (EXAMPLE_PLUGIN_NAME, "    error: %s",
+						      (error && error->message) ? error->message : "(unknown)");
+				g_clear_error (&error);
+			}
+		}
+		break;
+	default:
+		break;
+	}
+
+	g_free (full_path);
+}
+
+static void
+conf_file_changed (GFileMonitor *monitor,
+				   GFile *file,
+				   GFile *other_file,
+				   GFileMonitorEvent event_type,
+				   gpointer data)
+{
+	SCPluginExample *self = SC_PLUGIN_EXAMPLE (data);
+	SCPluginExamplePrivate *priv = SC_PLUGIN_EXAMPLE_GET_PRIVATE (self);
+	char *tmp;
+
+	switch (event_type) {
+	case G_FILE_MONITOR_EVENT_DELETED:
+	case G_FILE_MONITOR_EVENT_CREATED:
+	case G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT:
+		/* Unmanaged devices option may have changed; just emit the changed
+		 * signal for unmanaged specs and when NM calls back in to get the
+		 * updated specs we'll re-read the config file then.
+		 */
+		g_signal_emit_by_name (self, NM_SYSTEM_CONFIG_INTERFACE_UNMANAGED_SPECS_CHANGED);
+
+		/* Hostname may also have changed; read it and if it did actually
+		 * change, notify NM.
+		 */
+		tmp = plugin_get_hostname (self);
+		if (g_strcmp0 (tmp, priv->hostname) != 0) {
+			g_free (priv->hostname);
+			priv->hostname = tmp;
+			tmp = NULL;
+			g_object_notify (G_OBJECT (self), NM_SYSTEM_CONFIG_INTERFACE_HOSTNAME);
+		}
+		g_free (tmp);
+		break;
+	default:
+		break;
+	}
+}
+
+/* This function starts the inotify monitors that watch the plugin's config
+ * file directory for new connections and changes to existing connections.
+ * At this time all plugins are expected to make NM aware of changes on-the-fly
+ * instead of requiring a SIGHUP or SIGUSR1 or some D-Bus method to say
+ * "reload".
+ */
+static void
+setup_monitoring (NMSystemConfigInterface *config)
+{
+	SCPluginExamplePrivate *priv = SC_PLUGIN_EXAMPLE_GET_PRIVATE (config);
+	GFileMonitor *monitor;
+	GFile *file;
+
+	/* Initialize connection hash here; we use the connection hash as the 
+	 * "are we initialized yet" variable.
+	 */
+	priv->connections = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_object_unref);
+
+	/* Set up the watch for our config directory */
+	file = g_file_new_for_path (EXAMPLE_DIR);
+	monitor = g_file_monitor_directory (file, G_FILE_MONITOR_NONE, NULL, NULL);
+	g_object_unref (file);
+	if (monitor) {
+		/* This registers the dir_changed() function to be called whenever
+		 * the GFileMonitor object notices a change in the directory.
+		 */
+		priv->monitor_id = g_signal_connect (monitor, "changed", G_CALLBACK (dir_changed), config);
+		priv->monitor = monitor;
+	}
+
+	/* Set up a watch on our configuration file, basically just for watching
+	 * whether the user has changed the unmanaged devices option or the
+	 * persistent hostname.
+	 */
+	if (priv->conf_file) {
+		file = g_file_new_for_path (priv->conf_file);
+		monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, NULL);
+		g_object_unref (file);
+
+		if (monitor) {
+			priv->conf_file_monitor_id = g_signal_connect (monitor, "changed", G_CALLBACK (conf_file_changed), config);
+			priv->conf_file_monitor = monitor;
+		}
+	}
+}
+
+/*******************************************************************/
+
+/* Return to NM the full list of connections this plugin owns */
+static GSList *
+get_connections (NMSystemConfigInterface *config)
+{
+	SCPluginExamplePrivate *priv = SC_PLUGIN_EXAMPLE_GET_PRIVATE (config);
+	GHashTableIter iter;
+	NMSettingsConnection *connection;
+	GSList *list = NULL;
+
+	if (!priv->connections) {
+		/* If we haven't read connections in yet, do so now */
+		setup_monitoring (config);
+		read_connections (config);
+	}
+
+	/* Add each connection from our internal hash table to a list returned
+	 * to NetworkManager.
+	 */
+	g_hash_table_iter_init (&iter, priv->connections);
+	while (g_hash_table_iter_next (&iter, NULL, (gpointer) &connection))
+		list = g_slist_prepend (list, connection);
+	return list;
+}
+
+/* Called by NetworkManager when a user adds a new connection via D-Bus.
+ * The plugin should convert the data in 'connection' to its on-disk format
+ * write it out to disk, and return an object that's a subclass of
+ * NMSettingsConnection.  Typically plugins will subclass NMSettingsConnection
+ * and use that class to handle any plugin-specific stuff like monitoring
+ * the on-disk config files for changes, and/or parsing the file-format and
+ * converting back and forth from that to NMConnection.
+ */
+static NMSettingsConnection *
+add_connection (NMSystemConfigInterface *config,
+                NMConnection *connection,
+                GError **error)
+{
+	SCPluginExample *self = SC_PLUGIN_EXAMPLE (config);
+	NMSettingsConnection *added = NULL;
+	char *path = NULL;
+
+	/* Write it out first, then add the connection to our internal list; that
+	 * way we don't trigger the new NMSettingsConnection subclass' file watch
+	 * functions needlessly.
+	 */
+	if (write_connection (connection, NULL, &path, error)) {
+		added = _internal_new_connection (self, path, connection, error);
+		g_free (path);
+	}
+	return added;
+}
+
+/* This function returns a list of "unmanaged device specs" which represent
+ * a list of devices that NetworkManager should not manage.  Each unmanaged
+ * spec item has a specific format starting with a "tag" and followed by
+ * tag-specific data.  The only currently specified item is "mac:" followed
+ * by the MAC address of the interface NM should not manage.  This function
+ * reads the list of unmanaged devices from wherever the plugin wants to
+ * store them and returns that list to NetworkManager.
+ */
+static GSList *
+get_unmanaged_specs (NMSystemConfigInterface *config)
+{
+	SCPluginExamplePrivate *priv = SC_PLUGIN_EXAMPLE_GET_PRIVATE (config);
+	GKeyFile *key_file;
+	GSList *specs = NULL;
+	GError *error = NULL;
+	char *str, **macs;
+	int i;
+
+	if (!priv->conf_file)
+		return NULL;
+
+	key_file = g_key_file_new ();
+	if (!g_key_file_load_from_file (key_file, priv->conf_file, G_KEY_FILE_NONE, &error)) {
+		g_warning ("Error parsing file '%s': %s", priv->conf_file, error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+
+	str = g_key_file_get_value (key_file, "keyfile", "unmanaged-devices", NULL);
+	if (!str)
+		goto out;
+
+	macs = g_strsplit (str, ";", -1);
+	for (i = 0; macs[i] != NULL; i++) {
+		/* Verify unmanaged specification and add it to the list */
+		if (strlen (macs[i]) > 4 && !strncmp (macs[i], "mac:", 4) && ether_aton (macs[i] + 4)) {
+			char *p = macs[i];
+
+			/* To accept uppercase MACs in configuration file, we have to
+			 * convert values to lowercase here. Unmanaged MACs in specs are
+			 * always in lowercase.
+			 */
+			while (*p) {
+				*p = g_ascii_tolower (*p);
+				p++;
+			}
+
+			specs = g_slist_append (specs, macs[i]);
+		} else {
+			g_warning ("Error in file '%s': invalid unmanaged-devices entry: '%s'", priv->conf_file, macs[i]);
+			g_free (macs[i]);
+		}
+	}
+
+	g_free (macs); /* Yes, g_free, not g_strfreev because we need the strings in the list */
+	g_free (str);
+
+out:
+	g_key_file_free (key_file);
+	return specs;
+}
+
+
+static char *
+plugin_get_hostname (SCPluginExample *plugin)
+{
+	SCPluginExamplePrivate *priv = SC_PLUGIN_EXAMPLE_GET_PRIVATE (plugin);
+	GKeyFile *key_file;
+	char *hostname = NULL;
+	GError *error = NULL;
+
+	if (!priv->conf_file)
+		return NULL;
+
+	/* Read the persistent hostname out of backing storage, which happens
+	 * to be the NM config file.  Other plugins (like distro-specific ones)
+	 * should read it from the distro-specific location like /etc/hostname.
+	 */
+	key_file = g_key_file_new ();
+	if (g_key_file_load_from_file (key_file, priv->conf_file, G_KEY_FILE_NONE, &error))
+		hostname = g_key_file_get_value (key_file, "keyfile", "hostname", NULL);
+	else {
+		g_warning ("Error parsing file '%s': %s", priv->conf_file, error->message);
+		g_error_free (error);
+	}
+
+	g_key_file_free (key_file);
+	return hostname;
+}
+
+static gboolean
+plugin_set_hostname (SCPluginExample *plugin, const char *hostname)
+{
+	SCPluginExamplePrivate *priv = SC_PLUGIN_EXAMPLE_GET_PRIVATE (plugin);
+	GKeyFile *key_file;
+	GError *error = NULL;
+	gboolean success = FALSE;
+	char *data;
+	gsize len;
+
+	if (!priv->conf_file) {
+		g_warning ("Error saving hostname: no config file");
+		return FALSE;
+	}
+
+	/* This just saves the hostname to the NM config file in a section
+	 * private to this plugin.
+	 */
+	key_file = g_key_file_new ();
+	if (!g_key_file_load_from_file (key_file, priv->conf_file, G_KEY_FILE_NONE, &error)) {
+		g_warning ("Error parsing file '%s': %s", priv->conf_file, error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	g_key_file_set_string (key_file, "example", "hostname", hostname);
+
+	data = g_key_file_to_data (key_file, &len, &error);
+	if (data) {
+		/* Save updated file to disk */
+		g_file_set_contents (priv->conf_file, data, len, &error);
+		g_free (data);
+
+		/* Update internal copy of hostname */
+		g_free (priv->hostname);
+		priv->hostname = g_strdup (hostname);
+		success = TRUE;
+	}
+
+	if (error) {
+		g_warning ("Error saving hostname: %s", error->message);
+		g_error_free (error);
+	}
+
+out:
+	g_key_file_free (key_file);
+	return success;
+}
+
+/* GObject */
+
+static void
+sc_plugin_example_init (SCPluginExample *plugin)
+{
+	/* Here we'd do any instance-specific initialization like setting
+	 * members of SCPluginExamplePrivate to default values.  But we
+	 * don't have anything to do here since most initialization is done
+	 * when NM calls the various entry points.
+	 */
+}
+
+static void
+get_property (GObject *object, guint prop_id,
+		    GValue *value, GParamSpec *pspec)
+{
+	switch (prop_id) {
+	case NM_SYSTEM_CONFIG_INTERFACE_PROP_NAME:
+		g_value_set_string (value, EXAMPLE_PLUGIN_NAME);
+		break;
+	case NM_SYSTEM_CONFIG_INTERFACE_PROP_INFO:
+		g_value_set_string (value, EXAMPLE_PLUGIN_INFO);
+		break;
+	case NM_SYSTEM_CONFIG_INTERFACE_PROP_CAPABILITIES:
+		/* Return capabilities to NM; this plugin supports changing connections
+		 * as well as being capable of saving the hostname to persistent storage.
+		 * If the plugin can't write out updated configuration, then obviously
+		 * it shouldn't advertise that capability.  If it can't save hostnames
+		 * to persistent storage, it shouldn't advertise that capability either.
+		 */
+		g_value_set_uint (value, NM_SYSTEM_CONFIG_INTERFACE_CAP_MODIFY_CONNECTIONS | 
+						  NM_SYSTEM_CONFIG_INTERFACE_CAP_MODIFY_HOSTNAME);
+		break;
+	case NM_SYSTEM_CONFIG_INTERFACE_PROP_HOSTNAME:
+		/* Return the hostname we've read from persistent storage */
+		g_value_set_string (value, SC_PLUGIN_EXAMPLE_GET_PRIVATE (object)->hostname);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+set_property (GObject *object, guint prop_id,
+			  const GValue *value, GParamSpec *pspec)
+{
+	const char *hostname;
+
+	switch (prop_id) {
+	case NM_SYSTEM_CONFIG_INTERFACE_PROP_HOSTNAME:
+		/* We'll get here when the user has changed the hostname via NM's
+		 * D-Bus interface and we're requested to save this hostname to
+		 * persistent storage.
+		 */
+		hostname = g_value_get_string (value);
+		if (hostname && strlen (hostname) < 1)
+			hostname = NULL;
+		plugin_set_hostname (SC_PLUGIN_EXAMPLE (object), hostname);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+dispose (GObject *object)
+{
+	SCPluginExamplePrivate *priv = SC_PLUGIN_EXAMPLE_GET_PRIVATE (object);
+
+	/* GObject has a two-stage object destruction process: dispose and finalize.
+	 * In dispose the object should free any references it might have on other
+	 * objects to break circular refs, then it's finally cleaned up by finalize.
+	 * We don't bother to implement a finalize, so we just make sure that we
+	 * clean everything up (including clearing pointers) in dispose so that
+	 * if GObject decides to revive this object post-dispose (yes, legal)
+	 * we don't crash on dangling pointers.
+	 */
+
+	if (priv->monitor) {
+		if (priv->monitor_id) {
+			g_signal_handler_disconnect (priv->monitor, priv->monitor_id);
+			priv->monitor_id = 0;
+		}
+
+		g_file_monitor_cancel (priv->monitor);
+		g_object_unref (priv->monitor);
+		priv->monitor = NULL;
+	}
+
+	if (priv->conf_file_monitor) {
+		if (priv->conf_file_monitor_id) {
+			g_signal_handler_disconnect (priv->conf_file_monitor, priv->conf_file_monitor_id);
+			priv->conf_file_monitor_id = 0;
+		}
+
+		g_file_monitor_cancel (priv->conf_file_monitor);
+		g_object_unref (priv->conf_file_monitor);
+		priv->conf_file_monitor = NULL;
+	}
+
+	if (priv->connections) {
+		/* Destroying the connections hash unrefs each connection in it
+		 * due to the GHashTable value_destroy_func that we passed into
+		 * g_hash_table_new_full().
+		 */
+		g_hash_table_destroy (priv->connections);
+		priv->connections = NULL;
+	}
+
+	g_free (priv->hostname);
+	priv->hostname = NULL;
+	g_free (priv->conf_file);
+	priv->conf_file = NULL;
+
+	/* Chain up to the superclass */
+	G_OBJECT_CLASS (sc_plugin_example_parent_class)->dispose (object);
+}
+
+/* This function gets called to set up any method and property overrides
+ * of superclasses, and also (if we actually had any) to set up any
+ * custom properties and signals this object might have.  This is called before
+ * the object is actually instantiated; it just sets up the generic class
+ * stuff, not anything related to a specific object instance.
+ */
+static void
+sc_plugin_example_class_init (SCPluginExampleClass *req_class)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (req_class);
+
+	/* This actually creates and zeros the object's instance data struct */
+	g_type_class_add_private (req_class, sizeof (SCPluginExamplePrivate));
+
+	/* Override GObject base class methods with our custom implementations */
+	object_class->dispose = dispose;
+	object_class->get_property = get_property;
+	object_class->set_property = set_property;
+
+	/* Override various GObject properties that we need to change.  Here we
+	 * just tell GObject that we will be handling the get/set operations for
+	 * these specific properties.  They are actually defined by the
+	 * NMSystemConfigInterface interface in nm-system-config-interface.c.
+	 * What happens here is that we tell GObject that for a given property
+	 * name (ie NM_SYSTEM_CONFIG_INTERFACE_NAME) we'll be using the enum value
+	 * NM_SYSTEM_CONFIG_INTERFACE_PROP_NAME locally in get_property() and
+	 * set_property().
+	 */
+	g_object_class_override_property (object_class,
+	                                  NM_SYSTEM_CONFIG_INTERFACE_PROP_NAME,
+	                                  NM_SYSTEM_CONFIG_INTERFACE_NAME);
+
+	g_object_class_override_property (object_class,
+	                                  NM_SYSTEM_CONFIG_INTERFACE_PROP_INFO,
+	                                  NM_SYSTEM_CONFIG_INTERFACE_INFO);
+
+	g_object_class_override_property (object_class,
+	                                  NM_SYSTEM_CONFIG_INTERFACE_PROP_CAPABILITIES,
+	                                  NM_SYSTEM_CONFIG_INTERFACE_CAPABILITIES);
+
+	g_object_class_override_property (object_class,
+	                                  NM_SYSTEM_CONFIG_INTERFACE_PROP_HOSTNAME,
+	                                  NM_SYSTEM_CONFIG_INTERFACE_HOSTNAME);
+}
+
+static void
+system_config_interface_init (NMSystemConfigInterface *sci_intf)
+{
+	/* Interface implementation for NMSystemConfigInterface.  This sets
+	 * up the GInterface vtable that lets GObject know what functions to
+	 * call for each method of the NMSystemConfigInterface interface.
+	 */
+	sci_intf->get_connections = get_connections;
+	sci_intf->add_connection = add_connection;
+	sci_intf->get_unmanaged_specs = get_unmanaged_specs;
+}
+
+/*******************************************************************/
+
+/* Factory function: this is the first entry point for NetworkManager, which
+ * gets called during NM startup to create the the instance of this plugin
+ * that NetworkManager will actually use.  Since every plugin is a singleton
+ * we just return a singleton instance.  This function should never be called
+ * twice.
+ */
+G_MODULE_EXPORT GObject *
+nm_system_config_factory (const char *config_file)
+{
+	static SCPluginExample *singleton = NULL;
+	SCPluginExamplePrivate *priv;
+
+	if (!singleton) {
+		/* Instantiate our plugin */
+		singleton = SC_PLUGIN_EXAMPLE (g_object_new (SC_TYPE_PLUGIN_EXAMPLE, NULL));
+		if (singleton) {
+			priv = SC_PLUGIN_EXAMPLE_GET_PRIVATE (singleton);
+
+			/* Cache the config file path */
+			priv->conf_file = g_strdup (config_file);
+		}
+	} else {
+		/* This function should never be called twice */
+		g_assert_not_reached ();
+	}
+
+	return G_OBJECT (singleton);
+}
+
diff --git a/src/settings/plugins/example/plugin.h b/src/settings/plugins/example/plugin.h
new file mode 100644
index 00000000..23b68e2e
--- /dev/null
+++ b/src/settings/plugins/example/plugin.h
@@ -0,0 +1,55 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager system settings service - example plugin
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ */
+
+#ifndef _PLUGIN_H_
+#define _PLUGIN_H_
+
+#include <glib-object.h>
+
+/* GObject boilerplate: you usually only need to rename 'example' here to
+ * your plugin's name.  These functions get used when casting pointers
+ * to your plugin's object type.
+ */
+#define SC_TYPE_PLUGIN_EXAMPLE            (sc_plugin_example_get_type ())
+#define SC_PLUGIN_EXAMPLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), SC_TYPE_PLUGIN_EXAMPLE, SCPluginExample))
+#define SC_PLUGIN_EXAMPLE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), SC_TYPE_PLUGIN_EXAMPLE, SCPluginExampleClass))
+#define SC_IS_PLUGIN_EXAMPLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SC_TYPE_PLUGIN_EXAMPLE))
+#define SC_IS_PLUGIN_EXAMPLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SC_TYPE_PLUGIN_EXAMPLE))
+#define SC_PLUGIN_EXAMPLE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), SC_TYPE_PLUGIN_EXAMPLE, SCPluginExampleClass))
+
+typedef struct {
+	/* GObject instance structure for the plugin; we don't do anything special
+	 * here so this object's instance is exactly the same as its parent.
+	 */
+	GObject parent;
+} SCPluginExample;
+
+typedef struct {
+	/* GObject class structure; we don't do anything special here
+	 * so this object's class is exactly the same as its parent.  Typically
+	 * if the plugin implemented custom signals their prototypes would go
+	 * here, but most plugins don't need to do this.
+	 */
+	GObjectClass parent;
+} SCPluginExampleClass;
+
+GType sc_plugin_example_get_type (void);
+
+#endif	/* _PLUGIN_H_ */
diff --git a/src/settings/plugins/example/reader.c b/src/settings/plugins/example/reader.c
new file mode 100644
index 00000000..9a4cecaa
--- /dev/null
+++ b/src/settings/plugins/example/reader.c
@@ -0,0 +1,46 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager system settings service
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ */
+
+#include <config.h>
+#include <glib.h>
+
+#include <nm-connection.h>
+#include <NetworkManager.h>
+
+#include "common.h"
+
+NMConnection *
+connection_from_file (const char *filename, GError **error)
+{
+	/* This function should, given a file path, read that file and convert its
+	 * data into an NMConnection.  There are two approaches to this.  First,
+	 * if the plugin data format is similar to the NMConnection internal
+	 * format, you can get away with calling nm_connection_for_each_setting_value()
+	 * to iterate through every possible setting's keys and read that value
+	 * from the plugin's format.  If the plugin's format is siginificantly
+	 * different then you may have to build up the connection manually by
+	 * determining the type of connection from the on-disk data, creating
+	 * each setting object, adding the values, then adding that setting to
+	 * the NMConnection.
+	 */
+
+	return NULL;
+}
+
diff --git a/src/settings/plugins/example/writer.c b/src/settings/plugins/example/writer.c
new file mode 100644
index 00000000..4703fa94
--- /dev/null
+++ b/src/settings/plugins/example/writer.c
@@ -0,0 +1,55 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager system settings service
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ */
+
+#include <config.h>
+#include <glib.h>
+
+#include <nm-connection.h>
+
+#include "common.h"
+
+gboolean
+write_connection (NMConnection *connection,
+                  const char *existing_path,
+                  char **out_path,
+                  GError **error)
+{
+	/* This function should take the NMConnection and convert it to the format
+	 * which this plugin uses on-disk and then write out that data.  It returns
+	 * the file path of the file that represents this connection data so that
+	 * the plugin can track it for change notification and updates.  If
+	 * 'existing_path' is given we can assume that this is an update of an
+	 * existing connection and not a completely new one.
+	 */
+
+	/* There are two approaches to converting the data.  The first more manual
+	 * approach consists of grabbing each setting value from the NMConnection
+	 * and converting it into the appropriate value for the plugin's data
+	 * format.  This is usually taken by distro plugins becuase their format
+	 * is significantly different than NetworkManager's internal format.
+	 * The second uses nm_connection_for_each_setting_value() to iterate
+	 * through each value of each setting in the NMConnection, convert it to
+	 * the required format, and write it out, but this requires that the
+	 * plugin format more closely follow the NetworkManager internal format.
+	 */
+
+	return FALSE;
+}
+
diff --git a/src/settings/plugins/ifcfg-rh/Makefile.am b/src/settings/plugins/ifcfg-rh/Makefile.am
index 8b5b0f24..68225ba1 100644
--- a/src/settings/plugins/ifcfg-rh/Makefile.am
+++ b/src/settings/plugins/ifcfg-rh/Makefile.am
@@ -25,6 +25,7 @@ libifcfg_rh_io_la_SOURCES = \
 INCLUDES = \
 	-I$(top_srcdir)/src/wifi \
 	-I$(top_srcdir)/src/settings \
+	-I$(top_srcdir)/src/posix-signals \
 	-I$(top_srcdir)/include \
 	-I$(top_builddir)/include \
 	-I$(top_srcdir)/libnm-glib \
@@ -40,6 +41,7 @@ libifcfg_rh_io_la_CPPFLAGS = \
 
 libifcfg_rh_io_la_LIBADD = \
 	$(top_builddir)/src/wifi/libwifi-utils.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(top_builddir)/libnm-util/libnm-util.la \
 	$(GLIB_LIBS) \
 	$(NSS_LIBS)
diff --git a/src/settings/plugins/ifcfg-rh/Makefile.in b/src/settings/plugins/ifcfg-rh/Makefile.in
index 3325c7e8..ba3bb528 100644
--- a/src/settings/plugins/ifcfg-rh/Makefile.in
+++ b/src/settings/plugins/ifcfg-rh/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -82,6 +82,7 @@ LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libifcfg_rh_io_la_DEPENDENCIES =  \
 	$(top_builddir)/src/wifi/libwifi-utils.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(top_builddir)/libnm-util/libnm-util.la $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1)
 am_libifcfg_rh_io_la_OBJECTS = libifcfg_rh_io_la-shvar.lo \
@@ -249,6 +250,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -344,6 +349,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -382,6 +390,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -423,6 +433,7 @@ libifcfg_rh_io_la_SOURCES = \
 INCLUDES = \
 	-I$(top_srcdir)/src/wifi \
 	-I$(top_srcdir)/src/settings \
+	-I$(top_srcdir)/src/posix-signals \
 	-I$(top_srcdir)/include \
 	-I$(top_builddir)/include \
 	-I$(top_srcdir)/libnm-glib \
@@ -438,6 +449,7 @@ libifcfg_rh_io_la_CPPFLAGS = \
 
 libifcfg_rh_io_la_LIBADD = \
 	$(top_builddir)/src/wifi/libwifi-utils.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(top_builddir)/libnm-util/libnm-util.la \
 	$(GLIB_LIBS) \
 	$(NSS_LIBS)
diff --git a/src/settings/plugins/ifcfg-rh/reader.c b/src/settings/plugins/ifcfg-rh/reader.c
index 01d83c1b..a2b08e4f 100644
--- a/src/settings/plugins/ifcfg-rh/reader.c
+++ b/src/settings/plugins/ifcfg-rh/reader.c
@@ -48,6 +48,7 @@
 #include <nm-utils.h>
 
 #include "wifi-utils.h"
+#include "nm-posix-signals.h"
 
 #include "common.h"
 #include "shvar.h"
@@ -208,6 +209,12 @@ iscsiadm_child_setup (gpointer user_data G_GNUC_UNUSED)
 	 */
 	pid_t pid = getpid ();
 	setpgid (pid, pid);
+
+	/*
+	 * We blocked signals in main(). We need to restore original signal
+	 * mask for iscsiadm here so that it can receive signals.
+	 */
+	nm_unblock_posix_signals (NULL);
 }
 
 static char *
@@ -3732,8 +3739,8 @@ make_vlan_setting (shvarFile *ifcfg,
 	char *value = NULL;
 	char *iface_name = NULL;
 	char *parent = NULL;
-	const char *p = NULL, *w;
-	gboolean has_numbers = FALSE;
+	const char *p = NULL;
+	char *end = NULL;
 	gint vlan_id = -1;
 	guint32 vlan_flags = 0;
 
@@ -3773,17 +3780,12 @@ make_vlan_setting (shvarFile *ifcfg,
 				p = iface_name + 4;
 		}
 
-		w = p;
-		while (*w && !has_numbers)
-			has_numbers = g_ascii_isdigit (*w);
-
-		/* Grab VLAN ID from interface name; this takes precedence over the
-		 * separate VLAN_ID property for backwards compat.
-		 */
-		if (has_numbers) {
-			errno = 0;
-			vlan_id = (gint) g_ascii_strtoll (p, NULL, 10);
-			if (vlan_id < 0 || vlan_id > 4095 || errno) {
+		if (p) {
+			/* Grab VLAN ID from interface name; this takes precedence over the
+			 * separate VLAN_ID property for backwards compat.
+			 */
+			vlan_id = (gint) g_ascii_strtoll (p, &end, 10);
+			if (vlan_id < 0 || vlan_id > 4095 || end == p || *end) {
 				g_set_error (error, IFCFG_PLUGIN_ERROR, 0,
 				             "Failed to determine VLAN ID from DEVICE '%s'",
 				             iface_name);
diff --git a/src/settings/plugins/ifcfg-rh/tests/Makefile.in b/src/settings/plugins/ifcfg-rh/tests/Makefile.in
index 5e8abf83..dd601727 100644
--- a/src/settings/plugins/ifcfg-rh/tests/Makefile.in
+++ b/src/settings/plugins/ifcfg-rh/tests/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -211,6 +211,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -306,6 +310,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -344,6 +351,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.in b/src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.in
index 4f34cfc3..ab8dc497 100644
--- a/src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.in
+++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.in
@@ -46,7 +46,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -134,6 +134,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -229,6 +233,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -267,6 +274,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-2 b/src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-2
index bf98da5a..6a63e817 100644
--- a/src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-2
+++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-2
@@ -1,2 +1,2 @@
-WPA_PSK=$'They\'re really saying I love you. >>`<<'
+WPA_PSK=$'They\'re really saying I love you. >>`<< \'
 
diff --git a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
index 62882a76..83b60d22 100644
--- a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
+++ b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
@@ -4927,7 +4927,7 @@ test_read_wifi_wpa_psk_2 (void)
 	GError *error = NULL;
 	const char *tmp;
 	const char *expected_id = "System ipsum (test-wifi-wpa-psk-2)";
-	const char *expected_psk = "They're really saying I love you. >>`<<";
+	const char *expected_psk = "They're really saying I love you. >>`<< \\";
 
 	connection = connection_from_file (TEST_IFCFG_WIFI_WPA_PSK_2,
                                      NULL,
@@ -12858,7 +12858,7 @@ int main (int argc, char **argv)
 	                         FALSE,
 	                         TRUE,
 	                         TRUE,
-	                         "blah`oops\"grr'$*@~!%");
+	                         "blah`oops\"grr'$*@~!%\\");
 	test_write_wifi_wpa_psk_adhoc ();
 	test_write_wifi_wpa_eap_tls ();
 	test_write_wifi_wpa_eap_ttls_tls ();
diff --git a/src/settings/plugins/ifcfg-rh/utils.c b/src/settings/plugins/ifcfg-rh/utils.c
index 0b7ddf36..908d3364 100644
--- a/src/settings/plugins/ifcfg-rh/utils.c
+++ b/src/settings/plugins/ifcfg-rh/utils.c
@@ -189,7 +189,7 @@ utils_single_unquote_string (const char *str)
 
 	i = quote + dollar;
 	while (i < slen - quote) {
-		if (str[i] == escape_char && str[i+1] == q_char)
+		if (str[i] == escape_char && str[i+1] == q_char && i+1 < slen-quote)
 			i++;
 		new_str[j++] = str[i++];
 	}
diff --git a/src/settings/plugins/ifcfg-rh/writer.c b/src/settings/plugins/ifcfg-rh/writer.c
index e2aa57dd..a431a30d 100644
--- a/src/settings/plugins/ifcfg-rh/writer.c
+++ b/src/settings/plugins/ifcfg-rh/writer.c
@@ -1030,6 +1030,7 @@ write_wired_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
 		g_free (tmp);
 	}
 
+	svSetValue (ifcfg, "MACADDR", NULL, FALSE);
 	cloned_mac = nm_setting_wired_get_cloned_mac_address (s_wired);
 	if (cloned_mac) {
 		tmp = g_strdup_printf ("%02X:%02X:%02X:%02X:%02X:%02X",
diff --git a/src/settings/plugins/ifcfg-suse/Makefile.in b/src/settings/plugins/ifcfg-suse/Makefile.in
index ac528342..25c3d345 100644
--- a/src/settings/plugins/ifcfg-suse/Makefile.in
+++ b/src/settings/plugins/ifcfg-suse/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -197,6 +197,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -292,6 +296,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -330,6 +337,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/settings/plugins/ifnet/Makefile.am b/src/settings/plugins/ifnet/Makefile.am
index 84deda5b..07a2fc88 100644
--- a/src/settings/plugins/ifnet/Makefile.am
+++ b/src/settings/plugins/ifnet/Makefile.am
@@ -1,5 +1,6 @@
 SUBDIRS = . tests
 INCLUDES = \
+	-I$(top_srcdir)/src/wifi \
 	-I$(top_srcdir)/src/settings \
 	-I$(top_srcdir)/include \
 	-I$(top_srcdir)/libnm-glib \
@@ -52,6 +53,7 @@ lib_ifnet_io_la_CPPFLAGS = \
 	-DSBINDIR=\"$(sbindir)\"
 
 lib_ifnet_io_la_LIBADD = \
+	 $(top_builddir)/src/wifi/libwifi-utils.la \
 	 $(top_builddir)/libnm-util/libnm-util.la \
 	 $(GLIB_LIBS)\
 	 $(GIO_LIBS)
diff --git a/src/settings/plugins/ifnet/Makefile.in b/src/settings/plugins/ifnet/Makefile.in
index 322adbf8..acf4e8bc 100644
--- a/src/settings/plugins/ifnet/Makefile.in
+++ b/src/settings/plugins/ifnet/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -79,6 +79,7 @@ am__installdirs = "$(DESTDIR)$(pkglibdir)"
 LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 lib_ifnet_io_la_DEPENDENCIES =  \
+	$(top_builddir)/src/wifi/libwifi-utils.la \
 	$(top_builddir)/libnm-util/libnm-util.la $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1)
 am_lib_ifnet_io_la_OBJECTS = lib_ifnet_io_la-net_parser.lo \
@@ -245,6 +246,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -340,6 +345,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -378,6 +386,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -400,6 +410,7 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 SUBDIRS = . tests
 INCLUDES = \
+	-I$(top_srcdir)/src/wifi \
 	-I$(top_srcdir)/src/settings \
 	-I$(top_srcdir)/include \
 	-I$(top_srcdir)/libnm-glib \
@@ -449,6 +460,7 @@ lib_ifnet_io_la_CPPFLAGS = \
 	-DSBINDIR=\"$(sbindir)\"
 
 lib_ifnet_io_la_LIBADD = \
+	 $(top_builddir)/src/wifi/libwifi-utils.la \
 	 $(top_builddir)/libnm-util/libnm-util.la \
 	 $(GLIB_LIBS)\
 	 $(GIO_LIBS)
diff --git a/src/settings/plugins/ifnet/net_parser.c b/src/settings/plugins/ifnet/net_parser.c
index 38765f5f..2562e613 100644
--- a/src/settings/plugins/ifnet/net_parser.c
+++ b/src/settings/plugins/ifnet/net_parser.c
@@ -22,7 +22,14 @@
 #include <string.h>
 #include <nm-system-config-interface.h>
 #include <stdio.h>
+
+#include <sys/ioctl.h>
+#include <net/if.h>
+#include <unistd.h>
+
 #include "plugin.h"
+#include "wifi-utils.h"
+
 #include "net_parser.h"
 #include "net_utils.h"
 
@@ -122,6 +129,24 @@ is_global_setting (char *key)
 	return 0;
 }
 
+/* Find out whether the 'iface' is an interface */
+static gboolean
+name_is_interface (const char *iface)
+{
+	int fd;
+	struct ifreq ifr;
+	gboolean is_iface = FALSE;
+
+	fd = socket (PF_INET, SOCK_DGRAM, 0);
+	if (fd >= 0) {
+		strncpy (ifr.ifr_name, iface, IFNAMSIZ);
+		if (ioctl (fd, SIOCGIFHWADDR, &ifr) == 0)
+			is_iface = TRUE;
+		close (fd);
+	}
+	return is_iface;
+}
+
 /* Parse a complete line */
 /* Connection type is determined here */
 static void
@@ -143,12 +168,13 @@ init_block_by_line (gchar * buf)
 	pos = g_strrstr (key_value[0], "_");
 	if (pos == NULL || is_global_setting (key_value[0])) {
 		/* global data */
-		PLUGIN_PRINT (IFNET_PLUGIN_NAME, "global:%s-%s\n", key_value[0],
-			      key_value[1]);
-		g_hash_table_insert (global_settings_table,
-				     g_strdup (key_value[0]),
-				     g_strdup (key_value[1]));
+		data = g_strdup (key_value[1]);
+		tmp = strip_string (data, '"');
+		strip_string (tmp, '\'');
+		PLUGIN_PRINT (IFNET_PLUGIN_NAME, "global:%s-%s\n", key_value[0], tmp);
+		g_hash_table_insert (global_settings_table, g_strdup (key_value[0]), g_strdup (tmp));
 		g_strfreev (key_value);
+		g_free (data);
 		return;
 	}
 	*pos++ = '\0';
@@ -165,8 +191,12 @@ init_block_by_line (gchar * buf)
 			/* ignored connection */
 			conn = add_new_connection_config ("ignore", pos);
 		} else
-			/* wireless connection */
-			conn = add_new_connection_config ("wireless", pos);
+			if (name_is_interface (pos) && !wifi_utils_is_wifi (pos, NULL))
+				/* wired connection */
+				conn = add_new_connection_config ("wired", pos);
+			else
+				/* wireless connection */
+				conn = add_new_connection_config ("wireless", pos);
 	}
 	data = g_strdup (key_value[1]);
 	tmp = strip_string (data, '"');
@@ -593,7 +623,7 @@ ifnet_flush_to_file (const char *config_file)
 	/* Writing global data */
 	while (g_hash_table_iter_next (&iter, &key, &value)) {
 		out_line =
-		    g_strdup_printf ("%s=%s\n", (gchar *) key, (gchar *) value);
+		    g_strdup_printf ("%s=\"%s\"\n", (gchar *) key, (gchar *) value);
 		g_io_channel_write_chars (channel, out_line, -1,
 					  &bytes_written, error);
 		if (bytes_written == 0 || (error && *error))
diff --git a/src/settings/plugins/ifnet/net_utils.c b/src/settings/plugins/ifnet/net_utils.c
index f1687479..d613db6a 100644
--- a/src/settings/plugins/ifnet/net_utils.c
+++ b/src/settings/plugins/ifnet/net_utils.c
@@ -404,7 +404,7 @@ has_ip6_address (const char *conn_name)
 
 	g_return_val_if_fail (conn_name != NULL, FALSE);
 	ipset = split_addresses (ifnet_get_data (conn_name, "config"));
-	length = g_strv_length (ipset);
+	length = ipset ? g_strv_length (ipset) : 0;
 	for (i = 0; i < length; i++) {
 		if (!is_ip6_address (ipset[i]))
 			continue;
@@ -618,7 +618,7 @@ convert_ip4_config_block (const char *conn_name)
 	g_return_val_if_fail (conn_name != NULL, NULL);
 
 	ipset = split_addresses (ifnet_get_data (conn_name, "config"));
-	length = g_strv_length (ipset);
+	length = ipset ? g_strv_length (ipset) : 0;
 
 	routes = ifnet_get_data (conn_name, "routes");
 	if (routes)
@@ -654,7 +654,7 @@ convert_ip6_config_block (const char *conn_name)
 
 	g_return_val_if_fail (conn_name != NULL, NULL);
 	ipset = split_addresses (ifnet_get_data (conn_name, "config"));
-	length = g_strv_length (ipset);
+	length = ipset ? g_strv_length (ipset) : 0;
 	for (i = 0; i < length; i++) {
 		ip = ipset[i];
 		ip = strip_string (ip, '"');
@@ -684,7 +684,7 @@ convert_ip4_routes_block (const char *conn_name)
 	g_return_val_if_fail (conn_name != NULL, NULL);
 
 	ipset = split_routes (ifnet_get_data (conn_name, "routes"));
-	length = g_strv_length (ipset);
+	length = ipset ? g_strv_length (ipset) : 0;
 	for (i = 0; i < length; i++) {
 		ip = ipset[i];
 		if (find_default_gateway_str (ip) || strstr (ip, "::")
@@ -718,7 +718,7 @@ convert_ip6_routes_block (const char *conn_name)
 
 	g_return_val_if_fail (conn_name != NULL, NULL);
 	ipset = split_routes (ifnet_get_data (conn_name, "routes"));
-	length = g_strv_length (ipset);
+	length = ipset ? g_strv_length (ipset) : 0;
 	for (i = 0; i < length; i++) {
 		ip = ipset[i];
 		ip = strip_string (ip, '"');
diff --git a/src/settings/plugins/ifnet/tests/Makefile.am b/src/settings/plugins/ifnet/tests/Makefile.am
index 20a26805..85d42388 100644
--- a/src/settings/plugins/ifnet/tests/Makefile.am
+++ b/src/settings/plugins/ifnet/tests/Makefile.am
@@ -10,7 +10,8 @@ check_ifnet_CPPFLAGS = $(CHECK_CFLAGS) $(GLIB_CFLAGS)
 check_ifnet_LDADD = $(top_builddir)/libnm-util/libnm-util.la \
 		    $(builddir)/../lib-ifnet-io.la \
 		    $(CHECK_LIBS) \
-		    $(GLIB_LIBS)
+		    $(GLIB_LIBS) \
+		    $(LIBM)
 EXTRA_DIST = hostname \
 			 net \
 			 net.all \
diff --git a/src/settings/plugins/ifnet/tests/Makefile.in b/src/settings/plugins/ifnet/tests/Makefile.in
index 02ee121f..743e547c 100644
--- a/src/settings/plugins/ifnet/tests/Makefile.in
+++ b/src/settings/plugins/ifnet/tests/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -59,7 +59,8 @@ am_check_ifnet_OBJECTS = check_ifnet-test_all.$(OBJEXT)
 check_ifnet_OBJECTS = $(am_check_ifnet_OBJECTS)
 am__DEPENDENCIES_1 =
 check_ifnet_DEPENDENCIES = $(top_builddir)/libnm-util/libnm-util.la \
-	$(builddir)/../lib-ifnet-io.la $(am__DEPENDENCIES_1)
+	$(builddir)/../lib-ifnet-io.la $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1)
 AM_V_lt = $(am__v_lt_$(V))
 am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
 am__v_lt_0 = --silent
@@ -168,6 +169,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -263,6 +268,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -301,6 +309,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -332,7 +342,8 @@ check_ifnet_CPPFLAGS = $(CHECK_CFLAGS) $(GLIB_CFLAGS)
 check_ifnet_LDADD = $(top_builddir)/libnm-util/libnm-util.la \
 		    $(builddir)/../lib-ifnet-io.la \
 		    $(CHECK_LIBS) \
-		    $(GLIB_LIBS)
+		    $(GLIB_LIBS) \
+		    $(LIBM)
 
 EXTRA_DIST = hostname \
 			 net \
diff --git a/src/settings/plugins/ifnet/tests/net b/src/settings/plugins/ifnet/tests/net
index 27d39f44..a5ac9ca2 100644
--- a/src/settings/plugins/ifnet/tests/net
+++ b/src/settings/plugins/ifnet/tests/net
@@ -3,6 +3,8 @@
 # please review /etc/conf.d/net.example and save your configuration
 # in /etc/conf.d/net (this file :]!).
 
+modules="!wpa_supplicant"
+
 config_eth0=(
 "202.117.16.121    netmask    255.255.255.0 brd 202.117.16.255"
 "192.168.4.121/24"
diff --git a/src/settings/plugins/ifnet/tests/test_all.c b/src/settings/plugins/ifnet/tests/test_all.c
index 50441d4e..974258b9 100644
--- a/src/settings/plugins/ifnet/tests/test_all.c
+++ b/src/settings/plugins/ifnet/tests/test_all.c
@@ -56,6 +56,9 @@ test_getdata ()
 		&& strcmp (ifnet_get_data ("ppp0", "password"),
 			   "password") == 0, "get data",
 		"config_ppp0 password is not correctly read");
+	ASSERT (ifnet_get_global_data ("modules")
+		&& strcmp ("!wpa_supplicant", ifnet_get_global_data ("modules")) == 0,
+		"get data", "config_eth1 is not correct");
 }
 
 static void
diff --git a/src/settings/plugins/ifupdown/Makefile.in b/src/settings/plugins/ifupdown/Makefile.in
index f5087648..d1414ef0 100644
--- a/src/settings/plugins/ifupdown/Makefile.in
+++ b/src/settings/plugins/ifupdown/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -244,6 +244,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -339,6 +343,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -377,6 +384,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/settings/plugins/ifupdown/tests/Makefile.am b/src/settings/plugins/ifupdown/tests/Makefile.am
index ff219d5d..9a9ea1f7 100644
--- a/src/settings/plugins/ifupdown/tests/Makefile.am
+++ b/src/settings/plugins/ifupdown/tests/Makefile.am
@@ -29,4 +29,5 @@ endif
 
 EXTRA_DIST = \
 	test1 test2 test3 test4 test5 test6 test7 test8 test9 test11 test12 \
-	test13 test14 test15 test16 test17-wired-static-verify-ip4
+	test13 test14 test15 test16 test17-wired-static-verify-ip4 \
+	test18-wired-static-verify-ip6
diff --git a/src/settings/plugins/ifupdown/tests/Makefile.in b/src/settings/plugins/ifupdown/tests/Makefile.in
index a03be1bd..68c166c0 100644
--- a/src/settings/plugins/ifupdown/tests/Makefile.in
+++ b/src/settings/plugins/ifupdown/tests/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -168,6 +168,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -263,6 +267,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -301,6 +308,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -343,7 +352,8 @@ test_ifupdown_LDADD = \
 
 EXTRA_DIST = \
 	test1 test2 test3 test4 test5 test6 test7 test8 test9 test11 test12 \
-	test13 test14 test15 test16 test17-wired-static-verify-ip4
+	test13 test14 test15 test16 test17-wired-static-verify-ip4 \
+	test18-wired-static-verify-ip6
 
 all: all-am
 
diff --git a/src/settings/plugins/ifupdown/tests/test18-wired-static-verify-ip6 b/src/settings/plugins/ifupdown/tests/test18-wired-static-verify-ip6
new file mode 100644
index 00000000..29546a61
--- /dev/null
+++ b/src/settings/plugins/ifupdown/tests/test18-wired-static-verify-ip6
@@ -0,0 +1,6 @@
+iface myip6tunnel inet6 v4tunnel
+  address fc00::1
+  netmask 64
+  endpoint 78.35.24.124
+  dns-nameservers fc00::2 fc00::3
+  dns-search example.com foo.example.com
diff --git a/src/settings/plugins/keyfile/Makefile.in b/src/settings/plugins/keyfile/Makefile.in
index c766e794..4b9ec0dd 100644
--- a/src/settings/plugins/keyfile/Makefile.in
+++ b/src/settings/plugins/keyfile/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -220,6 +220,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -315,6 +319,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -353,6 +360,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/settings/plugins/keyfile/reader.c b/src/settings/plugins/keyfile/reader.c
index c7889cfc..47392978 100644
--- a/src/settings/plugins/keyfile/reader.c
+++ b/src/settings/plugins/keyfile/reader.c
@@ -1351,7 +1351,8 @@ nm_keyfile_plugin_connection_from_file (const char *filename, GError **error)
 	/* Verify the connection */
 	if (!nm_connection_verify (connection, &verify_error)) {
 		g_set_error (error, KEYFILE_PLUGIN_ERROR, 0,
-			         "invalid or missing connection property '%s'",
+			         "invalid or missing connection property '%s/%s'",
+			         verify_error ? g_type_name (nm_connection_lookup_setting_type_by_quark (verify_error->domain)) : "(unknown)",
 			         (verify_error && verify_error->message) ? verify_error->message : "(unknown)");
 		g_clear_error (&verify_error);
 		g_object_unref (connection);
diff --git a/src/settings/plugins/keyfile/tests/Makefile.in b/src/settings/plugins/keyfile/tests/Makefile.in
index ff08e529..d37f2c61 100644
--- a/src/settings/plugins/keyfile/tests/Makefile.in
+++ b/src/settings/plugins/keyfile/tests/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -206,6 +206,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -301,6 +305,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -339,6 +346,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/settings/plugins/keyfile/tests/keyfiles/Makefile.in b/src/settings/plugins/keyfile/tests/keyfiles/Makefile.in
index cf5b868f..e6cf35ad 100644
--- a/src/settings/plugins/keyfile/tests/keyfiles/Makefile.in
+++ b/src/settings/plugins/keyfile/tests/keyfiles/Makefile.in
@@ -46,7 +46,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -134,6 +134,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -229,6 +233,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -267,6 +274,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/settings/tests/Makefile.in b/src/settings/tests/Makefile.in
index de5474d4..5fb95d31 100644
--- a/src/settings/tests/Makefile.in
+++ b/src/settings/tests/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -170,6 +170,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -265,6 +269,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -303,6 +310,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/supplicant-manager/Makefile.in b/src/supplicant-manager/Makefile.in
index fbb43bde..4bde9543 100644
--- a/src/supplicant-manager/Makefile.in
+++ b/src/supplicant-manager/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -210,6 +210,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -305,6 +309,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -343,6 +350,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/supplicant-manager/nm-supplicant-interface.c b/src/supplicant-manager/nm-supplicant-interface.c
index f8ad8f18..cbe7032f 100644
--- a/src/supplicant-manager/nm-supplicant-interface.c
+++ b/src/supplicant-manager/nm-supplicant-interface.c
@@ -50,6 +50,8 @@ static void wpas_iface_scan_done (DBusGProxy *proxy,
                                   gboolean success,
                                   gpointer user_data);
 
+static void wpas_iface_get_props (NMSupplicantInterface *self);
+
 #define NM_SUPPLICANT_INTERFACE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), \
                                                  NM_TYPE_SUPPLICANT_INTERFACE, \
                                                  NMSupplicantInterfacePrivate))
@@ -85,6 +87,8 @@ typedef struct {
 	gboolean              is_wireless;
 	gboolean              has_credreq;  /* Whether querying 802.1x credentials is supported */
 	gboolean              fast_supported;
+	guint32               max_scan_ssids;
+	guint32               ready_count;
 
 	char *                object_path;
 	guint32               state;
@@ -100,7 +104,7 @@ typedef struct {
 	guint32               blobs_left;
 	GHashTable *          bss_proxies;
 
-	guint32               last_scan;
+	time_t                last_scan;
 
 	NMSupplicantConfig *  cfg;
 
@@ -257,6 +261,10 @@ bss_properties_changed (DBusGProxy *proxy,
                         gpointer user_data)
 {
 	NMSupplicantInterface *self = NM_SUPPLICANT_INTERFACE (user_data);
+	NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self);
+
+	if (priv->scanning)
+		priv->last_scan = time (NULL);
 
 	if (g_strcmp0 (interface, WPAS_DBUS_IFACE_BSS) == 0)
 		g_signal_emit (self, signals[BSS_UPDATED], 0, dbus_g_proxy_get_path (proxy), props);
@@ -268,6 +276,10 @@ old_bss_properties_changed (DBusGProxy *proxy,
                             gpointer user_data)
 {
 	NMSupplicantInterface *self = NM_SUPPLICANT_INTERFACE (user_data);
+	NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self);
+
+	if (priv->scanning)
+		priv->last_scan = time (NULL);
 
 	g_signal_emit (self, signals[BSS_UPDATED], 0, dbus_g_proxy_get_path (proxy), props);
 }
@@ -346,7 +358,13 @@ wpas_iface_bss_added (DBusGProxy *proxy,
                       GHashTable *props,
                       gpointer user_data)
 {
-	handle_new_bss (NM_SUPPLICANT_INTERFACE (user_data), object_path, props);
+	NMSupplicantInterface *self = NM_SUPPLICANT_INTERFACE (user_data);
+	NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self);
+
+	if (priv->scanning)
+		priv->last_scan = time (NULL);
+
+	handle_new_bss (self, object_path, props);
 }
 
 static void
@@ -365,7 +383,9 @@ wpas_iface_bss_removed (DBusGProxy *proxy,
 static int
 wpas_state_string_to_enum (const char *str_state)
 {
-	if (!strcmp (str_state, "disconnected"))
+	if (!strcmp (str_state, "interface_disabled"))
+		return NM_SUPPLICANT_INTERFACE_STATE_DISABLED;
+	else if (!strcmp (str_state, "disconnected"))
 		return NM_SUPPLICANT_INTERFACE_STATE_DISCONNECTED;
 	else if (!strcmp (str_state, "inactive"))
 		return NM_SUPPLICANT_INTERFACE_STATE_INACTIVE;
@@ -406,7 +426,12 @@ set_state (NMSupplicantInterface *self, guint32 new_state)
 	if (priv->state >= NM_SUPPLICANT_INTERFACE_STATE_READY)
 		g_return_if_fail (new_state > NM_SUPPLICANT_INTERFACE_STATE_READY);
 
-	if (new_state == NM_SUPPLICANT_INTERFACE_STATE_DOWN) {
+	if (new_state == NM_SUPPLICANT_INTERFACE_STATE_READY) {
+		/* Get properties again to update to the actual wpa_supplicant
+		 * interface state.
+		 */
+		wpas_iface_get_props (self);
+	} else if (new_state == NM_SUPPLICANT_INTERFACE_STATE_DOWN) {
 		/* Cancel all pending calls when going down */
 		cancel_all_callbacks (priv->other_pcalls);
 		cancel_all_callbacks (priv->assoc_pcalls);
@@ -438,6 +463,11 @@ set_state (NMSupplicantInterface *self, guint32 new_state)
 	}
 
 	priv->state = new_state;
+
+	if (   priv->state == NM_SUPPLICANT_INTERFACE_STATE_SCANNING
+	    || old_state == NM_SUPPLICANT_INTERFACE_STATE_SCANNING)
+		priv->last_scan = time (NULL);
+
 	g_signal_emit (self, signals[STATE], 0, priv->state, old_state);
 }
 
@@ -456,16 +486,13 @@ static void
 set_scanning (NMSupplicantInterface *self, gboolean new_scanning)
 {
 	NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self);
-	GTimeVal cur_time;
 
 	if (priv->scanning != new_scanning) {
 		priv->scanning = new_scanning;
 
 		/* Cache time of last scan completion */
-		if (priv->scanning == FALSE) {
-			g_get_current_time (&cur_time);
-			priv->last_scan = cur_time.tv_sec;
-		}
+		if (priv->scanning == FALSE)
+			priv->last_scan = time (NULL);
 
 		g_object_notify (G_OBJECT (self), "scanning");
 	}
@@ -486,6 +513,12 @@ nm_supplicant_interface_get_scanning (NMSupplicantInterface *self)
 	return FALSE;
 }
 
+time_t
+nm_supplicant_interface_get_last_scan_time (NMSupplicantInterface *self)
+{
+	return NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self)->last_scan;
+}
+
 static void
 wpas_iface_scan_done (DBusGProxy *proxy,
                       gboolean success,
@@ -493,21 +526,57 @@ wpas_iface_scan_done (DBusGProxy *proxy,
 {
 	NMSupplicantInterface *self = NM_SUPPLICANT_INTERFACE (user_data);
 	NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self);
-	GTimeVal cur_time;
 
 	/* Cache last scan completed time */
-	g_get_current_time (&cur_time);
-	priv->last_scan = cur_time.tv_sec;
-
+	priv->last_scan = time (NULL);
 	g_signal_emit (self, signals[SCAN_DONE], 0, success);
 }
 
 static void
+parse_capabilities (NMSupplicantInterface *self, GHashTable *props)
+{
+	NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self);
+	GValue *value;
+	gboolean have_active = FALSE, have_ssid = FALSE;
+
+	g_return_if_fail (props != NULL);
+
+	value = g_hash_table_lookup (props, "Scan");
+	if (value && G_VALUE_HOLDS (value, G_TYPE_STRV)) {
+		const char **vals = g_value_get_boxed (value);
+		const char **iter = vals;
+
+		while (iter && *iter && (!have_active || !have_ssid)) {
+			if (g_strcmp0 (*iter, "active") == 0)
+				have_active = TRUE;
+			else if (g_strcmp0 (*iter, "ssid") == 0)
+				have_ssid = TRUE;
+			iter++;
+		}
+	}
+
+	value = g_hash_table_lookup (props, "MaxScanSSID");
+	if (value && G_VALUE_HOLDS (value, G_TYPE_INT)) {
+		/* We need active scan and SSID probe capabilities to care about MaxScanSSIDs */
+		if (have_active && have_ssid) {
+			/* wpa_supplicant's WPAS_MAX_SCAN_SSIDS value is 16, but for speed
+			 * and to ensure we don't disclose too many SSIDs from the hidden
+			 * list, we'll limit to 5.
+			 */
+			priv->max_scan_ssids = CLAMP (g_value_get_int (value), 0, 5);
+			nm_log_info (LOGD_SUPPLICANT, "(%s) supports %d scan SSIDs",
+			             priv->dev, priv->max_scan_ssids);
+		}
+	}
+}
+
+static void
 wpas_iface_properties_changed (DBusGProxy *proxy,
                                GHashTable *props,
                                gpointer user_data)
 {
 	NMSupplicantInterface *self = NM_SUPPLICANT_INTERFACE (user_data);
+	NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self);
 	GValue *value;
 
 	value = g_hash_table_lookup (props, "Scanning");
@@ -515,8 +584,16 @@ wpas_iface_properties_changed (DBusGProxy *proxy,
 		set_scanning (self, g_value_get_boolean (value));
 
 	value = g_hash_table_lookup (props, "State");
-	if (value && G_VALUE_HOLDS_STRING (value))
-		set_state_from_string (self, g_value_get_string (value));
+	if (value && G_VALUE_HOLDS_STRING (value)) {
+		if (priv->state >= NM_SUPPLICANT_INTERFACE_STATE_READY) {
+			/* Only transition to actual wpa_supplicant interface states (ie,
+			 * anything > READY) after the NMSupplicantInterface has had a
+			 * chance to initialize, which is signalled by entering the READY
+			 * state.
+			 */
+			set_state_from_string (self, g_value_get_string (value));
+		}
+	}
 
 	value = g_hash_table_lookup (props, "BSSs");
 	if (value && G_VALUE_HOLDS (value, DBUS_TYPE_G_ARRAY_OF_OBJECT_PATH)) {
@@ -526,6 +603,22 @@ wpas_iface_properties_changed (DBusGProxy *proxy,
 		for (i = 0; paths && (i < paths->len); i++)
 			handle_new_bss (self, g_ptr_array_index (paths, i), NULL);
 	}
+
+	value = g_hash_table_lookup (props, "Capabilities");
+	if (value && G_VALUE_HOLDS (value, DBUS_TYPE_G_MAP_OF_VARIANT))
+		parse_capabilities (self, g_value_get_boxed (value));
+}
+
+static void
+iface_check_ready (NMSupplicantInterface *self)
+{
+	NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self);
+
+	if (priv->ready_count && priv->state < NM_SUPPLICANT_INTERFACE_STATE_READY) {
+		priv->ready_count--;
+		if (priv->ready_count == 0)
+			set_state (self, NM_SUPPLICANT_INTERFACE_STATE_READY);
+	}
 }
 
 static void
@@ -545,6 +638,7 @@ iface_get_props_cb (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_da
 		             error && error->message ? error->message : "(unknown)");
 		g_clear_error (&error);
 	}
+	iface_check_ready (info->interface);
 }
 
 static void
@@ -629,6 +723,8 @@ iface_check_netreply_cb (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer us
 			        priv->has_credreq ? "supports" : "does not support");
 	}
 	g_clear_error (&error);
+
+	iface_check_ready (info->interface);
 }
 
 static void
@@ -721,13 +817,10 @@ interface_add_done (NMSupplicantInterface *self, char *path)
 	                                               WPAS_DBUS_SERVICE,
 	                                               path,
 	                                               DBUS_INTERFACE_PROPERTIES);
-	/* Get initial properties */
+	/* Get initial properties and check whether NetworkReply is supported */
 	wpas_iface_get_props (self);
-
-	/* Check whether NetworkReply is supported */
 	wpas_iface_check_network_reply (self);
-
-	set_state (self, NM_SUPPLICANT_INTERFACE_STATE_READY);
+	priv->ready_count = 2;
 }
 
 static void
@@ -1159,8 +1252,18 @@ string_to_gvalue (const char *str)
 	return val;
 }
 
+static GValue *
+byte_array_array_to_gvalue (const GPtrArray *array)
+{
+	GValue *val = g_slice_new0 (GValue);
+
+	g_value_init (val, DBUS_TYPE_G_ARRAY_OF_ARRAY_OF_UCHAR);
+	g_value_set_boxed (val, array);
+	return val;
+}
+
 gboolean
-nm_supplicant_interface_request_scan (NMSupplicantInterface * self)
+nm_supplicant_interface_request_scan (NMSupplicantInterface *self, const GPtrArray *ssids)
 {
 	NMSupplicantInterfacePrivate *priv;
 	NMSupplicantInfo *info;
@@ -1174,6 +1277,8 @@ nm_supplicant_interface_request_scan (NMSupplicantInterface * self)
 	/* Scan parameters */
 	hash = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, destroy_gvalue);
 	g_hash_table_insert (hash, "Type", string_to_gvalue ("active"));
+	if (ssids)
+		g_hash_table_insert (hash, "SSIDs", byte_array_array_to_gvalue (ssids));
 
 	info = nm_supplicant_info_new (self, priv->iface_proxy, priv->other_pcalls);
 	call = dbus_g_proxy_begin_call (priv->iface_proxy, "Scan",
@@ -1206,6 +1311,8 @@ nm_supplicant_interface_state_to_string (guint32 state)
 		return "starting";
 	case NM_SUPPLICANT_INTERFACE_STATE_READY:
 		return "ready";
+	case NM_SUPPLICANT_INTERFACE_STATE_DISABLED:
+		return "disabled";
 	case NM_SUPPLICANT_INTERFACE_STATE_DISCONNECTED:
 		return "disconnected";
 	case NM_SUPPLICANT_INTERFACE_STATE_INACTIVE:
@@ -1259,6 +1366,15 @@ nm_supplicant_interface_get_ifname (NMSupplicantInterface *self)
 	return NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self)->dev;
 }
 
+guint
+nm_supplicant_interface_get_max_scan_ssids (NMSupplicantInterface *self)
+{
+	g_return_val_if_fail (self != NULL, 0);
+	g_return_val_if_fail (NM_IS_SUPPLICANT_INTERFACE (self), 0);
+
+	return NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self)->max_scan_ssids;
+}
+
 /*******************************************************************/
 
 NMSupplicantInterface *
diff --git a/src/supplicant-manager/nm-supplicant-interface.h b/src/supplicant-manager/nm-supplicant-interface.h
index 608ee059..b99c0f26 100644
--- a/src/supplicant-manager/nm-supplicant-interface.h
+++ b/src/supplicant-manager/nm-supplicant-interface.h
@@ -34,6 +34,7 @@ enum {
 	NM_SUPPLICANT_INTERFACE_STATE_INIT = 0,
 	NM_SUPPLICANT_INTERFACE_STATE_STARTING,
 	NM_SUPPLICANT_INTERFACE_STATE_READY,
+	NM_SUPPLICANT_INTERFACE_STATE_DISABLED,
 	NM_SUPPLICANT_INTERFACE_STATE_DISCONNECTED,
 	NM_SUPPLICANT_INTERFACE_STATE_INACTIVE,
 	NM_SUPPLICANT_INTERFACE_STATE_SCANNING,
@@ -127,7 +128,7 @@ const char * nm_supplicant_interface_get_device (NMSupplicantInterface * iface);
 
 const char *nm_supplicant_interface_get_object_path (NMSupplicantInterface * iface);
 
-gboolean nm_supplicant_interface_request_scan (NMSupplicantInterface * self);
+gboolean nm_supplicant_interface_request_scan (NMSupplicantInterface * self, const GPtrArray *ssids);
 
 guint32 nm_supplicant_interface_get_state (NMSupplicantInterface * self);
 
@@ -135,8 +136,12 @@ const char *nm_supplicant_interface_state_to_string (guint32 state);
 
 gboolean nm_supplicant_interface_get_scanning (NMSupplicantInterface *self);
 
+time_t nm_supplicant_interface_get_last_scan_time (NMSupplicantInterface *self);
+
 const char *nm_supplicant_interface_get_ifname (NMSupplicantInterface *self);
 
+guint nm_supplicant_interface_get_max_scan_ssids (NMSupplicantInterface *self);
+
 gboolean nm_supplicant_interface_get_has_credentials_request (NMSupplicantInterface *self);
 
 gboolean nm_supplicant_interface_credentials_reply (NMSupplicantInterface *self,
diff --git a/src/supplicant-manager/tests/Makefile.in b/src/supplicant-manager/tests/Makefile.in
index 65be2b39..c649a3ab 100644
--- a/src/supplicant-manager/tests/Makefile.in
+++ b/src/supplicant-manager/tests/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -170,6 +170,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -265,6 +269,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -303,6 +310,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/tests/Makefile.in b/src/tests/Makefile.in
index 7d367415..3cc387ca 100644
--- a/src/tests/Makefile.in
+++ b/src/tests/Makefile.in
@@ -49,7 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -187,6 +187,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -282,6 +286,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -320,6 +327,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/vpn-manager/Makefile.am b/src/vpn-manager/Makefile.am
index c3c5b525..12e316d8 100644
--- a/src/vpn-manager/Makefile.am
+++ b/src/vpn-manager/Makefile.am
@@ -7,6 +7,7 @@ INCLUDES = \
 	-I${top_srcdir}/src/generated \
 	-I${top_builddir}/src/generated \
 	-I${top_srcdir}/src/logging \
+	-I${top_srcdir}/src/posix-signals \
 	-I${top_srcdir}/src \
 	-I${top_srcdir}/src/dns-manager \
 	-DVPN_NAME_FILES_DIR=\""$(sysconfdir)/NetworkManager/VPN"\"
@@ -31,6 +32,7 @@ libvpn_manager_la_CPPFLAGS =	\
 libvpn_manager_la_LIBADD = \
 	$(top_builddir)/src/generated/libnm-generated.la \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(top_builddir)/libnm-util/libnm-util.la \
 	$(LIBNL_LIBS) \
 	$(DBUS_LIBS) \
diff --git a/src/vpn-manager/Makefile.in b/src/vpn-manager/Makefile.in
index 9a7e5e42..64a9c8c3 100644
--- a/src/vpn-manager/Makefile.in
+++ b/src/vpn-manager/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -59,6 +59,7 @@ am__DEPENDENCIES_1 =
 libvpn_manager_la_DEPENDENCIES =  \
 	$(top_builddir)/src/generated/libnm-generated.la \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(top_builddir)/libnm-util/libnm-util.la $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 am_libvpn_manager_la_OBJECTS = libvpn_manager_la-nm-vpn-manager.lo \
@@ -171,6 +172,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -266,6 +271,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -304,6 +312,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -333,6 +343,7 @@ INCLUDES = \
 	-I${top_srcdir}/src/generated \
 	-I${top_builddir}/src/generated \
 	-I${top_srcdir}/src/logging \
+	-I${top_srcdir}/src/posix-signals \
 	-I${top_srcdir}/src \
 	-I${top_srcdir}/src/dns-manager \
 	-DVPN_NAME_FILES_DIR=\""$(sysconfdir)/NetworkManager/VPN"\"
@@ -355,6 +366,7 @@ libvpn_manager_la_CPPFLAGS = \
 libvpn_manager_la_LIBADD = \
 	$(top_builddir)/src/generated/libnm-generated.la \
 	$(top_builddir)/src/logging/libnm-logging.la \
+	$(top_builddir)/src/posix-signals/libnm-posix-signals.la \
 	$(top_builddir)/libnm-util/libnm-util.la \
 	$(LIBNL_LIBS) \
 	$(DBUS_LIBS) \
diff --git a/src/vpn-manager/nm-vpn-connection.c b/src/vpn-manager/nm-vpn-connection.c
index b391f1ec..5f64153b 100644
--- a/src/vpn-manager/nm-vpn-connection.c
+++ b/src/vpn-manager/nm-vpn-connection.c
@@ -43,7 +43,6 @@
 #include "nm-properties-changed-signal.h"
 #include "nm-dbus-glib-types.h"
 #include "NetworkManagerUtils.h"
-#include "nm-dns-manager.h"
 #include "nm-netlink-monitor.h"
 #include "nm-netlink-utils.h"
 #include "nm-glib-compat.h"
@@ -78,16 +77,24 @@ typedef struct {
 	NMDevice *parent_dev;
 	gulong device_monitor;
 	gulong device_ip4;
+	gulong device_ip6;
 
 	NMVPNConnectionState vpn_state;
 	NMVPNConnectionStateReason failure_reason;
 	DBusGProxy *proxy;
 	guint ipconfig_timeout;
+	gboolean has_ip4;
 	NMIP4Config *ip4_config;
 	guint32 ip4_internal_gw;
+	guint32 ip4_external_gw;
+	gboolean has_ip6;
+	NMIP6Config *ip6_config;
+	struct in6_addr *ip6_internal_gw;
+	struct in6_addr *ip6_external_gw;
 	char *ip_iface;
 	int ip_ifindex;
 	char *banner;
+	guint32 mtu;
 
 	struct rtnl_route *gw_route;
 } NMVPNConnectionPrivate;
@@ -133,13 +140,61 @@ ac_state_from_vpn_state (NMVPNConnectionState vpn_state)
 }
 
 static void
+call_plugin_disconnect (NMVPNConnection *self)
+{
+	NMVPNConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (self);
+	GError *error = NULL;
+
+	if (priv->proxy) {
+		org_freedesktop_NetworkManager_VPN_Plugin_disconnect (priv->proxy, &error);
+		if (error)
+			nm_log_warn (LOGD_VPN, "error disconnecting VPN: %s", error->message);
+		g_clear_error (&error);
+
+		g_object_unref (priv->proxy);
+		priv->proxy = NULL;
+	}
+}
+
+static void
+vpn_cleanup (NMVPNConnection *connection)
+{
+	NMVPNConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (connection);
+
+	if (priv->ip_ifindex) {
+		nm_system_iface_set_up (priv->ip_ifindex, FALSE, NULL);
+		/* FIXME: use AF_UNSPEC here when we have IPv6 support */
+		nm_system_iface_flush_routes (priv->ip_ifindex, AF_INET);
+		nm_system_iface_flush_addresses (priv->ip_ifindex, AF_UNSPEC);
+	}
+
+	if (priv->gw_route) {
+		nm_netlink_route_delete (priv->gw_route);
+		rtnl_route_put (priv->gw_route);
+		priv->gw_route = NULL;
+	}
+
+	g_free (priv->banner);
+	priv->banner = NULL;
+
+	g_free (priv->ip_iface);
+	priv->ip_iface = NULL;
+	priv->ip_ifindex = 0;
+
+	/* Clear out connection secrets to ensure that the settings service
+	 * gets asked for them next time the connection is activated.
+	 */
+	if (priv->connection)
+		nm_connection_clear_secrets (priv->connection);
+}
+
+static void
 nm_vpn_connection_set_vpn_state (NMVPNConnection *connection,
                                  NMVPNConnectionState vpn_state,
                                  NMVPNConnectionStateReason reason)
 {
 	NMVPNConnectionPrivate *priv;
 	NMVPNConnectionState old_vpn_state;
-	char *ip_iface;
 
 	g_return_if_fail (NM_IS_VPN_CONNECTION (connection));
 
@@ -155,10 +210,12 @@ nm_vpn_connection_set_vpn_state (NMVPNConnection *connection,
 	nm_active_connection_set_state (NM_ACTIVE_CONNECTION (connection),
 	                                ac_state_from_vpn_state (vpn_state));
 
-	/* Save ip_iface since when the VPN goes down it may get freed
-	 * before we're done with it.
-	 */
-	ip_iface = g_strdup (priv->ip_iface);
+	/* Clear any in-progress secrets request */
+	if (priv->secrets_id) {
+		nm_settings_connection_cancel_secrets (NM_SETTINGS_CONNECTION (priv->connection), priv->secrets_id);
+		priv->secrets_id = 0;
+	}
+	priv->secrets_idx = SECRETS_REQ_SYSTEM;
 
 	/* The connection gets destroyed by the VPN manager when it enters the
 	 * disconnected/failed state, but we need to keep it around for a bit
@@ -166,35 +223,50 @@ nm_vpn_connection_set_vpn_state (NMVPNConnection *connection,
 	 */
 	g_object_ref (connection);
 
-	g_signal_emit (connection, signals[VPN_STATE_CHANGED], 0, vpn_state, reason);
+	g_signal_emit (connection, signals[VPN_STATE_CHANGED], 0, vpn_state, old_vpn_state, reason);
 	g_object_notify (G_OBJECT (connection), NM_VPN_CONNECTION_VPN_STATE);
 
-	/* Call dispatcher after the event gets processed internally */
 	switch (vpn_state) {
+	case NM_VPN_CONNECTION_STATE_NEED_AUTH:
+		/* Kick off the secrets requests; first we get existing system secrets
+		 * and ask the plugin if these are sufficient, next we get all existing
+		 * secrets from system and from user agents and ask the plugin again,
+		 * and last we ask the user for new secrets if required.
+		 */
+		get_secrets (connection, SECRETS_REQ_SYSTEM);
+		break;
 	case NM_VPN_CONNECTION_STATE_ACTIVATED:
+		/* Secrets no longer needed now that we're connected */
+		nm_connection_clear_secrets (priv->connection);
+
+		/* Let dispatcher scripts know we're up and running */
 		nm_utils_call_dispatcher ("vpn-up",
 		                          priv->connection,
 		                          priv->parent_dev,
-		                          ip_iface,
+		                          priv->ip_iface,
 		                          priv->ip4_config,
-		                          NULL);
+		                          priv->ip6_config);
 		break;
 	case NM_VPN_CONNECTION_STATE_FAILED:
 	case NM_VPN_CONNECTION_STATE_DISCONNECTED:
 		if (old_vpn_state == NM_VPN_CONNECTION_STATE_ACTIVATED) {
+			/* Let dispatcher scripts know we're about to go down */
 			nm_utils_call_dispatcher ("vpn-down",
 			                          priv->connection,
 			                          priv->parent_dev,
-			                          ip_iface,
+			                          priv->ip_iface,
 			                          NULL,
 			                          NULL);
 		}
+
+		/* Tear down and clean up the connection */
+		call_plugin_disconnect (connection);
+		vpn_cleanup (connection);
 		break;
 	default:
 		break;
 	}
 
-	g_free (ip_iface);
 	g_object_unref (connection);
 }
 
@@ -230,11 +302,34 @@ device_ip4_config_changed (NMDevice *device,
 	    || !nm_device_get_ip4_config (device))
 		return;
 
-	if (priv->gw_route)
-		rtnl_route_put (priv->gw_route);
+	/* Re-add the VPN gateway route */
+	if (priv->ip4_external_gw) {
+		if (priv->gw_route)
+			rtnl_route_put (priv->gw_route);
+		priv->gw_route = nm_system_add_ip4_vpn_gateway_route (priv->parent_dev,
+		                                                      priv->ip4_external_gw);
+	}
+}
+
+static void
+device_ip6_config_changed (NMDevice *device,
+                           GParamSpec *pspec,
+                           gpointer user_data)
+{
+	NMVPNConnection *vpn = NM_VPN_CONNECTION (user_data);
+	NMVPNConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (vpn);
+
+	if (   (priv->vpn_state != NM_VPN_CONNECTION_STATE_ACTIVATED)
+	    || !nm_device_get_ip6_config (device))
+		return;
 
 	/* Re-add the VPN gateway route */
-	priv->gw_route = nm_system_add_ip4_vpn_gateway_route (priv->parent_dev, priv->ip4_config);
+	if (priv->ip6_external_gw) {
+		if (priv->gw_route)
+			rtnl_route_put (priv->gw_route);
+		priv->gw_route = nm_system_add_ip6_vpn_gateway_route (priv->parent_dev,
+		                                                      priv->ip6_external_gw);
+	}
 }
 
 NMVPNConnection *
@@ -271,6 +366,9 @@ nm_vpn_connection_new (NMConnection *connection,
 	priv->device_ip4 = g_signal_connect (parent_device, "notify::" NM_DEVICE_IP4_CONFIG,
 	                                     G_CALLBACK (device_ip4_config_changed),
 	                                     self);
+	priv->device_ip6 = g_signal_connect (parent_device, "notify::" NM_DEVICE_IP6_CONFIG,
+	                                     G_CALLBACK (device_ip6_config_changed),
+	                                     self);
 
 	if (!nm_active_connection_export (NM_ACTIVE_CONNECTION (self),
 	                                  connection,
@@ -372,17 +470,18 @@ plugin_state_changed (DBusGProxy *proxy,
 	}
 }
 
+static char addr_to_string_buf[INET6_ADDRSTRLEN + 1];
+
 static const char *
 ip_address_to_string (guint32 numeric)
 {
 	struct in_addr temp_addr;
-	static char buf[INET_ADDRSTRLEN + 1];
 
-	memset (&buf, '\0', sizeof (buf));
+	memset (&addr_to_string_buf, '\0', sizeof (addr_to_string_buf));
 	temp_addr.s_addr = numeric;
 
-	if (inet_ntop (AF_INET, &temp_addr, buf, INET_ADDRSTRLEN)) {
-		return buf;
+	if (inet_ntop (AF_INET, &temp_addr, addr_to_string_buf, INET_ADDRSTRLEN)) {
+		return addr_to_string_buf;
 	} else {
 		nm_log_warn (LOGD_VPN, "error converting IP4 address 0x%X",
 		             ntohl (temp_addr.s_addr));
@@ -390,115 +489,340 @@ ip_address_to_string (guint32 numeric)
 	}
 }
 
+static const char *
+ip6_address_to_string (const struct in6_addr *addr)
+{
+	memset (addr_to_string_buf, '\0', sizeof (addr_to_string_buf));
+	if (inet_ntop (AF_INET6, addr, addr_to_string_buf, INET6_ADDRSTRLEN)) {
+		return addr_to_string_buf;
+	} else {
+		nm_log_warn (LOGD_VPN, "error converting IP6 address");
+		return NULL;
+	}
+}
+
 static void
-print_vpn_config (NMIP4Config *config,
-                  guint32 internal_gw,
-                  const char *ip_iface,
-                  const char *banner)
+print_vpn_config (NMVPNConnection *connection)
 {
+	NMVPNConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (connection);
 	NMIP4Address *addr;
+	NMIP6Address *addr6;
 	char *dns_domain = NULL;
 	guint32 num, i;
 
-	g_return_if_fail (config != NULL);
-
-	addr = nm_ip4_config_get_address (config, 0);
-
-	nm_log_info (LOGD_VPN, "VPN Gateway: %s", ip_address_to_string (nm_ip4_address_get_gateway (addr)));
-	if (internal_gw)
-		nm_log_info (LOGD_VPN, "Internal Gateway: %s", ip_address_to_string (internal_gw));
-	nm_log_info (LOGD_VPN, "Tunnel Device: %s", ip_iface);
-	nm_log_info (LOGD_VPN, "Internal IP4 Address: %s", ip_address_to_string (nm_ip4_address_get_address (addr)));
-	nm_log_info (LOGD_VPN, "Internal IP4 Prefix: %d", nm_ip4_address_get_prefix (addr));
-	nm_log_info (LOGD_VPN, "Internal IP4 Point-to-Point Address: %s",
-	             ip_address_to_string (nm_ip4_config_get_ptp_address (config)));
-	nm_log_info (LOGD_VPN, "Maximum Segment Size (MSS): %d", nm_ip4_config_get_mss (config));
-
-	num = nm_ip4_config_get_num_routes (config);
-	for (i = 0; i < num; i++) {
-		NMIP4Route *route;
-
-		route = nm_ip4_config_get_route (config, i);
-		nm_log_info (LOGD_VPN, "Static Route: %s/%d   Next Hop: %s",
-		             ip_address_to_string (nm_ip4_route_get_dest (route)),
-		             nm_ip4_route_get_prefix (route),
-		             ip_address_to_string (nm_ip4_route_get_next_hop (route)));
-	}
+	if (priv->ip4_external_gw) {
+		nm_log_info (LOGD_VPN, "VPN Gateway: %s",
+		             ip_address_to_string (priv->ip4_external_gw));
+	} else if (priv->ip6_external_gw) {
+		nm_log_info (LOGD_VPN, "VPN Gateway: %s",
+		             ip6_address_to_string (priv->ip6_external_gw));
+	} 
 
-	nm_log_info (LOGD_VPN, "Forbid Default Route: %s",
-	             nm_ip4_config_get_never_default (config) ? "yes" : "no");
+	nm_log_info (LOGD_VPN, "Tunnel Device: %s", priv->ip_iface);
 
-	num = nm_ip4_config_get_num_nameservers (config);
-	for (i = 0; i < num; i++) {
-		nm_log_info (LOGD_VPN, "Internal IP4 DNS: %s",
-		             ip_address_to_string (nm_ip4_config_get_nameserver (config, i)));
-	}
+	if (priv->ip4_config) {
+		nm_log_info (LOGD_VPN, "IPv4 configuration:");
+
+		addr = nm_ip4_config_get_address (priv->ip4_config, 0);
+
+		if (priv->ip4_internal_gw)
+			nm_log_info (LOGD_VPN, "  Internal Gateway: %s", ip_address_to_string (priv->ip4_internal_gw));
+		nm_log_info (LOGD_VPN, "  Internal Address: %s", ip_address_to_string (nm_ip4_address_get_address (addr)));
+		nm_log_info (LOGD_VPN, "  Internal Prefix: %d", nm_ip4_address_get_prefix (addr));
+		nm_log_info (LOGD_VPN, "  Internal Point-to-Point Address: %s",
+					 ip_address_to_string (nm_ip4_config_get_ptp_address (priv->ip4_config)));
+		nm_log_info (LOGD_VPN, "  Maximum Segment Size (MSS): %d", nm_ip4_config_get_mss (priv->ip4_config));
+
+		num = nm_ip4_config_get_num_routes (priv->ip4_config);
+		for (i = 0; i < num; i++) {
+			NMIP4Route *route;
+
+			route = nm_ip4_config_get_route (priv->ip4_config, i);
+			nm_log_info (LOGD_VPN, "  Static Route: %s/%d   Next Hop: %s",
+						 ip_address_to_string (nm_ip4_route_get_dest (route)),
+						 nm_ip4_route_get_prefix (route),
+						 ip_address_to_string (nm_ip4_route_get_next_hop (route)));
+		}
+
+		nm_log_info (LOGD_VPN, "  Forbid Default Route: %s",
+					 nm_ip4_config_get_never_default (priv->ip4_config) ? "yes" : "no");
+
+		num = nm_ip4_config_get_num_nameservers (priv->ip4_config);
+		for (i = 0; i < num; i++) {
+			nm_log_info (LOGD_VPN, "  Internal DNS: %s",
+						 ip_address_to_string (nm_ip4_config_get_nameserver (priv->ip4_config, i)));
+		}
+
+		if (nm_ip4_config_get_num_domains (priv->ip4_config) > 0)
+			dns_domain = (char *) nm_ip4_config_get_domain (priv->ip4_config, 0);
+
+		nm_log_info (LOGD_VPN, "  DNS Domain: '%s'", dns_domain ? dns_domain : "(none)");
+	} else
+		nm_log_info (LOGD_VPN, "No IPv4 configuration");
+
+	if (priv->ip6_config) {
+		nm_log_info (LOGD_VPN, "IPv6 configuration:");
+
+		addr6 = nm_ip6_config_get_address (priv->ip6_config, 0);
+
+		if (priv->ip6_internal_gw)
+			nm_log_info (LOGD_VPN, "  Internal Gateway: %s", ip6_address_to_string (priv->ip6_internal_gw));
+		nm_log_info (LOGD_VPN, "  Internal Address: %s", ip6_address_to_string (nm_ip6_address_get_address (addr6)));
+		nm_log_info (LOGD_VPN, "  Internal Prefix: %d", nm_ip6_address_get_prefix (addr6));
+		nm_log_info (LOGD_VPN, "  Internal Point-to-Point Address: %s",
+					 ip6_address_to_string (nm_ip6_config_get_ptp_address (priv->ip6_config)));
+		nm_log_info (LOGD_VPN, "  Maximum Segment Size (MSS): %d", nm_ip6_config_get_mss (priv->ip6_config));
 
-	if (nm_ip4_config_get_num_domains (config) > 0)
-		dns_domain = (char *) nm_ip4_config_get_domain (config, 0);
+		num = nm_ip6_config_get_num_routes (priv->ip6_config);
+		for (i = 0; i < num; i++) {
+			NMIP6Route *route;
 
-	nm_log_info (LOGD_VPN, "DNS Domain: '%s'", dns_domain ? dns_domain : "(none)");
+			route = nm_ip6_config_get_route (priv->ip6_config, i);
+			nm_log_info (LOGD_VPN, "  Static Route: %s/%d   Next Hop: %s",
+						 ip6_address_to_string (nm_ip6_route_get_dest (route)),
+						 nm_ip6_route_get_prefix (route),
+						 ip6_address_to_string (nm_ip6_route_get_next_hop (route)));
+		}
+
+		nm_log_info (LOGD_VPN, "  Forbid Default Route: %s",
+					 nm_ip6_config_get_never_default (priv->ip6_config) ? "yes" : "no");
+
+		num = nm_ip6_config_get_num_nameservers (priv->ip6_config);
+		for (i = 0; i < num; i++) {
+			nm_log_info (LOGD_VPN, "  Internal DNS: %s",
+						 ip6_address_to_string (nm_ip6_config_get_nameserver (priv->ip6_config, i)));
+		}
 
-	if (banner && strlen (banner)) {
+		if (nm_ip6_config_get_num_domains (priv->ip6_config) > 0)
+			dns_domain = (char *) nm_ip6_config_get_domain (priv->ip6_config, 0);
+
+		nm_log_info (LOGD_VPN, "  DNS Domain: '%s'", dns_domain ? dns_domain : "(none)");
+	} else
+		nm_log_info (LOGD_VPN, "No IPv6 configuration");
+
+	if (priv->banner && strlen (priv->banner)) {
 		nm_log_info (LOGD_VPN, "Login Banner:");
 		nm_log_info (LOGD_VPN, "-----------------------------------------");
-		nm_log_info (LOGD_VPN, "%s", banner);
+		nm_log_info (LOGD_VPN, "%s", priv->banner);
 		nm_log_info (LOGD_VPN, "-----------------------------------------");
 	}
 }
 
-static void
-nm_vpn_connection_ip4_config_get (DBusGProxy *proxy,
-                                  GHashTable *config_hash,
-                                  gpointer user_data)
+static gboolean
+nm_vpn_connection_apply_config (NMVPNConnection *connection)
 {
-	NMVPNConnection *connection = NM_VPN_CONNECTION (user_data);
 	NMVPNConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (connection);
-	NMSettingIP4Config *s_ip4;
-	NMIP4Address *addr;
-	NMIP4Config *config;
-	GValue *val;
-	int i;
-	guint32 vpn_ext_gw = 0;
 
-	nm_log_info (LOGD_VPN, "VPN connection '%s' (IP Config Get) reply received.",
+	nm_system_iface_set_up (priv->ip_ifindex, TRUE, NULL);
+
+	if (priv->ip4_config) {
+		if (!nm_system_apply_ip4_config (priv->ip_ifindex, priv->ip4_config,
+		                                 0, NM_IP4_COMPARE_FLAG_ALL))
+			return FALSE;
+	}
+
+	if (priv->ip6_config) {
+		if (!nm_system_apply_ip6_config (priv->ip_ifindex, priv->ip6_config,
+		                                 0, NM_IP6_COMPARE_FLAG_ALL))
+			/* FIXME: remove ip4 config */
+			return FALSE;
+	}
+
+	/* Add any explicit route to the VPN gateway through the parent device */
+	if (priv->ip4_external_gw) {
+		priv->gw_route = nm_system_add_ip4_vpn_gateway_route (priv->parent_dev,
+		                                                      priv->ip4_external_gw);
+	} else if (priv->ip6_external_gw) {
+		priv->gw_route = nm_system_add_ip6_vpn_gateway_route (priv->parent_dev,
+		                                                      priv->ip6_external_gw);
+	} else {
+		priv->gw_route = NULL;
+	}
+
+	nm_log_info (LOGD_VPN, "VPN connection '%s' (IP Config Get) complete.",
 	             nm_vpn_connection_get_name (connection));
+	nm_vpn_connection_set_vpn_state (connection,
+	                                 NM_VPN_CONNECTION_STATE_ACTIVATED,
+	                                 NM_VPN_CONNECTION_STATE_REASON_NONE);
+	return TRUE;
+}
+
+static void
+nm_vpn_connection_config_maybe_complete (NMVPNConnection *connection,
+                                         gboolean         success)
+{
+	NMVPNConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (connection);
+
+	if (priv->ipconfig_timeout == 0) {
+		/* config_complete() was already called with an error;
+		 * ignore further calls.
+		 */
+		return;
+	}
+
+	if (success) {
+		if (   (priv->has_ip4 && !priv->ip4_config)
+		    || (priv->has_ip6 && !priv->ip6_config)) {
+			/* Need to wait for other config */
+			return;
+		}
+	}
 
 	g_source_remove (priv->ipconfig_timeout);
 	priv->ipconfig_timeout = 0;
 
-	config = nm_ip4_config_new ();
+	if (success) {
+		print_vpn_config (connection);
+
+		if (nm_vpn_connection_apply_config (connection))
+			return;
+	}
+
+	g_clear_object (&priv->ip4_config);
+	g_clear_object (&priv->ip6_config);
 
-	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP4_CONFIG_TUNDEV);
+	nm_log_warn (LOGD_VPN, "VPN connection '%s' did not receive valid IP config information.",
+	             nm_vpn_connection_get_name (connection));
+	nm_vpn_connection_set_vpn_state (connection,
+	                                 NM_VPN_CONNECTION_STATE_FAILED,
+	                                 NM_VPN_CONNECTION_STATE_REASON_IP_CONFIG_INVALID);
+}
+
+static gboolean
+process_generic_config (NMVPNConnection *connection,
+                        GHashTable *config_hash)
+{
+	NMVPNConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (connection);
+	GValue *val;
+
+	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_CONFIG_TUNDEV);
 	if (val)
 		priv->ip_iface = g_strdup (g_value_get_string (val));
 	else {
 		nm_log_err (LOGD_VPN, "invalid or missing tunnel device received!");
-		goto error;
+		nm_vpn_connection_config_maybe_complete (connection, FALSE);
+		return FALSE;
 	}
 
 	/* Grab the interface index for address/routing operations */
 	priv->ip_ifindex = nm_netlink_iface_to_index (priv->ip_iface);
 	if (priv->ip_ifindex < 0) {
 		nm_log_err (LOGD_VPN, "(%s): failed to look up VPN interface index", priv->ip_iface);
-		goto error;
+		nm_vpn_connection_config_maybe_complete (connection, FALSE);
+		return FALSE;
+	}
+
+	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_CONFIG_BANNER);
+	if (val) {
+		g_free (priv->banner);
+		priv->banner = g_strdup (g_value_get_string (val));
+	}
+
+	/* External world-visible address of the VPN server */
+	priv->ip4_external_gw = 0;
+	priv->ip6_external_gw = NULL;
+	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_CONFIG_EXT_GATEWAY);
+	if (val) {
+		if (G_VALUE_HOLDS (val, G_TYPE_UINT)) {
+			priv->ip4_external_gw = g_value_get_uint (val);
+		} else if (G_VALUE_HOLDS (val, DBUS_TYPE_G_UCHAR_ARRAY)) {
+			GByteArray *ba = g_value_get_boxed (val);
+
+			if (ba->len == sizeof (struct in6_addr))
+				priv->ip6_external_gw = g_memdup (ba->data, ba->len);
+		} else {
+			nm_log_err (LOGD_VPN, "(%s): VPN gateway is neither IPv4 nor IPv6", priv->ip_iface);
+			nm_vpn_connection_config_maybe_complete (connection, FALSE);
+			return FALSE;
+		}
+	}
+
+	/* MTU; this is a per-connection value, though NM's API treats it
+	 * like it's IP4-specific. So we store it for now and retrieve it
+	 * later in ip4_config_get.
+	 */
+	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_CONFIG_MTU);
+	if (val)
+		priv->mtu = g_value_get_uint (val);
+	else
+		priv->mtu = 0;
+
+	return TRUE;
+}
+
+static void
+nm_vpn_connection_config_get (DBusGProxy *proxy,
+                              GHashTable *config_hash,
+                              gpointer user_data)
+{
+	NMVPNConnection *connection = NM_VPN_CONNECTION (user_data);
+	NMVPNConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (connection);
+	GValue *val;
+
+	nm_log_info (LOGD_VPN, "VPN connection '%s' (IP Config Get) reply received.",
+	             nm_vpn_connection_get_name (connection));
+
+	if (!process_generic_config (connection, config_hash))
+		return;
+
+	/* Note whether to expect IPv4 and IPv6 configs */
+	val = g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_CONFIG_HAS_IP4);
+	priv->has_ip4 = val ? g_value_get_boolean (val) : FALSE;
+	g_clear_object (&priv->ip4_config);
+
+	val = g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_CONFIG_HAS_IP6);
+	priv->has_ip6 = val ? g_value_get_boolean (val) : FALSE;
+	g_clear_object (&priv->ip6_config);
+}
+
+static void
+nm_vpn_connection_ip4_config_get (DBusGProxy *proxy,
+                                  GHashTable *config_hash,
+                                  gpointer user_data)
+{
+	NMVPNConnection *connection = NM_VPN_CONNECTION (user_data);
+	NMVPNConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (connection);
+	NMSettingIP4Config *s_ip4;
+	NMIP4Address *addr;
+	NMIP4Config *config;
+	GValue *val;
+	int i;
+
+	if (priv->has_ip4) {
+		nm_log_info (LOGD_VPN, "VPN connection '%s' (IP4 Config Get) reply received.",
+		             nm_vpn_connection_get_name (connection));
+
+		if (g_hash_table_size (config_hash) == 0) {
+			priv->has_ip4 = FALSE;
+			nm_vpn_connection_config_maybe_complete (connection, TRUE);
+			return;
+		}
+	} else {
+		nm_log_info (LOGD_VPN, "VPN connection '%s' (IP4 Config Get) reply received from old-style plugin.",
+		             nm_vpn_connection_get_name (connection));
+
+		/* In the old API, the generic and IPv4 configuration items
+		 * were mixed together.
+		 */
+		if (!process_generic_config (connection, config_hash))
+			return;
+
+		priv->has_ip4 = TRUE;
+		priv->has_ip6 = FALSE;
 	}
 
+	config = nm_ip4_config_new ();
+
 	addr = nm_ip4_address_new ();
 	nm_ip4_address_set_prefix (addr, 24); /* default to class C */
+	if (priv->ip4_external_gw)
+		nm_ip4_address_set_gateway (addr, priv->ip4_external_gw);
 
 	/* Internal address of the VPN subnet's gateway */
 	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP4_CONFIG_INT_GATEWAY);
 	if (val)
 		priv->ip4_internal_gw = g_value_get_uint (val);
 
-	/* External world-visible address of the VPN server */
-	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY);
-	if (val) {
-		nm_ip4_address_set_gateway (addr, g_value_get_uint (val));
-		vpn_ext_gw = g_value_get_uint (val);
-	}
-
 	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP4_CONFIG_ADDRESS);
 	if (val)
 		nm_ip4_address_set_address (addr, g_value_get_uint (val));
@@ -516,7 +840,9 @@ nm_vpn_connection_ip4_config_get (DBusGProxy *proxy,
 	} else {
 		nm_log_err (LOGD_VPN, "invalid IP4 config received!");
 		nm_ip4_address_unref (addr);
-		goto error;
+		g_object_unref (config);
+		nm_vpn_connection_config_maybe_complete (connection, FALSE);
+		return;
 	}
 
 	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP4_CONFIG_DNS);
@@ -539,9 +865,8 @@ nm_vpn_connection_ip4_config_get (DBusGProxy *proxy,
 	if (val)
 		nm_ip4_config_set_mss (config, g_value_get_uint (val));
 
-	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP4_CONFIG_MTU);
-	if (val)
-		nm_ip4_config_set_mtu (config, g_value_get_uint (val));
+	if (priv->mtu)
+		nm_ip4_config_set_mtu (config, priv->mtu);
 
 	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP4_CONFIG_DOMAIN);
 	if (val)
@@ -556,12 +881,6 @@ nm_vpn_connection_ip4_config_get (DBusGProxy *proxy,
 			nm_ip4_config_add_domain (config, *domain);
 	}
 
-	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP4_CONFIG_BANNER);
-	if (val) {
-		g_free (priv->banner);
-		priv->banner = g_strdup (g_value_get_string (val));
-	}
-
 	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP4_CONFIG_ROUTES);
 	if (val) {
 		GSList *routes;
@@ -576,10 +895,12 @@ nm_vpn_connection_ip4_config_get (DBusGProxy *proxy,
 			 * the VPN server, we want to use the NM created route instead of
 			 * whatever the server provides.
 			 */
-			if (   vpn_ext_gw
-			    && nm_ip4_route_get_dest (route) == vpn_ext_gw
-			    && nm_ip4_route_get_prefix (route) == 32)
+			if (   priv->ip4_external_gw
+			    && nm_ip4_route_get_dest (route) == priv->ip4_external_gw
+			    && nm_ip4_route_get_prefix (route) == 32) {
+				nm_ip4_route_unref (route);
 				continue;
+			}
 
 			/* Otherwise accept the VPN-provided route */
 			nm_ip4_config_take_route (config, route);
@@ -592,42 +913,149 @@ nm_vpn_connection_ip4_config_get (DBusGProxy *proxy,
 	if (val && G_VALUE_HOLDS_BOOLEAN (val))
 		nm_ip4_config_set_never_default (config, g_value_get_boolean (val));
 
-	print_vpn_config (config, priv->ip4_internal_gw, priv->ip_iface, priv->banner);
-
 	/* Merge in user overrides from the NMConnection's IPv4 setting */
 	s_ip4 = nm_connection_get_setting_ip4_config (priv->connection);
 	nm_utils_merge_ip4_config (config, s_ip4);
 
-	nm_system_iface_set_up (priv->ip_ifindex, TRUE, NULL);
+	priv->ip4_config = config;
+	nm_vpn_connection_config_maybe_complete (connection, TRUE);
+}
 
-	if (nm_system_apply_ip4_config (priv->ip_ifindex, config, 0, NM_IP4_COMPARE_FLAG_ALL)) {
-		NMDnsManager *dns_mgr;
+static void
+nm_vpn_connection_ip6_config_get (DBusGProxy *proxy,
+                                  GHashTable *config_hash,
+                                  gpointer user_data)
+{
+	NMVPNConnection *connection = NM_VPN_CONNECTION (user_data);
+	NMVPNConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (connection);
+	NMSettingIP6Config *s_ip6;
+	NMIP6Address *addr;
+	NMIP6Config *config;
+	GValue *val;
+	int i;
 
-		/* Add any explicit route to the VPN gateway through the parent device */
-		priv->gw_route = nm_system_add_ip4_vpn_gateway_route (priv->parent_dev, config);
+	nm_log_info (LOGD_VPN, "VPN connection '%s' (IP6 Config Get) reply received.",
+	             nm_vpn_connection_get_name (connection));
 
-		/* Add the VPN to DNS */
-		dns_mgr = nm_dns_manager_get (NULL);
-		nm_dns_manager_add_ip4_config (dns_mgr, priv->ip_iface, config, NM_DNS_IP_CONFIG_TYPE_VPN);
-		g_object_unref (dns_mgr);
+	if (g_hash_table_size (config_hash) == 0) {
+		priv->has_ip6 = FALSE;
+		nm_vpn_connection_config_maybe_complete (connection, TRUE);
+		return;
+	}
 
-		priv->ip4_config = config;
+	config = nm_ip6_config_new ();
 
-		nm_log_info (LOGD_VPN, "VPN connection '%s' (IP Config Get) complete.",
-		             nm_vpn_connection_get_name (connection));
-		nm_vpn_connection_set_vpn_state (connection,
-		                                 NM_VPN_CONNECTION_STATE_ACTIVATED,
-		                                 NM_VPN_CONNECTION_STATE_REASON_NONE);
-		return;
+	addr = nm_ip6_address_new ();
+	nm_ip6_address_set_prefix (addr, 128); /* default to class C */
+	if (priv->ip6_external_gw)
+		nm_ip6_address_set_gateway (addr, priv->ip6_external_gw);
+
+	/* Internal address of the VPN subnet's gateway */
+	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP6_CONFIG_INT_GATEWAY);
+	if (val) {
+		GByteArray *ba = g_value_get_boxed (val);
+
+		if (ba->len == sizeof (struct in6_addr))
+			priv->ip6_internal_gw = g_memdup (ba->data, ba->len);
 	}
 
-error:
-	nm_log_warn (LOGD_VPN, "VPN connection '%s' did not receive valid IP config information.",
-	             nm_vpn_connection_get_name (connection));
-	nm_vpn_connection_set_vpn_state (connection,
-	                                 NM_VPN_CONNECTION_STATE_FAILED,
-	                                 NM_VPN_CONNECTION_STATE_REASON_IP_CONFIG_INVALID);
-	g_object_unref (config);
+	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP6_CONFIG_ADDRESS);
+	if (val) {
+		GByteArray *ba = g_value_get_boxed (val);
+
+		if (ba->len == sizeof (struct in6_addr))
+			nm_ip6_address_set_address (addr, (struct in6_addr *)ba->data);
+	}
+
+	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP6_CONFIG_PTP);
+	if (val) {
+		GByteArray *ba = g_value_get_boxed (val);
+
+		if (ba->len == sizeof (struct in6_addr))
+			nm_ip6_config_set_ptp_address (config, (struct in6_addr *)ba->data);
+	}
+
+	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP6_CONFIG_PREFIX);
+	if (val)
+		nm_ip6_address_set_prefix (addr, g_value_get_uint (val));
+
+	if (nm_ip6_address_get_address (addr) && nm_ip6_address_get_prefix (addr)) {
+		nm_ip6_config_take_address (config, addr);
+	} else {
+		nm_log_err (LOGD_VPN, "invalid IP6 config received!");
+		nm_ip6_address_unref (addr);
+		g_object_unref (config);
+		nm_vpn_connection_config_maybe_complete (connection, FALSE);
+	}
+
+	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP6_CONFIG_DNS);
+	if (val) {
+		GPtrArray *dns = (GPtrArray *) g_value_get_boxed (val);
+		GByteArray *ba;
+
+		for (i = 0; i < dns->len; i++) {
+			ba = dns->pdata[i];
+			if (ba->len == sizeof (struct in6_addr))
+				nm_ip6_config_add_nameserver (config, (struct in6_addr *)ba->data);
+		}
+	}
+
+	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP6_CONFIG_MSS);
+	if (val)
+		nm_ip6_config_set_mss (config, g_value_get_uint (val));
+
+	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP6_CONFIG_DOMAIN);
+	if (val)
+		nm_ip6_config_add_domain (config, g_value_get_string (val));
+
+	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP6_CONFIG_DOMAINS);
+	if (val) {
+		const char **domains = g_value_get_boxed (val);
+		const char **domain;
+
+		for (domain = domains; domain && *domain; domain++)
+			nm_ip6_config_add_domain (config, *domain);
+	}
+
+	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP6_CONFIG_ROUTES);
+	if (val) {
+		GSList *routes;
+		GSList *iter;
+
+		routes = nm_utils_ip6_routes_from_gvalue (val);
+		for (iter = routes; iter; iter = iter->next) {
+			NMIP6Route *route = iter->data;
+
+			/* Ignore host routes to the VPN gateway since NM adds one itself
+			 * below.  Since NM knows more about the routing situation than
+			 * the VPN server, we want to use the NM created route instead of
+			 * whatever the server provides.
+			 */
+			if (   priv->ip6_external_gw
+			    && nm_ip6_route_get_prefix (route) == 128
+				&& memcmp (nm_ip6_route_get_dest (route), priv->ip6_external_gw,
+				           sizeof (struct in6_addr)) == 0) {
+				nm_ip6_route_unref (route);
+				continue;
+			}
+
+			/* Otherwise accept the VPN-provided route */
+			nm_ip6_config_take_route (config, route);
+		}
+
+		g_slist_free (routes);
+	}
+
+	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP6_CONFIG_NEVER_DEFAULT);
+	if (val && G_VALUE_HOLDS_BOOLEAN (val))
+		nm_ip6_config_set_never_default (config, g_value_get_boolean (val));
+
+	/* Merge in user overrides from the NMConnection's IPv6 setting */
+	s_ip6 = nm_connection_get_setting_ip6_config (priv->connection);
+	nm_utils_merge_ip6_config (config, s_ip6);
+
+	priv->ip6_config = config;
+	nm_vpn_connection_config_maybe_complete (connection, TRUE);
 }
 
 static gboolean
@@ -716,9 +1144,18 @@ really_activate (NMVPNConnection *connection, const char *username)
 
 	priv = NM_VPN_CONNECTION_GET_PRIVATE (connection);
 
-	/* Ip4Config signal */
 	dbus_g_object_register_marshaller (g_cclosure_marshal_VOID__BOXED,
 								G_TYPE_NONE, G_TYPE_VALUE, G_TYPE_INVALID);
+
+	/* Config signal */
+	dbus_g_proxy_add_signal (priv->proxy, "Config",
+						DBUS_TYPE_G_MAP_OF_VARIANT,
+						G_TYPE_INVALID);
+	dbus_g_proxy_connect_signal (priv->proxy, "Config",
+						    G_CALLBACK (nm_vpn_connection_config_get),
+						    connection, NULL);
+
+	/* Ip4Config signal */
 	dbus_g_proxy_add_signal (priv->proxy, "Ip4Config",
 						DBUS_TYPE_G_MAP_OF_VARIANT,
 						G_TYPE_INVALID);
@@ -726,6 +1163,14 @@ really_activate (NMVPNConnection *connection, const char *username)
 						    G_CALLBACK (nm_vpn_connection_ip4_config_get),
 						    connection, NULL);
 
+	/* Ip6Config signal */
+	dbus_g_proxy_add_signal (priv->proxy, "Ip6Config",
+						DBUS_TYPE_G_MAP_OF_VARIANT,
+						G_TYPE_INVALID);
+	dbus_g_proxy_connect_signal (priv->proxy, "Ip6Config",
+						    G_CALLBACK (nm_vpn_connection_ip6_config_get),
+						    connection, NULL);
+
 	hash = _hash_with_username (priv->connection, username);
 	org_freedesktop_NetworkManager_VPN_Plugin_connect_async (priv->proxy,
 	                                                         hash,
@@ -818,6 +1263,14 @@ nm_vpn_connection_get_ip4_config (NMVPNConnection *connection)
 	return NM_VPN_CONNECTION_GET_PRIVATE (connection)->ip4_config;
 }
 
+NMIP6Config *
+nm_vpn_connection_get_ip6_config (NMVPNConnection *connection)
+{
+	g_return_val_if_fail (NM_IS_VPN_CONNECTION (connection), NULL);
+
+	return NM_VPN_CONNECTION_GET_PRIVATE (connection)->ip6_config;
+}
+
 const char *
 nm_vpn_connection_get_ip_iface (NMVPNConnection *connection)
 {
@@ -850,6 +1303,14 @@ nm_vpn_connection_get_ip4_internal_gateway (NMVPNConnection *connection)
 	return NM_VPN_CONNECTION_GET_PRIVATE (connection)->ip4_internal_gw;
 }
 
+struct in6_addr *
+nm_vpn_connection_get_ip6_internal_gateway (NMVPNConnection *connection)
+{
+	g_return_val_if_fail (NM_IS_VPN_CONNECTION (connection), 0);
+
+	return NM_VPN_CONNECTION_GET_PRIVATE (connection)->ip6_internal_gw;
+}
+
 void
 nm_vpn_connection_fail (NMVPNConnection *connection,
                         NMVPNConnectionStateReason reason)
@@ -896,11 +1357,19 @@ plugin_need_secrets_cb  (DBusGProxy *proxy,
 
 	if (setting_name && strlen (setting_name)) {
 		/* More secrets required */
-		nm_log_dbg (LOGD_VPN, "(%s/%s) service indicated additional secrets required",
-		            nm_connection_get_uuid (priv->connection),
-		            nm_connection_get_id (priv->connection));
 
-		get_secrets (self, priv->secrets_idx + 1);
+		if (priv->secrets_idx == SECRETS_REQ_NEW) {
+			nm_log_err (LOGD_VPN, "(%s/%s) final secrets request failed to provide sufficient secrets",
+			            nm_connection_get_uuid (priv->connection),
+			            nm_connection_get_id (priv->connection));
+			nm_vpn_connection_fail (self, NM_VPN_CONNECTION_STATE_REASON_NO_SECRETS);
+		} else {
+			nm_log_dbg (LOGD_VPN, "(%s/%s) service indicated additional secrets required",
+			            nm_connection_get_uuid (priv->connection),
+			            nm_connection_get_id (priv->connection));
+
+			get_secrets (self, priv->secrets_idx + 1);
+		}
 		return;
 	}
 
@@ -985,6 +1454,9 @@ get_secrets (NMVPNConnection *self, SecretsReq secrets_idx)
 		g_assert_not_reached ();
 	}
 
+	if (priv->user_requested)
+		flags |= NM_SETTINGS_GET_SECRETS_FLAG_USER_REQUESTED;
+
 	priv->secrets_id = nm_settings_connection_get_secrets (NM_SETTINGS_CONNECTION (priv->connection),
 	                                                       filter_by_uid,
 	                                                       priv->user_uid,
@@ -1004,109 +1476,7 @@ get_secrets (NMVPNConnection *self, SecretsReq secrets_idx)
 	}
 }
 
-static void
-vpn_cleanup (NMVPNConnection *connection)
-{
-	NMVPNConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (connection);
-
-	if (priv->ip_ifindex) {
-		nm_system_iface_set_up (priv->ip_ifindex, FALSE, NULL);
-		/* FIXME: use AF_UNSPEC here when we have IPv6 support */
-		nm_system_iface_flush_routes (priv->ip_ifindex, AF_INET);
-		nm_system_iface_flush_addresses (priv->ip_ifindex, AF_UNSPEC);
-	}
-
-	if (priv->ip4_config) {
-		NMIP4Config *parent_config;
-		NMDnsManager *dns_mgr;
-
-		/* Remove attributes of the VPN's IP4 Config */
-		dns_mgr = nm_dns_manager_get (NULL);
-		nm_dns_manager_remove_ip4_config (dns_mgr, priv->ip_iface, priv->ip4_config);
-		g_object_unref (dns_mgr);
-
-		/* Remove any previously added VPN gateway host route */
-		if (priv->gw_route)
-			nm_netlink_route_delete (priv->gw_route);
-
-		/* Reset routes and addresses of the currently active device */
-		parent_config = nm_device_get_ip4_config (priv->parent_dev);
-		if (parent_config) {
-			if (!nm_system_apply_ip4_config (nm_device_get_ip_ifindex (priv->parent_dev),
-			                                 nm_device_get_ip4_config (priv->parent_dev),
-			                                 nm_device_get_priority (priv->parent_dev),
-			                                 NM_IP4_COMPARE_FLAG_ADDRESSES | NM_IP4_COMPARE_FLAG_ROUTES)) {
-				nm_log_err (LOGD_VPN, "failed to re-apply VPN parent device addresses and routes.");
-			}
-		}
-	}
-
-	if (priv->gw_route) {
-		rtnl_route_put (priv->gw_route);
-		priv->gw_route = NULL;
-	}
-
-	g_free (priv->banner);
-	priv->banner = NULL;
-
-	g_free (priv->ip_iface);
-	priv->ip_iface = NULL;
-	priv->ip_ifindex = 0;
-
-	/* Clear out connection secrets to ensure that the settings service
-	 * gets asked for them next time the connection is activated.
-	 */
-	if (priv->connection)
-		nm_connection_clear_secrets (priv->connection);
-}
-
-static void
-connection_state_changed (NMVPNConnection *self,
-                          NMVPNConnectionState state,
-                          NMVPNConnectionStateReason reason)
-{
-	NMVPNConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (self);
-
-	/* Clear any in-progress secrets request */
-	if (priv->secrets_id) {
-		nm_settings_connection_cancel_secrets (NM_SETTINGS_CONNECTION (priv->connection), priv->secrets_id);
-		priv->secrets_id = 0;
-	}
-	priv->secrets_idx = SECRETS_REQ_SYSTEM;
-
-	switch (state) {
-	case NM_VPN_CONNECTION_STATE_NEED_AUTH:
-		/* Kick off the secrets requests; first we get existing system secrets
-		 * and ask the plugin if these are sufficient, next we get all existing
-		 * secrets from system and from user agents and ask the plugin again,
-		 * and last we ask the user for new secrets if required.
-		 */
-		get_secrets (self, SECRETS_REQ_SYSTEM);
-		break;
-	case NM_VPN_CONNECTION_STATE_ACTIVATED:
-		/* Secrets no longer needed now that we're connected */
-		nm_connection_clear_secrets (priv->connection);
-		break;
-	case NM_VPN_CONNECTION_STATE_DISCONNECTED:
-	case NM_VPN_CONNECTION_STATE_FAILED:
-		if (priv->proxy) {
-			GError *err = NULL;
-
-			org_freedesktop_NetworkManager_VPN_Plugin_disconnect (priv->proxy, &err);
-			if (err) {
-				nm_log_warn (LOGD_VPN, "error disconnecting VPN: %s", err->message);
-				g_error_free (err);
-			}
-
-			g_object_unref (priv->proxy);
-			priv->proxy = NULL;
-		}
-		vpn_cleanup (self);
-		break;
-	default:
-		break;
-	}
-}
+/******************************************************************************/
 
 static void
 nm_vpn_connection_init (NMVPNConnection *self)
@@ -1127,9 +1497,15 @@ dispose (GObject *object)
 
 	if (priv->gw_route)
 		rtnl_route_put (priv->gw_route);
+	if (priv->ip6_internal_gw)
+		g_free (priv->ip6_internal_gw);
+	if (priv->ip6_external_gw)
+		g_free (priv->ip6_external_gw);
 
 	if (priv->device_ip4)
 		g_signal_handler_disconnect (priv->parent_dev, priv->device_ip4);
+	if (priv->device_ip6)
+		g_signal_handler_disconnect (priv->parent_dev, priv->device_ip6);
 
 	if (priv->device_monitor)
 		g_signal_handler_disconnect (priv->parent_dev, priv->device_monitor);
@@ -1138,6 +1514,8 @@ dispose (GObject *object)
 
 	if (priv->ip4_config)
 		g_object_unref (priv->ip4_config);
+	if (priv->ip6_config)
+		g_object_unref (priv->ip6_config);
 
 	if (priv->ipconfig_timeout)
 		g_source_remove (priv->ipconfig_timeout);
@@ -1197,7 +1575,6 @@ nm_vpn_connection_class_init (NMVPNConnectionClass *connection_class)
 	g_type_class_add_private (connection_class, sizeof (NMVPNConnectionPrivate));
 
 	/* virtual methods */
-	connection_class->vpn_state_changed = connection_state_changed;
 	object_class->get_property = get_property;
 	object_class->dispose = dispose;
 	object_class->finalize = finalize;
@@ -1223,16 +1600,14 @@ nm_vpn_connection_class_init (NMVPNConnectionClass *connection_class)
 
 	/* signals */
 	signals[VPN_STATE_CHANGED] =
-		g_signal_new ("vpn-state-changed",
-				    G_OBJECT_CLASS_TYPE (object_class),
-				    G_SIGNAL_RUN_FIRST,
-				    G_STRUCT_OFFSET (NMVPNConnectionClass, vpn_state_changed),
-				    NULL, NULL,
-				    _nm_marshal_VOID__UINT_UINT,
-				    G_TYPE_NONE, 2,
-				    G_TYPE_UINT, G_TYPE_UINT);
+		g_signal_new (NM_VPN_CONNECTION_VPN_STATE_CHANGED,
+		              G_OBJECT_CLASS_TYPE (object_class),
+		              G_SIGNAL_RUN_FIRST,
+		              0, NULL, NULL,
+		              _nm_marshal_VOID__UINT_UINT_UINT,
+		              G_TYPE_NONE, 3, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT);
 
 	dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (object_class),
-									 &dbus_glib_nm_vpn_connection_object_info);
+	                                 &dbus_glib_nm_vpn_connection_object_info);
 }
 
diff --git a/src/vpn-manager/nm-vpn-connection.h b/src/vpn-manager/nm-vpn-connection.h
index 93cc06d1..0e4f1a04 100644
--- a/src/vpn-manager/nm-vpn-connection.h
+++ b/src/vpn-manager/nm-vpn-connection.h
@@ -34,9 +34,14 @@
 #define NM_IS_VPN_CONNECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NM_TYPE_VPN_CONNECTION))
 #define NM_VPN_CONNECTION_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_VPN_CONNECTION, NMVPNConnectionClass))
 
+/* Properties */
 #define NM_VPN_CONNECTION_VPN_STATE "vpn-state"
 #define NM_VPN_CONNECTION_BANNER "banner"
 
+/* Signals */
+#define NM_VPN_CONNECTION_VPN_STATE_CHANGED "vpn-state-changed"
+
+
 typedef struct {
 	NMActiveConnection parent;
 } NMVPNConnection;
@@ -46,7 +51,8 @@ typedef struct {
 
 	/* Signals */
 	void (*vpn_state_changed) (NMVPNConnection *connection,
-	                           NMVPNConnectionState state,
+	                           NMVPNConnectionState new_state,
+	                           NMVPNConnectionState old_state,
 	                           NMVPNConnectionStateReason reason);
 } NMVPNConnectionClass;
 
@@ -68,9 +74,11 @@ void                 nm_vpn_connection_fail            (NMVPNConnection *connect
 void                 nm_vpn_connection_disconnect      (NMVPNConnection *connection,
                                                         NMVPNConnectionStateReason reason);
 NMIP4Config *        nm_vpn_connection_get_ip4_config  (NMVPNConnection *connection);
+NMIP6Config *        nm_vpn_connection_get_ip6_config  (NMVPNConnection *connection);
 const char *         nm_vpn_connection_get_ip_iface    (NMVPNConnection *connection);
 int                  nm_vpn_connection_get_ip_ifindex  (NMVPNConnection *connection);
 NMDevice *           nm_vpn_connection_get_parent_device (NMVPNConnection *connection);
 guint32              nm_vpn_connection_get_ip4_internal_gateway (NMVPNConnection *connection);
+struct in6_addr *    nm_vpn_connection_get_ip6_internal_gateway (NMVPNConnection *connection);
 
 #endif /* NM_VPN_CONNECTION_H */
diff --git a/src/vpn-manager/nm-vpn-manager.c b/src/vpn-manager/nm-vpn-manager.c
index 34131964..a462f547 100644
--- a/src/vpn-manager/nm-vpn-manager.c
+++ b/src/vpn-manager/nm-vpn-manager.c
@@ -115,19 +115,20 @@ find_active_vpn_connection_by_connection (NMVPNManager *self, NMConnection *conn
 
 static void
 connection_vpn_state_changed (NMVPNConnection *connection,
-                              NMVPNConnectionState state,
+                              NMVPNConnectionState new_state,
+                              NMVPNConnectionState old_state,
                               NMVPNConnectionStateReason reason,
                               gpointer user_data)
 {
 	NMVPNManager *manager = NM_VPN_MANAGER (user_data);
 
-	switch (state) {
+	switch (new_state) {
 	case NM_VPN_CONNECTION_STATE_ACTIVATED:
 		g_signal_emit (manager, signals[CONNECTION_ACTIVATED], 0, connection);
 		break;
 	case NM_VPN_CONNECTION_STATE_FAILED:
 	case NM_VPN_CONNECTION_STATE_DISCONNECTED:
-		g_signal_emit (manager, signals[CONNECTION_DEACTIVATED], 0, connection, state, reason);
+		g_signal_emit (manager, signals[CONNECTION_DEACTIVATED], 0, connection, new_state, old_state, reason);
 		break;
 	default:
 		break;
@@ -188,7 +189,7 @@ nm_vpn_manager_activate_connection (NMVPNManager *manager,
 
 	vpn = nm_vpn_service_activate (service, connection, device, specific_object, user_requested, user_uid, error);
 	if (vpn) {
-		g_signal_connect (vpn, "vpn-state-changed",
+		g_signal_connect (vpn, NM_VPN_CONNECTION_VPN_STATE_CHANGED,
 		                  G_CALLBACK (connection_vpn_state_changed),
 		                  manager);
 	}
@@ -518,11 +519,9 @@ nm_vpn_manager_class_init (NMVPNManagerClass *manager_class)
 		g_signal_new ("connection-deactivated",
 				    G_OBJECT_CLASS_TYPE (object_class),
 				    G_SIGNAL_RUN_FIRST,
-				    G_STRUCT_OFFSET (NMVPNManagerClass, connection_deactivated),
-				    NULL, NULL,
-				    _nm_marshal_VOID__OBJECT_UINT_UINT,
-				    G_TYPE_NONE, 3,
-				    G_TYPE_OBJECT, G_TYPE_UINT, G_TYPE_UINT);
+				    0, NULL, NULL,
+				    _nm_marshal_VOID__OBJECT_UINT_UINT_UINT,
+				    G_TYPE_NONE, 4, G_TYPE_OBJECT, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT);
 
 	dbus_g_error_domain_register (NM_VPN_MANAGER_ERROR, NULL, NM_TYPE_VPN_MANAGER_ERROR);
 }
diff --git a/src/vpn-manager/nm-vpn-manager.h b/src/vpn-manager/nm-vpn-manager.h
index cec370c8..17225b44 100644
--- a/src/vpn-manager/nm-vpn-manager.h
+++ b/src/vpn-manager/nm-vpn-manager.h
@@ -55,9 +55,13 @@ typedef struct {
 	GObjectClass parent;
 
 	/* Signals */
+	void (*connection_activated) (NMVPNManager *manager,
+	                              NMVPNConnection *connection);
+
 	void (*connection_deactivated) (NMVPNManager *manager,
 	                                NMVPNConnection *connection,
-	                                NMVPNConnectionState state,
+	                                NMVPNConnectionState new_state,
+	                                NMVPNConnectionState old_state,
 	                                NMVPNConnectionStateReason reason);
 } NMVPNManagerClass;
 
diff --git a/src/vpn-manager/nm-vpn-service.c b/src/vpn-manager/nm-vpn-service.c
index 95e4f2b1..a2c8b100 100644
--- a/src/vpn-manager/nm-vpn-service.c
+++ b/src/vpn-manager/nm-vpn-service.c
@@ -15,7 +15,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Copyright (C) 2005 - 2011 Red Hat, Inc.
+ * Copyright (C) 2005 - 2012 Red Hat, Inc.
  * Copyright (C) 2005 - 2008 Novell, Inc.
  */
 
@@ -31,6 +31,7 @@
 #include "nm-vpn-service.h"
 #include "nm-dbus-manager.h"
 #include "nm-logging.h"
+#include "nm-posix-signals.h"
 #include "nm-vpn-manager.h"
 #include "nm-glib-compat.h"
 
@@ -168,6 +169,12 @@ nm_vpn_service_child_setup (gpointer user_data G_GNUC_UNUSED)
 	/* We are in the child process at this point */
 	pid_t pid = getpid ();
 	setpgid (pid, pid);
+
+	/*
+	 * We blocked signals in main(). We need to restore original signal
+	 * mask for VPN service here so that it can receive signals.
+	 */
+	nm_unblock_posix_signals (NULL);
 }
 
 static void
@@ -296,13 +303,14 @@ service_quit (gpointer user_data)
 
 static void
 connection_vpn_state_changed (NMVPNConnection *connection,
-                              NMVPNConnectionState state,
+                              NMVPNConnectionState new_state,
+                              NMVPNConnectionState old_state,
                               NMVPNConnectionStateReason reason,
                               gpointer user_data)
 {
 	NMVPNServicePrivate *priv = NM_VPN_SERVICE_GET_PRIVATE (user_data);
 
-	switch (state) {
+	switch (new_state) {
 	case NM_VPN_CONNECTION_STATE_FAILED:
 	case NM_VPN_CONNECTION_STATE_DISCONNECTED:
 		/* Remove the connection from our list */
@@ -343,9 +351,9 @@ nm_vpn_service_activate (NMVPNService *service,
 	clear_quit_timeout (service);
 
 	vpn = nm_vpn_connection_new (connection, device, specific_object, user_requested, user_uid);
-	g_signal_connect (vpn, "vpn-state-changed",
-				   G_CALLBACK (connection_vpn_state_changed),
-				   service);
+	g_signal_connect (vpn, NM_VPN_CONNECTION_VPN_STATE_CHANGED,
+	                  G_CALLBACK (connection_vpn_state_changed),
+	                  service);
 
 	priv->connections = g_slist_prepend (priv->connections, vpn);
 
diff --git a/src/wifi/Makefile.in b/src/wifi/Makefile.in
index 028469bf..5e77bae3 100644
--- a/src/wifi/Makefile.in
+++ b/src/wifi/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -174,6 +174,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -269,6 +273,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -307,6 +314,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/src/wifi/wifi-utils-nl80211.c b/src/wifi/wifi-utils-nl80211.c
index 4a4e661e..663cbc26 100644
--- a/src/wifi/wifi-utils-nl80211.c
+++ b/src/wifi/wifi-utils-nl80211.c
@@ -535,7 +535,9 @@ struct nl80211_device_info {
 	guint32 *freqs;
 	int num_freqs;
 	guint32 caps;
-	gboolean can_scan, can_scan_ssid;
+	gboolean can_scan;
+	gboolean can_scan_ssid;
+	gboolean supported;
 	gboolean success;
 };
 
@@ -579,11 +581,24 @@ static int nl80211_wiphy_info_handler (struct nl_msg *msg, void *arg)
 		struct nlattr *nl_cmd;
 		int i;
 
-		nla_for_each_nested (nl_cmd,
-				     tb[NL80211_ATTR_SUPPORTED_COMMANDS], i) {
-			guint32 cmd = nla_get_u32 (nl_cmd);
-			if (cmd == NL80211_CMD_TRIGGER_SCAN)
+		nla_for_each_nested (nl_cmd, tb[NL80211_ATTR_SUPPORTED_COMMANDS], i) {
+			switch (nla_get_u32 (nl_cmd)) {
+			case NL80211_CMD_TRIGGER_SCAN:
 				info->can_scan = TRUE;
+				break;
+			case NL80211_CMD_CONNECT:
+			case NL80211_CMD_AUTHENTICATE:
+				/* Only devices that support CONNECT or AUTH actually support
+				 * 802.11, unlike say ipw2x00 (up to at least kernel 3.4) which
+				 * has minimal info support, but no actual command support.
+				 * This check mirrors what wpa_supplicant does to determine
+				 * whether or not to use the nl80211 driver.
+				 */
+				info->supported = TRUE;
+				break;
+			default:
+				break;
+			}
 		}
 	}
 
@@ -650,6 +665,9 @@ static int nl80211_wiphy_info_handler (struct nl_msg *msg, void *arg)
 				info->caps |= NM_WIFI_DEVICE_CAP_CIPHER_CCMP |
 					      NM_WIFI_DEVICE_CAP_RSN;
 				break;
+			default:
+				nm_log_err (LOGD_HW | LOGD_WIFI, "Don't know the meaning of NL80211_ATTR_CIPHER_SUITES %#8.8x.", ciphers[i]);
+				break;
 			}
 		}
 	}
@@ -721,6 +739,13 @@ wifi_nl80211_init (const char *iface, int ifindex)
 		goto error;
 	}
 
+	if (!device_info.supported) {
+		nm_log_dbg (LOGD_HW | LOGD_WIFI,
+				    "(%s): driver does not fully support nl80211, falling back to WEXT",
+				    nl80211->parent.iface);
+		goto error;
+	}
+
 	if (!device_info.can_scan_ssid) {
 		nm_log_err (LOGD_HW | LOGD_WIFI,
 		            "(%s): driver does not support SSID scans",
@@ -735,6 +760,13 @@ wifi_nl80211_init (const char *iface, int ifindex)
 		goto error;
 	}
 
+	if (device_info.caps == 0) {
+		nm_log_err (LOGD_HW | LOGD_WIFI,
+		            "(%s): driver doesn't report support of any encryption",
+		            nl80211->parent.iface);
+		goto error;
+	}
+
 	nl80211->freqs = device_info.freqs;
 	nl80211->num_freqs = device_info.num_freqs;
 	nl80211->parent.can_scan_ssid = device_info.can_scan_ssid;
diff --git a/src/wimax/Makefile.in b/src/wimax/Makefile.in
index 2de52180..e463cf2d 100644
--- a/src/wimax/Makefile.in
+++ b/src/wimax/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -199,6 +199,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -294,6 +298,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -332,6 +339,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/test/Makefile.in b/test/Makefile.in
index bb988be9..f8060eeb 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -49,7 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -187,6 +187,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -282,6 +286,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -320,6 +327,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 29ec3eeb..37b7b3b9 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -46,7 +46,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -134,6 +134,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -229,6 +233,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -267,6 +274,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
diff --git a/vapi/Makefile.am b/vapi/Makefile.am
new file mode 100644
index 00000000..67a31809
--- /dev/null
+++ b/vapi/Makefile.am
@@ -0,0 +1,27 @@
+EXTRA_DIST = \
+	NetworkManager-1.0.metadata \
+	NMClient-1.0.metadata \
+	libnm-util.deps \
+	libnm-glib.deps
+
+if ENABLE_VAPIGEN
+include Makefile.vapigen
+
+libnm-util.vapi: $(top_srcdir)/libnm-util/NetworkManager-1.0.gir  libnm-util.deps NetworkManager-1.0.metadata
+libnm-glib.vapi: $(top_srcdir)/libnm-glib/NMClient-1.0.gir  libnm-glib.deps NMClient-1.0.metadata
+
+
+libnm_util_vapi_METADATADIRS = $(srcdir)
+libnm_util_vapi_FILES = $(top_builddir)/libnm-util/NetworkManager-1.0.gir
+
+libnm_glib_vapi_METADATADIRS = $(srcdir)
+libnm_glib_vapi_FILES = $(top_builddir)/libnm-glib/NMClient-1.0.gir
+libnm_glib_vapi_VAPIDIRS = $(srcdir)
+
+VAPIGEN_VAPIS = libnm-util.vapi libnm-glib.vapi
+
+vapidir = $(VAPIGEN_VAPIDIR)
+vapi_DATA = $(VAPIGEN_VAPIS) $(VAPIGEN_VAPIS:.vapi=.deps)
+
+
+endif
diff --git a/vapi/Makefile.in b/vapi/Makefile.in
new file mode 100644
index 00000000..d11f5d76
--- /dev/null
+++ b/vapi/Makefile.in
@@ -0,0 +1,611 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile for Vala API Generator (vapigen)
+# Written by Evan Nemerson
+#
+# The author disclaims copyright to this source code.  In place of
+# a legal notice, here is a blessing:
+#
+#    May you do good and not evil.
+#    May you find forgiveness for yourself and forgive others.
+#    May you share freely, never taking more than you give.
+#
+# See http://live.gnome.org/Vala/UpstreamGuide for detailed documentation
+#
+# Variables:
+#
+#   VAPIGEN_FILES
+#
+#     VAPIs to create
+#
+#   *_DEPS / VAPIGEN_DEPS
+#
+#       The dependencies. Generally the pkg-config names.
+#
+#   *_METADATADIRS / VAPIGEN_METADATADIRS
+#
+#       Directory containing the metadata.
+#
+#   *_VAPIDIRS / VAPIGEN_VAPIDIRS
+#
+#       Additional location(s) to search for VAPI dependencies.
+#
+#   *_GIRDIRS / VAPIGEN_GIRDIRS
+#
+#       Additional location(s) to search for GIR dependencies.
+#
+#   *_FILES
+#
+#       The files which should be used to generate the VAPI.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/Makefile.vapigen
+subdir = vapi
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/introspection.m4 \
+	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libnl-check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(vapidir)"
+DATA = $(vapi_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DBUS_SYS_DIR = @DBUS_SYS_DIR@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DHCLIENT_PATH = @DHCLIENT_PATH@
+DHCLIENT_VERSION = @DHCLIENT_VERSION@
+DHCPCD_PATH = @DHCPCD_PATH@
+DISABLE_DEPRECATED = @DISABLE_DEPRECATED@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GIO_CFLAGS = @GIO_CFLAGS@
+GIO_LIBS = @GIO_LIBS@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MAKEFILE = @GLIB_MAKEFILE@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMODULE_CFLAGS = @GMODULE_CFLAGS@
+GMODULE_LIBS = @GMODULE_LIBS@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
+GNUTLS_LIBS = @GNUTLS_LIBS@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GUDEV_CFLAGS = @GUDEV_CFLAGS@
+GUDEV_LIBS = @GUDEV_LIBS@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
+INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
+INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
+INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
+INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
+INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
+IPTABLES_PATH = @IPTABLES_PATH@
+IWMX_SDK_CFLAGS = @IWMX_SDK_CFLAGS@
+IWMX_SDK_LIBS = @IWMX_SDK_LIBS@
+KERNEL_FIRMWARE_DIR = @KERNEL_FIRMWARE_DIR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBDL = @LIBDL@
+LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@
+LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@
+LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBNL1_CFLAGS = @LIBNL1_CFLAGS@
+LIBNL1_LIBS = @LIBNL1_LIBS@
+LIBNL2_CFLAGS = @LIBNL2_CFLAGS@
+LIBNL2_LIBS = @LIBNL2_LIBS@
+LIBNL3_CFLAGS = @LIBNL3_CFLAGS@
+LIBNL3_LIBS = @LIBNL3_LIBS@
+LIBNL_CFLAGS = @LIBNL_CFLAGS@
+LIBNL_GENL3_CFLAGS = @LIBNL_GENL3_CFLAGS@
+LIBNL_GENL3_LIBS = @LIBNL_GENL3_LIBS@
+LIBNL_LIBS = @LIBNL_LIBS@
+LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@
+LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSOUP_CFLAGS = @LIBSOUP_CFLAGS@
+LIBSOUP_LIBS = @LIBSOUP_LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MOC = @MOC@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+NM_MAJOR_VERSION = @NM_MAJOR_VERSION@
+NM_MICRO_VERSION = @NM_MICRO_VERSION@
+NM_MINOR_VERSION = @NM_MINOR_VERSION@
+NM_VERSION = @NM_VERSION@
+NSS_CFLAGS = @NSS_CFLAGS@
+NSS_LIBS = @NSS_LIBS@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKGCONFIG_PATH = @PKGCONFIG_PATH@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POLKIT_CFLAGS = @POLKIT_CFLAGS@
+POLKIT_LIBS = @POLKIT_LIBS@
+POSUB = @POSUB@
+PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
+QT_CFLAGS = @QT_CFLAGS@
+QT_LIBS = @QT_LIBS@
+RANLIB = @RANLIB@
+RESOLVCONF_PATH = @RESOLVCONF_PATH@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
+SYSTEMD_LIBS = @SYSTEMD_LIBS@
+SYSTEM_CA_PATH = @SYSTEM_CA_PATH@
+UDEV_BASE_DIR = @UDEV_BASE_DIR@
+USE_NLS = @USE_NLS@
+UUID_CFLAGS = @UUID_CFLAGS@
+UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+systemdsystemunitdir = @systemdsystemunitdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+	NetworkManager-1.0.metadata \
+	NMClient-1.0.metadata \
+	libnm-util.deps \
+	libnm-glib.deps
+
+@ENABLE_VAPIGEN_TRUE@_vapigen_silent_prefix = $(_vapigen_silent_prefix_$(V))
+@ENABLE_VAPIGEN_TRUE@_vapigen_silent_prefix_ = $(_vapigen_silent_prefix_$(AM_DEFAULT_VERBOSITY))
+@ENABLE_VAPIGEN_TRUE@_vapigen_silent_prefix_0 = @echo " VAPIGEN $(1)";
+@ENABLE_VAPIGEN_TRUE@_vapigen_silent_opts = $(_vapigen_silent_opts_$(V))
+@ENABLE_VAPIGEN_TRUE@_vapigen_silent_opts_ = $(_vapigen_silent_opts_$(AM_DEFAULT_VERBOSITY))
+@ENABLE_VAPIGEN_TRUE@_vapigen_silent_opts_0 = --quiet
+@ENABLE_VAPIGEN_TRUE@_vapi_name = $(subst /,_,$(subst -,_,$(subst .,_,$(1))))
+@ENABLE_VAPIGEN_TRUE@libnm_util_vapi_METADATADIRS = $(srcdir)
+@ENABLE_VAPIGEN_TRUE@libnm_util_vapi_FILES = $(top_builddir)/libnm-util/NetworkManager-1.0.gir
+@ENABLE_VAPIGEN_TRUE@libnm_glib_vapi_METADATADIRS = $(srcdir)
+@ENABLE_VAPIGEN_TRUE@libnm_glib_vapi_FILES = $(top_builddir)/libnm-glib/NMClient-1.0.gir
+@ENABLE_VAPIGEN_TRUE@libnm_glib_vapi_VAPIDIRS = $(srcdir)
+@ENABLE_VAPIGEN_TRUE@VAPIGEN_VAPIS = libnm-util.vapi libnm-glib.vapi
+@ENABLE_VAPIGEN_TRUE@vapidir = $(VAPIGEN_VAPIDIR)
+@ENABLE_VAPIGEN_TRUE@vapi_DATA = $(VAPIGEN_VAPIS) $(VAPIGEN_VAPIS:.vapi=.deps)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Makefile.vapigen $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu vapi/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu vapi/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-vapiDATA: $(vapi_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(vapidir)" || $(MKDIR_P) "$(DESTDIR)$(vapidir)"
+	@list='$(vapi_DATA)'; test -n "$(vapidir)" || list=; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(vapidir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(vapidir)" || exit $$?; \
+	done
+
+uninstall-vapiDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(vapi_DATA)'; test -n "$(vapidir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(vapidir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(vapidir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(vapidir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-vapiDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-vapiDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	install-vapiDATA installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	uninstall uninstall-am uninstall-vapiDATA
+
+
+@ENABLE_VAPIGEN_TRUE@$(if $(VAPIGEN),,$(error You must define VAPIGEN))
+
+@ENABLE_VAPIGEN_TRUE@define vapigen
+@ENABLE_VAPIGEN_TRUE@$(1): $$($(_vapi_name)_GIR)
+@ENABLE_VAPIGEN_TRUE@	$(_vapigen_silent_prefix) $(VAPIGEN) $(_vapigen_silent_opts) \
+@ENABLE_VAPIGEN_TRUE@	  --library $(1:.vapi=) \
+@ENABLE_VAPIGEN_TRUE@	  $(foreach _vapi_metadatadir_name,$(if $($(_vapi_name)_METADATADIRS),$($(_vapi_name)_METADATADIRS),$(VAPIGEN_METADATADIRS)),--metadatadir $(_vapi_metadatadir_name)) \
+@ENABLE_VAPIGEN_TRUE@	  $(foreach _vapi_dir_name,$(if $($(_vapi_name)_VAPIDIRS),$($(_vapi_name)_VAPIDIRS),$(VAPIGEN_VAPIDIRS)),--vapidir $(_vapi_dir_name)) \
+@ENABLE_VAPIGEN_TRUE@	  $(foreach _vapi_dep_name,$(if $($(_vapi_name)_DEPS),$($(_vapi_name)_DEPS),$(VAPIGEN_DEPS)),--pkg $(_vapi_dep_name)) \
+@ENABLE_VAPIGEN_TRUE@	  $$($(_vapi_name)_FILES)
+@ENABLE_VAPIGEN_TRUE@endef
+
+@ENABLE_VAPIGEN_TRUE@$(foreach vapi,$(VAPIGEN_VAPIS),$(eval $(call vapigen,$(vapi))))
+
+@ENABLE_VAPIGEN_TRUE@libnm-util.vapi: $(top_srcdir)/libnm-util/NetworkManager-1.0.gir  libnm-util.deps NetworkManager-1.0.metadata
+@ENABLE_VAPIGEN_TRUE@libnm-glib.vapi: $(top_srcdir)/libnm-glib/NMClient-1.0.gir  libnm-glib.deps NMClient-1.0.metadata
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/vapi/Makefile.vapigen b/vapi/Makefile.vapigen
new file mode 100644
index 00000000..30e515bf
--- /dev/null
+++ b/vapi/Makefile.vapigen
@@ -0,0 +1,60 @@
+# Makefile for Vala API Generator (vapigen)
+# Written by Evan Nemerson
+#
+# The author disclaims copyright to this source code.  In place of
+# a legal notice, here is a blessing:
+#
+#    May you do good and not evil.
+#    May you find forgiveness for yourself and forgive others.
+#    May you share freely, never taking more than you give.
+#
+# See http://live.gnome.org/Vala/UpstreamGuide for detailed documentation
+#
+# Variables:
+#
+#   VAPIGEN_FILES
+#
+#     VAPIs to create
+#
+#   *_DEPS / VAPIGEN_DEPS
+#
+#       The dependencies. Generally the pkg-config names.
+#
+#   *_METADATADIRS / VAPIGEN_METADATADIRS
+#
+#       Directory containing the metadata.
+#
+#   *_VAPIDIRS / VAPIGEN_VAPIDIRS
+#
+#       Additional location(s) to search for VAPI dependencies.
+#
+#   *_GIRDIRS / VAPIGEN_GIRDIRS
+#
+#       Additional location(s) to search for GIR dependencies.
+#
+#   *_FILES
+#
+#       The files which should be used to generate the VAPI.
+
+_vapigen_silent_prefix = $(_vapigen_silent_prefix_$(V))
+_vapigen_silent_prefix_ = $(_vapigen_silent_prefix_$(AM_DEFAULT_VERBOSITY))
+_vapigen_silent_prefix_0 = @echo " VAPIGEN $(1)";
+_vapigen_silent_opts = $(_vapigen_silent_opts_$(V))
+_vapigen_silent_opts_ = $(_vapigen_silent_opts_$(AM_DEFAULT_VERBOSITY))
+_vapigen_silent_opts_0 = --quiet
+
+$(if $(VAPIGEN),,$(error You must define VAPIGEN))
+
+_vapi_name = $(subst /,_,$(subst -,_,$(subst .,_,$(1))))
+
+define vapigen
+$(1): $$($(_vapi_name)_GIR)
+	$(_vapigen_silent_prefix) $(VAPIGEN) $(_vapigen_silent_opts) \
+	  --library $(1:.vapi=) \
+	  $(foreach _vapi_metadatadir_name,$(if $($(_vapi_name)_METADATADIRS),$($(_vapi_name)_METADATADIRS),$(VAPIGEN_METADATADIRS)),--metadatadir $(_vapi_metadatadir_name)) \
+	  $(foreach _vapi_dir_name,$(if $($(_vapi_name)_VAPIDIRS),$($(_vapi_name)_VAPIDIRS),$(VAPIGEN_VAPIDIRS)),--vapidir $(_vapi_dir_name)) \
+	  $(foreach _vapi_dep_name,$(if $($(_vapi_name)_DEPS),$($(_vapi_name)_DEPS),$(VAPIGEN_DEPS)),--pkg $(_vapi_dep_name)) \
+	  $$($(_vapi_name)_FILES)
+endef
+
+$(foreach vapi,$(VAPIGEN_VAPIS),$(eval $(call vapigen,$(vapi))))
diff --git a/vapi/NMClient-1.0.metadata b/vapi/NMClient-1.0.metadata
new file mode 100644
index 00000000..12f14699
--- /dev/null
+++ b/vapi/NMClient-1.0.metadata
@@ -0,0 +1,109 @@
+RemoteSettings.new_async skip
+RemoteConnection.updated#virtual_method skip
+Client.new_async skip
+
+ACTIVE_CONNECTION_* cheader_filename="nm-active-connection.h" name="ACTIVE_CONNECTION_(.+)" parent="NM.ActiveConnection"
+CLIENT_*            cheader_filename="nm-client.h"            name="CLIENT_(.+)"       parent="NM.Client"
+ACCESS_POINT_*      cheader_filename="nm-access-point.h"      name="ACCESS_POINT_(.+)" parent="NM.AccessPoint"
+
+DEVICE_*          cheader_filename="nm-device.h"          name="DEVICE_(.+)"       parent="NM.Device"
+DEVICE_ADSL_*     cheader_filename="nm-device-adsl.h"     name="DEVICE_ADSL_(.+)"       parent="NM.DeviceAdsl"
+DEVICE_BOND_*     cheader_filename="nm-device-bond.h"     name="DEVICE_BOND_(.+)"       parent="NM.DeviceBond"
+DEVICE_BT_*       cheader_filename="nm-device-bt.h"       name="DEVICE_BT_(.+)"       parent="NM.DeviceBt"
+DEVICE_ETHERNET_* cheader_filename="nm-device-ethernet.h" name="DEVICE_ETHERNET_(.+)" parent="NM.DeviceEthernet"
+
+DEVICE_INFINIBAND_* cheader_filename="nm-device-infiniband.h" name="DEVICE_INFINIBAND_(.+)" parent="NM.DeviceInfiniband"
+DEVICE_MODEM_* cheader_filename="nm-device-modem.h"           name="DEVICE_MODEM_(.+)"      parent="NM.DeviceModem"
+DEVICE_OLPC_MESH_* cheader_filename="nm-device-olpc-mesh.h"        name="DEVICE_OLPC_(.+)"       parent="NM.DeviceOlpcMesh"
+
+DEVICE_VLAN_* cheader_filename="nm-device-vlan.h"             name="DEVICE_VLAN_(.+)"  parent="NM.DeviceVlan"
+DEVICE_WIFI_* cheader_filename="nm-device-wifi.h"             name="DEVICE_WIFI_(.+)"  parent="NM.DeviceWifi"
+DEVICE_WIMAX_* cheader_filename="nm-device-wimax.h"           name="DEVICE_WIMAX_(.+)" parent="NM.DeviceWimax"
+DHCP4_CONFIG_OPTIONS cheader_filename="nm-dhcp4-config.h"     name="DHCP4_CONFIG_(.+)" parent="NM.DHCP4Config"
+DHCP6_CONFIG_OPTIONS cheader_filename="nm-dhcp6-config.h"     name="DHCP4_CONFIG_(.+)" parent="NM.DHCP6Config"
+IP4_CONFIG_* cheader_filename="nm-ip4-config.h"               name="IP4_CONFIG_(.+)"   parent="NM.IP4Config"
+IP6_CONFIG_* cheader_filename="nm-ip6-config.h"               name="IP6_CONFIG_(.+)"   parent="NM.IP6Config"
+OBJECT_* cheader_filename="nm-object.h"                       name="OBJECT_(.+)"       parent="NM.Object"
+REMOTE_CONNECTION_* cheader_filename="nm-remote-connection.h" name="REMOTE_CONNECTION_(.+)" parent="NM.RemoteConnection"
+REMOTE_SETTINGS_* cheader_filename="nm-remote-settings.h"     name="REMOTE_SETTINGS_(.+)"   parent="NM.RemoteSettings"
+SECRET_AGENT_* cheader_filename="nm-secret-agent.h"           name="SECRET_AGENT_(.+)"      parent="NM.SecretAgent"
+VPN_CONNECTION_* cheader_filename="nm-vpn-connection.h"       name="VPN_CONNECTION_(.+)"    parent="NM.VPNConnection"
+WIMAX_NSP_* cheader_filename="nm-wimax-nsp.h"                 name="WIMAX_NSP_(.+)"         parent="NM.WimaxNsp"
+
+AccessPoint cheader_filename="nm-access-point.h"
+ActiveConnection cheader_filename="nm-active-connection.h"
+Client cheader_filename="nm-client.h"
+DHCP4Config cheader_filename="nm-dhcp4-config.h"
+DHCP6Config cheader_filename="nm-dhcp6-config.h"
+Device cheader_filename="nm-device.h"
+DeviceAdsl cheader_filename="nm-device-adsl.h"
+DeviceBond cheader_filename="nm-device-bond.h"
+DeviceBt cheader_filename="nm-device-bt.h"
+DeviceEthernet cheader_filename="nm-device-ethernet.h"
+DeviceInfiniband cheader_filename="nm-device-infiniband.h"
+DeviceModem cheader_filename="nm-device-modem.h"
+DeviceOlpcMesh cheader_filename="nm-device-olpc-mesh.h"
+DeviceVlan cheader_filename="nm-device-vlan.h"
+DeviceWifi cheader_filename="nm-device-wifi.h"
+DeviceWimax cheader_filename="nm-device-wimax.h"
+IP4Config cheader_filename="nm-ip4-config.h"
+IP6AddressArray cheader_filename="nm-types.h"
+IP6AddressObjectArray cheader_filename="nm-types.h"
+IP6Config cheader_filename="nm-ip6-config.h"
+IP6RouteObjectArray cheader_filename="nm-types.h"
+ObjectArray cheader_filename="nm-types.h"
+RemoteConnection cheader_filename="nm-remote-connection.h"
+RemoteSettings cheader_filename="nm-remote-settings.h"
+Ssid cheader_filename="nm-types.h"
+StringArray cheader_filename="nm-types.h"
+UintArray cheader_filename="nm-types.h"
+VPNConnection cheader_filename="nm-vpn-connection.h"
+WimaxNsp cheader_filename="nm-wimax-nsp.h"
+
+
+ClientPermission cheader_filename="nm-client.h"
+ClientPermissionResult cheader_filename="nm-client.h"
+DeviceAdslError cheader_filename="nm-device-adsl.h"
+DeviceBondError cheader_filename="nm-device-bond.h"
+DeviceBtError cheader_filename="nm-device-bt.h"
+DeviceEthernetError cheader_filename="nm-device-ethernet.h"
+DeviceInfinibandError cheader_filename="nm-device-infiniband.h"
+DeviceModemError cheader_filename="nm-device-modem.h"
+DeviceOlpcMeshError cheader_filename="nm-device-olpc-mesh.h"
+DeviceVlanError cheader_filename="nm-device-vlan.h"
+DeviceWifiError cheader_filename="nm-device-wifi.h"
+DeviceWimaxError cheader_filename="nm-device-wimax.h"
+ObjectError cheader_filename="nm-object.h"
+RemoteSettingsError cheader_filename="nm-remote-settings.h"
+SecretAgentError cheader_filename="nm-secret-agent.h"
+SecretAgentGetSecretsFlags cheader_filename="nm-secret-agent.h"
+WimaxNspNetworkType cheader_filename="nm-wimax-nsp.h"
+
+ClientActivateFn cheader_filename="nm-client.h"
+ClientAddActivateFn cheader_filename="nm-client.h"
+DeviceDeactivateFn cheader_filename="nm-device.h"
+RemoteConnectionCommitFunc cheader_filename="nm-remote-connection.h"
+RemoteConnectionDeleteFunc cheader_filename="nm-remote-connection.h"
+RemoteConnectionGetSecretsFunc cheader_filename="nm-remote-connection.h"
+RemoteSettingsAddConnectionFunc cheader_filename="nm-remote-settings.h"
+RemoteSettingsSaveHostnameFunc cheader_filename="nm-remote-settings.h"
+SecretAgentDeleteSecretsFunc cheader_filename="nm-secret-agent.h"
+SecretAgentGetSecretsFunc cheader_filename="nm-secret-agent.h"
+SecretAgentSaveSecretsFunc cheader_filename="nm-secret-agent.h"
+
+device_adsl_error_quark       cheader_filename="nm-device-adsl.h"       parent="NM.DeviceAdslError" name="device_adsl_error_(.+)"
+device_bond_error_quark       cheader_filename="nm-device-bond.h"       parent="NM.DeviceBondError" name="device_bond_error_(.+)"
+device_bt_error_quark         cheader_filename="nm-device-bt.h"         parent="NM.DeviceBtError"   name="device_bt_error_(.+)"
+device_ethernet_error_quark   cheader_filename="nm-device-ethernet.h"   parent="NM.DeviceEthernetError"   name="device_ethernet_error_(.+)"
+device_infiniband_error_quark cheader_filename="nm-device-infiniband.h" parent="NM.DeviceInfinibandError" name="device_infiniband_error_(.+)"
+device_modem_error_quark      cheader_filename="nm-device-modem.h"      parent="NM.DeviceModemError"      name="device_modem_error_(.+)"
+device_olpc_mesh_error_quark  cheader_filename="nm-device-olpc-mesh.h"  parent="NM.DeviceOlpcMeshError"   name="device_olpc_mesh_error_(.+)"
+device_vlan_error_quark       cheader_filename="nm-device-vlan.h"       parent="NM.DeviceVlanError"       name="device_vlan_error(.+)"
+device_wifi_error_quark       cheader_filename="nm-device-wifi.h"       parent="NM.DeviceWifiError"       name="device_wifi_error_(.+)"
+device_wimax_error_quark      cheader_filename="nm-device-wimax.h"      parent="NM.DeviceWimaxError"      name="device_wimax_error_(.+)"
+object_error_quark            cheader_filename="nm-object.h"            parent="NM.ObjectError"           name="object_error_(.+)"
+remote_settings_error_quark   cheader_filename="nm-remote-settings.h"   name="remote_settings_error_(.+)" parent="NM.RemoteSettingsError"
+secret_agent_error_quark      cheader_filename="nm-secret-agent.h"      name="secret_agent_error_(.+)"    parent="NM.SecretAgentError"
+
+Object cheader_filename="nm-object.h"
+SecretAgent cheader_filename="nm-secret-agent.h"
diff --git a/vapi/NetworkManager-1.0.metadata b/vapi/NetworkManager-1.0.metadata
new file mode 100644
index 00000000..d757828f
--- /dev/null
+++ b/vapi/NetworkManager-1.0.metadata
@@ -0,0 +1,152 @@
+Setting.get_secret_flags#virtual_method skip
+Setting.set_secret_flags#virtual_method skip
+
+Connection cheader_filename="nm-connection.h"
+IP4Address cheader_filename="nm-setting-ip4-config.h"
+IP4Route cheader_filename="nm-setting-ip4-config.h"
+IP6Address cheader_filename="nm-setting-ip6-config.h"
+IP6Route cheader_filename="nm-setting-ip6-config.h"
+Setting8021x cheader_filename="nm-setting-8021x.h"
+SettingAdsl cheader_filename="nm-setting-adsl.h"
+SettingBluetooth cheader_filename="nm-setting-bluetooth.h"
+SettingBond cheader_filename="nm-setting-bond.h"
+SettingCdma cheader_filename="nm-setting-cdma.h"
+SettingConnection cheader_filename="nm-setting-connection.h"
+SettingGsm cheader_filename="nm-setting-gsm.h"
+SettingIP4Config cheader_filename="nm-setting-ip4-config.h"
+SettingIP6Config cheader_filename="nm-setting-ip6-config.h"
+SettingInfiniband cheader_filename="nm-setting-infiniband.h"
+SettingOlpcMesh cheader_filename="nm-setting-olpc-mesh.h"
+SettingPPP cheader_filename="nm-setting-ppp.h"
+SettingPPPOE cheader_filename="nm-setting-pppoe.h"
+SettingSerial cheader_filename="nm-setting-serial.h"
+SettingVPN cheader_filename="nm-setting-vpn.h"
+SettingVlan cheader_filename="nm-setting-vlan.h"
+SettingWimax cheader_filename="nm-setting-wimax.h"
+SettingWired cheader_filename="nm-setting-wired.h"
+SettingWireless cheader_filename="nm-setting-wireless.h"
+SettingWirelessSecurity cheader_filename="nm-setting-wireless-security.h"
+
+Setting cheader_filename="nm-setting.h"
+
+80211ApFlags cheader_filename="NetworkManager.h"
+80211ApSecurityFlags cheader_filename="NetworkManager.h"
+80211Mode cheader_filename="NetworkManager.h"
+ActiveConnectionState cheader_filename="NetworkManager.h"
+BluetoothCapabilities cheader_filename="NetworkManager.h"
+ConnectionError cheader_filename="nm-connection.h"
+DeviceCapabilities cheader_filename="NetworkManager.h"
+DeviceModemCapabilities cheader_filename="NetworkManager.h"
+DeviceState cheader_filename="NetworkManager.h"
+DeviceStateReason cheader_filename="NetworkManager.h"
+DeviceType cheader_filename="NetworkManager.h"
+DeviceWifiCapabilities cheader_filename="NetworkManager.h"
+Setting8021xCKFormat cheader_filename="nm-setting-8021x.h"
+Setting8021xCKScheme cheader_filename="nm-setting-8021x.h"
+Setting8021xError cheader_filename="nm-setting-8021x.h"
+SettingAdslError cheader_filename="nm-setting-adsl.h"
+SettingBluetoothError cheader_filename="nm-setting-bluetooth.h"
+SettingBondError cheader_filename="nm-setting-bond.h"
+SettingCdmaError cheader_filename="nm-setting-cdma.h"
+SettingCompareFlags cheader_filename="nm-setting.h"
+SettingConnectionError cheader_filename="nm-setting-connection.h"
+SettingDiffResult cheader_filename="nm-setting.h"
+SettingError cheader_filename="nm-setting.h"
+SettingGsmError cheader_filename="nm-setting-gsm.h"
+SettingGsmNetworkBand cheader_filename="nm-setting-gsm.h"
+SettingGsmNetworkType cheader_filename="nm-setting-gsm.h"
+SettingHashFlags cheader_filename="nm-setting.h"
+SettingIP4ConfigError cheader_filename="nm-setting-ip4-config.h"
+SettingIP6ConfigError cheader_filename="nm-setting-ip6-config.h"
+SettingIP6ConfigPrivacy cheader_filename="nm-setting-ip6-config.h"
+SettingInfinibandError cheader_filename="nm-setting-infiniband.h"
+SettingOlpcMeshError cheader_filename="nm-setting-olpc-mesh.h"
+SettingPPPError cheader_filename="nm-setting-ppp.h"
+SettingPPPOEError cheader_filename="nm-setting-pppoe.h"
+SettingSecretFlags cheader_filename="nm-setting.h"
+SettingSerialError cheader_filename="nm-setting-serial.h"
+SettingVlanError cheader_filename="nm-setting-vlan.h"
+SettingVpnError cheader_filename="nm-setting-vpn.h"
+SettingWimaxError cheader_filename="nm-setting-wimax.h"
+SettingWiredError cheader_filename="nm-setting-wired.h"
+SettingWirelessError cheader_filename="nm-setting-wireless.h"
+SettingWirelessSecurityError cheader_filename="nm-setting-wireless-security.h"
+State cheader_filename="NetworkManager.h"
+
+VPNConnectionState cheader_filename="NetworkManagerVPN.h"
+VPNConnectionStateReason cheader_filename="NetworkManagerVPN.h"
+VPNPluginFailure cheader_filename="NetworkManagerVPN.h"
+VPNServiceState cheader_filename="NetworkManagerVPN.h"
+
+VlanFlags cheader_filename="nm-setting-vlan.h"
+VlanPriorityMap cheader_filename="nm-setting-vlan.h"
+WepKeyType cheader_filename="nm-setting-wireless-security.h"
+
+SettingClearSecretsWithFlagsFn cheader_filename="nm-setting.h"
+SettingValueIterFn             cheader_filename="nm-setting.h"
+VPNIterFunc                    cheader_filename="nm-setting-vpn.h"
+
+CONNECTION_PATH cheader_filename="nm-connection.h"
+DBUS_*                    cheader_filename="NetworkManager.h"
+DBUS_PATH_VPN             cheader_filename="NetworkManagerVPN.h"
+DBUS_PATH_VPN_CONNECTION  cheader_filename="NetworkManagerVPN.h"
+DBUS_VPN_*                cheader_filename="NetworkManagerVPN.h"
+
+//DBUS_*                    parent="NM.DBus"     cheader_filename="NetworkManager.h"     name="DBUS_(.+)"
+//DBUS_PATH_VPN             parent="NM.DBus"     cheader_filename="NetworkManagerVPN.h"  name="DBUS_(.+)"
+//DBUS_PATH_VPN_CONNECTION  parent="NM.DBus"     cheader_filename="NetworkManagerVPN.h"  name="DBUS_(.+)"
+//DBUS_VPN_*                parent="NM.DBus.VPN" cheader_filename="NetworkManagerVPN.h"  name="DBUS_VPN_(.+)"
+
+SETTING_NAME         cheader_filename="nm-setting.h"
+
+SETTING_802_1X_*     parent="NM.Setting8021x" name="SETTING_802_1X_(.+)"
+SETTING_ADSL_*       parent="NM.SettingAdsl"      cheader_filename="nm-setting-adsl.h"         name="SETTING_ADSL_(.+)"
+SETTING_BLUETOOTH_*  parent="NM.SettingBluetooth" cheader_filename="nm-setting-bluetooth.h"    name="SETTING_BLUETOOTH_(.+)"
+SETTING_BOND_*       parent="NM.SettingBond"      cheader_filename="nm-setting-bond.h"         name="SETTING_BOND_(.+)"
+SETTING_CDMA_*       parent="NM.SettingCdma"      cheader_filename="nm-setting-cdma.h"         name="SETTING_CDMA_(.+)"
+SETTING_CONNECTION_* parent="NM.SettingConnection" cheader_filename="nm-setting-connection.h"  name="SETTING_CONNECTION_(.+)"
+SETTING_GSM_*        parent="NM.SettingGsm"        cheader_filename="nm-setting-gsm.h"         name="SETTING_GSM_(.+)"
+SETTING_INFINIBAND_* parent="NM.SettingInfiniband" cheader_filename="nm-setting-infiniband.h"  name="SETTING_INFINIBAND_(.+)"
+SETTING_IP4_*        parent="NM.SettingIP4"        cheader_filename="nm-setting-ip4-config.h"  name="SETTING_IP4_(.+)"
+SETTING_IP6_*        parent="NM.SettingIP6"        cheader_filename="nm-setting-ip6-config.h"  name="SETTING_IP6_(.+)"
+SETTING_OLPC_*       parent="NM.SettingOLPC"       cheader_filename="nm-setting-olpc-mesh.h"   name="SETTING_OLPC_(.+)"
+SETTING_PPP_*        parent="NM.SettingPPP"        cheader_filename="nm-setting-ppp.h"         name="SETTING_PPP_(.+)"
+SETTING_PPPOE_*      parent="NM.SettingPPPOE"      cheader_filename="nm-setting-pppoe.h"       name="SETTING_PPPOE_(.+)"
+SETTING_SERIAL_*     parent="NM.SettingSerial"     cheader_filename="nm-setting-serial.h"      name="SETTING_SERIAL_(.+)"
+SETTING_VLAN_*       parent="NM.SettingVlan"       cheader_filename="nm-setting-vlan.h"        name="SETTING_VLAN_(.+)"
+SETTING_VPN_*        parent="NM.SettingVpn"        cheader_filename="nm-setting-vpn.h"         name="SETTING_VPN_(.+)"
+SETTING_WIMAX_*      parent="NM.SettingWimax"      cheader_filename="nm-setting-wimax.h"       name="SETTING_WIMAX_(.+)"
+SETTING_WIRED_*      parent="NM.SettingWired"      cheader_filename="nm-setting-wired.h"       name="SETTING_WIRED_(.+)"
+SETTING_WIRELESS_*   parent="NM.SettingWireless"   cheader_filename="nm-setting-wireless.h"    name="SETTING_WIRELESS_(.+)"
+SETTING_WIRELESS_SECURITY_*   parent="NM.SettingWirelessSecurity" cheader_filename="nm-setting-wireless-security.h"    name="SETTING_WIRELESS_SECURITY_(.+)"
+
+VPN_* parent="NM.VPN" name="VPN_(.+)" cheader_filename="NetworkManagerVPN.h"
+
+connection_error_quark cheader_filename="nm-connection.h" name="connection_(.+)" parent="NM.Connection"
+
+setting_802_1x_error_quark cheader_filename="nm-setting-8021x.h"          name="setting_802_1x_error_(.+)"        parent="NM.Setting8021xError"
+setting_adsl_error_quark cheader_filename="nm-setting-adsl.h"             name="setting_adsl_error_(.+)"          parent="NM.SettingAdslError"
+setting_bluetooth_error_quark cheader_filename="nm-setting-bluetooth.h"   name="setting_bluetooth_error_(.+)"     parent="NM.SettingBluetoothError"
+setting_bond_error_quark cheader_filename="nm-setting-bond.h"             name="setting_bond_error_(.+)"          parent="NM.SettingBondError"
+setting_cdma_error_quark cheader_filename="nm-setting-cdma.h"             name="setting_cdma_error_(.+)"          parent="NM.SettingCdmaError"
+setting_connection_error_quark cheader_filename="nm-setting-connection.h" name="setting_connection_error_(.+)"    parent="NM.SettingConnectionError"
+setting_error_quark cheader_filename="nm-setting.h"                       name="setting_error_(.+)"               parent="NM.SettingError"
+setting_gsm_error_quark cheader_filename="nm-setting-gsm.h"               name="setting_gsm_error_(.+)"           parent="NM.SettingGsmError"
+setting_infiniband_error_quark cheader_filename="nm-setting-infiniband.h" name="setting_infiniband_error_(.+)"    parent="NM.SettingInfinibandError"
+setting_ip4_config_error_quark cheader_filename="nm-setting-ip4-config.h" name="setting_ip4_config_error_(.+)"    parent="NM.SettingIP4ConfigError"
+setting_ip6_config_error_quark cheader_filename="nm-setting-ip6-config.h" name="setting_ip6_config_error_(.+)"    parent="NM.SettingIP6ConfigError"
+setting_olpc_mesh_error_quark cheader_filename="nm-setting-olpc-mesh.h"   name="setting_olpc_mesh_error_(.+)"     parent="NM.SettingOlpcMeshError"
+setting_ppp_error_quark cheader_filename="nm-setting-ppp.h"               name="setting_ppp_error_(.+)"           parent="NM.SettingPPPError"
+setting_pppoe_error_quark cheader_filename="nm-setting-pppoe.h"           name="setting_pppoe_error_(.+)"         parent="NM.SettingPPPOEError"
+setting_serial_error_quark cheader_filename="nm-setting-serial.h"         name="setting_serial_error_(.+)"        parent="NM.SettingSerialError"
+setting_vlan_error_quark cheader_filename="nm-setting-vlan.h"             name="setting_vlan_error_(.+)"          parent="NM.SettingVlanError"
+setting_vpn_error_quark cheader_filename="nm-setting-vpn.h"               name="setting_vpn_error_(.+)"           parent="NM.SettingVpnError"
+setting_wimax_error_quark cheader_filename="nm-setting-wimax.h"           name="setting_wimax_error_(.+)"         parent="NM.SettingWimaxError"
+setting_wired_error_quark cheader_filename="nm-setting-wired.h"           name="setting_wired_error_(.+)"         parent="NM.SettingWiredError"
+setting_wireless_error_quark          cheader_filename="nm-setting-wireless.h"          name="setting_wireless_error_(.+)"          parent="NM.SettingWirelessError"
+setting_wireless_security_error_quark cheader_filename="nm-setting-wireless-security.h" name="setting_wireless_security_error_(.+)" parent="NM.SettingWirelessSecurityError"
+
+SETTING_PARAM_* cheader_filename="nm-setting.h" parent="NM.Setting" name="SETTING_PARAM_(.+)"
+utils_* cheader_filename="nm-utils.h" parent="NM.Utils" name="utils_(.+)"
+UTILS_* cheader_filename="nm-utils.h" parent="NM.Utils" name="UTILS_(.+)"
+UtilsSecurityType cheader_filename="nm-utils.h" parent="NM.Utils" name="SecurityType"
diff --git a/vapi/libnm-glib.deps b/vapi/libnm-glib.deps
new file mode 100644
index 00000000..56e99859
--- /dev/null
+++ b/vapi/libnm-glib.deps
@@ -0,0 +1,3 @@
+dbus-glib-1
+libnm-util
+gio-2.0
diff --git a/vapi/libnm-util.deps b/vapi/libnm-util.deps
new file mode 100644
index 00000000..efd2584d
--- /dev/null
+++ b/vapi/libnm-util.deps
@@ -0,0 +1,2 @@
+dbus-glib-1
+gio-2.0